DJ Controller mit JavaScript mappen (Behringer CMD DC-1)

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • DJ Controller mit JavaScript mappen (Behringer CMD DC-1)

    Hi

    ich habe mir kürzlich den DJ Controller "Behringer CMD DC-1" geholt und versuche diesen gerade auf die Software MIXXX abzustimmen.
    Das funktioniert mit XML Scripts aber wenn man etwas mehr wie die Standartkontrollen möchte, kann man noch ein JavaScript dazunehmen.
    (Ich bin nicht sicher ob das hier die richtige Kategorie ist weil es ja um das Zusammenspiel von XML und Java geht aber ich fand es unnötig 2 Themen zu erstellen und außerdem liegt hier auch JavaScript im Fokus)

    So sieht das Gerät aus:

    [Blocked Image: https://media.music-group.com/media/PLM/data/images/products/P0AJH/1800Wx1800H/CMD-DC-1_P0AJH_Top_L.png]Die einfachen XML-Befehle hab ich bereits hinbekommen, jetzt geht es nur noch drum das ganze Potential aus dem Gerät zu holen.
    Ihr seht ganz oben die 4 Tasten mit den abgerundeten Ecken und unten die 16 quadratischen Pads.

    In der Software kann man vier Songs gleichzeitig abspielen. Jede der 4 oberen abgerundeten Tasten steht für ein Deck, von dem man einen Song abspielen kann.
    Außerdem kann man sogenannte Hotcues in den Songs festlegen. Das sind Stellen im Song, zu diesen man per Knopfdruck springen kann.
    Dafür sind die 16 Pads unten da aber bisher hab ich es nur geschafft, dass ich das für ein Deck, also einen laufenden Song hinbekomme, das ging einfach in XML.

    Mein Ziel ist es, jedem der 4 Decks je 16 Hotcues zuzuteilen. Wenn ich zum Beispiel auf den Knopf ganz oben links drücke, sollen die Pads unten nur die Hotcues von Deck1 zeigen und abspielbar sein.
    Wenn ich aber auf den Knopf ganz oben rechts drücke sollen wiederum nur die Hotcues von Deck 2 spielbar sein und so weiter also so, dass man quasi umblättern kann.


    Wie ihr sehen könnt, sind die Tasten auch noch mit LEDs unterlegt und man kann diese entweder orange, blau oder blau blinkend leuchten lassen.
    Ideal wäre es, wenn das ausgewählte Deck orange leutchten würde und die restlichen 3 praktisch inaktiven Decks blau.
    Ebenso bei den Hotcues unten, dass die Pads, wenn sie nicht gedrückt werden blau und wenn sie gedrückt werden kurz orange blinken würden.
    Orange ist übrigens die Standartfarbe die aufläuchtet, wenn man dafür nichts spezielles einstellt.



    Hier sind die Codes, die ich bisher habe:

    Einmal die XML: (hier hab ich schon eine Funktion aktiv, mit dem Drehknopf oben, kann man Songs auswählen)

    XML Source Code

    1. <?xml version='1.0' encoding='utf-8'?>
    2. <MixxxControllerPreset mixxxVersion="2.0.0" schemaVersion="1">
    3. <info>
    4. <name>Behringer CMD DC-1 Presets for Mixxx</name>
    5. <author>Robin</author>
    6. </info>
    7. <controller id="CMD">
    8. <scriptfiles/>
    9. <controls>
    10. <control>
    11. <group>[Playlist]</group>
    12. <key>SelectTrackKnob</key>
    13. <description>MIDI Learned from 32 messages.</description>
    14. <status>0xB0</status>
    15. <midino>0x20</midino>
    16. <options>
    17. <spread64/>
    18. </options>
    19. </control>
    20. <control>
    21. <group>[EffectRack1_EffectUnit1]</group>
    22. <key>enabled</key>
    23. <description>MIDI Learned from 2 messages.</description>
    24. <status>0x90</status>
    25. <midino>0x10</midino>
    26. <options>
    27. <normal/>
    28. </options>
    29. </control>
    30. <control>
    31. <group>[EffectRack1_EffectUnit1]</group>
    32. <key>enabled</key>
    33. <description>MIDI Learned from 2 messages.</description>
    34. <status>0x80</status>
    35. <midino>0x10</midino>
    36. <options>
    37. <normal/>
    38. </options>
    39. </control>
    40. <control>
    41. <group>[EffectRack1_EffectUnit2]</group>
    42. <key>enabled</key>
    43. <description>MIDI Learned from 2 messages.</description>
    44. <status>0x90</status>
    45. <midino>0x11</midino>
    46. <options>
    47. <normal/>
    48. </options>
    49. </control>
    50. <control>
    51. <group>[EffectRack1_EffectUnit2]</group>
    52. <key>enabled</key>
    53. <description>MIDI Learned from 2 messages.</description>
    54. <status>0x80</status>
    55. <midino>0x11</midino>
    56. <options>
    57. <normal/>
    58. </options>
    59. </control>
    60. <control>
    61. <group>[EffectRack1_EffectUnit3]</group>
    62. <key>enabled</key>
    63. <description>MIDI Learned from 2 messages.</description>
    64. <status>0x90</status>
    65. <midino>0x12</midino>
    66. <options>
    67. <normal/>
    68. </options>
    69. </control>
    70. <control>
    71. <group>[EffectRack1_EffectUnit3]</group>
    72. <key>enabled</key>
    73. <description>MIDI Learned from 2 messages.</description>
    74. <status>0x80</status>
    75. <midino>0x12</midino>
    76. <options>
    77. <normal/>
    78. </options>
    79. </control>
    80. <control>
    81. <group>[EffectRack1_EffectUnit4]</group>
    82. <key>enabled</key>
    83. <description>MIDI Learned from 2 messages.</description>
    84. <status>0x90</status>
    85. <midino>0x13</midino>
    86. <options>
    87. <normal/>
    88. </options>
    89. </control>
    90. <control>
    91. <group>[EffectRack1_EffectUnit4]</group>
    92. <key>enabled</key>
    93. <description>MIDI Learned from 2 messages.</description>
    94. <status>0x80</status>
    95. <midino>0x13</midino>
    96. <options>
    97. <normal/>
    98. </options>
    99. </control>
    100. </controls>
    101. <outputs>
    102. <output>
    103. <group>[EffectRack1_EffectUnit1]</group>
    104. <key>enabled</key>
    105. <status>0x90</status>
    106. <midino>0x10</midino>
    107. <on>0x01</on>
    108. <minimum>0.1</minimum>
    109. </output>
    110. <output>
    111. <group>[EffectRack1_EffectUnit1]</group>
    112. <key>enabled</key>
    113. <status>0x80</status>
    114. <midino>0x10</midino>
    115. <on>0x01</on>
    116. <minimum>0.1</minimum>
    117. </output>
    118. <output>
    119. <group>[EffectRack1_EffectUnit2]</group>
    120. <key>enabled</key>
    121. <status>0x90</status>
    122. <midino>0x11</midino>
    123. <on>0x01</on>
    124. <minimum>0.1</minimum>
    125. </output>
    126. <output>
    127. <group>[EffectRack1_EffectUnit2]</group>
    128. <key>enabled</key>
    129. <status>0x80</status>
    130. <midino>0x11</midino>
    131. <on>0x01</on>
    132. <minimum>0.1</minimum>
    133. </output>
    134. <output>
    135. <group>[EffectRack1_EffectUnit3]</group>
    136. <key>enabled</key>
    137. <status>0x90</status>
    138. <midino>0x12</midino>
    139. <on>0x01</on>
    140. <minimum>0.1</minimum>
    141. </output>
    142. <output>
    143. <group>[EffectRack1_EffectUnit3]</group>
    144. <key>enabled</key>
    145. <status>0x80</status>
    146. <midino>0x12</midino>
    147. <on>0x01</on>
    148. <minimum>0.1</minimum>
    149. </output>
    150. <output>
    151. <group>[EffectRack1_EffectUnit4]</group>
    152. <key>enabled</key>
    153. <status>0x90</status>
    154. <midino>0x13</midino>
    155. <on>0x01</on>
    156. <minimum>0.1</minimum>
    157. </output>
    158. <output>
    159. <group>[EffectRack1_EffectUnit4]</group>
    160. <key>enabled</key>
    161. <status>0x80</status>
    162. <midino>0x13</midino>
    163. <on>0x01</on>
    164. <minimum>0.1</minimum>
    165. </output>
    166. </outputs>
    167. </controller>
    168. </MixxxControllerPreset>
    Display All

    Und hier kommt das noch ziemlich leere JavaScript, wo ich bereits nur einige Infos drin habe.

    JavaScript Source Code

    1. function
    2. // Behringer CMD DV-1
    3. // Author : Robin
    4. // Version : 0.1.1
    5. // Default channel of this device
    6. // We substitute 1 because count starts from 0 (See MIDI specs)
    7. cmddv1.defch = 7-1;
    8. {
    9. /*
    10. * Initialize decks LEDs
    11. */
    12. cmddv1.initDecksLEDs = function() {
    13. for(var i=cmddv1.FocusStartCtrl; i <= (cmddv1.DoubleStartCtrl+4); i++) {
    14. midi.sendShortMsg(cmddv1.defch | cmddv1.LEDCmd, i, 0x00);
    15. }
    16. };
    17. /*
    18. * Initialize decks status for active mode
    19. */
    20. cmddv1.initDecksStatus = function() {
    21. for(var i=1; i <= cmddv1.deckCnt; i++) {
    22. cmddv1.deckStatus[i] = false;
    23. }
    24. cmddv1.initDecksLEDs();
    25. };
    26. }
    Display All
    Wie ihr seht bin ich noch ziemlich am Anfang aber irgendwo muss man ja beginnen xD


    Wenn Ihr Tipps für mich habt, wie ich das umsetzen könnte, wäre ich wirklich sehr dankbar und ich freue mich über jede Hilfe.
    Wenn noch mehr Infos zum Gerät oder zur Softwäre benötigt werden, schreibt mir gerne :)

    Grüße

    Robin :)

    The post was edited 1 time, last by Robin Pfeiffer ().