🎛️ Live Jamming Ergonomics & Sound Design
The Lofi Ambient Sonifier converts real-time atmospheric, wildfire, and hydrological telemetry into generative 52 BPM lo-fi ambient music. The console is engineered for live performance with beat-quantized mutes, solo overrides, macro action buttons, single-key volume adjustments, and full Web MIDI hardware integration.
6-Channel Mixer Architecture:
- 01 Vinyl & Tape Dust: Organic vinyl surface noise, 4-track tape hiss, and subtle wow/flutter saturation.
- 02 Found Sound Beat: Generative rhythmic percussion synthesized from wooden door thuds, twig snaps, and seed shakers. Includes Density Control (0–100%) and scheduled Found Sound Drum Fills.
- 03 Pollution Drone: Karhide fatsaw oscillator cluster modulated in real-time by DEFRA UK Air Quality Index (DAQI) filter sweeps.
- 04 Ember Pad & Sparks: Warm analog synth chords and crackling ember sparks pitch-bent by NASA VIIRS satellite Fire Radiative Power (FRP).
- 05 Hydro Wave & Sub: Sub-bass rumble, rainfall ambience, and liquid resonance scaled to global hydrological balance (-5 flood to +5 drought).
- 06 EA River Lead: UK Environment Agency live river flow levels mapped to liquid glass FM synth melodies in pentatonic scale.
🎹 Single-Key Track Volume Controls (1% Precision)
Adjust track volumes instantly during live jams with single keys (1% step per press; hold Shift for 5% steps):
- A / Z — Track 01 Vinyl Volume Up / Down
- S / X — Track 02 Beat Volume Up / Down
- D / C — Track 03 Drone Volume Up / Down
- F / V — Track 04 Ember Pad Volume Up / Down
- G / B — Track 05 Hydro Sub Volume Up / Down
- H / N — Track 06 River Lead Volume Up / Down
🎹 Complete Global Hotkey Matrix
- Spacebar — Start / Pause Master Audio Transport
- ↑ / ↓ or + / - — Master Volume Up / Down (1% precision)
- [ / ] — Selected Active Track Volume Down / Up
- 1 through 6 — Beat-Synced Track Mute Toggles (Vinyl, Beat, Drone, Pad, Sub, Lead)
- Shift + 1 through Shift + 6 — Beat-Synced Track Solo Toggles
- K — Trigger Found Sound Drum Fill
- I — Telemetry Data View Inspector
- T — Tap Tempo (Tap in rhythm to calibrate global BPM)
- R — Start / Stop WAV Audio Recording
- M — Emergency Mute All Tracks (Beat-Synced)
⏱️ Beat Sync Quantization
Select Next Beat (1/4), Next Bar (1/1), or Instant in the top header. When quantization is active, pressing Mute, Solo, or Macro buttons queues the action. The button pulses in glowing amber until the exact musical boundary arrives, ensuring glitch-free transitions.
🎛️ Web MIDI Controller Integration & MIDI Learn
Connect any USB MIDI controller or DJ surface. Click Enable MIDI in the header to activate Web MIDI API hardware detection.
Default Hardware Factory Mappings:
- CC 1 – CC 6: Faders for Mixer Tracks 01 – 06
- CC 7: Master Console Output Volume
- CC 8: Global Tempo (BPM)
- CC 9 & CC 10: Lofi Wow/Flutter & Vinyl Dust Controls
- Notes 36 – 41 (C1 – F1): Beat-synced Track Mutes 01 – 06
- Notes 42 – 47 (F#1 – B1): Beat-synced Track Solos 01 – 06
- Note 48 (C2): Master Play / Pause Toggle
Custom MIDI Learn Mode:
- Click the MIDI Learn button in the header (or press Shift + L).
- Click any on-screen slider, mute button, or solo button. It will flash red waiting for input.
- Move a knob/fader or press a pad on your physical MIDI hardware.
- The parameter instantly binds and saves to your browser's localStorage.
⚡ Live Telemetry Surge Triggers
Trigger 5-second intense telemetry swells for dramatic drops and transitions:
- Air Surge: Sweeps DEFRA pollution filter cutoff up to 4,500 Hz with high resonance feedback.
- Fire Flare: Maximizes NASA VIIRS fire density (100%) and spark velocity.
- River Surge: Deluges hydrology water levels to flood threshold (+5.0) and activates sub-bass overdrive.
🎨 4-Layer Oscilloscope & Cassette Visualizer
The canvas renders real-time audio FFT spectrums, telemetry wave ripples, particulate fire embers, and rotating tape spools synchronized to Tone.js master transport pulse.
☁️ Cloudflare Pages Deployment
Deploy in seconds to Cloudflare Pages:
git push origin main
Configure Cloudflare Pages build output directory to . (root). No build commands or node steps required!