Hallo zusammen!!
Ich will mit meinem Schwiegervater in seinem Disco-Keller die
Lichtsteuerung mit einem oder mehreren ATMega16 realisieren. Zu einer
ordentlichen Disco-Beleuchtung gehört natürlich auch eine Lichtorgel,
die auf die unterschiedlichen Höhen und Tiefen reagiert.
Hier im Forum habe ich schon viel über FFT gelesen, da ich aber
absoluter Neuling bin, habe ich nur Bahnhof verstanden.
Kann man so eine FFT direkt mit dem Controller erledigen, oder brauch
ich da Hardware, die mir aus den Frequenzen direkt digitale Signale für
den avr liefert?
Hat jemand schon mal so etwas gemacht? Oder hat jemand schon ein
fertiges C-File, das ich verwenden kann?
ist das nicht mit Kanonen auf Spatzen usw? Was spricht gegen die
altbewährte Technik mit analogen Filtern und ner Leistungsstufe
dahinter? FFT mit nem AVR ist nicht grad der Renner und mehrkanalig
schon garnicht aber wenn man gern ne Minute auf den Lichtblitz zur Musik
warten mag...
bye
Frank
>aber wenn man gern ne Minute auf den Lichtblitz zur Musik>warten mag...
also 7.3msec fuer ne 128-point-fft wuerde ich nicht wirklich als
verzoegerung bezeichen. die videos am ende der seite sind schon...nett.
http://elm-chan.org/works/akilcd/report_e.html
Hallo fnah!
Ich bräuchte auch gar keine 128 Stufen. mir würden 8-Kanäle schon
ausreichen. Gibt es von diesem Projekt C-Files?
Frank:
>ist das nicht mit Kanonen auf Spatzen usw?
Ich wollte einfach alles unter einen Hut bringen, damit ich möglichst
viel Platz einsparen kann.
http://de.wikipedia.org/wiki/Fourier-Transformation
Ich beschäftige mich noch nicht sehr lange mit Fouriertransformation,
aber wenn ich das richtig verstanden habe, reicht es aus, die xn zu
berechnen (siehe Link, diskrete FT). Dabei geht man stillschweigend
davon aus, dass das Eingangssignl periodisch und eingeschwungen ist, was
bei Audio ja eigentlich nicht der Fall ist.
Meiner Meinung nach brauchst du nicht mal 8 Kanäle. 2-3 Kanäle reichen
völlig aus für eine Lichtorgel. Die Frequenz jedes einzelnen Kanals
kannst du mit dem n verschieben. Mit omega wird eine Grundfrequenz
gewählt. Du kannst also nur Frequenzanteile filtern, die Vielfache einer
Grundfrequenz sind.
Ansonsten braucht man wohl nur noch einen flotten Sinus (lookup table).
Ich hab es leider auch noch nicht programmiert, aber da sollte sich Code
finden lassen..
Wenn du nur zwei bis drei Frequenzen haben willst, dann nimm den
görtzel-algorithmus. der berechnet nur eine Frequenz (das machst halt
dreimal).
Das ist letztendlich dann nur noch ne differenzengleichung, und spuckt
mit jedem takt einen wert aus...
>reicht es aus, die xn zu berechnen (siehe Link, diskrete FT)
Nach meinem bescheidenen FT/FFT-Wissen:
Für eines Deiner xn mußt Du über das komplette Fenster iterieren (für
jedes Sample ein Sinus-Lookup und eine Multiplikation).
Damit erfaßt Du dann aber auch nur die Amplitude einer einzigen Frequenz
(bzw. eines ganz schmalen Frequenzbandes) - eben das, was in der FFT
eine Spalte wäre.
Da das zu schmal ist, müßtest Du das zig-mal machen, um einigermassen
z.B. den Bassbereich zu überstreichen.
Bessere Lösung: IIR-Bandpaß-Filter mit Aufsummierung der
Ergebnissamples. -> damit kannst Du komplette Bereiche überdecken (mit
minimalem Rechenaufwand).
Nachteilig ist dabei natürlich der hohe Aufwand, sich erstmal die
IIR-Faktoren zu berechnen/besorgen ;-).
>görtzel-algorithmus. der berechnet nur eine Frequenz
Der ist vielleicht für DTMF super geeignet, aber doch nicht für 'ne
Lichtorgel. (auch wenn Disco-Mucke oft gleich klingt, werden tatsächlich
ab und zu unterschiedliche BassDrums/Snares/whatever benutzt)
mir erschliesst sich nicht, warum ein AVR die Orgel auswerten soll.
Lichtorgeln sind doch klassische Analogprojekte. Ein paar Filter, OPVs
und ein paar Treibertufen - schon zappeln die Leuchten im Musiktakt.
Also wenn man es in mehrfacher Ausführung haben möchte, spricht die
reduzierte Bauteilmenge schon für die AVR-Lösung.
Nimmt man einen AVR mit integriertem ADC braucht man kaum noch
Außenbeschaltung und kann mehrere Frequenzbänder mit variablen
Amplituden- und Zeitfenstern analysieren (z.B. nicht schneller als 240
bpm oder so).
Ich finde das schon äußerst sinnvoll.
Danke erstmal für die vielen Antworten
>Ähm wo kommt denn die Musik her?
Die Musik kommt aus dem Verstärker über den Line-Out.
CLR: Das mit den Bandpassfiltern tönt ziemlich gut. Leider ist bei dem
Link nicht beschrieben, wie das ganze funktioniert.
antworter:
>Nimmt man einen AVR mit integriertem ADC braucht man kaum noch>Außenbeschaltung..
Kannst Du mir sagen, wie das konkret aussehen kann?
Ich bin leider (noch) kein Fachmann im Gebiet Elektronik und Filter und
so. Daher kann ich kann ich mit IIR-Bandpassfilter und
görtzel-Algorithmus nicht viel anfangen.
Hat den wirklich niemand so ein fertiges Projekt in der Schublade
liegen? Mit Schaltplan und C-Programm?
Nicht, das ich mir nichts überlegen will (toll, ein anderer machts),
aber ich habe schlichtweg zu wenig Zeit, mich selber in das Thema
einzuarbeiten.
Bitte, helft mir!
Warum wählst du dann so einen komplizierten Weg (digital), wenn du keine
Ahnung hast?
Mach es analog, dann beschränkt sich die Komplexität der Materie in die
du dich einarbeiten mußt drastisch und das ganze sollte auch für einen
Einsteiger verständlich und mit wenig Fremdleistung machbar sein.
Wenn du unbedingt ein Projekt mit einem µC vor hast, dann erweitere doch
einfach in einem zweiten Schritt deine analoge Lichtorgel um ein
programmierbares Lauflicht.
Hallo,
ich hab in meiner Jugend Lichtorgeln gebaut.
Da war noch nix mit µc.
Ich fand allerdings,daß es blöde aussieht wenn eine Lampe nach irgend
einer hohen Frequenz zappelt.
Ich habe da schon lieber Lauflichter gemacht und diese dann noch mit
dem Pegel und-verknüpft. war der schönste Effekt fand ich.
Es zuckt nach dem Takt das Licht an,allerdings immer ein anderes.
Ich konnte auch umschalten auf Takt-Lauflicht(Lampen wechslen nach dem
Takt,bleiben aber an.Hier hat man dann ständig Helligkeit im Raum.
Oder ich gab einfach eine LED PegelAnzeige auf die Ausgänge.
Da es songs gab,bei dem kaum ein Takt zu erkennen war ;-) hatte ich
auch einen einstellbaren Taktgenerator eingebaut
War diskret aufgebaut, mit transistoren ;-)
später dann mit cmos and gatter. Die Level Anzeige mit ner
Widerstandskette
und ner Hand voll Schmitt-Trigger.
Heute würd ich das freilich mit µC machen.
Nur- was soll man einem Einsteiger raten,der obendrein noch keine Zeit
hat?
Gruß
Andi
Ich glaub es ist aussichtslos. Ich lass den uC weg, und besorg mir
irgendwo im Internet eine analoge Schaltung einer Lichtorgel und bau die
nach.
Vielleicht, wenn ich dann nach dem Studium Zeit habe, mach ich es dann
mal mit uC. Nur so zum Spass ;-)
Andere Lichteffekte, wie Lauflichter (im Knightrider style), abwechselnd
blinkende Lampen, usw. kann ich ja trotzdem mit dem uC machen.
Da reichen meine Kenntnisse grad noch aus :-)
Trotzdem vielen Dank!!