Forum: PC Hard- und Software RGB Led mit Musik steuern


von Zwäähn .. (zwaeaehn)


Lesenswert?

Moin Moin,

ich bin schon seit einiger Zeit auf der Suche nach etwas.
Ich möchte die Farben eines RGB Strip mittels Modul o.ä. den 
verschiedenen Frequenzen einer Musik Datei zuordnen können.
Nicht diese billigen Audio Controller wie sie z.b. auf Amazon zu finden 
sind da diese meistens einfach nur so rum flackern ohne Takt.

Gibt es in dieser Richtung etwas?
Optimal wäre wenn man es auch via Software einstellen könnte.


mfg

von Borislav B. (boris_b)


Lesenswert?

Hi, ich hab mir sowas selber gebastelt.
War gar nicht so schwer:

 - Die original LED-Steuerung abhor ich mit einem Arduino versehen, der 
direkt die MOSFETS ansteuert (minimal-invasiver Eingriff in die 
Schaltung) ;-)

- Dem PC Gegenüber gibt sich der Arduino als virtueller COM-Port aus 
(per USB).

- Ein einfaches C# Programm spielt die MP3 ab, und sendet per COM-Port 
die Farbinfos an den Arduino. Libs zur Audio-Analyse gibt es 
verschiedene...

Postiver Nebeneffekt:
Man kann auch leicht andere Ansteuerungen realisieren:
 - Manuelle Einstellung der Farben/Effekte
 - "Ambilight"
 - usw.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Die Farben einer "Lichtorgel" von den Frequenzen abhängig machen ist 
quasi Tradition, aber nach meinem persönlichen Empfinden kann der Mensch 
bei fertig abgemischter Musik dabei kaum einen Zusammenhamg zwischen 
Sehen und Hören herstellen. Man ist wesentlich sensibler, Lautstärke und 
Farbe von einander abhängig zu machen, evtl. mit geringer 
Frequenzabhängigkeit ...

Aber wie auch immer: ICH empfehle, einen "modernen" LED-Strip mit 
WS2812-Controllern zu kaufen (144 LEDs pro Meter, ca. 35,- pro Meter), 
da kann man jede einzelne LED digital mit 3x256 Stufen ansteuern. Sehr 
Mikrocontroller-freundlich! Allerdings braucht man ein ordentliches 
Netzteil, diese LED-Strips brauchen bei voller Aussteuerung bis zu 3..4 
Ampere pro Meter. Zusätzliche Ansteuer-Transistoren oder ICs werden 
nicht benötigt.

Es gibt die "neopixel"-Lib von Adafruit für Arduino, wo die gesamte 
Ansteuerung realisiert ist. Eingangsseitig kann man die ADCs des Arduino 
nutzen, zur Not auch hinter je einem Hoch- und Tiefpass zur 
Frequenztrennung ...

: Bearbeitet durch User
von Zwäähn .. (zwaeaehn)


Lesenswert?

Ich hab hier noch einen 512er Raspberry rumliegen mit dem könnte man das 
sicherlich auch realisieren.
Im Moment habe ich nur die normalen RGB Strips da, könnte die mit den 
Controllern aber bestellen.
Allerdings denke ich für dem Anfang an weniger Leds pro Meter da ich 
mich ja erst ran taste sozusagen.

Soviele Frequenzen müssen ja auch nicht gefiltert werden ich dachte da 
ehr an etwas größere Schritte z.b. von 30hz - 50hz (Tiefbass) Farbe 
blau, 50hz-80hz grün usw.

Die nächste Frage wäre, wie kombiniere ich die Controller auf den LED 
Streifen mit dem Pi?

Ich hab mal was gelesen wie man Ausgänge am Raspberry für eine RGB Led 
setzt aber in dem Fall wär das ja wieder was anderes da ich ja einen 
Controller ansteuern muss.

Bin noch relativ neu auf dem Gebiet ''Mikrocontroller'' aber lernfähig^^


