Akustischer Bewegungsmelder

  • Moin Audacitiziens!


    Das Setup: An meinem PC hängt ein Behringer XENYX 302USB, das mit einem AKG GN 50 ESP/CK31 und einer JBL Flip 3 in erster Linie mal mit Skype genutzt wird. Jetzt sollen diese Kleinigkeiten gemeinsam mit Audacity (adc) aber noch einen anderen Job übernehmen und bin hier auf der Suche nach Unterstützung.


    Das Thema: Ich möchte mit meinem PC automatisch Umgebungsgeräusche aufzeichnen, solange sie einen bestimmten Pegel überschreiten. Also eine klassische Aufgabe für ein NoiseGate oder die adc-Funktionen Akustische Eingangsüberwachung bzw. Pegelgesteuerte Aufnahme. Diese Aufnahmen sollen während meiner Abwesenheit laufen und bisher sehe ich immerhin die Möglichkeit, das Signal erfolgreich zu filtern.


    Das würde aber gelegentlich bedeuten, dass adc Spuren von mehreren Tagen Länge aufzeichnen müsste, wovon dann u.U. weniger als 1% relevant ist. Diese riesigen Dateien nachzubearbeiten ist höchst lästig und ich suche deshalb nach einer Möglichkeit jeweils nur die kurzen Schallereignisse mit einem Zeitstempel in einzelne Dateien zu speichern.


    Nachdem es nicht um hohe Qualität oder 100%ige Vollständigkeit, sondern nur um Ist da kein Krach, ist da doch Krach - falls ja, welcher Art? (Prinzip Außenbeleuchtung mit Bewegungsmelder, die nach einer bestimmten Zeit wieder ausgeht), spielen andere NoiseGate-Parameter wie Attack/LookForward keine wichtige Rolle. Lediglich Threshold, Hold und Release sollten grundlegend anpassbar sein. Ein Optionsumfang wie beim NoiseGator würde schon genügen. Es geht eben um die Ausgabe in einzelne Dateien.


    Vielleicht hat ja jemand schon so etwas mal realisiert (gerne auch mit anderer Software) und/oder kann mir jemand etwas Starthilfe geben. Ganz herzlichen Dank schon mal für's Lesen :thumbup: und ich freue mich über jeden Tip. :)


    Nachtrag: Mit den Einstellungen > Aufnahme: Eingangsüberwachung, neue Spur, Pegelgesteuert bekomme ich zwar eine Spur, die aber einfach nach jeder erkannten Pegelunterschreitung direkt weiteraufzeichnet, ich also keine Trennung erkennen kann. Gibt es noch irgendwo sonst einen Knopf der mir jedes Mail eine neue Spur kreiert? Lieben Dank!


    Grüße lauschknochen

  • Moin Midimaster,

    interessante und vor Allem überraschende Antwort! Danke schon mal dafür!


    Eigentlich hatte ich auf eine adc-Lösung gehofft, nachdem ich mich aber täglich mit vBASICforApplications (VBA) beschäftige, bin ich natürlich sehr neugierig auf Deinen Ansatz. Wie schon gesagt, bin ich auch für andere Software-Lösungen offen.


    VBA ist eigentlich Office-bezogen, lässt aber auch Shell-Zugriffe (z.B. um adc mit Parametern zu steuern) leicht zu. Wenn ich wüsste, wie man die Pegel eines Audiosignals per VBA überwacht, hätte ich schon (m)eine Lösung.


    Lieben Dank für das Angebot! :)


    Grüße vom lauschknochen

    • Offizieller Beitrag

    Ich bin skeptisch, ob das mit VBA zu machen geht. Ich bin in einem Programmierforum für einen anderen BASIC-Dialekt und damit geht es 100% sicher zu machen. Ich selbst habe dafür die Libraries geschrieben und damit ist jede Art von "Aufnahme" oder "Audio-Input" samt Speicherung möglich.


    Das BASIC, das ist verwende heißt BLITZMAX NG und ist kostenlos. Hier findest Du die deutsche Landingpage: www.blitzmax.de. Der Download dauert nur wenige Minuten und es werden keine Dritt-SDKs benötigt. Beim ersten Start wird es mehrere Minuten dauern, bis dein erster Code compiliert ist. Aber dem zweiten Compiling dauert es nur noch Sekunden.


    Wir haben auch ein Forum dazu: www.syntaxbomb.com/. Dort kannst Du Fragen stellen, die dann von Experten binnen weniger Stunden beantwortet werden.


    Dort findest du auch den Artikel zu meiner Audio-Library samt Tutorials:

    MiniAudio-Wrapper for BlitzMax enables WASAPI Playback and Recording + MP3
    MiniAudio-Wrapper for BlitzMax enables WASAPI Playback and Recording + MP3
    www.syntaxbomb.com


    Und hier ist der GitHub für Download der Library + Command Reference und vielen Code-Beispielen:

    GitHub - MidimasterSoft/BlitzMax-Miniaudio-Wrapper: a binding/wrapper for the audio library Miniaudio to the language BlitzMax
    a binding/wrapper for the audio library Miniaudio to the language BlitzMax - GitHub - MidimasterSoft/BlitzMax-Miniaudio-Wrapper: a binding/wrapper for the…
    github.com


    Außerdem gibt es einen DISCORD channel für BLITZMAX-NG. Einladungslink: https://discord.gg/XKtJXAwb

  • Moin Midimaster,


    das liest sich ja alles richtig interessant und ich werde mir BlitzMax wie auch Deinen Wrapper ganz sicher mal flächendeckend anschauen. Vielleicht lässt Dein Wrapper ja einen Real-Time-Export von Daten zu, die VBA dann entsprechend aufgreifen kann. Stichwort Pegel am Mikro/Mischer ...


    Als Lösung für mein eigentliche Thema sehe ich es allerdings nicht. Denn ich bin mir ziemlich sicher, dass adc sich irgendwie dazu bewegen lassen muss, nach einem Pegelabfall/Aufnahmestop eine neue Spur mit Zeitstempel anzulegen. Die Frage bleibt also nur: Wie?


    Frage am Rande: Du gibst als adc-Version 2.3.3 an. Ist da Dein Profil nicht aktuell oder gibt es einen plausiblen Grund für diese ältere Version?


    Viele Grüße und ebensolchen Dank!


    vom lauschknochen

    • Offizieller Beitrag

    die Aufgabe dauerhaft in einen Raum hineinzuhören ohne etwas zu speichern, dann bei der Überschreitung einer Lautstärke eine Aufnahme zu starten und sich den Zeitstempel zu merken... Danach warten, ob noch mehr Geräusche kommen. Nach einiger Zeit entscheiden, dass man jetzt abspeichert, vorher die Aufnahme auf das Hörbare zu stutzen und dann den Schnippsel als MP3 abzuspeichern. Dies alles ist mit BlitzMax mit relativ geringem Aufwand zu bewerkstelligen.


    Ebenso ist die anschließende Auswertung oder grafische Darstellung der Ereignisse relativ harmlos mit BlitzMax zu machen.

  • Moin,

    offen für Neues hatte ich mir eigentlich vorgenommen Bltzmax mal soweit zu erkunden, dass ich wenigstens ein "Hello World" realisiere. Meine Versuche die Software downzuloaden scheitern schon daran, dass in Edge bei jedem Link eine Google.Translation dazwischenfunkt. Erst mit Firefox kommt man zu einer Seite, die einen Download ermöglicht.


    Zu neuen Ufern sind ja gelegentlich auch auch neue Foren sinnvoll. Dies war dann das Ergebnis zu der entsprechenden Recherche:

    Und dann noch dies ...

    Zitat

    Die BB-Neulinge machen nahezu alle am Anfang die gleichen Fehler: Fragen im Forum oft dieselben Fragen, überschätzen sich selbst, usw...


    Na dann, gute Nacht um kurz nach drei. FINGER WEG! Siehe nachfolgenden Kommentare!


    beschließt der lauschkochen

    • Offizieller Beitrag

    Da warst Du leider in einem völlig falschen Forum! Die Vorgänger-Sprache hieß BlitzBasic (BB!) und das ist seit 2010 tot. Der Nachfolger heißt BlitzMax NG und ist aktiv (wöchentliche Updates, etc...)


    Download hier:

    BlitzMax_win32_x64_mingw_0.136.3.51.7z


    die englische Homepage dazu ist:


    BlitzMax · Code. Build. Play.
    Code. Build. Play.
    blitzmax.org


    Ich hatte Dir geschrieben, wo unser neues Forum ist:


    BlitzMax / BlitzMax NG
    BlitzMax / BlitzMax NG
    www.syntaxbomb.com


    na, mal sehen, ob du das noch liest...

  • Moin Midimaster,

    Zitat


    na, mal sehen, ob du das noch liest..

    Aber selbstverständlich doch! Denn es wäre nicht fair, hier einfach (wie sich gezeigt hat unqualifiziertes!) Geschreibsel zu hinterlassen und sich dann aus dem Staub zu machen.


    Und natürlich bitte ich Dich für meinen letzten Text ehrlich um Entschuldigung. Ich hatte mich auf Suchmaschinen-Ergebnisse verlassen und nicht Deine Links genutzt. Sorry!


    Und wenn ich jetzt mit dem Vorschlag komme, Eure neuen Seiten mal unter dem Gesichtspunkt SEO durchzugehen, meine ich das nicht als überhobene Klugscheißerei, sondern als ernst gemeinten Hinweis.


    Die Downloads und erste Schritte werde ich die nächsten Tage versuchen und dann (wegen verreist) erst Mitte Februar darüber berichten.


    Weiterhin neugierig und gespannt grüßt

    der Lauschknochen

    • Offizieller Beitrag

    ich bin dort auf diesen Seiten auch nur ein normaler User.


    Nachdem der Quellcode von BlitzMax zu Open Source wurde, haben gleich mehrere Gruppen versucht ihn für sich zu vereinnahmen. Daher gibt es jetzt so viele ungepflegte Foren mit veralteten Informationen.


    Die einzige Seite, auf der was los ist, ist SyntaxBomb.com. Und das ist auch gut so! Dort wird Dir immer geholfen, wenn Du Fragen zu BlitzMax hast.

  • Moin Midimaster!


    Zur Kenntnisnahme :thumbup:

    Code
    Building untitled1
    [ 98%] Processing:untitled1.bmx
    [ 99%] Compiling:untitled1.bmx.gui.debug.win32.x64.c
    [100%] Linking:untitled1.debug.exe
    Executing:untitled1.debug.exe
    Hello World
    
    Process complete


    Kommentar an dieser Stelle dazu, in erster Linie für andere interessierte Einsteiger: Der Download von BlitzMax NG kommt im *.7z-Format und auch wenn man meinen könnte, das ließe sich mit Win-Bordmitteln extrahieren, wird man sehr enttäuscht. Mein Versuch diesen Weg zu gehen, hat mich etwa 45 Minuten bis zu einem Fortschritt von weniger als 20% gekostet. Also unbedingt nicht tun! Mit 7Zip sind es wenige Sekunden bis das knappe GB ausgepackt und betriebsbereit ist.


    Meinen ersten

    Code
    Print "Hello World"

    zu kompilieren dauerte -wie von Midimaster beschrieben- knapp eine Minute, wobei man die %-Zahlen fast vollständig durchgehend zu Gesicht bekam. Der zweite Durchgang keine fünf Sekunden. Sichtbarer Output: s.o.


    In #3 hatte ich mich als VBAstler zu erkennen gegeben und werde -weil ja in gewisser Hinsicht artverwandt- das Thema in meinem Forum VBAsteleien.de fortsetzen.


    An einer adc-Lösung meines Bewegungsmelders bleibe ich immer noch interessiert. Lieben Dank!


    und Grüße vom Lauschknochen

    • Offizieller Beitrag

    ok... jetzt findest du auf meinem GitHub-Account perfekte zu deinem Problem passende Beispielcodes.


    Zunächst muss mein gesamtes Modul mima.miniaudio.mod in den mod-Ordner von Blitzmax (auf deinem Rechner)


    Danach BlitzMax starten und die Beispielcodes ausprobieren.


    Hier holst du das module am besten als ZIP (Grüner Knopf):

    GitHub - MidimasterSoft/BlitzMax-Miniaudio-Wrapper: a binding/wrapper for the audio library Miniaudio to the language BlitzMax
    a binding/wrapper for the audio library Miniaudio to the language BlitzMax - GitHub - MidimasterSoft/BlitzMax-Miniaudio-Wrapper: a binding/wrapper for the…
    github.com


    Danach entpackst Du es wie es ist in den Ordner mod


    Ordnerstruktur z.b.:


    C://BlitzMax/mod/mima.mod/miniaudio.mod/miniaudio.bmx (... und weitere inhalte)


    Als Beispiel für dich reichen zunächst diese beiden:


    CaptureRecording.bmx


    SaveTAudioSample.bmx


    Der Pointer...

    RecordingRAM[i]


    ...zeigt in diesem Capture-Beispiel direkt auf die einzelnen aufgenommenen 16bit-Samplewerte

    Jeden dieser Werte musst Du vor der Betrachtung noch in eine 32bit-INTEGER umwandeln

    Code
    For local i:Int=0 to n
       Pruefwert:Int = ShortToInt( RecordingRAM[i] )
    ...
    Next 
    
    Function ShortToInt:Int( s:Int )
        Return (s Shl 16) Sar 16
    End Function


    Danach können die PruefWerte von -32000 bis +32000 reichen, je nachdem wie laut das Gehörte war. Findest Du beim Durchscannen (für i=0 bis i=n) dort plötzlich Werte, die größer als z.b. 100 (oder ev. reicht auch 1000 als Schwellenwert) sind, dann weisst das auf ein beginnendes Geräusch hin. Findest Du danach über einen längeren Zeitraum ( ich meine mehr als 44100 Suchpunkte ) Werte, die unter 100 liegen, deutet das darauf hin, dass seit 1 Sekunde Stille herrscht.


    Ich würde Dir (auch bei viel Zeiteinsatz) voll umfänglich für dieses Projekt auf Syntaxbomb zur Seite stehen.

  • Ooops ^^ nach meinem holprigen Einstieg, traust Du mir doch schon ziemlich viel auf einmal zu. Für eine völlig neue Entwicklungsumgebung muss ich mir erst einmal die Strukturen schaffen ... MaxGui auf meinen Clients, Projektdaten auf den Server (zumindest als BackUp) usw.


    Bisher habe ich mich mal durch Seiten der Hilfe geklickt, ein paar Gemeinsamkeiten/Unterschiede zu VBA rausgefiltert und sogar schon erste Windows mit Controls ausprobiert (deren vorgeschlagene Codes leider alle nach dem Import der Driver abbrechen, weil das strict nicht in der ersten Zeile steht, aber das als leichte Übung). Inzwischen läuft MaxGUI auch auf meinem schwachbrüstigen Tablet (leider aus Reisegründen das Gerät meiner Q/Wahl die nächsten Wochen) und ich werde mich an erste Schritte wagen.


    Sobald ich konkrete Fragen (die nicht schon in der erstaunlich guten Dokumentation!) oder in FAQ's 'n Forum beantwortet sind, komme ich gerne auf Dein freundliches Angebot zurück.


    Schöne Grüße!

  • Du musst Dich nicht mit der MaxGui beschäftigen. BlitzMax läuft auch ohne GUI in einem einfachen Fenster. (Oder sogar auch ohne Fenster).


    Ich habe Dir hier mal ein minimales Beispiel geschrieben, um das Mikrofon abzuhören. Diese 43 Codezeilen öffnen das Audio-Input mit einem eigenen Thread (also einem anderen Prozessorkern). Dieser hört dann laufend auf das Interface und meldet ca. 100x pro Sekunde jeweils 48 Samples an das Hauptprogramm zurück (MyCallback). Dort werden die 48 Werte darauf hingehend untersucht, ob wenigstens einer von ihnen lauter als 1000 ist. Wenn ja wird am Bildschirm ein rotes Rechteck gezeichnet.