Sound Analyser / Fragen zu Pluginentwicklung

We proudly present: The release of DMXControl 3.3.3!


On September 29, 2026, we held our release show for DMXControl 3.3.3. During our usual “hour-long” session, we showed you all the new features in this version and what it now has to offer.
Read all about it in the corresponding news article: We proudly present: The release of DMXControl 3.3.3!


  • Hallo Allerseits,

    ich suche nun schon seit einer Weile hier im Forum und im Wiki, kann aber nicht die Informationen finden, die ich gerne hätte, daher frage ich einfach mal nach und würde mich freuen, wenn mir jemand bei meinem ersten Post hier im Forum helfen könnte:

    Ich würde gerne einen etwas "erweiterten" Sound Analyser für DMXControl 2 bauen. Meine Idee ist, nicht nur die DMX Werte einzelner Kanäle anzupassen, wie dies derzeit der Fall ist, sondern stattdessen würde ich gerne Befehle in DMXControl senden und Triggern können. Insbesondere stelle ich mir vor, dass man statt des DMX-Wertes für einen Kanal einen ganzen Effekt im Effektsequenzer dimmen kann.
    Hier bin ich leider an die Grenzen der Dokumentation (oder der Pluginschnittstelle ???) gestoßen. Im Wiki findet sich nur ein lapidarer Hinweis auf ein ExtListView, welches wohl benötigt wird, aber nirgendwo aufzutreiben ist (vermutlich da VB6 doch schon etwas älter ist).
    Über Hinweise, wie ich hier weiter kommen könnte wäre ich sehr dankbar!
    Wenn ein solches (oder ähnliches) Projekt bereits existiert wäre ich für einen Hinweis darauf dankbar, dann könnte ich mir ggf. einige Zeit sparen.

    P.S. Ein paar "Basics" von dem Projekt sind durchaus schon angefangen, so bekomme ich die nötige Auswertung des Audiosignals über Winamp mit VBLink und auch das Testweise Senden eines Beat-Signal hat funktioniert. Es fehlt halt die Möglichkeit erweiterte Befehle zu senden.

  • Hallo,
    hmmm die Frage ist, ob du desshalb gleich einen neuen Audioanalyzer für DMXC programmieren musst, denn es gibt mittlerweile schon drei Stück. Vorallem das Beat Detection Plugin von Frank Brueggemann verrichtet einen sehr guten Job. Da wäre es vielleicht besser, wenn deine Ideen in dieses Plugin Einzug finden, denn sonst gibt es noch mehr Plugins die etwas ähnliches machen.

    Zur Pluginentwicklung an sich: Plugins, die so tiefgreifend arbeiten, müssen zwingend in VB6 entwickelt werden. Denn DMXC verträgt sich mit Plugins in anderen Programmiersprachen nicht so gut. Deshalb haben wir z.B. auch das Delphi 7 Beispiel aus dem Wiki herausgenommen, weil es nicht richtig funktioniert.
    Viele Grüße
    JP

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

  • Vielen Dank für die schnelle Reaktion!

    Ein kompletter SoundAnalyser ist es sicher nicht, da ich ja Winamp mit VBLinkverwenden würde. Aber ich bin natürlich gerne bereit auch an anderen Plugins mitzuarbeiten, wenn dies gewünscht ist. Da würde ich sicherlich noch einiges üner die Plugin-API aus dem Quellcode lernen können!

    Ich habe die Grundfunktionalität mal Testweise über die PDA-Fernsteuerung über Winsock umgesetzt, aber leider ist ist diese etwas langsam. Bei mehr als einer Anfrage pro Sekunde ist DMXControl bei mir nicht mehr bedienbar (Ist aber auch ein alter Rechner, da auf den neueren kein VB 6 mehr drauf ist). Daher bin ich weiter auf der Suche die Funktionalität als Plugin umzusetzen! VB 6 ist nicht das große Problem, da habe ich viel Erfahrung drin, wenn auch seit einigen Jahren nur noch im äußersten Notfall angerührt :D .

    Ich würde mich auch über Quelltext (Ausschnitte) für VB 6 freuen, die die gesuchte Interaktion umsetzen und stelle (wenn gewünscht) gerne mein Ergebnis auch für andere im Quelltext zur Verfügung.

    Viele Grüße,
    Sebastian

  • Hallo JP,
    ich nutze ja auch das Beat Detection Plugin, aber ein richtiger Soundanalyser ist es bisher ja noch nicht, wenn ich es richtig sehe. Ich habe eine Vielzahl an Möglichkeiten einen Beat abzugreifen und vor allem ohne die Nutzung von Winamp, aber das man einzelnen Frequenzen auch bestimmte Geräte zuordnen kann, geht doch wohl noch nicht. Oder?
    Beste Grüße

    ralf

  • Hallo,
    naja, ich meine halt, dass man erst einmal versuchen sollte, das Gewünschte wenn möglich mit den bestehenden Plugins zu realisieren oder das in die bestehenden Plugins zu integireren (lassen). Denn wir haben beim Umzug der Artikel aus dem alten Wiki ins neue festgestellt, dass da ein ziemlicher Plugin-Wildwuchs herrschte. Z.B. gibt es auch noch das ESound2Light-Plugin (siehe hier), welches ein Soundanalyzer ist (aber vermutlich nicht mehr weiterentwickelt wird).

    Die Fage wäre, ob der "Soundanalyzer" von DMXC dafür nicht auch schon ausreicht und diese Funktion direkt in DMXC integriert werden sollte. Denn dann wäre das eine saubere Lösung. Dazu einfach ein Ticket in unseren Bugtracker mit dem Typ "Wunsch/Idee".
    Viele Grüße
    JP
    P.S.: Solltest du trotzdem ein Plugin schrieben wollen, schau mal in unseres Wiki. In dem Ausgabeplugin-Artikel des DMXC 2 Handbuches gibt es VB6-Beispielcode (siehe hier). Daran kannst du dich orientieren.

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

  • Hallo,

    die bestehenden Plugins (bzw. DMXControl selbst) haben leider nicht die gewünschte Funktionalität. Das genannte Plugin ESound2Light scheint die Funktionalität auch nicht zu haben, ich kann es aber auch nicht genau testen, da es bei mir immer abstürzt.
    Ich kann das Ganze natürlich auch auf die Wunschliste für eine neue DMXControl-Version schreiben, nur scheint die Entwicklung für die 2er Version ja nicht mehr mit dem ganz großen Elan vorangetrieben zu werden?! (Ich hoffe ich trete keinem zu nahe, es gab halt nur seit anderhalb Jahren kein Release mehr - falls doch bitte ich um Verzeihung, denn DMXControl an sich ist echt super!)

    Auf Grund der Antwort von JP stellt sich mir aber die Frage, ob die Entwicklung von Plugins für DMXControl (2) überhaupt noch gewünscht ist bzw. unterstützt wird? Falls nicht bitte ich um ehrliche Rückmeldung! Ich finde auch hier im Forum in älteren Threads immer wieder Hinweise auf Downloads zu Plugins mit Quellcode, die dann alle nicht mehr existieren. Daher ist es leider im Moment echt schwer ein DMXControl-Plugin zu schreiben und vieles ist einfach Trial and Error.

    Daher: Ich bin generell schon noch an der Entwicklung eines Plugins interessiert und wäre auch sehr erfreut, wenn mir jemand sagen könnte, wo sich einige der im Forum (oder auch Wiki) verlinkten Plugins mit Quellcode als Vorlage doch noch finden lassen. Auch für konkrete Tipps bin ich dankbar: Ich scheitere nämlich derzeit daran die Klasse ICommandServer zu Implementieren (zum Aufruf meines Plugins aus anderen Komponenten). Ich habe eigentlich alles ganz genau, wie im Wiki beschrieben, umgesetzt. Das Plugin wird auch geladen und kann in der eigenen Oberfläche bedient werden, aber es taucht in keiner DMXControl Komponente als Empfänger für Befehle auf.

  • Hallo,
    ich hab mich wohl falsch ausgedrückt. Es ist sehr wohl erwünscht, die Funktion von DMXC mit Plugins und auch neuen Plugins zu erweitern. Sonst hätte Stefan K. diese Schnittstelle ja auch nicht eingebaut. Was ich meinte war, dass es aber vielleicht ganz sinnvoll ist, ein bestehendes Plugin zu erweitern statt gleich ein neues zu schreiben. Denn so kann man sich sicher etwas Aufwand und Arbeit sparen. Was ich durch meine Aussage vermeiden wollte war, dass es nacher mehrere ähnliche Plugins gibt und man dann als User vor der Entscheidung steht, welches von beiden besser ist und auf welche Funktionen man verzichtet. Das war alles was ich mit meiner Aussage verdeutlichen wollte. Das heißt nicht, dass ich gegen neue Plugins bin.

    Zur Plugin-Entwicklung:
    Wenn ich heute Mittag zu Hause bin, suche ich mal im alten Wiki, ob es da doch noch Quellcode gibt, den wir beim Übertragen vergessen haben. Vielleicht finde ich da ja etwas, das dir weiter hilft. Das mancher Quellcode nicht mehr zu finden ist liegt auch daran, dass wir ein neues Wiki haben, welches anders strukturiert ist als das alte. Wir haben den Umstieg zum Anlass genommen, alle im Wiki beschriebenen Plugins zu testen, ob sie noch mit DMXC 2.12 laufen und nur die Lauffähigen übertragen.

    Zur DMXC 2 Entwicklung:
    Dir muss beim Release tatsächlich etwas entgangen sein ;) . Denn Stefan hat bei unserem diesjährigen Jahrestreffen vor drei Monaten eine neue Zwischenversion (2.12.2) released. Es ist keine Majorversion, aber es wurde doch ein paar Sachen gemacht. Dass es keinen neuen Majorrelease gab liegt einfach an der knappen Zeit die unter anderem auch Stefan wegen privater Angelegenheiten letztes Jahr hatte. Wie aber im Bereicht zum letztjährigen Jahrestreffen steht, gibt es da noch ein paar Dinge, an denen Stefan schreibt und die noch in DMXC2 integriert werden sollen.
    Viele Grüße
    JP

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

    Edited once, last by JPK (August 13, 2014 at 11:58 PM).

  • Ich scheitere nämlich derzeit daran die Klasse ICommandServer zu Implementieren (zum Aufruf meines Plugins aus anderen Komponenten). Ich habe eigentlich alles ganz genau, wie im Wiki beschrieben, umgesetzt. Das Plugin wird auch geladen und kann in der eigenen Oberfläche bedient werden, aber es taucht in keiner DMXControl Komponente als Empfänger für Befehle auf.


    Im Wiki scheint mir der Hinweis zu fehlen, dass in der Type_Module_Info (Property IDMXCModule_ModuleInfo) auch der Wert ProvidesCommand auf "true" gesetzt werden muss.

    Stefan

  • Hallo,
    Stefan K.: Ich weiß, du hast nicht so viel Zeit, aber könntest du bitte den von Philipp verlinkten, doch sehr chaotischen Artikel mal durchsehen und hier alle Änderungen in der Plugin-Schnittstelle seit Version 2.10 dort stichpunktartig eintragen. Dann pflege ich das ein und bringe diesen Artikel in eine lesbare und übersichtliche Form.
    Viele Grüße
    JP

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

    Edited once, last by JPK (August 15, 2014 at 12:02 PM).

  • Hallo,

    vielen Dank für die rege Beteiligung an meinem Thread und den guten Hinweisen!
    DMXControl 2.12.2 habe ich anscheinend tatächlich übersehen, nach dem Hinweis aber sofort installiert und sofort einige kleine Verbesserungen bemerkt! Auch das hier im Forum in einem weiteren Thread diskutierte neue BeatDetection Tool habe ich ausprobiert. Die Funktionen sind schon echt gut! Aber leider noch nicht genau das, was ich brauche - vielleicht bin ich ja auch der einzige, der soetwas haben möchte ?( .

    Mittlwerweile habe ich den ICommandServer integriert. Der entscheidene und im Wiki fehlende Punkt (oder ich habe es nur nicht gefunden?) war, dass bei der Initialisierung in IDMXCModule_ModuleInfo noch Type_Module_Info.CommandModule auf die ICommandServer implementierende Klasse gesetzt werden muss.

    Den nächsten Schritt zur vollständigen Integration in DMControl habe ich mittlerweile auch ertickst, aber das ist ist eigentlich keine wirkliche Lösung. Ich möchte aus dem Plugin Befehle an andere Plugins (insbesondere den Effektsequencer) senden können, ähnlich wie die KommandoBox dies macht. Hier wäre ich für Tipps oder Schnittstellen-Doku sehr dankbar!
    Falls es jemanden interessiert, wie ich diesen Weg temporär gehackt habe: Ich erzeuge ein (oder mehrere) DMXIn Signale auf ungenutzten Kanälen (dafür habe ich ja die API in IPluginHelper) und übersetze diese Signale mit der DMXIn-Fernsteuerung in beliebige DMXControl-Kommandos.

    Ziel des Ganzen ist im Übrigen Lauflicher über den Effektsequenzer zu steuern und diese mit einer Sound gesteuerten Amplitutenmodulation zu überlagern, wie sie der derzeitige Sound Analyser ausgibt. Für ein Lauflicht könnte man dies auch mit vielen Bänken im derzeitigen Sound Analyser machen, die über den Effektsequencer durchgegangen werden. Ich würde hier aber gerne auch Effekte mischen (z.B. verschiedene Devices einzeln zur Modulation hinzu oder weg schalten oder auf einer LED-Bar einen VU-Effekt und gleichzeitig auf PAR-Kannen ein dynamisch gedimmtes Lauflicht) und genau dies ist der Punkt der mit den bestehenden Tools noch nicht möglich ist.

  • Hallo,

    Falls es jemanden interessiert, wie ich diesen Weg temporär gehackt habe: Ich erzeuge ein (oder mehrere) DMXIn Signale auf ungenutzten Kanälen (dafür habe ich ja die API in IPluginHelper) und übersetze diese Signale mit der DMXIn-Fernsteuerung in beliebige DMXControl-Kommandos.

    Kann man wenn Du an den DMX-In Signale sendest trotzdem den DMX-In am Interface verwenden ?

    Gruß Steff

    Am Ende wird alles gut !

    Wenn es nicht gut wird, dann ist es noch nicht das Ende.

    May the light be with you

  • Hallo,

    Hallo,
    Kann man wenn Du an den DMX-In Signale sendest trotzdem den DMX-In am Interface verwenden ?

    Gruß Steff

    das weiß ich nicht und kann es leider auch nicht testen, da mein DMX-Interface keinen Eingang hat. Wie geschrieben bin ich mir aber natürlich darüber im Klaren, dass dies eine Bastellösung ist, die für ein ordentliches Plugin nicht in Frage kommen sollte.

    Gruß, Sebastian

  • vielleicht bin ich ja auch der einzige, der soetwas haben möchte ?( .

    Nein, bist du nicht. Auch wenn das vielleicht nicht komplett dem entspricht, was du hier beschreibst: mein Post umfasst auch die Ansteuerung von Effekten statt Geräten aus der Beatdetection heraus.
    Ich hab mich damit mal an Frank gewendet, weil er das Plugin entwickelt mit dem ich bisher gut arbeiten konnte, nur die Steuerung von Effekten scheint (wie ich bis jetzt dachte) keiner außer mir zu benötigen.

    Vielleicht können wir ja darauf hinwirken, dass wir eine gemeinsame Lösung finden :)

    Viele Grüße,
    Marco

  • Hallo,

    mittlerweile konnte ich meine Plugin auch bei einer etwas größeren Feier mal testen und der der Effekt gefiel mir ganz gut!
    Leider ist der Stand noch nicht so, dass ich es weitergeben könnte, daher werde ich es hier auch vorerst nicht verlinken.

    Das Unschönste an dem Plugin ist die zuvor schonmal erwähnte Signal-Weiterleitung über DMX-In. Dies funktioniert zwar, ist aber sehr unkomfortabel zu programmieren. Daher möchte ich nochmal meine Frage nach Informationen zur Steuerung von anderen Modulen aus meinem Plugin heraus wiederholen.
    Generell is dies in DMXControl ja offensichtlich möglich, da dies ja z.B. die Funktion der Kommandobox ist. In den Plugin-Klassen habe ich auch einige Dinge gefunden, die eine derartige Funktionalität vermuten lassen. Leider führten meine Experimente bislang aber nur zu Programmabstürzen ;).
    Vielleicht kann mit ja einer der DMXControl oder Plugin-Programmierer zumindest sagen, ob dies prinzipiell möglich ist oder ob ich hier etas suche, was garnicht funktinieren kann?
    Und wenn er grade dabei ist zu schreiben, dass es geht, wäre doch auch eine kleine Anleitung sicherlich kein Problem, oder? :D

    Ich danke dir / euch jedenfalls schonmal im Voraus und hoffe hier bald ein Plugin verlinken zu können, welches auch dem ein oder anderen von euch gute Dienste erweisen kann.

  • Das PluginHelper-Objekt dass das Plugin bekommt implementiert auch ICommandManagerProvider, kann also dahin gecastet werden. Dort gibt es die Property CommandManager(), die einen ICommandManager liefert. Über dessen Methoden lassen sich Befehle (bzw. "Befehls-Ausführer") erzeugen, editieren und auch die in DMXC übliche Auswahl in einem ListView realisieren.

    Stefan

  • Hallo Stefan,

    danke für deine Antwort! Ich habe mich heute auch sofort dran gesetzt, die guten Tipps in das Plugin einzubauen. Ich bin zwar schon etwas weiter gekommen, als zuvor, aber leider klappt es immernoch nicht ganz. Vielleicht stelle ich mich da auch etwas ungeschickt an, aber die Informationen aus dem Visual Basic Objektkatalog, zusammen mit dem Wiki und den Forums-Tipps führen mich noch nicht ganz ans Ziel.
    Ich vermute allerdings, dass ich derzeit (u.a.) am falschen ListView scheitere. Wenn ich das Wiki richtig verste, muss es ein "ExtListView" sein. Ich habe es dann mal mit dem Standard ListView aus den CommonControls versucht, aber das gibt nur Laufzeitfehler in der Funktion FillTableRow und anderen, die ich ausprobiert hae.
    Hinter dem Link im Wiki ist dieses ExtListView aber nicht mehr auffindbar und auch Google hilft mir da nicht weiter. Hat evtl. noch jemand einen Link oder das Control (ocx?), um mir weiter zu helfen?

    Einen ICommandExecutor habe ich mir erzeugen lassen. Allerdings kann ich den nicht wirklich Testen, da ich die GUIDs der anderen Module/Plugins nicht kenne. Ich nehme an, die würde ich später aus dem Listview gewinnen können? Ein Test mit der GUID meines Plugins führt jedenfalls zu einen Laufzeitfehler ( Fehler-Nr: 13 (Typen unverträglich), Modul: CommandManager, Prozedur: StartExecution), ändere ich die GUID ab, kommt nur die Meldung, dass diese nicht bekannt ist.

    Ich poste hier mal die verwendten Testzeilen, damit mir vielleicht jemand weiter helfen kann:

    Vielen Dank an alle, die sich meinen obigen Code angetan haben ;) und mir weiter helfen wollen!

  • Hallo Stefan,

    vielen Dank für den Hinweis! Dadurch, dass das alte VB 6 (bei mir) nur noch in einer VM läuft, in der kein DMXControl installiert war, habe ich das Control zuvor nicht gefunden...
    Jedenfalls klappt es jetzt! Ich bin echt glücklich darüber, da es mich ne ganze Menge Zeit gekostet hat! Vielen Dank nochmal für die Hilfe!

  • Hallo,

    Falls es jemanden interessiert, wie ich diesen Weg temporär gehackt habe: Ich erzeuge ein (oder mehrere) DMXIn Signale auf ungenutzten Kanälen (dafür habe ich ja die API in IPluginHelper) und übersetze diese Signale mit der DMXIn-Fernsteuerung in beliebige DMXControl-Kommandos.

    Kann man wenn Du an den DMX-In Signale sendest trotzdem den DMX-In am Interface verwenden ?

    Gruß Steff

    So, da nun heute mein FX5 DMX-Interface angekommen ist, habe ich nun auch einen DMX-In und kann bestätigen, dass offensichtlich (mindestens) 2 Plugins (oder ein DMX-In und ein Plugin) DMX-In-Werte senden können. Es scheint, dass der resultierende Wert das Maximum der beiden anliegenden Werte ist. Allerdings habe ich das nur rein optisch an der Helligkeit eines Testscheinwerfers "gemessen" ;).
    Ich werde mein Plugin nach den Tipps von Stefan dennoch auf die DMXControl-Kommandos umstellen, aber vielleicht baut ja noch jemand ein andere Plugin, wo ihm diese Beobachtung hilft....

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