Behringer BCD 2000 controller mapping

Hi!

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]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);

};[/code]

And this is the
Behringer BCD2000.midi.xml

[code]






0x90
0x0
[Channel1]
back





0x90
0x1
[Channel1]
fwd





0x90
0x2
[Channel1]
rate_temp_down





0x90
0x3
[Channel1]
rate_temp_up





0x90
0x4
[Channel1]
beatloop_8





0x90
0x5
[Channel1]
reloop_exit





0x90
0x6
[Channel2]
back





0x90
0x7
[Channel2]
fwd





0x90
0x8
[Channel2]
rate_temp_down





0x90
0x9
[Channel2]
rate_temp_up





0x90
0xa
[Channel2]
beatloop_8





0x90
0xb
[Channel2]
reloop_exit





0x90
0xc
[Channel1]
filterLowKill





0x90
0xd
[Channel1]
filterMidKill





0x90
0xe
[Channel1]
filterHighKill





0x90
0xf
[Channel1]
loop_halve





0x90
0x10
[Channel1]
beatsync





0x90
0x11
[Channel1]
BehringerBCD2000.scratchButton





0xb0
0x0
[Channel1]
volume





0x90
0x12
[Channel1]
play





0xb0
0x1
[Master]
crossfader





0x90
0x13
[Channel1]
cue_default





0xb0
0x2
[Channel2]
volume





0x90
0x14
[Channel2]
filterLowKill





0xb0
0x3
[Channel1]
filterLow





0x90
0x15
[Channel2]
filterMidKill





0xb0
0x4
[Channel1]
filterMid





0x90
0x16
[Channel2]
filterHighKill





0xb0
0x5
[Channel1]
filterHigh





0x90
0x17
[Channel2]
loop_halve



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

[/code]

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

Excellent work! Would you mind also making a page for this controller on our wiki linked from the hardware compatibility page? Use the ADJ VMS4 page as a model.

Hello all ! this is my first post on your forums. I must say i love mixxx is is so much better then alot of the other software out there and its free. I used the setting for the bcd2000 in the above post but i get errors when i use the scrip it says it cant find the joggwheel script.

i found much more success in one using the bcd2000 asio driver , and bcd3000 setting with a costume learn for midi controller.

