logo elektroda
logo elektroda
X
logo elektroda

Illuminophony, or a return to the past in a different edition.

efi222 6060 31

TL;DR

  • Illuminophony prototype drives three RGB LED channels to recreate colour-changing music lighting with simulated filament inertia.
  • It replaces analogue filters with FFT processing on an ESP32 using the arduinoFFT.h library, then maps frequency bands to PWM brightness.
  • The firmware uses 512 samples at a 40kHz sampling frequency, giving a bar value of approximately 78Hz and about 16ms per FFT cycle.
  • A timer interrupt modulates 9-bit PWM in 64 exponentially spaced levels, with separate inertia, automatic level, and free band allocation per channel.
  • The prototype used a 1W power LED and can be built on a development board in about an hour, but it has no UI and settings must be edited in code.
Generated by the language model.
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
📢 Listen (AI):
  • Helpful post
    #31 21509330
    DJ_KLIMA
    Level 25  
    Posts: 659
    Help: 67
    Rate: 216
    It's a case of making do with what's available, I myself was very fond of 'zesi new' colourophones in the 90s and was positively impressed by all the models, nowadays we have such cheap and powerful digital electronics that it's a shame not to harness it to 'twinkle lights'. Respect to those who built in those interesting times, as I made my first one from a green painted light bulb and a starter from a fluorescent lamp. Warm regards.
  • ADVERTISEMENT
  • #32 21509405
    efi222
    Level 21  
    Posts: 655
    Help: 12
    Rate: 1057
    DJ_KLIMA wrote:
    I made my first one from an incandescent bulb painted green and a starter from a fluorescent lamp
    .
    I was going to write about these starters earlier, but somehow I was a bit obnoxious. :D But it's a fact. That's the way it was. :D .
    And regarding digital processing:
    If we have audio amplitude and frequency data in the form of numbers, the processing of this depends entirely on the imagination of the programmer.
📢 Listen (AI):

Topic summary

✨ The discussion centers on illuminophony, an 18th-century concept involving the modulation of colored light based on audio frequency bands, originally using incandescent bulbs with colored filters to produce RGB-like effects synchronized with music. Modern implementations use RGB LEDs controlled via PWM to achieve smoother, visually linear brightness changes corresponding to audio amplitude in low, mid, and high frequency bands. Challenges include achieving proper color mixing without discrete flashing, linear LED brightness control despite non-linear current-luminosity characteristics, and replicating the original smooth modulation rather than sharp flashing. Solutions involve using buffers (FIFO arrays) for smoothing audio samples, FFT for frequency analysis, and microcontroller-based PWM control. Hardware considerations include selecting appropriate development boards (ESP32 Dev Module preferred over ESP32 C3 for compatibility), managing ADC sampling rates (Arduino core version 1.0.4 recommended for >40kHz sampling), and using power LED drivers like the PT4115 for higher power applications. Historical references include vintage colourophone circuits (e.g., Colorofon C23B), use of painted incandescent bulbs, and triac-controlled 220V lamps with isolation transformers. The project is noted for low cost (~20 PLN) and minimal programming requirements, with emphasis on artistic impression over perfect white light mixing. The discussion also touches on the limitations of LED voltage control, the benefits of PWM, and the potential for digital signal processing to enhance effects beyond analog methods.
Generated by the language model.

FAQ

