Software für Intelligente Beat Detection

  • Guten Abend zusammen,


    Ich bin gerade dabei eine "intelligente Beat Erkennung" zu schreiben. Dank diverser Echtzeit Algorithmen funktioniert das bisher auch recht zuverlässig und mit guter Performance. Ich schreibe die Software in C++ Builder und greife dabei auf Threads zurück um maximale Performance zu gewährleisten.
    Ziel ist es, dass jedes Lied bestmöglich erkannt wird ohne das der Benutzer an Reglern herumspielen muss.


    Schaut euch dieses Video an um euch von der Qualität der Erkennung zu überzeugen:
    http://klomeister.eimer-24.de/Daten/FFT_BeatDetection.mp4


    Und ich sehe da noch viel Potential und habe noch einige Ideen die Erkennung durch noch mehr Algorithmen zu verbessern!




    Screenshot:
    [Blocked Image: http://klomeister.eimer-24.de/Daten/BeatDetectFFT.jpg]


    Das Ziel ist es eig. eine neue Software von Beamer as Light (aka. Beamer Sount to Light) herauszubringen, aber bis es soweit ist, werden aber noch ein paar Monate vergehen. Aber auch hier ist schon sehr viel diesbezüglich in meinem "Kopf" es fehlt nur noch die Umsetzung.
    Die Effekte basieren nichtmehr auf Flash sondern auf HTML5 mit CSS und Javascript. Durch den eingebundenen Chromium 62 Browser, werden die Effekte dargestellt. Das tolle an HTM5 Effekten, jede Eigenschaft eines Effekts lässt sich dank CSS und Javascript beliebig zur Laufzeit verändern.


    Es wird eine in Blöcken dargestellte Playliste geben, an der man "Eigenschaftsblöcke" an Effekte anheften kann um diese zum Takt oder per Zeitraum zu "manipulieren" Farbübergänge, Drehwechsel, Start Stop, Größe, Bordersize, alles ist möglich... Theoretisch lassen sich sogar zur Laufzeit völlig neue Effekte erstellen.
    Vermutlich wird es auch eine art XML Editor geben mit dem man sich selbst Effekte erstellen kann die man dann in die Software einlesen kann.


    Naja das ist erstmal für DMX-Control irrelevant.


    Nichts desto trotz, wäre es möglich den Takt an DMX-Control weiterzuleiten, damit auch DMX-Control User von einer guten Takt-Erkennung profitieren können.



    Diesbezüglich wollte ich nun klären welche Möglichkeiten es denn gäbe den Takt von extern aus an DMX-Control zu liefern.

  • jedes Lied bestmöglich

    Video an um euch von der Qualität der Erkennung zu überzeugen

    Hallo KloMeister,


    ich traue mir jetzt nicht zu deine Arbeit im Detail beurteilen zu können, jedoch allein aus der Erfahrung heraus mit den bereits existierenden Beaterkennungen für DMXControl, denke ich du hast eine sehr einfach zu Analysierende Musikauswahl getroffen. Das ist alles mehr oder weniger elektronische Musik mit starkem Bass. Das sind die Fälle in denen jede Beaterkennung egal wie gut oder schlecht ganz passable Ergebnisse zeigt. Wenn du die Qualität deiner Beaterkennung zeigen möchtest wäre es gut auch Musik mit ruhigen leisen Passagen oder Passagen ohne Bass oder Schlagzeug zu wählen und aus den verschiedensten Musikrichtungen. Wenn dein Algorithmus dann auch noch gute Ergebnisse zeigt wäre das eine deutlich überzeugendere Präsentation.


    Viele Grüße
    Moritz

  • Ich investiere meine Freizeit in dieses Projekt um Benutzern kostenlos eine gute Musikerkennung zu "schenken". Es geht nicht darum hier etwas im "goldenen Licht" zu präsentieren, sondern Benutzern eine "Freunde" zu machen. Die Musik die in vielen Clubs und auf Veranstaltungen läuft ist nun mal meistens elektronisch und da machen Lichtshows auch am meisten Sinn. Natürlich hast du recht damit, dass es noch ganz andere Musikrichtungen gibt, bei der die "Beats" viel schwieriger zu identifizieren sind.


    Es ist niemand gezwungen diese Software zu verwenden. Ich versuche die Algorithmen auf die Musik zu optimieren die auch für Lichtshows geeignet sind und nicht auf die allerletzte Fahrstuhlmusik ;) (Irgendwo muss man ja auch Grenzen setzen).


    Gerne mache ich auch Vergleiche mit den bereits für DMX-Control vorhandenen Modulen für die Takterkennung. Dann kann jeder selber entscheiden welche Erkennung er für die geeignete hält.




    Wenn Interesse besteht würde ich wie gesagt eine Funktion einprogrammieren den Takt an DMXControl zu senden. Dafür bräuchte ich aber noch eure Hilfe.

  • Bitte nicht falsch verstehen, ich wollte dein Projekt nicht kritisieren. Wie gesagt mute ich mir auch nicht an die Qualität der Beat-Erkennung auf die schnelle beurteilen zu können.
    Im Post oben hattest du die Qualität deines Plugins hervorgehoben die im Video ersichtlich wäre. Ich wollte dir dazu nur den Tipp geben, das meiner Meinung nach die gezeigte Musik dazu eher ungeeignet ist und du deine Software mit bunter gemischter Musik besser demonstrieren kannst, wenn die du wie oben gesagt die Qualität hervorheben willst.
    Als Vergleich wäre das wie wenn ich einem Sportwagenherstellen raten würde sein Wagen nicht in der 30er Zone zu präsentieren, weil damit einfach keine Beurteilung möglich ist :D


    Viele Grüße
    Moritz

  • Hallo KloMeister,


    beeindruckend :D
    Ich muss allerdings auch auf die Kommentare von Moritz zurückkommen: Ich hab mit der Zeit einfach die Erfahrung gemacht, dass es ultra schwer ist ein konstantes Beat-Signal aus einem laufenden Lied in Echtzeit rauszubekommen... Das ist quasi DER Grund warum ich damals mal mit Virtual DJ angefangen habe, weil das halt die Lieder analysiert und die Arbeit sozusagen für das komplette Lied im voraus macht. Dadurch ist auch dann noch ein Beat Trigger vorhanden, wenn wie Moritz erwähnte diese House-Typischen leisen Stellen kommen. Es ist einfach verlässlich.


    Nichts desto trotz habe ich den Eindruck, dass dein Programm genau das tut was du möchtest :)
    Ich weiß von Virtual DJ, dass die nicht nur die FFT von ihrem Signal anschauen und dann halt "abschätzen" auf welcher Frequenz wohl der Kick ist, sondern sich auch noch die Ableitung davon ansehn. Ein Kick ist ja i.d.R. nichts anderes eine einen in kurzer Zeit in der der Frequenz fallende Sinunsschwingung. Und die fangen oft auch ziemlich weit oben an. Ich hab leider nichts um das sichtbar zu machen aber ich könnte mir vorstellen, dass das recht deutlich zu sehen ist. Damit kann man Kicks auch von "harten" Basslines unterscheiden.
    Was ich jetzt nicht weiß aber mir sehr gut vorstellen könnte wie sie versuchen diese leisen Stellen ohne klaren Kick zu überbrücken, ist ein verdammt cleverer Kalman-Filter. Und dann halt mit ner guten Approximation die endgültigen BPM und die Phase festlegen.


    Lg
    Martin Winter

  • Coole Sache, und ich wünsche eine erfolgreiche Realisierung !
    Da werden sich viele Freuen, wenn es Alternativen gibt, die vieleicht irgentwie "besser" sind !


    Was eine völlig unabhängige Herstellerübergreifende Triggerung angeht !


    Die meisten Lichtsteuerungen egal ob Soft oder Hardware,
    können eine MIDI Note als Triggersignal verwerten !
    Also, wenn deine S2Light erfassung in der Lage ist als Triggersignal eine voreingestellte Midinote zu senden, kann man hier ansetzen !
    Auch eine Ausgabe als DMX Signal / Eine Kanal information könnte verwendung finden !


    Klar, man benötigt dann einen MIDI Merger, wenn man Externe midi Pulte zur Fernsteuerung verwendet !


    Doch irgentwie muß das ja rüberkommen das Triggersignal !


    Eine sicher extrem coole möglichkeit wäre es sicher eine 2te USB Tastatur zu Emulieren !
    Da Triggerungen gewönlich auch über die Tastatur gemacht werden können,
    wären MIDI und DMX IN nicht gestört !



    Man kann an jedem PC mehrere Tastaturen und Mäuse anschließen !
    Also wäre eine Emulierte Tastatur, die über USB an jeden Lichtrechner angeschloßen werden kann
    sicher die Ideeale Triggerquelle.


    Gruß Ralf

  • Sehr cooles Projekt! Sieht vielversprechend aus. Also ich würd das gern mal ausprobieren und ein Feedback geben wenn die erste beta fertig ist ;)
    Kann man denn ein Midisignal in DMXC3 bisher schon als Beat-Signal einbinden?


    ps: fetter track bei 3:33 ;)

  • Leider kann Dmxc3 keine midiclock auslesen. Ich wünsche mir das schon lange. Ich habe auch gelesen dass das Feature keine hohe Priorität hat. Schade eigentlich weil es eine Menge von MIDI file nutzenden Musikern gibt die auf diese Weise ihre Lichtshow wunderbar steuern könnten. Und soweit ich gelesen habe ist die MIDI Clock auch kein kompliziert aufgebautes Protokoll sondern vergleichsweise simpel. Da wird einfach eine bestimmte Byte Folge periodisch immer wiederholt. PC Dimmer kann das standardmäßig verarbeiten wird aber nicht mehr weiter entwickelt und hat wieder andere Nachteile. Ich habe immer noch nicht die Hoffnung aufgegeben dass im Rahmen der Erweiterung von DMX Control drei in Version 3.2 wenn Midi implementiert wird dann auch die MIDI Clock mitkommt. Träumen darf man ja.

  • Also damals bei DMXControl (2) hatte jemand ein kleines Plugin geschrieben, welches einfach nur einen Button auf der Form hatte. Über einen Klick auf den Button wurde ein "Beat" erzeugt. Ich habe diesen Button damals mit der alten "Beamer as Light" / "Beamer Sound to Light" Software einfach über das sogenannte "Handle" gedrückt. Dazu muss der Button nicht mal im Vordergrund sein und der Benutzer merkt nichts davon.


    Das wäre eine einfache Variante. Wichtig ist eben nur, das das Fenster auch dauerhaft vorhanden bleibt, damit der Button auch gedrückt werden kann. Ein "Hide" des Fensters ist jedoch möglich.


    Das sollte vom Programmieraufwand für beide Seiten relativ einfach sein.

  • "Hallo, I bims" wieder (habe mich mal angemeldet).


    Ich habe meine Beat-Detection (aktueller Stand), mal mit der von Frank Brueggemann verglichen (auf Weight Method und Spektrum Bassbereich). Das scheint mir so die für DMX-Control beste "Live Beat Detection" zu sein, die ich bisher so gefunden habe. Oder gibt es noch andere Plugins?


    Bei normaler Musik mit eindeutigen kurzem "Kickbass", gibt es bei beiden Programmen sehr gute und zuverlässige Ergebnisse. Einen sehr großen Unterschied habe ich bei der Musikrichtung "Hardstyle" festgestellt, wo der Bass nahezu durchgängig "dröhnt".


    Für Leute die gerne Hardstyle hören bzw. Lightshows mit Hardstyle machen möchten, könnte es sich vergleichsweise also eine sehr große Verbesserung ergeben, bzw. würde sich der Einsatz dieser externen Beat-Detection lohnen.
    Bei anderen Musikrichtungen ist der Unterschied nicht so "gigantisch", gerne mache ich dort auch noch vergleiche.


    Hier ein Vergleich mit Hardstyle:
    http://klomeister.eimer-24.de/…atDetection_Hardstyle.mp4


    (Ich möchte hiermit keinesfalls vorhandene Programme negativ darstellen, ich mache nur Vergleiche und Abweichungen "halte ich fest". Für euch!)

  • Gibt es da eine Möglichkeit die wirklich erkannten "Kicks" zu sehen? Weil in DMXControl 3(.1) erzeugt der Audio-Analyser einen Takt, der dauerhaft läuft. (Ah okay, schon gesehen "max additional beats")


    Edit: Also gefühlt ist das Ergebnis nicht wirklich besser, wenn das "Blinken" bei Beat den Takt darstellt.

  • Ich hab jetzt nochmal eine BPM Anzeige reingebaut und auch mal den DMXControl 3.1 Adio- Analyser mit reingenommen ins Video.


    Der Audio-Analyser möchte irgendwie nicht so. Beim ersten Lied siehts noch ganz gut aus (Zumindest was die BPM-Anzeige angeht). Das "Blinken" der Beat-Anzeige weicht jedoch auch gelegentlich vom Takt ab.
    Habe ich etwas falsch eingestellt? Hab die Settings auf Standard.


    http://klomeister.eimer-24.de/…gleich_DMXControl_3-1.mp4

  • Hi,


    Habe alle Modi durchprobiert, keiner ist in der Lage den "Kickbass" zuverlässig zu identifizieren (Selbst bei eher einfachen Liedern). Das Beat-Detection Plugin von Frank Brueggeman war da deutlich zuverlässiger. Dort gab es auch noch die Einstellmöglichkeit, das nur Tiefen mit in die Audioanalyse einbezogen werden. Bei dem aktuellen Audio Analyser von DMXControl 3.1 finde ich (noch) keine Einstellung die Frequenzbereiche bzw. den Frequenzbereich festzulegen.


    Manchmal muss man aufpassen, wenn zuviel "Automatik" mit reingespielt, funktioniert nichtsmehr... Ist ja wie mit den Köchen^^

  • Wie ich ja bereits erwähnt habe, bin ich dabei eine neue Version von "Beamer as Light" zu programmieren. Ich habe vor kurzem mit dem Playlisten Designer angefangen. Alles was ihr seht ist natürlich noch nicht für den Endnutzer optimiert, sondern lediglich nur für den Funktionstest gedacht. In dem Bild / Video könnt ihr grob das Konzept der Playliste sehen. Einige Sachen sind bereits in Planung wie z.B. das Takt unabhängige Steuern mit einem definierten Zeit-Intervall (z.B. Farbübergänge etc.).



    [Blocked Image: http://klomeister.eimer-24.de/…Light_2_22_12_2017_kl.jpg]




    Großes Bild:
    http://klomeister.eimer-24.de/…rAsLight_2_22_12_2017.jpg




    Video:


    http://klomeister.eimer-24.de/…as_Light_2_22_12_2017.mp4

  • Hat man denn in der fertigen Version die Möglichkeit die angezeigten Bilder für den Beamer auch "selber zu malen"?


    Alles was Chrome 62 darstellen kann, lässt sich anzeigen. Bilder (jpg, bmp, png, ...) Gif Animationen, Videos, PDF's, HTML Seiten, SVG Vector Grafiken, Flash Files (swf) etc.
    Wenn du allerdings meiner Software die Möglichkeit geben willst, dass sich der Effekt auch "steuern" lässt (Farbe etc.), musst du mit DIV-Containern bzw. anderen HTML-Elementen oder Vector-Grafiken (SVG) arbeiten, nur diese lassen sich zur Laufzeit mit Hilfe von Javascript bearbeiten.


    Aber es wäre durchaus denkbar einen simplen "Effekt Designer" einzuprogrammieren, der z.B. Vectorgrafiken erstellen kann, die sich einbinden und steuern lassen (Farbe). Für komplexe Dinge wie z.B. maßgeschneiderte Animationen, wird es dann allerdings zu schwierig. Einen ganzen HTML Designer für Animationen zu programmieren ist ein eigenes Groß-Projekt für sich selber.
    Animationen muss man dann schon mit ein paar HTML-Kenntnissen selber "zusammenfrickeln" oder mit Hilfe von geeigneten Tools. Gratis ist z.B. Google Webdesigner.




    Zum aktuellen Stand:
    Ich habe nun auch Multi-Color Effekte erstellt, bei dem zwei Farb-Modifier benutzt werden können (Sprich zwei unterschiedliche Elemente des Effekts können mit je unterschiedlicher Farbe gesteuert werden).


    http://klomeister.eimer-24.de/Daten/MultiColor_Effekt.jpg


    Edit: 26.12.2017
    Video bezüglich Multi Color Effekte und weitere Modifier:
    http://klomeister.eimer-24.de/…as_Light_2_26-12-2017.mp4

  • Newly created posts will remain inaccessible for others until approved by a moderator.

    The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.