A real-time audio visualizer built with React, TypeScript, and the Web Audio API. Features a smooth bar equalizer that responds to audio input from files or microphone with 60fps performance optimization.
- Bar equalizer with smooth animations at 60fps
- Logarithmic frequency scaling for natural audio representation
- Peak detection with decay animations
- Sensitivity and smoothing controls
- Customizable bar count (16-96 bars)
- File upload - Support for MP3, WAV, M4A, OGG formats
- Microphone input - Real-time microphone visualization
- Automatic format detection and error handling
- Adaptive quality management - Automatically adjusts for device performance
- Mobile-optimized controls with touch-friendly interface
- Device capability detection - Optimizes based on memory, CPU, battery
- High-DPI display support with pixel ratio scaling
- Orientation change handling
- Full ARIA support with screen reader compatibility
- Keyboard navigation with customizable shortcuts
- Reduced motion support for users with vestibular disorders
- High contrast mode support
- Audio descriptions for visual elements
- Zero-allocation rendering loops for consistent 60fps
- Canvas optimization with selective clearing and batching
- Memory management with automatic garbage collection
- Frame rate monitoring and adaptive quality
- Web Worker support for background processing
๐ช Windows Users:
- Clone the repository:
git clone https://github.com/CosmonautJones/AudioVisualizer.git cd AudioVisualizer
- Double-click START.bat- Automatically installs dependencies and starts the server
๐ง Linux/Mac Users:
- Clone the repository:
git clone https://github.com/CosmonautJones/AudioVisualizer.git cd AudioVisualizer
- Run the cross-platform script:
chmod +x start.sh ./start.sh 
โก Git Bash/WSL Windows Users:
- You can also use ./start.shin Git Bash or WSL for a cross-platform experience
- 
Clone and navigate: git clone https://github.com/CosmonautJones/AudioVisualizer.git cd AudioVisualizer/visual-eq
- 
Install dependencies: npm install 
- 
Start development server: npm run dev 
- 
Open your browser to http://localhost:5173(or the port shown in terminal)
- Node.js 16+
- npm 7+
- Modern browser with Web Audio API support:
- Chrome 66+
- Firefox 60+
- Safari 11.1+
- Edge 79+
 
- 
Audio Input: - Click "Upload File" to select an audio file
- Click "Use Microphone" for real-time input (requires permission)
 
- 
Visualization Settings: - Sensitivity: Adjust amplitude response (0.5x - 3.0x)
- Smoothing: Control animation smoothness (0% - 95%)
- Bar Count: Number of frequency bars (16 - 96)
 
- 
Advanced Settings: - Color Scheme: Spectrum, Monochrome, or Custom
- Show Peaks: Enable/disable peak indicators
- Performance Mode: Auto, Quality, or Performance
 
- Space- Play/Pause audio
- M- Toggle microphone
- โ/โ- Adjust sensitivity
- Esc- Toggle controls panel
- F- Focus file input
React 19 + TypeScript + Vite
โโโ Web Audio API (AudioContext, AnalyserNode)
โโโ Canvas 2D Rendering (60fps optimized)  
โโโ Context State Management
โโโ Custom React Hooks
visual-eq/src/
โโโ components/          # React components
โ   โโโ AudioControls/   # Input controls
โ   โโโ AudioVisualizer/ # Main canvas component
โ   โโโ UI/             # Interface components
โโโ hooks/              # Custom React hooks
โ   โโโ useAudioContext # Audio engine management
โ   โโโ useAudioAnalyzer# Real-time analysis
โ   โโโ useCanvasRenderer# Canvas optimization
โ   โโโ useResponsiveCanvas# Device adaptation
โโโ services/           # Core audio processing
โ   โโโ audioEngine     # Web Audio API wrapper
โ   โโโ audioAnalyzer   # Frequency analysis
โ   โโโ visualizers/    # Canvas rendering
โโโ types/              # TypeScript definitions
โโโ utils/              # Device detection utilities
โโโ constants/          # Configuration constants
AudioEngine - Singleton managing AudioContext lifecycle
- iOS Safari autoplay handling
- Performance monitoring
- Battery optimization
- Error recovery
AudioAnalyzer - Real-time frequency analysis
- Zero-allocation rendering loops
- Logarithmic frequency scaling
- Peak detection with decay
- Adaptive quality management
CanvasOptimizer - High-performance rendering
- Selective clearing and dirty regions
- Gradient caching
- Batch rendering operations
- Frame timing optimization
npm run dev          # Start development server
npm run build        # Build for production  
npm run preview      # Preview production build
npm run lint         # Run ESLint
npm run type-check   # TypeScript validationThe app builds to static files and can be deployed to:
- Vercel - vercel --prod
- Netlify - Drag dist/folder to Netlify
- GitHub Pages - Push dist/togh-pagesbranch
- Any static host - Upload dist/contents
Create .env file for configuration:
VITE_DEFAULT_SAMPLE_RATE=44100
VITE_MAX_FFT_SIZE=32768  
VITE_PERFORMANCE_MODE=autoDEFAULT_AUDIO_CONFIG = {
  fftSize: 4096,           # Frequency resolution
  smoothingTimeConstant: 0.8, # Smoothing factor
  minDecibels: -90,        # Minimum dB
  maxDecibels: -10         # Maximum dB  
}- Reduced frame rate (30fps on mobile)
- Lower bar counts (max 48 on mobile)
- Memory-aware canvas sizes
- Battery optimization when discharging
| Browser | Version | Status | Notes | 
|---|---|---|---|
| Chrome | 66+ | โ Full | Best performance | 
| Firefox | 60+ | โ Full | Good performance | 
| Safari | 11.1+ | โ Full | Requires user gesture | 
| Edge | 79+ | โ Full | Chromium-based | 
| Mobile Safari | 11+ | โ Limited | Autoplay restrictions | 
| Chrome Mobile | 66+ | โ Good | Performance optimized | 
- Fork the repository
- Create feature branch: git checkout -b feature/amazing-feature
- Commit changes: git commit -m 'Add amazing feature'
- Push to branch: git push origin feature/amazing-feature
- Open a Pull Request
- Follow TypeScript strict mode
- Use React 19 patterns (hooks, functional components)
- Maintain 60fps performance target
- Write comprehensive error handling
- Include accessibility features
- Test on mobile devices
This project is licensed under the MIT License - see the LICENSE file for details.
- Web Audio API - For real-time audio processing
- Canvas API - For high-performance 2D rendering
- React Team - For the excellent development experience
- Vite - For lightning-fast build tooling
- Claude Code - For development assistance
- Live Demo: Coming Soon
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Built with โค๏ธ using React, TypeScript, and Web Audio API
๐ค Generated with Claude Code