TL;DR: Sterownik z 3 kanałami RGB, FFT i regulowaną bezwładnością pokazuje, że prawdziwa iluminofonia to nie miganie, lecz „mieszanie barw” zsynchronizowane z pasmami muzyki. Ten FAQ pomaga hobbystom ESP32 zbudować płynny efekt świetlny, który bardziej przypomina żarówki niż ostro przełączane LED-y. [#21489719]

Dlaczego to ważne: Wątek pokazuje, jak tanim układem na ESP32 odejść od prostego kolorofonu i uzyskać wizualnie znacznie bogatszą, bardziej muzyczną modulację światła.

Podejście Przetwarzanie audio Efekt świetlny Ograniczenie z wątku
Klasyczny kolorofon 3-lampowy Filtry analogowe LP/BP/HP Wyraźne miganie osobnych kolorów Słabe mieszanie barw
Prototyp ESP32 + FFT 512 próbek, 40 kHz Płynna modulacja RGB z bezwładnością Brak interfejsu użytkownika
Proste LED-y sterowane napięciem Bezpośrednie sterowanie LED Twarde zmiany, efekt zero-jedynkowy Stroma charakterystyka LED
RGB z projekcją/dyfuzorem To samo sterowanie, lepsza optyka Lepsze mieszanie na ścianie lub macie Trudne poprawne filmowanie efektu

Najważniejszy wniosek: Największą różnicę daje nie sama analiza FFT, lecz połączenie PWM, korekcji wykładniczej i sztucznej bezwładności światła. Dopiero wtedy LED-y zaczynają zachowywać się wizualnie jak źródło światła do iluminofonii, a nie jak szybki wskaźnik migania.

Quick Facts

  • Projekt używa 3 kanałów RGB, 9-bitowego PWM i wykładniczej modulacji w 64 poziomach, aby uzyskać płynniejsze, bardziej naturalne zmiany jasności. [#21489646]
  • FFT pracuje na 512 próbkach przy 40 kHz, co daje rozdzielczość pasma około 78 Hz i cały cykl próbkowania z obliczeniami rzędu 16 ms. [#21489646]
  • Autor szacuje koszt podstawowej wersji na około 20 PLN, a układ demonstracyjny zbudowany „na kolanie” da się zmontować w około 1 godzinę. [#21491938]
  • Szkic kompilował się po ustawieniu płytki ESP32 Dev Module i cofnięciu pakietu ESP32 by Espressif Systems z 3.0.7 do 1.0.4. [#21490237]
  • Do zwiększania mocy można przejść z diod 1 W na większe ciągi LED, a do ograniczenia strat użyć drivera PT4115: 30 V, 1.2 A, sterowanego PWM. [#21503111]

1. Czym jest iluminofonia i czym różni się od migających, trójlampowych kolorofonów budowanych dawniej?

Iluminofonia to prezentacja muzyki światłem, w której barwy i jasność płynnie odpowiadają zawartości pasm częstotliwości. „Iluminofonia” jest układem świetlno-muzycznym, który mapuje pasma audio na kolory i miesza je w jeden wynikowy obraz świetlny, zamiast tylko przełączać osobne lampy. W wątku podkreślono, że klasyczne trzy migające lampy dają dużo uboższy efekt, bo nie tworzą barw wynikowych. W praktyce czerwony odpowiada basom, zielony średnim tonom, a niebieski wysokim. [#21489646]

2. Co w tym kontekście oznacza termin kolorofon i dlaczego część użytkowników uważa proste migające światła za namiastkę prawdziwej iluminofonii?

Kolorofon oznacza tu prostsze urządzenie, które zwykle tylko włącza i wyłącza kilka kolorów zależnie od pasma audio. „Kolorofon” jest prostszym sterownikiem świetlnym, który rozdziela muzykę na kilka kanałów i wywołuje miganie lamp, ale bez pełnego mieszania kolorów i bez płynnej modulacji. Uczestnicy wątku uznają taki efekt za namiastkę, bo trzy oddzielne błyski nie dają jednolitej, pulsującej barwy wynikowej. Ich zdaniem satysfakcjonujący efekt pojawia się dopiero wtedy, gdy kolory fizycznie się nakładają. [#21492006]

3. Jak zbudować sterownik iluminofonii na ESP32 z użyciem arduinoFFT.h zamiast analogowych filtrów audio?

Najprościej użyć ESP32 Wroom, wejścia audio do ADC i trzech wyjść RGB sterowanych PWM. 1. Pobierz próbki audio do FFT: autor używa 512 próbek przy 40 kHz. 2. Przypisz wybrane koszyki FFT do trzech kanałów RGB i ustaw automatyczny poziom. 3. Na wyjściu zastosuj 9-bitowy PWM, wykładniczą korekcję i bezwładność rozjaśniania oraz wygaszania dla każdego koloru. Autor zrezygnował z interfejsu użytkownika, więc parametry zmienia się bezpośrednio w kodzie Arduino IDE. [#21489646]

4. Dlaczego autor wybrał FFT na ESP32 Wroom zamiast klasycznych analogowych filtrów dolnoprzepustowych, pasmowych i górnoprzepustowych?

Wybrał FFT, bo uprościło to elektronikę i dało znacznie większą swobodę strojenia. Wprost napisał, że porzucił filtry analogowe na rzecz szybkiej transformaty Fouriera, używając taniego i wydajnego ESP32 oraz biblioteki arduinoFFT.h. Dzięki temu można dowolnie przydzielać pasma do kanałów RGB, ustawiać automatyczny poziom i zmieniać charakter efektu bez przebudowy toru analogowego. To ważne, bo projekt miał pozostać prosty sprzętowo, ale elastyczny programowo. [#21489646]

5. Jak ustawiono parametry FFT w tym projekcie i co oznacza 512 próbek przy 40 kHz dla rozdzielczości pasm?

Parametry ustawiono na 512 próbek i częstotliwość próbkowania 40 kHz. To daje szerokość jednego koszyka FFT około 78 Hz, co autor podał wprost. Pobranie próbek i wykonanie obliczeń zajmuje około 16 ms, więc sterownik reaguje szybko, ale nadal zostawia miejsce na dodatkowe wygładzanie światła. Taki kompromis dobrze pasuje do trzech kanałów RGB, bo nie wymaga bardzo drobnej analizy widma, a daje wystarczająco stabilny podział pasm. [#21489646]

6. Jaki jest najlepszy sposób uzyskania płynnej bezwładności światła z LED-ów, aby efekt przypominał żarniki żarówek zamiast twardego migania?

Najlepszy sposób z tego wątku to programowa bezwładność oparta na uśrednianiu kolejnych próbek oraz płynnym PWM. Autor chciał zasymulować bezwładność żarników i uznał, że proste układy LED działają zero-jedynkowo. Dlatego dodał regulację rozjaśniania i wygaszania dla każdego koloru oraz później opisał bufor FIFO z 30 próbkami, który bardzo wygładza zmiany. Użytkownicy zauważyli też, że fizyczne zbliżenie LED-ów i projekcja na białe tło poprawiają odbiór całego efektu. [#21494245]

7. Dlaczego w tej iluminofonii preferowane jest sterowanie PWM zamiast bezpośredniego sterowania napięciem RGB LED?

PWM jest tu lepsze, bo LED-y nie nadają się do sensownego sterowania samym napięciem. Autor wyjaśnił, że charakterystyka prądowo-napięciowa LED jest zbyt stroma, więc proste sterowanie napięciem daje słabą liniowość i nadal przypomina zwykłe miganie. W prezentowanym urządzeniu jasność zależy od wypełnienia PWM, a nie od bezpośredniej zmiany napięcia. Dzięki temu jasność jest praktycznie liniowa względem sterowania, a cały efekt daje się jeszcze skorygować wykładniczo pod percepcję wzroku. [#21490148]

8. Jak wykładnicza korekcja PWM pomaga sprawić, że zmiany jasności LED wyglądają liniowo dla ludzkiego oka?

Pomaga, bo oko odbiera zmiany światła logarytmicznie, a nie liniowo. Autor napisał, że sama jasność LED sterowanego PWM jest prawie liniowa względem wypełnienia, ale tę charakterystykę celowo „wygina” wykładniczo. W efekcie wykładniczne sterowanie połączone z logarytmicznym widzeniem daje wizualnie bardziej liniowe rozjaśnianie i ściemnianie. To właśnie dlatego projekt ma 9-bitowy PWM i dodatkową modulację w 64 poziomach, zamiast prostego przełączania stanów. [#21490148]

9. Co powoduje błędy kompilacji typu adcAttachPin, timerAlarmWrite i timerAlarmEnable podczas kompilowania tego szkicu dla ESP32-C3 Dev Kit?

Najczęściej problem powoduje zła architektura mikrokontrolera i niezgodna płytka. W wątku zgłoszono te błędy przy wyborze ESP32-C3 Dev Kit, a autor odpowiedział, że ESP32-C3 to wyraźnie inna architektura niż użyty przez niego ESP32 Wroom. Kod został przygotowany pod ESP32 Dev Module i może się nie kompilować dla C3. To jest typowy przypadek graniczny: nawet poprawny szkic nie ruszy, jeśli platforma sprzętowa i funkcje timera lub ADC różnią się od oryginału. [#21490215]

10. Jakie ustawienia Arduino core i płytki są potrzebne do poprawnej kompilacji tego szkicu iluminofonii na ESP32 i dlaczego użytkownicy cofnęli pakiet „ESP32 by Espressif Systems” z 3.0.7 do 1.0.4?

Trzeba wybrać płytkę ESP32 Dev Module i użyć pakietu ESP32 by Espressif Systems w wersji 1.0.4. Użytkownik potwierdził, że po cofnięciu z 3.0.7 do 1.0.4 szkic zaczął się kompilować. Autor doprecyzował też powód: 1.0.4 to ostatnia wersja, w której można próbkuować ADC z częstotliwością 40 kHz i więcej. W nowszych wersjach, przynajmniej w Arduino core, maksymalna częstotliwość na wejściu ADC spada do około 10 kHz, co psuje założenia projektu FFT. [#21490287]

11. Jak fizycznie mieszać światło RGB, aby uzyskać lepszy efekt iluminofonii z użyciem mlecznego dyfuzora, białej ściany, projektora lub taśmy RGB LED?

Najlepiej zbliżyć źródła RGB do siebie i pozwolić im nakładać się na matowej powierzchni. W wątku podano kilka praktycznych metod: pojedynczą diodę RGB za mlecznym szkłem, trzy źródła światła ustawione blisko siebie i świecące na matę, projekcję na białą ścianę oraz użycie taśmy RGB LED. Starsi uczestnicy uzyskiwali mieszanie nawet na żarówkach za mleczną szybą. Autor potwierdził też, że po zwiększeniu bezwładności i projekcji na białe tło efekt wyraźnie się poprawił. [#21490287]

12. Na czym polega opisana metoda ruchomej średniej z buforem FIFO do dodawania bezwładności światła i jak liczba przechowywanych próbek wpływa na szybkość reakcji?

Metoda polega na ciągłym uśrednianiu ostatnich próbek audio zamiast sterowania światłem pojedynczym odczytem. Autor użył bufora około 30 próbek dla każdego koloru. Nowa próbka trafia na początek, najstarsza wypada, a średnia z całego bufora steruje PWM. Aktualizacja następuje co jedną próbkę, czyli w jego przykładzie co około 16 ms. Im więcej próbek zapiszesz w buforze, tym wolniejsze i gładsze będą zmiany światła. Im mniej próbek, tym efekt będzie szybszy i bardziej nerwowy. [#21494245]

13. Jak działa automatyczna regulacja poziomu po FFT w tym projekcie i jak parametry max_level, divisor, arw_increase i arw_decrease zmieniają dynamikę?

Regulacja działa przez dynamiczną zmianę dzielnika, którym skaluje się wartość pasma FFT przed wysłaniem na wyjście PWM. Autor podał przykład z max_level, divisor startowym 1000, progiem prog_arw 100 oraz krokami arw_decrease 50 i arw_increase 25. Gdy level_output przekroczy max_level, dzielnik rośnie i wyjście słabnie. Gdy sygnał jest za mały, dzielnik stopniowo maleje i wyjście rośnie. To daje prostą ARW po stronie cyfrowej bez stosowania analogowego kompresora. [#21507177]

14. Jak najlepiej skalować ten prototyp od LED-ów 1 W do mocniejszego oświetlenia, na przykład przez szeregi, rezystory lub driver stałoprądowy PT4115?

Najpraktyczniej zwiększyć moc po stronie LED, a nie wracać do żarówek 230 V na triakach. Autor zaznaczył, że pokazany stopień wyjściowy to tylko przykład dla diody 1 W. Dalej można łączyć więcej LED szeregowo albo szeregowo-równolegle, z prostymi rezystorami kosztem większych strat. Lepszą drogą jest tani driver PT4115, opisany jako 30 V i 1.2 A, sterowany PWM z mikrokontrolera. To pozwala podnieść moc, zachować płynne sterowanie i uniknąć problemów z fazową regulacją żarówek sieciowych. [#21503111]

15. Jak wygląda efekt tej iluminofonii przy utworach „Enola Gay”, „Take On Me” i „Gimme All Your Lovin’” na różnych ustawieniach bezwładności?

Wątek nie zawiera gotowego porównania tych trzech utworów, bo autor tylko zadeklarował, że może uruchomić test wieczorem. Da się jednak wyciągnąć bezpieczny wniosek praktyczny: przy większej bezwładności światło będzie płynniejsze i bardziej „żarnikowe”, a przy zerowej lub małej bezwładności przejdzie w czystszy efekt PWM, czyli szybsze, ostrzejsze reakcje. Sam autor pokazał już dwa tryby: zwiększoną bezwładność oraz ustawienia dla „optycznych sprinterów”, i uznał oba za lepsze od zwykłego przełączania LED-ów. [#21489646]
Generated by the language model.
ADVERTISEMENT