<MixxxMIDIPreset mixxxVersion="1.10.0+" schemaVersion="1"> <controller id="BCD-2000"> <scriptfiles> <file functionprefix="BehringerBCD3000" filename="Behringer-BCD3000-scripts.js"/> </scriptfiles> <controls> <control> <status>0x80</status> <midino>0x0</midino> <group>[Channel1]</group> <key>back</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x1</midino> <group>[Channel1]</group> <key>fwd</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x4</midino> <group>[Channel1]</group> <key>keylock</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x6</midino> <group>[Channel2]</group> <key>back</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x7</midino> <group>[Channel2]</group> <key>fwd</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0xa</midino> <group>[Channel2]</group> <key>keylock</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x10</midino> <group>[Channel1]</group> <key>beatsync</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x12</midino> <group>[Channel1]</group> <key>cue_default</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x13</midino> <group>[Channel1]</group> <key>play</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x18</midino> <group>[Channel2]</group> <key>beatsync</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x1a</midino> <group>[Channel2]</group> <key>cue_default</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x1b</midino> <group>[Channel2]</group> <key>play</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x1c</midino> <group>[Master]</group> <key>headMix</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x1e</midino> <group>[Microphone]</group> <key>talkover</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x1f</midino> <group>[Channel1]</group> <key>reverse</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x80</status> <midino>0x22</midino> <group>[Channel2]</group> <key>reverse</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x0</midino> <group>[Channel1]</group> <key>back</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x1</midino> <group>[Channel1]</group> <key>fwd</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x2</midino> <group>[Channel1]</group> <key>rate_temp_down</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x3</midino> <group>[Channel1]</group> <key>rate_temp_up</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x4</midino> <group>[Channel1]</group> <key>keylock</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x5</midino> <group>[Channel1]</group> <key>reloop_exit</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x6</midino> <group>[Channel2]</group> <key>back</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x7</midino> <group>[Channel2]</group> <key>fwd</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x8</midino> <group>[Channel2]</group> <key>rate_temp_down</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x9</midino> <group>[Channel2]</group> <key>rate_temp_up</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0xa</midino> <group>[Channel2]</group> <key>keylock</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0xb</midino> <group>[Channel2]</group> <key>reloop_exit</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0xc</midino> <group>[Channel1]</group> <key>filterLowKill</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0xd</midino> <group>[Channel1]</group> <key>filterMidKill</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0xe</midino> <group>[Channel1]</group> <key>filterHighKill</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0xf</midino> <group>[Channel1]</group> <key>BehringerBCD3000.loop</key> <description></description> <options> <script-binding/> </options> </control> <control> <status>0x90</status> <midino>0x10</midino> <group>[Channel1]</group> <key>beatsync</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x11</midino> <group>[Channel1]</group> <key>BehringerBCD3000.scratchButton</key> <description></description> <options> <script-binding/> </options> </control> <control> <status>0x90</status> <midino>0x12</midino> <group>[Channel1]</group> <key>cue_default</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x13</midino> <group>[Channel1]</group> <key>play</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x14</midino> <group>[Channel2]</group> <key>filterLowKill</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x15</midino> <group>[Channel2]</group> <key>filterMidKill</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x16</midino> <group>[Channel2]</group> <key>filterHighKill</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x17</midino> <group>[Channel2]</group> <key>BehringerBCD3000.loop</key> <description></description> <options> <script-binding/> </options> </control> <control> <status>0x90</status> <midino>0x18</midino> <group>[Channel2]</group> <key>beatsync</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x19</midino> <group>[Channel2]</group> <key>BehringerBCD3000.scratchButton</key> <description></description> <options> <script-binding/> </options> </control> <control> <status>0x90</status> <midino>0x1a</midino> <group>[Channel2]</group> <key>cue_default</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x1b</midino> <group>[Channel2]</group> <key>play</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x1c</midino> <group>[Master]</group> <key>headMix</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x1e</midino> <group>[Microphone]</group> <key>talkover</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x1f</midino> <group>[Channel1]</group> <key>reverse</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x20</midino> <group>[Channel1]</group> <key>flanger</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x21</midino> <group>[Channel2]</group> <key>flanger</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x22</midino> <group>[Channel2]</group> <key>reverse</key> <description></description> <options> <normal/> </options> </control> <control> <status>0x90</status> <midino>0x23</midino> <group>[Channel1]</group> <key>pfl</key> <description></description> <options> <button/> </options> </control> <control> <status>0x90</status> <midino>0x24</midino> <group>[Channel2]</group> <key>pfl</key> <description></description> <options> <button/> </options> </control> <control> <status>0xb0</status> <midino>0x0</midino> <group>[Channel1]</group> <key>volume</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x1</midino> <group>[Master]</group> <key>crossfader</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x2</midino> <group>[Channel2]</group> <key>volume</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x3</midino> <group>[Channel1]</group> <key>filterLow</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x4</midino> <group>[Channel1]</group> <key>filterMid</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x5</midino> <group>[Channel1]</group> <key>filterHigh</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x6</midino> <group>[Channel1]</group> <key>pregain</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x7</midino> <group>[Channel2]</group> <key>filterLow</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x8</midino> <group>[Channel2]</group> <key>filterMid</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x9</midino> <group>[Channel2]</group> <key>filterHigh</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0xa</midino> <group>[Channel2]</group> <key>pregain</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0xb</midino> <group>[Channel1]</group> <key>rate</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0xc</midino> <group>[Channel2]</group> <key>rate</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0xd</midino> <group>[Flanger]</group> <key>lfoDepth</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0xe</midino> <group>[Flanger]</group> <key>lfoDelay</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0xf</midino> <group>[Flanger]</group> <key>lfoPeriod</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x10</midino> <group>[Master]</group> <key>balance</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x11</midino> <group>[Master]</group> <key>headMix</key> <description></description> <options> <normal/> </options> </control> <control> <status>0xb0</status> <midino>0x12</midino> <group>[Channel2]</group> <key>BehringerBCD3000.jogWheel</key> <description></description> <options> <script-binding/> </options> </control> <control> <status>0xb0</status> <midino>0x13</midino> <group>[Channel1]</group> <key>BehringerBCD3000.jogWheel</key> <description></description> <options> <script-binding/> </options> </control> </controls> <outputs> <output> <group>[Channel2]</group> <key>filterLowKill</key> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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> <description></description> <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>
B-dj installed (bcd2000 native program)
the bcd2000 asio driver in b-dj mode

in mixxx
my setting for sound card are
Asio

output
master bcd2000 channel 1-2
headphones bcd2000 channel 3-4

input

vinyl controller 1 bcd2000 channel 1-2
vinyl controller 2 bcd2000 channel 3-4

with these setting i have payable vinyl control with serato
still have to play with cue points more but it works after many crashes and getting rid of the asio4all and reinstall a fresh copy of the bcd2000 asio driver
i still can get the jogwheels to work in reverse on the controller just forward.
thanks again

I got my jog-wheels to work thanks to golzo hard work in the mapping of the correct settings

Hi Golzo,

Thanks for your mapping! I committed it to trunk and it will be included in Mixxx 1.11.

Mr.Selfdestruct – it seems you and Golzo have 2 separate mappings for the BCD2000. It’s not clear from this thread which one is a better fit for Mixxx since I don’t have a BCD2000 to test on. Could you guys talk about the differences between your two mappings and come to a conclusion on which one is more “accurate” – that way we can pick the best one to include. Our definition of accurate is generally how true it is to the controllers labeled controls. For example if the button is labelled “FX” but you made it control a hotcue – that’s a customization that works for you but will confuse a new Mixxx user.

Thanks a lot for both of your work on this mapping!
RJ Ryan

