BeatDetection Alpha

  • so nach Minti's Idee, hier nun das " to know" von mir:D


    hier stelle ich nun meine externe BeatDetection vor.


    damit ist es möglich ein sound input (was sie hören, mic, linein, usw...) zu analysieren.
    die BeatDetection analysiert bis zu 3 bänder gleichzeitig, wobei 1 band 11Hz breit ist.
    es kann nur 1 band oder alle 3 bänder und alle 3(gemixt) analysiert werden.


    dabei wird von jedem band ein array(50values) & ein array(200 values) gespeichert und zur detection benutzt. von diesen arrays wird jeweils ein avarage gebildet und mit 2-2.2 multipliziert.
    überschreitet nun ein band beide eigenen avarages ist dies ein BEAT.


    diese art der Beatdetection habe ich bei YouTube gefunden^^ und ist schon sehr alt.


    BENÖTIGT wird JAVA (min. Vers. 1.6)


    zu den Bedien Elementen:




    Bild1: Hauptfenster
    TAB's:
    MAIN = hier wird das Spektrum dargestellt:rolleyes:
    Band 1 =darstellung zu analysierendes Band 1
    Band 2 =darstellung zu analysierendes Band 2
    Band 3 =darstellung zu analysierendes Band 3
    Band All =darstellung zu analysierende Bänder (alle 3 zusammen)


    Fader & Buttons:


    linker fader = min Volume (im nicht Auto Modus), die überschritten werden muss für beaterkennung
    linker Button = Get = dieses Band zur BeatDetection benutzen
    rechter Button = Wave = audio daten ins array schreiben, if false = array=0


    Linien:
    es werden 2 Linien dargestellt, die sind die beiden avarages und somit die zu berschreitenden werte.



    Bild2: Setting's


    Fader:


    Power: dies ist der exponent mit dem das audio signal verstärkt wird
    Minvol: minimum zu überschreitende grenze für beaterkennung
    MaxBpm: maximal zu erkennnde Beat's (wird benötigt gegen "double beat detection";)
    Band: das CeterBand der 3 Bänder wenn Band= 5 dann, band 1=4, band 2=5, band 3= 6, band All=(4+5+6/3)
    Volume: multiplikator mit dem alle!! values multipliziert werden können bei zu schwachem audio signal.
    Speed: 0=fast, 8=slow : experimentel: haüfigkeit mit dem die array's beschrieben werden.


    MultiList: MIDIOUTPUTS


    hier kann man später das Output Midi Device wählen


    Button's:


    Draw: waveform's darstellen ja/nein, bei nein weniger prozlast!!
    Auto: berechnen der avarages ja/nein, bei nein Bild 1 linken fader benutzen


    Ausgabe:
    im mom wird eine midinote gesendet auf MidiDevice 3
    in zukunft soll noch OSC dazu kommen.


    Viel Spass beim testen :D


    DOWNLOAD

  • Update :D


    und wieder was neues, *freu*
    habs geschaft ne AGC einzubauen.
    AGC = Auto Gain Control = Auto Lautstärke Reglung
    das Input Signal wird automatisch in der intensität angepasst
    es wird mit einem Faktor von 0-2 multipliziert je nach Lautstärke:rolleyes:


    Code
    if (agc==true){if ((a+b+c/3)*Volume*AGC>150){AGC= AGC-.01;} else{AGC=AGC+.0005;} if (AGC>2){AGC=2;}}else{AGC=1;}


    iss cool 8)


    UPDATE2


    auch hinzugefügt wurde eine einfache Frequence Energy Detection.
    in dieser wird geprüft wie stark sich der wert verändert.
    zb. ob positive und wie stark.


    ein einfacher balken zeigt diese Energy an.


    Code
    dirAll = readingsAll[199]-readingsAll[195];
    if(..........&&
    (dirAll>minVol/2))
    {........}




    mfg maik


    DOWNLOAD

  • Hallo Brüderchen,


    poste doch bitte mal den Link für Linux.


    Welche Java-Version brauche ich?
    Ich teste mal unter Ubuntu 9.10 64Bit ;)
    Evtl. noch unter openSuSE 11.2 32Bit ;)


    Gruß


    Dirk

  • Hallo,


    ich hab Maiks Programm als Grundlage für ein neues Plugin genommen und zusätzlich noch zwei weitere Algorithmen der Beaterkennung eingebaut.


    Details und auch den Download des Plugins findet ihr hier. Bitte meldet Probleme gleich hier im Forum, besonders was die Hardwareunterstützung angeht, konnte ich nur mit sehr wenigen unterschiedlichen Soundkarten testen.


    Nicht unterstützt werden ASIO-Soundkarten und auch bei einem Rechner mit XP64 gab es Probleme.


    Sehr interessant ist auch die Bewertung der Qualität der Beaterkennung. Wenn die Qualität nicht OK ist, dann nennt auch die Musiktitel (und den Algorithmus), mit denen es Probleme gibt.


    [Blocked Image: http://www.dmxcontrol.de/mediawiki/images/BeatDetection1.jpg]


    Viel Spass beim Testen :]


    Gruß
    Frank

  • Hallo Frank,
    hab gerade Deine Beaterkennung ausprobiert, leider ohne Erfolg.
    An meinem Tower mit "7" und Realtek Audiodevice kann ich zwar starten, aber nix passiert.


    Und am Laptop (auch mit Realtek und "7") kommt beim Starten die Meldung: can´t start recording, error 8
    Dort hab ich allerdings beim Fenster Input: auch nur ein weißes Feld.


    Ich würd mich sehr freuen, wenn ich das plugin bei mir zum Laufen bringen könnte.


    Vielen Dank, Micha.

    Die beste Lightshow ist immer noch ein Sonnenuntergang im Hochsommer.
    (mit nem kühlen Weizen in der Hand..) 8)

  • Frank:


    Welche Optionen hat man den bei deinem Tool das Signal an DMXC weiterzuleiten?


    Im Moment seh ich nur, beim DMXC Beat Tool auf "Manuell" und "Vom Soundanalyzer". Aber da wird er Beat ewig weiter geführt und nicht direkt von deinem Plugin übernommen.



    Geht das auch noch anders?



    Und zur Beaterkennung selbst:


    Funktioniert nicht mal so schlecht, aber zum Teil erkennt das Plugin ganz klare Kickbeats nicht...

  • Hallo,
    so ich hab das Dingen jetzt am Laufen!! :D


    Vlt. als Tipp für alle, die auch noch Probleme haben....
    Also erstmal die neueste Offline Java Version installieren. Dann bei Windows 7 das richtige Aufnahmegerät wählen! ;(


    Die Nichterkennung eines Audiogerätes an meinem Laptop lag einfach daran, dass kein Klinkenstecker am Audioeingang eingesteckt war.
    Dies hat allerdings auch zur Folge, dass wenn ich den jetzt abstöpsel während alles läuft, Windows sofort mit einem Abmelden des Eingangs reagiert, was wiederum DMXC nicht mag, und sofort abstürzt....naja, dann lass ich den halt drin. :huh:


    Achja,
    Maik, danke für die Hilfe! Leider ist Dein Programm doch sehr Ressourcenbelastend für meinen kleinen Laptop, aber auf dem Tower läufts einwandfrei! :thumbup:
    Gruß, Micha.

    Die beste Lightshow ist immer noch ein Sonnenuntergang im Hochsommer.
    (mit nem kühlen Weizen in der Hand..) 8)

  • Hallo,


    erstmal "Danke für das Feedback !" :) !


    und nun ein paar Bemerkungen dazu ;) :


    Mondi:


    1. die installierte Java-Version spielt überhaupt keine Rolle (vielleicht für Maiks Programm) !


    2. das Problem, dass nicht alle Sound-Inputs erkannt werden liegt an der von DMXControl verwendeten Version der bass.dll. Bei Verwendung einer neueren Version bekomme ich alle vorhandenen Sound-Inputs, was hier nicht der Fall ist. Dies spielt besonders bei Windows7 und Vista eine Rolle, da dort jeder Input als eigenes Device gesehen wird und ich auf diese nur mit der aktuellen Version zugreifen kann. Freut mich, dass Du es trotzdem ans Laufen bekommen hast :) !


    3. Leider kann ich diese Konfiguration auch nicht testen, da ich nur XP-Rechner zur Verfügung habe.



    Lamborghini:


    1. Also eine engere Kopplung an das Beat-Tool von DMXControl gibt es nicht und ist auch mittels eines Plugins nicht machbar.


    2. Beaterkennung:


    Quote

    Und zur Beaterkennung selbst:


    Funktioniert nicht mal so schlecht, aber zum Teil erkennt das Plugin ganz klare Kickbeats nicht...

    Die Qualität der Beaterkennung ist (leider) sehr schwankend. Aber dies liegt nicht nur an dem Plugin. Ich habe Unterschiede festgestellt bei unterschiedlicher Hardware (trotz gleicher Einstellungen) und auch die verschiedenen Algorithmen führen zu recht unterschiedlichen Ergebnissen.


    ein Tip: Wenn Du die "Standard Weight Method" verwendest, erhöhe die Sensitivity, bis alle Beats erkannt werden !



    Viele Grüße
    Frank

  • Quote

    1. Also eine engere Kopplung an das Beat-Tool von DMXControl gibt es nicht und ist auch mittels eines Plugins nicht machbar.


    Ehm ich wie meinst du das mit "engere Kopplung"? Die Anbindung ist schon gut, aber es bringts nichts (oder zumindest mir bringt es nichts) wenn DMXC dein Signal in eine Endlosschleife packt.


    Dein Tool sollte eigentlich bei einem Beat nur auf "Sync" drücken in DMXC

  • Hallo Lamborghini,


    jetzt hab ich verstanden was du meinst ;) !


    Mein Plugin macht nichts anderes als den "sync"-Button zu drücken !!!


    Da gibt es es jetzt drei Möglichkeiten:


    1. Das BeatTool-Fenster ist offen und steht "nicht" auf manuell: es kommt kein Beat-Signal in DMXControl an !


    2. Das BeatTool-Fenster ist offen und steht auf manuell: DMXControl berechnet aus den Signalen vom Plugin einen "eigenen" Beat und gibt diesen an die Effekte weiter.


    3. Das BeatTool-Fenster ist geschlossen: Alle beatgesteuerten Effekte arbeiten nur mit den Beats aus dem Plugin. D.h., es läuft auch kein Beat weiter, wenn kein Signal mehr kommt !


    Gruß
    Frank

  • Solltest du vielleicht irgendwo erwähnen, dass man das Beattool von DMXC schliessen muss ;)



    Und ich hab bereits einiges getestet und "Standart weight method" mit erhöhter Senitivität geht am besten, aber eben auch da erkennt es nicht alles sauber, was es eigentlich ganz klar tun sollte.


    Manchmal kommt 5 Sekunden lang der genau gleiche Beat (jedenfalls für meine Ohren) und nur in den ersten 2 Sekunden flackert er etwas und dannach nicht mehr...

  • Auf die Idee mit dem Schließen des BeatTools wäre ich wohl auch nicht gekommen. Das ist leider etwas, was mir schon öfters unangenehm aufgefallen ist, nämlich dass es hier einfach keine richtige Doku gibt, aus der man sowas entnehmen könnte.


    Auf der einen Seite verständlich, weil das ganze Programm ja fast täglich ein Stück weiterentwickelt wird, auf der anderen Seite doch schon schade, weil man so ständig am Austesten der Möglichkeiten ist.
    Ich bin mir sicher, da schlummern noch einige Möglichkeiten in DMXC, die man nur erst entdecken muss.


    Vlt. sollte man mehr auf Tutorials und Videoclips setzen, da kann man in kurzer Zeit sehr viel dazu lernen. ;)
    Micha.

    Die beste Lightshow ist immer noch ein Sonnenuntergang im Hochsommer.
    (mit nem kühlen Weizen in der Hand..) 8)

  • Hallo,


    Wie kann ich bei dem Beat-Detection Plugin verhindern das an Stellen wo kein Beat kommt (Stille in Stück / Pause) immer noch der letzte Beat aus dem BeatTool kommt?
    Eigentlich brauche ich nur das rohe Beat Signal und nicht das gemittelte vom BeatTool.


    MfG
    Dirk

  • 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.