FAQ
TL;DR: Illuminophony is an audio-reactive RGB light show. This ESP32 build digitises 512 audio samples at 40 kHz, performs a real-time FFT, and drives 9-bit PWM that updates every 16 ms, giving smooth, colour-mixed fades instead of harsh flashes [Elektroda, efi222, post #21489646]
Quick Facts
• MCU: ESP32-WROOM; Arduino core ≤ v1.0.4 keeps ADC at 40 kHz [Elektroda, efi222, post #21490287]
• DSP: 512-point FFT → ≈ 78 Hz resolution per bin @ 40 kHz Fs [Elektroda, efi222, post #21489646]
• Output: 3× RGB, 9-bit PWM, 64 exponential dimming steps [Elektroda, efi222, post #21489646]
• BOM Cost: ≈ 20 PLN for dev board + 1 W LED [Elektroda, efi222, post #21491938]
• High-power driver: PT4115, 30 V / 1.2 A, “supports PWM dimming up to 20 kHz” – PT4115 datasheet
What exactly is illuminophony?
Illuminophony is the art of mapping music frequencies to coloured light so listeners see smoothly changing, mixed hues that match the soundtrack [Elektroda, Preskaler, post #21489719]
How does the ESP32 version work?
The board samples audio (40 kHz, 512 points), runs an FFT, sums chosen bins for R, G, B and produces 9-bit PWM signals updated every 16 ms [Elektroda, efi222, post #21489646]
Why use FFT instead of analogue filters?
Digital FFT replaces three analogue filters with code, reduces parts count and lets you redefine frequency bands in software [Elektroda, efi222, post #21489646]
How is smooth dimming achieved with LEDs?
Brightness is set by PWM duty, then passed through an exponential lookup so the optical output looks linear to human vision [Elektroda, efi222, post #21490148]
Can I mix the colours to get white light?
Yes, but you must align beam angles and equalise RGB intensities; slight optical mismatches cause tinted spots [Elektroda, Preskaler, post #21491137]
Which ESP32 boards compile the sketch?
Select “ESP32 Dev Module” and install Espressif core 1.0.4; newer cores cap ADC at 10 kHz and break adcAttachPin() [Elektroda, miroskop, post #21490237]
How do I change light inertia?
Edit the length of the FIFO averaging buffer; more samples slow fades, fewer samples speed them up [Elektroda, efi222, post #21494245]
Is voltage control of LEDs acceptable?
No. LED current–voltage curves are steep; use PWM or a constant-current driver for linear brightness [Elektroda, efi222, post #21490148]
How can I drive high-power fixtures?
Replace the 1 W LED with strings driven by a PT4115 or similar 1.2 A buck converter that accepts PWM [Elektroda, efi222, post #21503111]
What automatic-gain routine is implemented?
A moving divider (ARW) raises or lowers gain each loop so output peaks never exceed a set max level [Elektroda, efi222, post #21507177]
What is the minimum hardware list?
ESP32-WROOM dev kit, 3 × N-MOSFETs, 1 W RGB LED, 3 × current resistors, 5 V supply, audio jack and bias network; all under 20 PLN [Elektroda, efi222, post #21491938]
Could triac-controlled 230 V bulbs be reused?
Technically yes, but you’d need zero-cross detection, phase control and colour filters; LED drivers are cheaper and safer [Elektroda, efi222, post #21503111]
Where can I find vintage colour-organ schematics?
Try the Polish C23B colourophone (Radio-Elektronik, 1984) [Elektroda, ACeK, #21508570] or the Spanish SK-5 kit from 1975 [Radiomuseum link].
Does the project support beat detection?
Not yet; FFT magnitudes drive lights. You can add a separate 100–250 Hz envelope follower if you need kick-drum-only flashes [Elektroda, DJ_KLIMA, post #21506971]
What eyes-perceived delay should I target?
Human vision integrates light over ~50 ms; a 30-sample buffer at 40 kHz (16 ms update) produces pleasing inertia without lag [Elektroda, efi222, post #21494245]
Can I build it on perfboard?
Yes. The prototype was wired “on the knee” in about one hour and worked immediately [Elektroda, efi222, post #21489646]