This example demonstrates advanced audio reactive visualization capabilities using FastLED. It processes real-time audio input and creates stunning visual effects synchronized to music.
Features
Visualization Modes
- Spectrum Analyzer - Classic frequency spectrum display with customizable colors
- Waveform - Real-time audio waveform visualization
- VU Meter - Traditional volume unit meter with RMS and peak indicators
- Spectrogram - Scrolling frequency analysis over time
- Combined - Split-screen showing both spectrum and waveform
- Reactive Patterns - Dynamic patterns that respond to audio energy and beats
Audio Processing
- Real-time FFT - Fast Fourier Transform for frequency analysis
- Beat Detection - Automatic beat detection with adjustable sensitivity
- Auto Gain Control (AGC) - Automatically adjusts to varying audio levels
- Noise Floor Filtering - Removes background noise for cleaner visuals
- Attack/Decay/Sustain - Professional audio envelope controls
Visual Controls
- Multiple Color Palettes - Heat, Rainbow, Ocean, Forest, Lava, Cloud, Party
- Mirror Mode - Creates symmetrical displays
- Brightness Control - Adjustable LED brightness
- Fade Effects - Smooth transitions with adjustable fade time
- Color Animation - Animated color cycling with speed control
- Smoothing - Optional smoothing for less jittery displays
Advanced Features
- Frequency Band Analysis - 8-band frequency analyzer for detailed audio analysis
- FFT Smoothing - Temporal smoothing of frequency data
- Logarithmic Scale - Optional log scale for frequency display
- Freeze Frame - Pause the visualization at any moment
- Frame Advance - Step through frozen frames
UI Controls
Main Controls
- Enable Audio Reactive Mode - Master on/off switch for audio processing
- Visualization Mode - Dropdown to select visualization type
Audio Processing Group
- Fade Time - How quickly levels decay (0-4 seconds)
- Attack Time - How quickly levels rise (0-4 seconds)
- Output Smoothing - Final output smoothing (0-2 seconds)
- Audio Gain - Manual gain adjustment (0.1-5.0)
- Noise Floor - Background noise threshold (-80 to -20 dB)
Visual Controls Group
- Fade to Black - Trail/persistence effect (0-50)
- Brightness - LED brightness (0-255)
- Color Speed - Animation speed (0.1-5.0)
- Color Palette - Choose from 7 palettes
- Mirror Mode - Enable symmetrical display
- Smoothing - Enable temporal smoothing
FFT Controls Group
- Min Frequency - Lower frequency bound (20-1000 Hz)
- Max Frequency - Upper frequency bound (1000-20000 Hz)
- Logarithmic Scale - Use log scale for frequency
- FFT Smoothing - Smoothing factor (0-0.95)
Advanced Controls Group
- Freeze Frame - Pause visualization
- Advance Frame - Step forward when frozen
- Beat Detection - Enable beat detection
- Beat Sensitivity - Beat detection threshold (0.5-3.0)
- Auto Gain Control - Enable automatic gain adjustment
Hardware Setup
LED Configuration
- Default: 128x128 LED matrix (16,384 LEDs)
- Downscaled to 64x64 for output (4,096 LEDs)
- Data pin: GPIO 3 (configurable)
- LED type: WS2812B (Neopixel)
Audio Input
The example uses the FastLED audio system which can accept input from:
- Microphone (real-time audio capture)
- Audio file playback
- System audio (on supported platforms)
Usage
- Basic Operation
- Upload the sketch to your controller
- Connect your LED matrix
- Provide audio input
- Use the web UI to control visualization
- Optimizing for Your Setup
- Adjust the noise floor if visualization is too sensitive/insensitive
- Use AGC for varying audio levels
- Tune beat sensitivity for your music style
- Experiment with different color palettes and speeds
- Performance Tips
- Reduce matrix size for slower controllers
- Disable smoothing for more responsive display
- Use simpler visualization modes for lower CPU usage
Code Structure
Main Components
- Audio Processing Pipeline
AudioSample → FFT → Band Analysis → Beat Detection → Visualization
- Visualization Functions
drawSpectrumAnalyzer()
- Frequency spectrum bars
drawWaveform()
- Audio waveform display
drawVUMeter()
- Volume meter visualization
drawSpectrogram()
- Time-frequency plot
drawReactivePatterns()
- Beat-reactive patterns
- Audio Analysis Classes
MaxFadeTracker
- Smooth peak tracking with attack/decay
BeatDetector
- Energy-based beat detection
FrequencyBandAnalyzer
- 8-band frequency analysis
Customization
Adding New Visualizations
- Create a new draw function
- Add it to the visualization mode dropdown
- Add a case in the main switch statement
Modifying Color Palettes
Edit the getCurrentPalette()
function to add custom palettes.
Adjusting Frequency Bands
Modify the FrequencyBandAnalyzer
constructor to change band boundaries.
Troubleshooting
- No visualization: Check audio input and ensure "Enable Audio Reactive Mode" is on
- Too dim/bright: Adjust brightness control
- Choppy animation: Increase smoothing or reduce matrix size
- No beat detection: Adjust beat sensitivity or check audio levels
- Visualization too sensitive: Increase noise floor value
Memory Requirements
This example requires significant memory for:
- Framebuffer: 128×128×3 = 49,152 bytes
- LED buffer: 64×64×3 = 12,288 bytes
- Audio buffers and FFT data
Platforms with limited memory may need to reduce the matrix size.