Wie schon geschrieben, möchte ich mir ein Moodlight
formatting link
nachbauen.
Das Original spielt bestimmte Lichtfolgen im Takt der Musik ab... hat jemand von Euch eine spontane Idee, wie man die Musik in den Microcontroller bekommt - reicht da ein einfacher Tiefpass ?
Danke schonmal für Eure Antworten und viele Grüsse, Martin
von Euch eine spontane Idee, wie man die Musik in den
Wenn du nicht fähig bist, Musik "in" einen Microcontroller zu bekommen (oder den Newsreader zu konfigurieren), dann wirst du vermutlich mit dem Microcontroller selbst und der Musik darin auch herzlich wenig anfangen können. Also wäre es vielleicht besser, sich diese Idee aus dem Kopf zu schlagen.
Am Tue, 01 Jun 2004 15:41:54 +0200 hat Lars Mueller geschrieben:
Ich würde an einen Spitzenwertgleichrichter mit passenden Zeitkonstanten (eher schnellerer Anstieg, langsamerer Abfall) denken und dann eher einen noch einen Hochpaß oder Komparator mit schwimmender Schwelle als Flankendetektor nachschalten. Vor dem Glr. ein Tiefpaß, aber ich weis auch nicht, welcher Spektralbereich hier wirklich maßgeblich ist. Es gibt ein paar DJ-Computerprogramme, die Waveform Darstellung und Beaterkennung haben (zB Traktor DJ Studio, ich glaub da gibt es eine zeitlimitierte Demnoversion), man köännte sich da die Wellenform beim Beat ansehen und daraus die Zeitkonstanten abschätzen. Vielleicht gibt es auch freie Softwarealgorithmen, deren Kern man als Analogschaltung realisieren kann (oder im µC implementieren).
...Eine der üblichen, hilfreichen Lars Müller Meldungen.
so ne spontane Idee: ersma Tiefpass is sicher schon mal gut. Danach Gleichrichter und Flankenerkennung, die einen Interrupt auslöst wurde schon gesagt. Dazu nun eine Klemmschaltung. Also ein unbelasteter Kondensator, der sich den höchsten vorgekommenen Pegel "merkt". Der Interrupt löst einen Zeitgeber aus und eine "vernünftige" Zeit (evtl adaptiv) später holt sich der Controler den höchsten erkannten Wert über einen A/D-Eingang und resetet die Klemmschaltung mit einem Schalt-FET gegen Masse. So kriegst Du mit wenig CPU-Last die Zeitpunkte der Beats und ihre Stärke. Damit lassen sich auch kompliziertere Beats als gleichmässiges Bummbumm auswerten.
Signalanalyse in Echtzeit mit einem Wald und Wiesen uC soll mir erst mal jemand zeigen. Ich w=FCrde gerne wissen, wie man eine ordentliche FFT mit gerade mal 1kiB Speicher machen will. Eigentlich braucht man daf=FCr entweder einen schnellen Prozessor (mehr als 300MHz sollten es schon sein) oder einen DSP. Das ist wohl beides f=FCr ein MoodLight =FCbertrieben.
Demgegen=FCber ist die Idee mit der Klemmschaltung wirklich nicht schlecht. Vor allem weil man z.B. am AVR den sog. Analog Comparator Eingang hat, der einen Interrupt ausl=F6st, sobald die Spannung an AIN0 gr=F6=DFer als die an AIN1 ist.
In einem alten ELV-Journal war auch mal ein "Beatcounter" veröffentlicht - müsste es auch als Fertiggerät (mit Plänen) bei denen geben. Falls Interesse besteht, such ich den Artikel mal.
Wie soll das sonst gehen? Ein Basstakt ist nicht einfach ein Ansteigen der H=FCllkurvenamplitude. Und selbst wenn man blo=DF diese auswerten w=FCrde, m=FCsste man das Signal mit einer hinreichenden Rate ( > 1kHz ) A/D sampeln. Das bedeutet, dass innerhalb einer Sekunde das ganze RAM in einem mittleren uC voll ist. Dann muss man den Inhalt aber auch noch durch Algorithmen schicken, die aber auch noch Speicher brauchen.
Eigentlich kann man sowas nur mit einem DSP vern=FCnftig machen.
Wozu mußt du überhaupt etwas sampeln und dazu noch mit 4 KHz, das sich nur im Bereich von ca. 2 Hz abspielt? Alles was der OP, wie ich ihn verstehe, wissen will, sind die zeitliche Abstände von Pegelschwankungen. Dazu wird einem sicher eine Menge einfallen.
Oder mit primitivster analoger Singalbearbeitung. Ein wenig filtern, gleichrichten, vielleicht noch einmal filtern, formen. Ich habe aber eigentlich nur wenig, mich damit umfassend zu beschäftigen, zumal ich nicht glaube, daß das Projekt eine Chance hat, sorry. Die Fragestellung klingt einfach viel zu sehr nach fixer Idee. Wenn wirklich etwas vielversprechendes vom OP kommt, kann man ja weiter sehen.
Ich hab das Gefühl du gehst das ganze viel zu kompliziert an. Hier nun mein Vorschlag: Vergiss den Mikrocontroller, vergiss die CCFL-Röhren! Kauf dir von dem gesparten Geld lieber noch ein paar Brüllwürfel dazu. Als Beleuchtung reichen ein paar billige Baumarkt-Glühbirnen hinter buntem Acrylglas. So, jetzt schließe das ganze Geraffel mit samt den Verstärkern an eine Netzphase an, leg irgend eine Wump-Wump-Wump-CD ein und dreh mal so richtig[tm] auf! Die Glühbirnen werden bei den Beats gegen den Stromhunger der gierigen Subwoofer keine Chance haben und klaglos nachgeben, du hast also genau das, was du willst! - leider invertiert, aber dafür wirds dir dann wenigstens nicht zu dunkel.
Vorschlag meinerseits: St=F6psel mal ein Audiosignal in ein DSO und stelle eine Samplingfrequenz von 20Hz ein. Dann will ich mal sehen, ob das hinhaut, Stichwort: Aliasing.
Ein Sample ist immer relativ kurz. Das Audiosignal besteht aus einem Frequenzgemisch. D.h. dass man durch eine niederfrequente Abtastung nicht automatisch nur die tiefen Frequenzen erfasst. Oder anders gesagt: Wenn man ein Signal sampelt, muss die Samplingfrequenz mindestens doppelt so gro=DF wie die h=F6chste auftretende Frequenz sein, sonst Funktioniert es nicht.
Aber mit einem einfachen Tiefpassfilter ist es hier nicht getan, da der alles, was dr=FCber liegt knallhart abschneiden wird/sollte. F=FCr eine Pegelerkennung taugt das nicht. In deinem Posting bist Du ja schon auf den Trichter gekommen, dass eine entsprechende Filterschaltung notwendig ist. Nur ist das eben genau das, was bereits vorgeschlagen wurde: Eine Klemmschaltung. Die macht eigentlich nix anders, als die H=FCllkurve des Signals herauszufiltern. Ungef=E4hr das gleiche wie die Detektorschaltung bei einem AM Empf=E4nger nur, dass der Tr=E4ger ein Frequenzgemisch ist.
Warum nicht, es sagt ja keiner das er die FFT über den gesamten Audiobereich machen soll. Vieleicht erst ein Tiefpass der nur Frequenzen unter 200 Hz durchläßt, das ganze dann mit einer Diode gleichrichten und mit einem Kondensator etwas glätten. Das sampelt man dann mit irgendwas 50-100 Samples ein und macht eine kleine FFT darauf die geziehlt nur den Bereich 50-180BPM (0,5-3 Hz) untersucht.
Sinnvollerweise fängt man mit der FFT Berechnung nicht mit der tiefsten Frequenz an, sondern bei der letzten bekannten Bass-Frequenz und schaut sich die Nachbarn an, sind die kleiner ist man bereits fertig, sonst muss man es halt komplett berechnen.
Da kann man dann außen schön eine LED drann machen die anzeigt ob der Takt gelockt ist. Andernfalls einfach Zufalls- muster anzeigen.
Das wäre sowiso der einfachste Weg, kürzlich hatte ich ein paar Lampen mit ein paar aufaddierten Sinuskurven angesteuert und alle waren der Meinung das würde ja so toll zu Musik passen....
Du hast meinen Vorschlag nicht ganz verstanden und ich habe keine Lust, bis ins Detail zu erklären, warum da mit ein klein wenig analoger Verarbeitung des gleichgerichteten Signals (Hüllkurve) bereits der Beat fertig vorliegt und man nur noch die Zeit zwischen zwei oder mehr Impulsen messen müßte. Das sollte selbst mit dem einfachsten Prozessor und geringen Programmierkenntnissen möglich sein.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.