@Boris P.
Du hast den Controller von nem normalen RGB Strip also aufgemacht und 
bist direkt drauf?
Hab mal so'n Controller aufgemacht, wollte die Signale extern dort 
einspeißen um die Farbvorgabe zu bestimmen habs aber im Endeffekt nicht 
versucht weil ichs nicht kaputt machen wollte.^^




edit: Habs gefunden mit dem Raspberry
http://mitchtech.net/raspberry-pi-pwm-rgb-led-strip/

Nur mit den normalen Strips und auch nicht das was ich brauche.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Sven M. schrieb:
> Die nächste Frage wäre, wie kombiniere ich die Controller auf den LED
> Streifen mit dem Pi?

Ein Pi ist m.E. etwas überdimensioniert für diese Aufgabe und 
möglicherweise auch nicht gut geeignet - zumindest was die Verwendung 
mit den WS2812-LEDs betrifft.

Diese werden mittels seriellem Signal gespeist, bei ca. 800 kbit/s. Die 
einzelnen Controller sind alle per "daisy chain" gekoppelt, also "vorne 
rein und hinten raus". Da auf dem Pi (im Gegensatz zum Arduino) ein 
komplettes Linux läuft, ist es evtl. ein wenig schwierig, hardwarenah 
präzise getimte Takte zu erzeugen ...

von Zwäähn .. (zwaeaehn)


Lesenswert?

Frank Esselbach schrieb:
> Sven M. schrieb:
>> Die nächste Frage wäre, wie kombiniere ich die Controller auf den LED
>> Streifen mit dem Pi?
>
> Ein Pi ist m.E. etwas überdimensioniert für diese Aufgabe und
> möglicherweise auch nicht gut geeignet - zumindest was die Verwendung
> mit den WS2812-LEDs betrifft.
>
> Diese werden mittels seriellem Signal gespeist, bei ca. 800 kbit/s. Die
> einzelnen Controller sind alle per "daisy chain" gekoppelt, also "vorne
> rein und hinten raus". Da auf dem Pi (im Gegensatz zum Arduino) ein
> komplettes Linux läuft, ist es evtl. ein wenig schwierig, hardwarenah
> präzise getimte Takte zu erzeugen ...


Ist ja wie gesagt nur zu Testzwecke, bevor ich noch'n Ardunio oder 
anderes kaufe.
Außerdem hab ich im Moment eh keine Verwendung für den PI ;)

Zumindest hat es schon jemand geschafft einen Equalizer zu basteln.
http://www.instructables.com/id/Raspberry-Pi-Spectrum-Analyzer-with-RGB-LED-Strip-/?lang=de

von Thomas D. (thomasderbastler)


Lesenswert?

Boris P. schrieb:
> - "Ambilight"

Na dann bin mal gespannt..ob es jemand hinbekommt. Ich glaube nicht, daß 
es so trivial ist.Man beachte, heutzutage steht "nur" HDMI als Einganz 
zur Verfügung.

von XX (Gast)


Lesenswert?

Thomas der Bastler schrieb:
> Na dann bin mal gespannt..ob es jemand hinbekommt. Ich glaube nicht, daß
> es so trivial ist.Man beachte, heutzutage steht "nur" HDMI als Einganz
> zur Verfügung.

Naja, sooooo schwer ist das dann auch nicht: Gibt ja Wandler HDMI --> 
Composite und ab da kann man schon was anfagen. Siehe 
http://www.forum-raspberrypi.de/Thread-tutorial-ambi-tv-ambilight-fuer-hdmi-quellen

von Thomas D. (thomasderbastler)


Lesenswert?

XX schrieb:
> Naja, sooooo schwer ist das dann auch nicht:

Nun es war mal eher so eine theoretische Frage, weil ich schon einiges 
mit meinem Freund angeschaut habe, aber so richtig gescheites haben wir 
auch nicht gefunden. Ich wollte eh schon lange Ambilight haben, aber 
durch den Kauf von einem neuen Phillips TV, hat sich die Sache erledigt.

