home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2011 November
/
CHIP_2011_11.iso
/
Programy
/
Narzedzia
/
Aplikacje_64-bitowe
/
Mixxx
/
mixxx-1.9.0-win64.exe
/
midi
/
DJTechTools-MIDIFighter-scripts.js
< prev
next >
Wrap
Text File
|
2010-12-02
|
5KB
|
137 lines
// DJ Tech Tools MIDI Fighter
// By RJ Ryan (rryan@mit.edu)
// For Mixxx 1.8.0+
// These scripts are the basics of mapping buttons on the MIDI Fighter to do
// things in Mixxx. Since everyone will have their own preference for what each
// button should do, the basic mappings do nothing more than assign player 1's
// hotcues 1-8 on the top two rows and player 2's hotcues 1-8 on the bottom two
// rows.
// If no mapping is given for a button then the function
// MIDIFighter.buttonX_down will be called when the button is pressed, and
// MIDIFighter.buttonX_up will be called when the button is depressed. This
// makes it easy to extend this script with custom functionality.
// The MIDI Fighter is laid out like this (in terms of the button numbers
// referenced below:
//
// || <-- usb wire
// ================
// | 1 2 3 4 |
// | 5 6 7 8 |
// | 9 10 11 12 |
// | 13 14 15 16 |
// | MIDI FIGHTER |
// ================
// A big thanks go to Ean Golden of DJ Tech Tools for sending me a MIDI
// Fighter. Mixxx would not have a mapping for the MIDI Fighter if it weren't
// for his generosity.
function MIDIFighter() {}
MIDIFighter.control_map = {
0x30: 1,
0x31: 2,
0x32: 3,
0x33: 4,
0x2C: 5,
0x2D: 6,
0x2E: 7,
0x2F: 8,
0x28: 9,
0x29: 10,
0x2A: 11,
0x2B: 12,
0x24: 13,
0x25: 14,
0x26: 15,
0x27: 16,
};
MIDIFighter.button_mappings = {
};
MIDIFighter.map_button = function (button, control_object) {
MIDIFighter.button_mappings[button] = control_object;
}
MIDIFighter.init = function(id) {
MIDIFighter.id = id;
print("MIDI Fighter " + MIDIFighter.id + " initialized.");
MIDIFighter.map_button(1, {'group': '[Channel1]', 'item': 'hotcue_1_activate'});
MIDIFighter.map_button(2, {'group': '[Channel1]', 'item': 'hotcue_2_activate'});
MIDIFighter.map_button(3, {'group': '[Channel1]', 'item': 'hotcue_3_activate'});
MIDIFighter.map_button(4, {'group': '[Channel1]', 'item': 'hotcue_4_activate'});
MIDIFighter.map_button(5, {'group': '[Channel1]', 'item': 'hotcue_5_activate'});
MIDIFighter.map_button(6, {'group': '[Channel1]', 'item': 'hotcue_6_activate'});
MIDIFighter.map_button(7, {'group': '[Channel1]', 'item': 'hotcue_7_activate'});
MIDIFighter.map_button(8, {'group': '[Channel1]', 'item': 'hotcue_8_activate'});
MIDIFighter.map_button(9, {'group': '[Channel2]', 'item': 'hotcue_1_activate'});
MIDIFighter.map_button(10, {'group': '[Channel2]', 'item': 'hotcue_2_activate'});
MIDIFighter.map_button(11, {'group': '[Channel2]', 'item': 'hotcue_3_activate'});
MIDIFighter.map_button(12, {'group': '[Channel2]', 'item': 'hotcue_4_activate'});
MIDIFighter.map_button(13, {'group': '[Channel2]', 'item': 'hotcue_5_activate'});
MIDIFighter.map_button(14, {'group': '[Channel2]', 'item': 'hotcue_6_activate'});
MIDIFighter.map_button(15, {'group': '[Channel2]', 'item': 'hotcue_7_activate'});
MIDIFighter.map_button(16, {'group': '[Channel2]', 'item': 'hotcue_8_activate'});
}
MIDIFighter.shutdown = function() {
print("MIDI Fighter " + MIDIFighter.id + " shutting down.");
}
MIDIFighter.button_down = function (channel, control, value, status) {
//print("Button down " + channel + " " + control + " " + value);
var button_number = MIDIFighter.control_map[control];
var button_name = 'button' + button_number;
var button_name_down = 'button' + button_number + "_down";
if (button_number in MIDIFighter.button_mappings) {
var control = MIDIFighter.button_mappings[button_number];
engine.setValue(control.group, control.item, 1);
} else if (button_name_down in MIDIFighter) {
MIDIFighter[button_name_down]();
} else if (button_name in MIDIFighter) {
MIDIFighter[button_name](1);
}
}
MIDIFighter.button_up = function (channel, control, value, status) {
//print("Button up " + channel + " " + control + " " + value);
var button_number = MIDIFighter.control_map[control];
var button_name = 'button' + button_number;
var button_name_up = 'button' + button_number + "_up";
if (button_number in MIDIFighter.button_mappings) {
var control = MIDIFighter.button_mappings[button_number];
engine.setValue(control.group, control.item, 0);
} else if (button_name_up in MIDIFighter) {
print ("Calling " + button_name_up);
MIDIFighter[button_name_up]();
} else if (button_name in MIDIFighter) {
MIDIFighter[button_name](0);
}
}
MIDIFighter.button1_down = function() {
// Example, if no mapping is made for button 1 then this will be called when
// button 1 is pressed.
}
MIDIFighter.button1_up = function() {
// Example, if no mapping is made for button 1 then this will be called when
// button 1 is released.
}
MIDIFighter.button1 = function() {
// Example, if no mapping is given for button 1, and no button1_up or
// button1_down method is defined, then this function will be called with
// the argument 1 for the button being pressed and 0 for the button being
// released.
}