hi RJ Ryan i made my own script i just got the jog wheel wheel to work with the info i got from Golzo script . my mapping have more of the correct labeling on the contoller ie my play and cue buttons are play and cue . I still having troubles with the loop in/end buttons need to find the right setting for the script. hear is what i have and made as well as a map of my buttons on the bcd2000.

Behringer BCD2000.midi.xml

[code]

Behringer BCD2000







[Channel1]
filterLowKill
0x90
0x0C





[Channel2]
filterHigh
0xB0
0x09





[Channel2]
BehringerBCD2000.loop
0x90
0x17





[Channel2]
keylock
0x90
0x22





[Channel2]
play
0x80
0x1B





[Channel2]
back
0x90
0x06





[Channel1]
filterLow
0xB0
0x03





[Channel1]
BehringerBCD2000.scratchButton
0x90
0x11





[Flanger]
lfoDelay
0xB0
0x0E





[Channel1]
back
0x90
0x00





[Channel2]
reloop_exit
0x90
0x0B





[Channel2]
filterMid
0xB0
0x08





[Channel2]
filterHighKill
0x90
0x16





[Channel1]
BehringerBCD2000.jogWheel
0xB0
0x13





[Channel2]
flanger
0x90
0x21





[Channel2]
cue_default
0x80
0x1A





[Channel1]
reloop_exit
0x90
0x05





[Channel2]
volume
0xB0
0x02





[Channel1]
beatsync
0x90
0x10





[Flanger]
lfoDepth
0xB0
0x0D





[Channel2]
play
0x90
0x1B





[Channel2]
cue_set
0x90
0x0A





[Channel1]
keylock
0x80
0x1F





[Channel2]
filterLow
0xB0
0x07





[Channel2]
filterMidKill
0x90
0x15





[Channel2]
BehringerBCD2000.jogWheel
0xB0
0x12





[Channel1]
flanger
0x90
0x20





[Channel1]
cue_set
0x90
0x04





[Master]
crossfader
0xB0
0x01





[Channel1]
BehringerBCD2000.loop
0x90
0x0F





[Channel2]
rate
0xB0
0x0C





[Channel2]
cue_default
0x90
0x1A





[Channel1]
play
0x80
0x13





[Channel2]
rate_temp_up
0x90
0x09





[Channel1]
pregain
0xB0
0x06





[Channel2]
filterLowKill
0x90
0x14





[Master]
headMix
0xB0
0x11





[Channel1]
keylock
0x90
0x1F





[Channel1]
rate_temp_up
0x90
0x03





[Channel1]
volume
0xB0
0x00





[Channel1]
filterHighKill
0x90
0x0E





[Channel1]
rate
0xB0
0x0B





[Channel2]
BehringerBCD2000.scratchButton
0x90
0x19





[Channel1]
cue_default
0x80
0x12





[Channel2]
pfl
0x90
0x24





[Channel2]
rate_temp_down
0x90
0x08





[Channel1]
filterHigh
0xB0
0x05





[Channel1]
play
0x90
0x13





[Master]
balance
0xB0
0x10





[Channel1]
rate_temp_down
0x90
0x02





[Channel1]
filterMidKill
0x90
0x0D





[Channel2]
keylock
0x80
0x22





[Channel2]
pregain
0xB0
0x0A





[Channel2]
beatsync
0x90
0x18





[Channel1]
pfl
0x90
0x23





[Channel2]
fwd
0x90
0x07





[Channel1]
filterMid
0xB0
0x04





[Channel1]
cue_default
0x90
0x12





[Flanger]
lfoPeriod
0xB0
0x0F





[Channel1]
fwd
0x90
0x01







[Channel2]
filterLowKill
0xB0
0x10
0.5


[Channel1]
filterHighKill
0xB0
0x16
0.5


[Channel2]
loop_enabled
0xB0
0x0D
0.5


[Channel1]
filterMidKill
0xB0
0x17
0.5


[Channel1]
pfl
0xB0
0x02
0.5


[Channel1]
cue_default
0xB0
0x11
0.5


[Channel2]
pfl
0xB0
0x01
0.5


[Channel2]
filterMidKill
0xB0
0x0F
0.5


[Channel2]
filterHighKill
0xB0
0x0E
0.5


[Channel2]
cue_default
0xB0
0x09
0.5


[Channel2]
play
0xB0
0x0A
0.5


[Channel1]
filterLowKill
0xB0
0x18
0.5


[Channel2]
flanger
0xB0
0x04
0.5


[Channel1]
play
0xB0
0x12
0.5


[Channel1]
loop_enabled
0xB0
0x15
0.5


[Channel1]
flanger
0xB0
0x05
0.5



[/code]

Behringer-BCD2000-scripts.js

[code]function BehringerBCD2000 () {}
BehringerBCD2000.debug = false;
BehringerBCD2000.escratch = [false, false];

//sensitivity setting
BehringerBCD2000.UseAcceleration = true;
BehringerBCD2000.JogSensivity = 0.5;

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);

};

[/code]
controllers.rar (2.11 KB)