We made a correct midi mapping for behringer BCD 2000. You can use this controller like bcd 3000, with jog, scratch and led.
This is the
Behringer-BCD2000-scripts.js
- Code: Select all
function BehringerBCD2000 () {}
BehringerBCD2000.debug = false;
BehringerBCD2000.escratch = [false, false];
//sensitivity setting
BehringerBCD2000.UseAcceleration = true;
BehringerBCD2000.JogSensivity = 0.2;
BehringerBCD2000.init = function (id) { // called when the device is opened & set up
BehringerBCD2000.reset();
// Ask BCD to send the current values of all rotary knobs and sliders
midi.sendShortMsg(0xB0,0x64,0x7F);
// Set jog acceleration
if (BehringerBCD2000.UseAcceleration)
midi.sendShortMsg(0xB0, 0x63, 0x7F);
else
midi.sendShortMsg(0xB0, 0x63, 0x0);
};
BehringerBCD2000.shutdown = function () {
BehringerBCD2000.reset();
// Reenable jog acceleration
if (!BehringerBCD2000.UseAcceleration)
midi.sendShortMsg(0xB0, 0x63, 0x7F);
};
BehringerBCD2000.reset = function () {
// Turn off all the lights
for (i = 0; i <= 25; i++) {
midi.sendShortMsg(0xB0, i, 0);
}
};
BehringerBCD2000.getDeck = function (group) {
if (group == "[Channel1]")
return 0;
else if (group == "[Channel2]")
return 1;
print("Invalid group : " + group);
return -1; // error
}
//Scratch, cue search and pitch bend function
BehringerBCD2000.jogWheel = function (channel, control, value, status, group) {
deck = BehringerBCD2000.getDeck(group);
if (BehringerBCD2000.escratch[deck]) {
if (value >= 65)
{scratchValue = (value - 0x40);}
else
{scratchValue = (value - 0x41);}
engine.scratchTick(deck + 1, scratchValue);
if (BehringerBCD2000.debug)
print(group + " scratch tick : " + scratchValue);
} else {
if (value >= 65)
{jogValue = (value - 0x40) * BehringerBCD2000.JogSensivity;}
else
{jogValue = (value - 0x41) * BehringerBCD2000.JogSensivity;}
engine.setValue(group, "jog", jogValue);
if (BehringerBCD2000.debug)
print(group + " pitching jog adjust : " + jogValue);
}
};
//Scratch button function
BehringerBCD2000.scratchButton = function (channel, control, value, status, group) {
if (value != 0x7F)
return;
deck = BehringerBCD2000.getDeck(group);
BehringerBCD2000.escratch[deck] = !BehringerBCD2000.escratch[deck];
if (BehringerBCD2000.debug)
print(group + " scratch enabled :" + BehringerBCD2000.escratch[deck]);
if (BehringerBCD2000.escratch[deck]) {
// Turn on the scratch light
if (!deck)
midi.sendShortMsg(0xB0, 0x13, 0x7F);
else
midi.sendShortMsg(0xB0, 0x0B, 0x7F);
// Enable scratching
engine.scratchEnable(deck + 1, 100, 33+1/3, 1.0/8, (1.0/8)/32);
} else {
// Turn off the scratch light
if (!deck)
midi.sendShortMsg(0xB0, 0x13, 0x00);
else
midi.sendShortMsg(0xB0, 0x0B, 0x00);
// Disable scratching
engine.scratchDisable(deck + 1);
}
};
//Set loop function
BehringerBCD2000.loop = function (channel, control, value, status, group) {
if (value)
action = "loop_in";
else
action = "loop_out";
if (BehringerBCD2000.debug)
print(group + " " + action);
engine.setValue(group, action, 1);
};
And this is the
Behringer BCD2000.midi.xml
- Code: Select all
<MixxxMIDIPreset mixxxVersion="1.8.0+" schemaVersion="1">
<controller id="BCD2000 MIDI 1">
<scriptfiles>
<file functionprefix="BehringerBCD2000" filename="Behringer-BCD2000-scripts.js"/>
</scriptfiles>
<controls>
<control>
<status>0x90</status>
<midino>0x0</midino>
<group>[Channel1]</group>
<key>back</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x1</midino>
<group>[Channel1]</group>
<key>fwd</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x2</midino>
<group>[Channel1]</group>
<key>rate_temp_down</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x3</midino>
<group>[Channel1]</group>
<key>rate_temp_up</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x4</midino>
<group>[Channel1]</group>
<key>beatloop_8</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x5</midino>
<group>[Channel1]</group>
<key>reloop_exit</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x6</midino>
<group>[Channel2]</group>
<key>back</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x7</midino>
<group>[Channel2]</group>
<key>fwd</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x8</midino>
<group>[Channel2]</group>
<key>rate_temp_down</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x9</midino>
<group>[Channel2]</group>
<key>rate_temp_up</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0xa</midino>
<group>[Channel2]</group>
<key>beatloop_8</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0xb</midino>
<group>[Channel2]</group>
<key>reloop_exit</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0xc</midino>
<group>[Channel1]</group>
<key>filterLowKill</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0xd</midino>
<group>[Channel1]</group>
<key>filterMidKill</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0xe</midino>
<group>[Channel1]</group>
<key>filterHighKill</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0xf</midino>
<group>[Channel1]</group>
<key>loop_halve</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x10</midino>
<group>[Channel1]</group>
<key>beatsync</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x11</midino>
<group>[Channel1]</group>
<key>BehringerBCD2000.scratchButton</key>
<options>
<script-binding/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x0</midino>
<group>[Channel1]</group>
<key>volume</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x12</midino>
<group>[Channel1]</group>
<key>play</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x1</midino>
<group>[Master]</group>
<key>crossfader</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x13</midino>
<group>[Channel1]</group>
<key>cue_default</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x2</midino>
<group>[Channel2]</group>
<key>volume</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x14</midino>
<group>[Channel2]</group>
<key>filterLowKill</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x3</midino>
<group>[Channel1]</group>
<key>filterLow</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x15</midino>
<group>[Channel2]</group>
<key>filterMidKill</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x4</midino>
<group>[Channel1]</group>
<key>filterMid</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x16</midino>
<group>[Channel2]</group>
<key>filterHighKill</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x5</midino>
<group>[Channel1]</group>
<key>filterHigh</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x17</midino>
<group>[Channel2]</group>
<key>loop_halve</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x6</midino>
<group>[Channel1]</group>
<key>pregain</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x18</midino>
<group>[Channel2]</group>
<key>beatsync</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x7</midino>
<group>[Channel2]</group>
<key>filterLow</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x19</midino>
<group>[Channel2]</group>
<key>BehringerBCD2000.scratchButton</key>
<options>
<script-binding/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x8</midino>
<group>[Channel2]</group>
<key>filterMid</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x1a</midino>
<group>[Channel2]</group>
<key>play</key>
<options>
<button/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x1b</midino>
<group>[Channel2]</group>
<key>cue_default</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x9</midino>
<group>[Channel2]</group>
<key>filterHigh</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0xa</midino>
<group>[Channel2]</group>
<key>pregain</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0xb</midino>
<group>[Channel1]</group>
<key>rate</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0xc</midino>
<group>[Channel2]</group>
<key>rate</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0xd</midino>
<group>[Flanger]</group>
<key>lfoDelay</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x20</midino>
<group>[Channel1]</group>
<key>flanger</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0xe</midino>
<group>[Flanger]</group>
<key>lfoDepth</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x21</midino>
<group>[Channel2]</group>
<key>flanger</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0xf</midino>
<group>[Flanger]</group>
<key>lfoPeriod</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x10</midino>
<group>[Master]</group>
<key>volume</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x23</midino>
<group>[Channel1]</group>
<key>pfl</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x11</midino>
<group>[Master]</group>
<key>headMix</key>
<options>
<normal/>
</options>
</control>
<control>
<status>0x90</status>
<midino>0x24</midino>
<group>[Channel2]</group>
<key>pfl</key>
<options>
<button/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x12</midino>
<group>[Channel2]</group>
<key>BehringerBCD2000.jogWheel</key>
<options>
<script-binding/>
</options>
</control>
<control>
<status>0xb0</status>
<midino>0x13</midino>
<group>[Channel1]</group>
<key>BehringerBCD2000.jogWheel</key>
<options>
<script-binding/>
</options>
</control>
</controls>
<outputs>
<output>
<group>[Channel2]</group>
<key>filterLowKill</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x10</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel1]</group>
<key>filterHighKill</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x16</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel2]</group>
<key>loop_enabled</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0xd</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel1]</group>
<key>filterMidKill</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x17</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel1]</group>
<key>pfl</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x2</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel1]</group>
<key>cue_default</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x11</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel2]</group>
<key>pfl</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x1</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel2]</group>
<key>filterMidKill</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0xf</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel2]</group>
<key>filterHighKill</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0xe</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel2]</group>
<key>cue_default</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x9</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel2]</group>
<key>play</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0xa</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel1]</group>
<key>filterLowKill</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x18</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel2]</group>
<key>flanger</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x4</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel1]</group>
<key>play</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x12</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel1]</group>
<key>loop_enabled</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x15</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
<output>
<group>[Channel1]</group>
<key>flanger</key>
<options>
<normal/>
</options>
<minimum>0.5</minimum>
<maximum>1</maximum>
<status>0xb0</status>
<midino>0x5</midino>
<on>0x7f</on>
<off>0x0</off>
</output>
</outputs>
</controller>
</MixxxMIDIPreset>

--------------------------------------
You only need to copy this content, and you need paste into the indicated file (Behringer-BCD2000-scripts.js, Behrihnger BCD2000.midi), and enjoy.
P.S.: I did not try a microphone