von Joachim B. (jar)


Lesenswert?

Frank Esselbach schrieb:
> Da auf dem Pi (im Gegensatz zum Arduino) ein
> komplettes Linux läuft, ist es evtl. ein wenig schwierig, hardwarenah
> präzise getimte Takte zu erzeugen ...

ja und nein

erstens hat der PI viel mehr MHz, es gibt jede Menge LIBs die dort 
genaues liefern können, aber gemacht habe ich es noch nie, andere mit 
WS2812 schon Ambilight und dann gäbe es noch SPI der immer 8 bit 
rausschiebt und die LEDs übernehmen nur nach einer Pause von 50µs.

Mit dem Arduino und der fastLED Lib ist es schneller Ergebnisse zu 
bekommen.

Der PI bietet sich eher für die FFT an, wobei das mit fastFFT auf dem 
Atmel wohl auch geht, aber meine fastFFT Versuche unter C liegen min. 2 
Jahrzehnte zurück.

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Joachim B. schrieb:
> Der PI bietet sich eher für die FFT an, wobei das mit fastFFT auf dem
> Atmel wohl auch geht, aber meine fastFFT Versuche unter C liegen min. 2
> Jahrzehnte zurück.

Ist die FFT nich schon die Fast-Fourier-Transformation? Im Gegensatz zur 
DFT, der diskreten-Fourier-Transformation? Demnach wäre die fastFFT dann 
die fast-(beinahe?)-Fast-Fourier-Transformation?

von Borislav B. (boris_b)


Lesenswert?

Sven M. schrieb:
> Du hast den Controller von nem normalen RGB Strip also aufgemacht und
> bist direkt drauf?
> Hab mal so'n Controller aufgemacht, wollte die Signale extern dort
> einspeißen um die Farbvorgabe zu bestimmen habs aber im Endeffekt nicht
> versucht weil ichs nicht kaputt machen wollte.^^

Genau, die sind ja recht simpel aufgebaut. Und wenn man ihn doch kaputt 
macht gibt es im Netz Ersatz für wenige Euro. Das Risiko ist also gering 
;-)

Thomas der Bastler schrieb:
> Na dann bin mal gespannt..ob es jemand hinbekommt. Ich glaube nicht, daß
> es so trivial ist.Man beachte, heutzutage steht "nur" HDMI als Einganz
> zur Verfügung.

Um das mal klarzustellen: ich steuere die LED Leiste vom PC aus. D.h. 
das Ambilight ist so realisiert, dass ich per DirectX die aktuell 
dominante Farbe des Bildschirms abfrage, und die dann über die LEDs 
ausgebe. Das klappt z.B. super bei PC spielen.

Ein "echtes" Ambilight ist es also nicht...

von Joachim B. (jar)


Lesenswert?

j. t. schrieb:
> Ist die FFT nich schon die Fast-Fourier-Transformation? Im Gegensatz zur
> DFT, der diskreten-Fourier-Transformation?

ach komm doch nicht mit Details :-)

mir war so als wenn man zwischen FFT und einer "schnelleren" Lösung am 
MC unterscheidet, wie gesagt ist bei mir 2 Jahrzehnte her.

Da war mir zur "normalen" FFT eine verkürzte MC gefälligere in 
Erinnerung.

Thomas der Bastler schrieb:
> Ich wollte eh schon lange Ambilight haben, aber
> durch den Kauf von einem neuen Phillips TV, hat sich die Sache erledigt.

ja ist natürlich eine Überlegung vor langen teuren Bastellösungen, nur 
nicht jeder mag Philips TV seit dem K9er Chassis :-)

Es gibt genug Leute die sich ihr philipsunabhängiges Ambilight gebaut 
haben mit dem PI, HDMI Splitter, Composite Umsetzer, Grabber.

