Virtual DJ - DMX

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!


  • klingt intressant sofern das im software-bereich ist, deshalb hab ich mal gegoogelt.
    von virtual dj gibt es verschiedene hardware (pulte, vinyl-pc interfaces usw.) und software (den mixer usw.)

    ich finde allerdings weder bei hard noch software irgendwas von dmx, könntest du bitte etwas genauer beschreiben? evtl. software und version etc.

  • Hi!

    Hab das hier gefunden:
    "DMX lights: VirtualDJ Pro lets you control all your lights directly through DMX."

    Schätze also das wird ein DMX-Out sein, kein Input.
    Was anderes find ich auch nicht.

    Hoc

    PS: Im übrigen wurde im lampentreff-Forum schonmal drüber diskutiert einen Audio-Mixer per DMX zu steuern. Es gibt tatsächlich 0-10V gesteuerte elektronische Fader für Musik. Also zumindest das Faden von einem Input zum anderen (oder wie in dem Fall die Lautstärkenregelung im Haus) lässt sich konventionell mit Hardware machen... (etwa 200€) :)

    Mein Equipment:
    1x Hirn | 2x Augen (leicht defekt) |2x Ohren | 1x Mund |32x Zahn (zum Teil V1.5) | 1x Handundfuß-Interface
    *SCNR*

  • das wäre doch intressant.
    nämlich dann wen virtual-dj ein gutes S2L signal auswirft und wenn man den ausgang von virtual-dj zum dmx-in von dmxc leiten könnte und dort weiterverarbeiten. als S2L

    aber ich kann mir das nicht vorstellen, denn für ein s2l ist neben den beats (die ein dj-programm ja zweifellos hat) auch eine kanal-information über die geräte notwendig.

  • na ja eine kanalinformation über die geräte ist nicht unbedingt erforderlich . warum auch. Schließlich ist es doch dem DMX kanal erstmal egal wo er ankommt. Die trennung erfolgt doch erst am Gerät (also ob der kanal für das Gerät bestimmt ist oder nicht), wenn ich das DMX richtig verstanden habe. Bitte berichtigen wenn ich falsch liege.

    Gerald

  • ich bin beta-tester bei VirtualDJ und würde ebenfalls gerne VirtualDJ und DMXControl verbinden, da ich beide Programme sehr schätze.

    falls ihr Infos über VDJ benötigt um eine zusammenarbeit der beiden programme zu ermöglichen, lasst es mich wissen!

  • Quote

    na ja eine kanalinformation über die geräte ist nicht unbedingt erforderlich . warum auch. Schließlich ist es doch dem DMX kanal erstmal egal wo er ankommt. Die trennung erfolgt doch erst am Gerät (also ob der kanal für das Gerät bestimmt ist oder nicht), wenn ich das DMX richtig verstanden habe. Bitte berichtigen wenn ich falsch liege.

    Gerald

    ich sagte aber nicht für dmx sondern für s2l und da ist es doch wohl ein unterschied, ob man pan/tilt, dimmer oder farbrad ansteuert. deshalb bräuchte das programm gewisse geräteinfos, erst recht bei diesen fürchterlichen misch-kanälen an deren prozeduren hier der ein oder andere so manche stunde gefeilt hat.

  • Hallo,

    helft mir bitte mal zu verstehen, wie dieser Thread zu jenem passt:

    Forum beat tool verbunden mit virtual dj

    - Tippfehler hat dort mit dem VST-Plugin eine Lösung über MIDI gebastelt, die er aber hier nicht "rausrückt" ;) ? (Virtual-DJ ist VST-fähig ??)

    - Hier wird die These aufgestellt, dass die Kopplung auch irgendwie über DMX möglich ist ??

    - metizn hat vielleicht noch eine andere Kopplungsidee im Hinterkopf?

    - Wie passt das ganze zur OSC-Diskussion, siehe Wiki Beat detection ?

    Da Virtual DJ offensichtlich keine Free/OpenSource-SW ist, kann es von DMXControl keine "interne" Schnittstelle zu Virtual-DJ geben. Hier haben wir eine andere Situation als z.B. bei Winamp, das sich ja jeder DMXControl-Nutzer kostenlos mitinstallieren kann.

    Alles was ich mir vorstellen kann, ist eine "standardisierte" Schnittstelle im Sinne OSC, MIDI (über VST-Kopplung).
    Ich setze das Thema mal als Punkt für die nächste Projektbesprechung auf.

    Gruss Frank

  • ich würde das ganze über midi clock lösen. dies wird zwar (noch) nicht von virtualDJ (=Numark Cue) unterstützt, allerdings wird das meiner meinung nach über kurz oder lang implementiert werden (Traktor hat diese funktion ebenfalls). Meiner Meinung nach ist eine Beat Syncronisation über Midi Clock die professionellste und universellste Lösung. Wahrscheinlich gibt es sogar ein VST plugin das midi clock ausgibt, muss mich mal schlau machen (VirtualDJ unterstützt VST).

    Eine weitere Möglichkeit wäre ein plugin für VirtualDJ zu schreiben da dieses auch externe plugins unterstützt.

  • so jetz mal grundlegendes zu beat detection!!!! :*

    die arbeitsweise von freeware (zu 99%), besteht darin einen band-pass filter zu nehmen und das audio signal
    zu begrenzenz.B. 30-200Hz
    nun schaut mann ob peak`s auftauchen, und sendet bei jedem peak ein signal(midiclock,osc,midi note on/off,.........)

    bessere tools verwenden zu dem noch einen kleinen zusatz, bei dem nach jedem peak eine erfassungspause von ca. 300msec hinzukommt.

    diese beiden methoden sind sehr ungenau, da baselines auch als beat erkannt werden
    dazu zählt auch mein vst plugin ;D

    um es genau hinzubekommen muss man schon einen algorythmus verwenden mit dem man das audio signal berechnet nach "sound energy & frequenz energy"
    das heist wenn z.B. über einen bestimmten zeitraum ein audio signal mit 50hz auftritt und zudem noch ein anstieg der lautsärke(über eine bestimmte länge)
    dann ist das höchst warscheinlich ein beat und keine baseline

    nachzulesen hier--> http://www.gamedev.net/reference/prog…/beatdetection/

    habe solche gefunden in form von java aus denen mann was machen kann
    es sind source code`s für "processing" damit kann man die java applets erstellen
    leider laufen die bei mir nicht??

    ich werde sie mal suchen und hier die links posten ;)

    hat schon mal jemand mit "processings " gearbeitet????

    mfg maik

  • hab das vor längerer zeit schon mal nachgefragt:

    OSC gibt unter anderem einen 'Phase' wert aus.
    Dieser steigt linear von 0 bis 44100*60/BPM an und resetiert dann zu 0 beim nächsten Beat.

    die haben gemeint man könnte ein plugin schreiben das diese codezeilen enthält:

    : if ( oldphase>10000 and phase<2000 ) send midi beat;
    : oldphase=phase;

  • oha ;D

    genau danach hab ich gesucht :D

    geht mir darum er sendet ständig die phase
    allerdings nicht wiemann denken könnte kontinuierlich einen wert sonder ein mischmasch z.B.

    phase 234##
    phase26574##
    phase4536##
    und immer so weiter :o
    denke mal wenn man genau den beat finden will muss man die aktualisierungs rate extrem hoch schrauben

    abba danke für den tip werts mal probieren 8)

    achso?? für welche programmier sprache solln der code sein ??

    mfg maik

  • also für "processing" isser nich habs probiert
    der kennt ""oldphase"" nicht

    also die idee des code`s is genau det watt ick suche
    nur leider kann ich nur immer ein value abrufen und nicht zwichen speichern---> kann es also nicht mit dem nächsten value vergleichen

    so sieht der code aus um das osc.phase.signal zu empfangen

    /**
    * oscP5oscArgument by andreas schlegel
    * example shows how to parse incoming osc messages "by hand".
    * it is recommended to take a look at oscP5plug for an alternative way to parse messages.
    * oscP5 website at http://www.sojamo.de/oscP5
    */

    import oscP5.*;
    import netP5.*;


    OscP5 oscP5;
    NetAddress myRemoteLocation;


    void setup() {
    size(400,400);
    frameRate(25);
    /* start oscP5, listening for incoming messages at port 12000 */
    oscP5 = new OscP5(this,12000);
    myRemoteLocation = new NetAddress("127.0.0.1",12000);
    }

    void draw() {
    background(0);
    }

    void oscEvent(OscMessage theOscMessage) {

    /* parse theOscMessage and extract the values from the osc message arguments. */
    int firstValue = theOscMessage.get(0).intValue(); // get the first osc argument
    println(" values: "+firstValue );
    }
    return;


    vieleicht kann ja stefan weiter helfen

    mfg maik

  • Der Code ist Pseudo-Code, nichts ausprogrammiertes. Soll halt zeigen, wie das zu machen wäre. Einfach irgendwo einfügen is nicht...

    Warum solltest du keine Werte speichern können? So wie ich den Code sehe, wird oscEvent() als Callback-Funktion bei jedem Event aufgerufen. In einer globalen Variable (so wie myRemoteLocation) kannst du doch einen Wert ablegen, der da auch beim nächsten Aufruf noch ist.

    Stefan

  • und das ergebnis sieht dann so aus


    values: 11154

    values: 13202

    values: 16274

    values: 19346
    <------ beat
    values: 46

    values: 2094

    values: 5166

    values: 8238

    values: 10286

    values: 13358

    values: 16430

    values: 19502
    <---------- beat
    values: 202

    values: 2250

    values: 5322

    values: 8394

    values: 10442

    values: 13514

    values: 16586

    values: 18634

    values: 21706
    <------beat
    values: 2406

    values: 4454

    values: 7526

    values: 9574

    values: 12646

    values: 15718

    values: 17766

    values: 20838
    <-----beat
    values: 1538

    values: 4610

    values: 6658

    values: 9730

    values: 12802

    values: 15874

    values: 17922

    values: 20994
    <------ beat
    values: 1694

    values: 3742

    values: 6814

    values: 9886

    values: 12958

    values: 13982

    values: 18078

    values: 21150
    <------beat
    values: 826

    values: 2874

    values: 6970

    values: 9018

    values: 12090

    values: 14138

    values: 17210

    values: 20282
    <----- beat
    values: 982


    man erkennt schön den sogenannten beat

    mfg maik

  • juhu habs hinbekommen ;D ;D

    er speichert zwischen und vergleicht old & new Value
    nun druckt er mir bei jedem takt das wort beat :D

    jetz nur noch ein midi signal raus ???

    hier der neu total einfache code:
    /**
    * oscP5oscArgument by andreas schlegel
    * example shows how to parse incoming osc messages "by hand".
    * it is recommended to take a look at oscP5plug for an alternative way to parse messages.
    * oscP5 website at http://www.sojamo.de/oscP5
    */

    import oscP5.*;
    import netP5.*;


    OscP5 oscP5;
    NetAddress myRemoteLocation;


    void setup() {
    size(400,400);
    frameRate(25);
    /* start oscP5, listening for incoming messages at port 12000 */
    oscP5 = new OscP5(this,12000);
    myRemoteLocation = new NetAddress("127.0.0.1",12000);
    }
    int a = 0; <----- das ist das wichtigste ;D

    void draw() {
    background(0);
    }

    void oscEvent(OscMessage theOscMessage){
    /* parse theOscMessage and extract the values from the osc message arguments. */


    int firstValue = theOscMessage.get(0).intValue(); // get the first osc argument
    println(" 1 values: "+firstValue );
    println(" 2 values: "+a );
    if((a > 9000) && (firstValue < 4000)) {
    println(" BEAT ");
    }
    a = firstValue; <-----das iss neu ;D
    }

    return;

    -----------------------------------------------------------------------

    und so siehts dann aus

    2 values: 25696
    1 values: 5056
    2 values: 3008
    1 values: 8128
    2 values: 5056
    1 values: 11200
    2 values: 8128
    1 values: 14272
    2 values: 11200
    1 values: 16320
    2 values: 14272
    1 values: 19392
    2 values: 16320
    1 values: 22464
    2 values: 19392
    1 values: 25536
    2 values: 22464
    1 values: 1824 <----- die beiden werte
    2 values: 25536 <----- werden verglichen
    BEAT
    1 values: 4896
    2 values: 1824
    1 values: 7968
    2 values: 4896
    1 values: 10016
    2 values: 7968
    1 values: 13088
    2 values: 10016
    1 values: 16160
    2 values: 13088
    1 values: 19232
    2 values: 16160
    1 values: 20256
    2 values: 19232
    1 values: 24352
    2 values: 20256
    1 values: 640 <----- die beiden werte
    2 values: 24352 <----- werden verglichen
    BEAT
    1 values: 3712
    2 values: 640
    1 values: 5760
    2 values: 3712
    1 values: 8832
    2 values: 5760
    1 values: 11904
    2 values: 8832
    1 values: 14976
    2 values: 11904
    1 values: -1 <----- die beiden werte
    2 values: 14976 <----- werden verglichen
    BEAT
    1 values: 0
    2 values: -1
    1 values: 19174
    2 values: 0


    mfg maik

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