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
/
Vestax-VCI-100-scripts.js
< prev
Wrap
Text File
|
2010-12-04
|
6KB
|
208 lines
VestaxVCI100 = new function() {
this.group = "[Master]";
this.loopHotcueDeck = null;
this.shiftMode = false;
this.jogPlaylistScrollMode = false;
this.Controls = [];
this.Buttons = [];
}
VestaxVCI100.ButtonState = {"released":0x00, "pressed":0x7F};
VestaxVCI100.Button = function (controlId) {
this.controlId = controlId;
this.state = VestaxVCI100.ButtonState.released;
};
VestaxVCI100.Button.prototype.handleEvent = function(value) {
this.handler(value);
};
VestaxVCI100.addButton = function(buttonName, button, eventHandler) {
if(eventHandler) {
var executionEnvironment = this;
function handler(value) {
button.state = value;
executionEnvironment[eventHandler](value);
}
button.handler = handler;
}
this.Buttons[buttonName] = button;
};
VestaxVCI100.key1Handler = function(value) {
var deck = this.loopHotcueDeck;
if(value && deck != null) {
if(deck.loop) {
engine.setValue(deck.group,"loop_in",1);
} else if(deck.hotcue) {
if(deck.Buttons.Hotcue.state == VestaxVCI100.ButtonState.pressed) {
engine.setValue(deck.group,"hotcue_1_set", 1);
} else {
engine.setValue(deck.group,"hotcue_1_goto", 1);
}
}
}
};
VestaxVCI100.key2Handler = function(value) {
var deck = this.loopHotcueDeck;
if(value && deck != null) {
if(deck.loop) {
engine.setValue(deck.group,"loop_out",1);
} else if(deck.hotcue) {
if(deck.Buttons.Hotcue.state == VestaxVCI100.ButtonState.pressed) {
engine.setValue(deck.group,"hotcue_2_set", 1);
} else {
engine.setValue(deck.group,"hotcue_2_goto", 1);
}
}
}
};
VestaxVCI100.key3Handler = function(value) {
var deck = this.loopHotcueDeck;
if(value && deck != null) {
if(deck.loop) {
engine.setValue(deck.group,"reloop_exit",1);
} else if(deck.hotcue) {
if(deck.Buttons.Hotcue.state == VestaxVCI100.ButtonState.pressed) {
engine.setValue(deck.group,"hotcue_3_set", 1);
} else {
engine.setValue(deck.group,"hotcue_3_goto", 1);
}
}
}
};
VestaxVCI100.addButton("Key1", new VestaxVCI100.Button(0x62), "key1Handler");
VestaxVCI100.addButton("Key2", new VestaxVCI100.Button(0x63), "key2Handler");
VestaxVCI100.addButton("Key3", new VestaxVCI100.Button(0x64), "key3Handler");
VestaxVCI100.Deck = function (deckNumber, group) {
this.deckNumber = deckNumber;
this.group = group;
this.vinylMode = true;
this.scratching = false;
this.loop = false;
this.hotcue = false;
this.Buttons = [];
}
VestaxVCI100.Deck.prototype.addButton = VestaxVCI100.addButton;
VestaxVCI100.Deck.prototype.jogMove = function(jogValue) {
jogValue = jogValue * 3;
engine.setValue(this.group,"jog", jogValue);
}
VestaxVCI100.Deck.prototype.scratchMove = function(jogValue) {
engine.scratchTick(this.deckNumber, jogValue);
}
VestaxVCI100.Deck.prototype.loopHandler = function(value) {
if(value) {
VestaxVCI100.loopHotcueDeck = this;
this.loop = true;
this.hotcue = false;
}
};
VestaxVCI100.Deck.prototype.hotcueHandler = function(value) {
if(value) {
VestaxVCI100.loopHotcueDeck = this;
this.hotcue = true;
this.loop = false;
}
};
VestaxVCI100.Decks = {"Left":new VestaxVCI100.Deck(1,"[Channel1]"), "Right":new VestaxVCI100.Deck(2,"[Channel2]")};
VestaxVCI100.GroupToDeck = {"[Channel1]":"Left", "[Channel2]":"Right"};
VestaxVCI100.GetDeck = function(group) {
try {
return VestaxVCI100.Decks[VestaxVCI100.GroupToDeck[group]];
} catch(ex) {
return null;
}
}
VestaxVCI100.Decks.Left.addButton("Loop", new VestaxVCI100.Button(0x65), "loopHandler");
VestaxVCI100.Decks.Left.addButton("Hotcue", new VestaxVCI100.Button(0x66), "hotcueHandler");
VestaxVCI100.Decks.Right.addButton("Loop", new VestaxVCI100.Button(0x67), "loopHandler");
VestaxVCI100.Decks.Right.addButton("Hotcue", new VestaxVCI100.Button(0x68), "hotcueHandler");
VestaxVCI100.init = function (id) {
midi.sendShortMsg(0xB0,0x62,0x7F);
midi.sendShortMsg(0xB0,0x63,0x7F);
midi.sendShortMsg(0xB0,0x64,0x7F);
midi.sendShortMsg(0x90,0x65,0x7F);
midi.sendShortMsg(0x90,0x66,0x7F);
midi.sendShortMsg(0x90,0x67,0x7F);
midi.sendShortMsg(0x90,0x68,0x7F);
midi.sendShortMsg(0xB0,0x64,0x00);
midi.sendShortMsg(0x90,0x67,0x00);
midi.sendShortMsg(0x80,0x68,0x00);
}
//Mapping functions
VestaxVCI100.vinyl_mode = function (channel, control, value, status, group) {
// var deck = VestaxVCI100.GetDeck(group);
// if(value) {
// if(deck.vinylMode) {
// deck.vinylMode = false;
// midi.sendShortMsg(0xB0, control, 0x00);
// } else {
// deck.vinylMode = true;
// midi.sendShortMsg(0xB0, control, 0x7F);
// }
// }
}
VestaxVCI100.jog_touch = function (channel, control, value, status, group) {
var deck = VestaxVCI100.GetDeck(group);
if(value) {
engine.scratchEnable(deck.deckNumber, 128*3, 45, 1.0/8, (1.0/8)/32);
} else {
engine.scratchDisable(deck.deckNumber);
}
}
VestaxVCI100.jog_wheel = function (channel, control, value, status, group) {
// 41 > 7F: CW Slow > Fast ???
// 3F > 0 : CCW Slow > Fast ???
var jogValue = value - 0x40; // -64 to +63, - = CCW, + = CW
VestaxVCI100.GetDeck(group).jogMove(jogValue);
}
VestaxVCI100.jog_wheel_scratch = function (channel, control, value, status, group) {
// 41 > 7F: CW Slow > Fast ???
// 3F > 0 : CCW Slow > Fast ???
var jogValue = value - 0x40; // -64 to +63, - = CCW, + = CW
VestaxVCI100.GetDeck(group).scratchMove(jogValue);
}
VestaxVCI100.loopMode = function (channel, control, value, status, group) {
var deck = VestaxVCI100.GetDeck(group);
deck.Buttons.Loop.handleEvent(value);
}
VestaxVCI100.hotcueMode = function (channel, control, value, status, group) {
var deck = VestaxVCI100.GetDeck(group);
deck.Buttons.Hotcue.handleEvent(value);
}
VestaxVCI100.key1 = function (channel, control, value, status, group) {
VestaxVCI100.Buttons.Key1.handleEvent(value);
}
VestaxVCI100.key2 = function (channel, control, value, status, group) {
VestaxVCI100.Buttons.Key2.handleEvent(value);
}
VestaxVCI100.key3 = function (channel, control, value, status, group) {
VestaxVCI100.Buttons.Key3.handleEvent(value);
}