: Bearbeitet durch User
von Zwäähn .. (zwaeaehn)


Lesenswert?

Boris P. schrieb:
> Genau, die sind ja recht simpel aufgebaut. Und wenn man ihn doch kaputt
> macht gibt es im Netz Ersatz für wenige Euro. Das Risiko ist also gering
> ;-)


Könntest evtl 'n Bild machen von Deinem Kunstwerk bzgl Controller wo du 
dran gegangen bist?:D

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Frank Esselbach schrieb:
> Die Farben einer "Lichtorgel" von den Frequenzen abhängig machen ist
> quasi Tradition, aber nach meinem persönlichen Empfinden kann der Mensch
> bei fertig abgemischter Musik dabei kaum einen Zusammenhamg zwischen
> Sehen und Hören herstellen. Man ist wesentlich sensibler, Lautstärke und
> Farbe von einander abhängig zu machen, evtl. mit geringer
> Frequenzabhängigkeit ...

das hängt ein bischen davon ab, wie es gemacht wird:

Die Bässe 15Hz - 150 Hz rausfiltern, dann ein weiteres Signal draus 
bilden, dass 0 ... 20Hz hat und die Differenz auf einen OP: Bei einem 
Anstieg eines Bass-Signal hat man für einige 100ms eine 1 am OP und kann 
damit die Bassschläge rot anzeigen.

Dasselbe macht man mit Frequenzen zwischen 5kHz und 20kHz und wieder 
einem langsameren Filter: Das werden die blauen Höhen der HiHat / 
Becken.

Mit solchen Methoden kann man Audio analysieren und den Rythmus 
rauskitzeln. Es gibt von Steinberg einen plugin, der den Beat 
extrahiert. Geht sehr zuverlässig.

Grün kann man mit der Gesamtlautstärke der Restfrequenzen steuern, aber 
nicht direkt, sondern per Expander gesteuert.

Den Beat könnte man auch nutzen, um die Schlange voranzutreiben und das 
Muster weiterzurücken.

: Bearbeitet durch User
von Borislav B. (boris_b)


Angehängte Dateien:

Lesenswert?

Sven M. schrieb:
> Könntest evtl 'n Bild machen von Deinem Kunstwerk bzgl Controller wo du
> dran gegangen bist?:D

Siehe oben. Vom Power-Connector zweige ich die 12V zur Versorgung ab.
An den Ausgängen des Controllers (genauer: an den Widerständen, da mehr 
Lötfläche) habe ich dann die RGB-Kabel angelötet.
Leider hatte ich keine Rote Litze mehr, daher musste weiß herhalten ;-)

von Zwäähn .. (zwaeaehn)


Angehängte Dateien:

Lesenswert?

Boris P. schrieb:
> Sven M. schrieb:
>> Könntest evtl 'n Bild machen von Deinem Kunstwerk bzgl Controller wo du
>> dran gegangen bist?:D
>
> Siehe oben. Vom Power-Connector zweige ich die 12V zur Versorgung ab.
> An den Ausgängen des Controllers (genauer: an den Widerständen, da mehr
> Lötfläche) habe ich dann die RGB-Kabel angelötet.
> Leider hatte ich keine Rote Litze mehr, daher musste weiß herhalten ;-)


Und die Farbinfos bestehen aus unterschiedlichen Spannungen?


Bei mir sieht der Controller n bisschen anders aus
3x 13N03LA Transistoren
Das 24C02 müsste das Eeprom sein.
Der Prozessor daneben hat leider keine Beschriftung...

: Bearbeitet durch User
von Borislav B. (boris_b)


Lesenswert?

Die Farbinfos kommen per 8-Bit-PWM. Beim Arduino also ein einfaches

analogWrite(PIN_R, curRedValue);
analogWrite(PIN_G, curGreenValue);
analogWrite(PIN_B, curBlueValue);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.