lichtorgel / FFT / fast fourier
hi ihr,
für eine "stimmungs-lampe" betreibe ich eine RGB-Led an einem atmega8. farben und helligkeit sind einstellbar, man kann das ding mit einer fernbedienung steuern, schaltplan und programm werde ich demnächst hier veröffentlichen. soweit so schön.
ein musikgesteuerter lichteffekt wäre nun noch das tüpfelchen auf dem i, deshalb habe ich ein transistorverstärktes audiosignal an einen ADC eingang gelegt, das ich auch mit (je nach auflösung) bis zu 18kHz gesampelt bekomme.
nur was jetzt tun mit den schönen daten? ein im rhytmus der musik pulsierendes farbenspiel wäre ganz hübsch, also habe ich überlegt, das signal (softwareseitig) in bässe, mitten, höhen zu teilen, und damit die 3 farben anzusteuern. eine fourier-transformation (FFT) ist mit dem mega8 zwar machbar (http://elm-chan.org/works/akilcd/report_e.html), aber da ich noch andere funktionen (die RC5 dekodierung und eine RGB/HSL transformation) habe, reicht mir der platz nicht aus. ausserdem brauche ich eine so detailierte spektrum-analyse gar nicht und weiss auch nicht, ob es überhaupt gut aussehen würde.
mit goertzel kann ich, soweit ich weiss, nur auf das vorkommen einer bestimmten frequenz testen.
kurz gefragt, weiss jemand einen einfacheren weg (oder hat eine idee), die audiodaten für einen lichteffekt zu nutzen? wäre auch schön, wenn statt epilepsiegefährdendem geflacker ein pulsieren im takt der musik entsteht.
gruesse & schonmal vielen dank für jede hilfe
Liste der Anhänge anzeigen (Anzahl: 1)
Hey,
ich weiß es ganz ehrlich nicht
Wenn ich es mit der Software aus dem Anhang und der ASM Datei teste, funktioniert es wunderbar .. alles wird ohne Probleme dargestellt
Nehm ich jetzt die C Routine erscheinen der Balken links ...
Bei der ASM Routine ist auch ganz links ein minimaler Balken zu sehen, da hab ich aber eher die Vermutung, dass es noch das 50hz brummen der Signalquelle ist... auch für mich nicht weiter tragisch, könnt ich ja noch rausfiltern ...
Meine beiden Vermutungen:
Es ist irgendwo ein Fehler in der ASM Lib, der aber unabhängig von den verwendeten samples auftritt
Oder es stimm irgendwas nicht mit der Art, wie der ADC Puffer ausgelesen wird...
Nur leider steig ich kein bischen hinter den ASM Code bei dem ADC Part, die FFT Berechnung ist mir auch ein Rätsel ..
Naja zumindest weiß ich, wie der ErgebnisPuffer aussieht und wenn ich rausfinde wie ich einen TWI Slave in ASM hinbekomme, der einfach nur auf kommando den Puffer per twi sendet, dann bin ich auch zufrieden
Ist nur ärgerlich, dass die schöne C Routine nicht so will, wie ich