-
-
Save rjungemann/0c93de4e9c2ca95406c2ce05c7249a32 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var FaderFoxDJ4 = {}; | |
function inspect () { | |
print(Array.prototype.join.call(arguments, ' ')); | |
} | |
function getInfo () { | |
print('---') | |
inspect('Deck', FaderFoxDJ4.leftDeckIsC ? 'C' : 'A'); | |
inspect('Deck', FaderFoxDJ4.rightDeckIsD ? 'D' : 'B'); | |
inspect('Shift', FaderFoxDJ4.shiftPressed ? 'active' : 'inactive'); | |
} | |
function channelNBeatJump (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']'; | |
engine.setValue(channelName, 'beatjump', (value === 127) ? -1 : 1); | |
}; | |
function channelNCueJumpFn (deck) { | |
var channelName = '[Channel' + deck + ']'; | |
var duration = engine.getValue(channelName, 'duration'); | |
var samplerate = engine.getValue('[Master]', 'samplerate'); | |
var samples = duration * samplerate; | |
var position = engine.getValue(channelName, 'playposition') * samples; | |
var cue = -1; | |
for (var i = 1; i <= 8; i++) { | |
var a = engine.getValue(channelName, 'hotcue_' + i.toString() + '_position'); | |
if (a === -1) { | |
cue = i - 1; | |
break; | |
} | |
if (position < a) { | |
cue = i; | |
break; | |
} | |
} | |
var index = (value === 127) ? cue - 1 : cue + 1; | |
engine.setValue(channelName, 'hotcue_' + index + '_gotoandplay', 1) | |
} | |
function calculateGain (value) { | |
var v = value / 127.0; | |
var max = 3.0; | |
return (v < 0.5) ? v * 2.0 : (v - 0.5) * (max * 2.0) + 1.0; | |
} | |
function channelNFilter (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']' | |
if (FaderFoxDJ4.shiftPressed) { | |
engine.setValue(channelName, 'pregain', calculateGain(value)); | |
} else { | |
var filterName = '[QuickEffectRack1_[Channel' + deck.toString() + ']]' | |
engine.setValue(filterName, 'super1', value / 127.0); | |
} | |
} | |
function channelNEqHighEnabled (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']' | |
engine.setValue(channelName, 'filterHighKill', v === 0 ? 1 : 0); | |
midi.sendShortMsg(status, 0x32, v === 0 ? 0x7f : 0); | |
} | |
function channelNEqMidEnabled (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']' | |
engine.setValue(channelName, 'filterMidKill', v === 0 ? 1 : 0); | |
midi.sendShortMsg(status, 0x27, v === 0 ? 0x7f : 0); | |
} | |
function channelNEqLowEnabled (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']' | |
engine.setValue(channelName, 'filterLowKill', v === 0 ? 1 : 0); | |
midi.sendShortMsg(status, 0x35, v === 0 ? 0x7f : 0); | |
} | |
function channelNEqHigh (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']' | |
engine.setValue(channelName, 'filterHigh', calculateGain(value)); | |
} | |
function channelNEqMid (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']' | |
engine.setValue(channelName, 'filterMid', calculateGain(value)); | |
} | |
function channelNEqLow (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']' | |
engine.setValue(channelName, 'filterLow', calculateGain(value)); | |
} | |
function channelNFilterEnabled (deck, status, value) { | |
if (value === 0) return; | |
var channelName = '[Channel' + deck.toString() + ']' | |
var v = engine.getValue(channelName, 'mute'); | |
engine.setValue(channelName, 'mute', v === 0 ? 1 : 0); | |
midi.sendShortMsg(status, 0x32, v === 0 ? 0x7f : 0); | |
} | |
function channelNCue (deck, status, value) { | |
if (value === 0) return; | |
var channelName = '[Channel' + deck.toString() + ']' | |
var v = engine.getValue(channelName, 'cue_default'); | |
engine.setValue(channelName, 'cue_default', v === 0 ? 1 : 0); | |
midi.sendShortMsg(status, 0x26, v === 0 ? 0x7f : 0); | |
} | |
function channelNMute (deck, status, value) { | |
if (value === 0) return; | |
var channelName = '[Channel' + deck.toString() + ']' | |
var v = engine.getValue(channelName, 'mute'); | |
engine.setValue(channelName, 'mute', v === 0 ? 1 : 0); | |
midi.sendShortMsg(status, 0x34, v === 0 ? 0x7f : 0); | |
} | |
function channelNVolume (deck, status, value) { | |
var realDeck; | |
if (deck === 1) { | |
realDeck = FaderFoxDJ4.leftDeckIsC ? 3 : 1; | |
} else { | |
realDeck = FaderFoxDJ4.rightDeckIsD ? 4 : 2; | |
} | |
var channelName = '[Channel' + realDeck.toString() + ']'; | |
if (FaderFoxDJ4.shiftPressed) { | |
engine.setValue(channelName, 'rate', (value - 64.0) / 64.0); | |
} else { | |
engine.setValue(channelName, 'volume', value / 127.0); | |
} | |
} | |
function channelNSync (deck, status, value) { | |
if (value === 0) return; | |
var channelName = '[Channel' + deck.toString() + ']' | |
var v = engine.getValue(channelName, 'sync_enabled'); | |
engine.setValue(channelName, 'sync_enabled', v === 0 ? 1 : 0); | |
midi.sendShortMsg(status, 0x30, v === 0 ? 0x7f : 0); | |
} | |
function channelNPlay (deck, status, value) { | |
if (value === 0) return; | |
var channelName = '[Channel' + deck.toString() + ']' | |
var v = engine.getValue(channelName, 'play'); | |
engine.setValue(channelName, 'play', v === 0 ? 1 : 0); | |
midi.sendShortMsg(status, 0x38, v === 0 ? 0x7f : 0); | |
} | |
function channelNKeyAdjust (deck, status, value) { | |
var channelName = '[Channel' + deck.toString() + ']'; | |
var oldValue = engine.getValue(channelName, 'pitch_adjust'); | |
var difference = (value === 127) ? -1.0 : 1.0; | |
var newValue = oldValue + difference; | |
inspect('--- channelNKeyAdjust', channelName, 'oldValue', oldValue, 'difference', difference, 'newValue', newValue); | |
engine.setValue(channelName, 'pitch_adjust', newValue); | |
} | |
function channelNLoopToggle (deck, value) { | |
if (value === 0) return; | |
inspect('loop_enabled', engine.getValue(channelName, 'loop_enabled')); | |
try { | |
var channelName = '[Channel' + deck.toString() + ']'; | |
var v = engine.getValue(channelName, 'beatloop_activate'); | |
if (v === 0) { | |
engine.setValue(channelName, 'loop_enabled', 1); | |
engine.setValue(channelName, 'reloop_toggle', 1); | |
} else { | |
engine.setValue(channelName, 'loop_enabled', 0); | |
engine.setValue(channelName, 'reloop_toggle', 0); | |
} | |
inspect('channelNLoopToggle', channelName, value, v) | |
} catch (e) { | |
print('--- Could not toggle loop. A deck might not be loaded.') | |
} | |
} | |
function channelNLoopMove (deck, status, value) { | |
try { | |
engine.setValue('[Channel' + deck.toString() + ']', 'loop_move', value !== 127 ? 1 : -1); | |
} catch (e) { | |
print('--- Could not move loop. A loop might not be defined.') | |
} | |
} | |
function channelNLoopSize (deck, status, value) { | |
try { | |
var channelName = '[Channel' + deck.toString() + ']'; | |
var delta = value !== 127 ? 1 : -1; | |
var v = engine.getValue(channelName, 'beatloop_size') + delta | |
engine.setValue(channelName, 'beatloop_size', v); | |
} catch (e) { | |
print('--- Could not set loop size. A loop might not be defined.') | |
} | |
} | |
function channelNFxNAssign (deck, fx, value) { | |
if (value === 0) return; | |
var channelName = '[EffectRack1_EffectUnit' + fx.toString() + ']'; | |
var fieldName = 'group_[Channel' + deck.toString() + ']_enable' | |
var current = engine.getValue(channelName, fieldName); | |
engine.setValue(channelName, fieldName, current === 0 ? 1 : 0); | |
} | |
function fxNParamNToggle (fx, param, value) { | |
if (value === 0) return; | |
var channelName = '[EffectRack1_EffectUnit' + fx.toString() + '_Effect' + param.toString() + ']'; | |
var current = engine.getValue(channelName, 'enabled'); | |
engine.setValue(channelName, 'enabled', current === 0 ? 1 : 0); | |
} | |
function fxNParamNChange (fx, param, value) { | |
var channelName = '[EffectRack1_EffectUnit' + fx.toString() + '_Effect' + param.toString() + ']'; | |
var oldValue = engine.getValue(channelName, 'meta'); | |
var division = 0.05; | |
var difference = ((value === 127) ? -1.0 : 1.0) * division; | |
var newValue = oldValue + difference; | |
engine.setValue(channelName, 'meta', newValue); | |
inspect('fxNParamNChange', channelName, oldValue, difference, newValue) | |
} | |
function fxNMix (fx, value) { | |
var channelName = '[EffectRack1_EffectUnit' + fx.toString() + ']'; | |
var oldValue = engine.getValue(channelName, 'mix'); | |
var division = 0.05; | |
var difference = ((value === 127) ? -1.0 : 1.0) * division; | |
var newValue = oldValue + difference; | |
engine.setValue(channelName, 'mix', newValue); | |
inspect('fxNMix', channelName, oldValue, difference, newValue) | |
} | |
FaderFoxDJ4.reinit = function () { | |
FaderFoxDJ4.shiftPressed = false; | |
FaderFoxDJ4.leftDeckIsC = false; | |
FaderFoxDJ4.rightDeckIsD = false; | |
FaderFoxDJ4.cuePoints = [0, 0, 0, 0]; | |
engine.softTakeover('[Master]', 'crossfader', true); | |
// Reset each of the four channels | |
for (var i = 0; i < 4; i++) { | |
var status = 0xB0 + i; | |
var channelName = '[Channel' + (i + 1).toString() + ']'; | |
var filterName = '[QuickEffectRack1_[Channel' + (i + 1).toString() + ']]'; | |
// Reset lights | |
midi.sendShortMsg(status, 0x30, engine.getValue('[Channel1]', 'sync_enabled')); | |
midi.sendShortMsg(status, 0x38, engine.getValue('[Channel1]', 'play')); | |
midi.sendShortMsg(status, 0x32, engine.getValue('[Channel1]', 'mute')); | |
midi.sendShortMsg(status, 0x26, engine.getValue(filterName, 'super1')); | |
midi.sendShortMsg(status, 0x32, engine.getValue('[Channel1]', 'mute')); | |
// Reduce jumpiness in knobs/faders | |
engine.softTakeover(channelName, 'volume', true); | |
engine.softTakeover(channelName, 'rate', true); | |
engine.softTakeover(filterName, 'super1', true); | |
engine.softTakeover(channelName, 'pregain', true); | |
engine.softTakeover(channelName, 'filterHigh', true); | |
engine.softTakeover(channelName, 'filterMid', true); | |
engine.softTakeover(channelName, 'filterLow', true); | |
print('--- FaderFox DJ4 ' + channelName + ' reinitialized'); | |
} | |
print('--- FaderFox DJ4 reinitialized'); | |
} | |
FaderFoxDJ4.init = function(_id) { | |
FaderFoxDJ4.reinit(); | |
}; | |
FaderFoxDJ4.shutdown = function () { | |
}; | |
// --- | |
// Top | |
// --- | |
FaderFoxDJ4.moveLibrary = function (channel, control, value, status, group) { | |
engine.setValue(group, 'MoveVertical', value !== 127 ? 1 : -1); | |
}; | |
// Beat jump | |
FaderFoxDJ4.channel1BeatJump = function (channel, control, value, status, group) { | |
channelNBeatJump(1, status, value); | |
}; | |
FaderFoxDJ4.channel2BeatJump = function (channel, control, value, status, group) { | |
channelNBeatJump(2, status, value); | |
}; | |
FaderFoxDJ4.channel3BeatJump = function (channel, control, value, status, group) { | |
channelNBeatJump(3, status, value); | |
}; | |
FaderFoxDJ4.channel4BeatJump = function (channel, control, value, status, group) { | |
channelNBeatJump(4, status, value); | |
}; | |
// Cue jump | |
FaderFoxDJ4.channel1CueJump = function (channel, control, value, status, group) { | |
channelNCueJump(1); | |
}; | |
FaderFoxDJ4.channel2CueJump = function (channel, control, value, status, group) { | |
channelNCueJump(2); | |
}; | |
FaderFoxDJ4.channel3CueJump = function (channel, control, value, status, group) { | |
channelNCueJump(3); | |
}; | |
FaderFoxDJ4.channel4CueJump = function (channel, control, value, status, group) { | |
channelNCueJump(4); | |
}; | |
// Key adjust | |
FaderFoxDJ4.channel1KeyAdjust = function (channel, control, value, status, group) { | |
channelNKeyAdjust(1, status, value); | |
}; | |
FaderFoxDJ4.channel2KeyAdjust = function (channel, control, value, status, group) { | |
channelNKeyAdjust(2, status, value); | |
}; | |
FaderFoxDJ4.channel3KeyAdjust = function (channel, control, value, status, group) { | |
channelNKeyAdjust(3, status, value); | |
}; | |
FaderFoxDJ4.channel4KeyAdjust = function (channel, control, value, status, group) { | |
channelNKeyAdjust(4, status, value); | |
}; | |
// Loop toggle | |
FaderFoxDJ4.channel1LoopToggle = function (channel, control, value, status, group) { | |
channelNLoopToggle(1, value); | |
}; | |
// Loop move | |
FaderFoxDJ4.channel1LoopMove = function (channel, control, value, status, group) { | |
channelNLoopMove(1, status, value); | |
}; | |
FaderFoxDJ4.channel1LoopSize = function (channel, control, value, status, group) { | |
channelNLoopSize(1, status, value); | |
}; | |
FaderFoxDJ4.channel2LoopMove = function (channel, control, value, status, group) { | |
channelNLoopMove(2, status, value); | |
}; | |
FaderFoxDJ4.channel2LoopSize = function (channel, control, value, status, group) { | |
channelNLoopSize(2, status, value); | |
}; | |
FaderFoxDJ4.channel3LoopMove = function (channel, control, value, status, group) { | |
channelNLoopMove(3, status, value); | |
}; | |
FaderFoxDJ4.channel3LoopSize = function (channel, control, value, status, group) { | |
channelNLoopSize(3, status, value); | |
}; | |
FaderFoxDJ4.channel4LoopMove = function (channel, control, value, status, group) { | |
channelNLoopMove(4, status, value); | |
}; | |
FaderFoxDJ4.channel4LoopSize = function (channel, control, value, status, group) { | |
channelNLoopSize(4, status, value); | |
}; | |
// FX | |
FaderFoxDJ4.fx1Param1Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(1, 1, value) | |
}; | |
FaderFoxDJ4.fx1Param2Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(1, 2, value) | |
}; | |
FaderFoxDJ4.fx1Param3Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(1, 3, value) | |
}; | |
FaderFoxDJ4.fx1Param4Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(1, 4, value) | |
}; | |
FaderFoxDJ4.fx2Param1Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(2, 1, value) | |
}; | |
FaderFoxDJ4.fx2Param2Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(2, 2, value) | |
}; | |
FaderFoxDJ4.fx2Param3Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(2, 3, value) | |
}; | |
FaderFoxDJ4.fx2Param4Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(2, 4, value) | |
}; | |
FaderFoxDJ4.fx3Param1Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(3, 1, value) | |
}; | |
FaderFoxDJ4.fx3Param2Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(3, 2, value) | |
}; | |
FaderFoxDJ4.fx3Param3Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(3, 3, value) | |
}; | |
FaderFoxDJ4.fx3Param4Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(3, 4, value) | |
}; | |
FaderFoxDJ4.fx4Param1Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(4, 1, value) | |
}; | |
FaderFoxDJ4.fx4Param2Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(4, 2, value) | |
}; | |
FaderFoxDJ4.fx4Param3Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(4, 3, value) | |
}; | |
FaderFoxDJ4.fx4Param4Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(4, 4, value) | |
}; | |
// FX mix | |
FaderFoxDJ4.fx1Mix = function (channel, control, value, status, group) { | |
fxNMix(1, value) | |
}; | |
FaderFoxDJ4.fx2Mix = function (channel, control, value, status, group) { | |
fxNMix(2, value) | |
}; | |
FaderFoxDJ4.fx3Mix = function (channel, control, value, status, group) { | |
fxNMix(3, value) | |
}; | |
FaderFoxDJ4.fx4Mix = function (channel, control, value, status, group) { | |
fxNMix(4, value) | |
}; | |
// ------ | |
// Middle | |
// ------ | |
// Filter enabled | |
FaderFoxDJ4.channel1FilterEnabled = function (channel, control, value, status, group) { | |
channelNFilterEnabled(1, status, value); | |
}; | |
FaderFoxDJ4.channel2FilterEnabled = function (channel, control, value, status, group) { | |
channelNFilterEnabled(2, status, value); | |
}; | |
FaderFoxDJ4.channel3FilterEnabled = function (channel, control, value, status, group) { | |
channelNFilterEnabled(3, status, value); | |
}; | |
FaderFoxDJ4.channel4FilterEnabled = function (channel, control, value, status, group) { | |
channelNFilterEnabled(4, status, value); | |
}; | |
// EQ High enabled | |
FaderFoxDJ4.channel1EqHighEnabled = function (channel, control, value, status, group) { | |
channelNEqHighEnabled(1, status, value); | |
}; | |
FaderFoxDJ4.channel2EqHighEnabled = function (channel, control, value, status, group) { | |
channelNEqHighEnabled(2, status, value); | |
}; | |
FaderFoxDJ4.channel3EqHighEnabled = function (channel, control, value, status, group) { | |
channelNEqHighEnabled(3, status, value); | |
}; | |
FaderFoxDJ4.channel4EqHighEnabled = function (channel, control, value, status, group) { | |
channelNEqHighEnabled(4, status, value); | |
}; | |
// EQ Mid enabled | |
FaderFoxDJ4.channel1EqMidEnabled = function (channel, control, value, status, group) { | |
channelNEqMidEnabled(1, status, value); | |
}; | |
FaderFoxDJ4.channel2EqMidEnabled = function (channel, control, value, status, group) { | |
channelNEqMidEnabled(2, status, value); | |
}; | |
FaderFoxDJ4.channel3EqMidEnabled = function (channel, control, value, status, group) { | |
channelNEqMidEnabled(3, status, value); | |
}; | |
FaderFoxDJ4.channel4EqMidEnabled = function (channel, control, value, status, group) { | |
channelNEqMidEnabled(4, status, value); | |
}; | |
// EQ Low enabled | |
FaderFoxDJ4.channel1EqLowEnabled = function (channel, control, value, status, group) { | |
channelNEqLowEnabled(1, status, value); | |
}; | |
FaderFoxDJ4.channel2EqLowEnabled = function (channel, control, value, status, group) { | |
channelNEqLowEnabled(2, status, value); | |
}; | |
FaderFoxDJ4.channel3EqLowEnabled = function (channel, control, value, status, group) { | |
channelNEqLowEnabled(3, status, value); | |
}; | |
FaderFoxDJ4.channel4EqLowEnabled = function (channel, control, value, status, group) { | |
channelNEqLowEnabled(4, status, value); | |
}; | |
// Filter | |
FaderFoxDJ4.channel1Filter = function (channel, control, value, status, group) { | |
channelNFilter(1, status, value); | |
}; | |
FaderFoxDJ4.channel2Filter = function (channel, control, value, status, group) { | |
channelNFilter(2, status, value); | |
}; | |
FaderFoxDJ4.channel3Filter = function (channel, control, value, status, group) { | |
channelNFilter(3, status, value); | |
}; | |
FaderFoxDJ4.channel4Filter = function (channel, control, value, status, group) { | |
channelNFilter(4, status, value); | |
}; | |
// EQ High | |
FaderFoxDJ4.channel1EqHigh = function (channel, control, value, status, group) { | |
channelNEqHigh(1, status, value); | |
}; | |
FaderFoxDJ4.channel2EqHigh = function (channel, control, value, status, group) { | |
channelNEqHigh(2, status, value); | |
}; | |
FaderFoxDJ4.channel3EqHigh = function (channel, control, value, status, group) { | |
channelNEqHigh(3, status, value); | |
}; | |
FaderFoxDJ4.channel4EqHigh = function (channel, control, value, status, group) { | |
channelNEqHigh(4, status, value); | |
}; | |
// EQ Mid | |
FaderFoxDJ4.channel1EqMid = function (channel, control, value, status, group) { | |
channelNEqMid(1, status, value); | |
}; | |
FaderFoxDJ4.channel2EqMid = function (channel, control, value, status, group) { | |
channelNEqMid(2, status, value); | |
}; | |
FaderFoxDJ4.channel3EqMid = function (channel, control, value, status, group) { | |
channelNEqMid(3, status, value); | |
}; | |
FaderFoxDJ4.channel4EqMid = function (channel, control, value, status, group) { | |
channelNEqMid(4, status, value); | |
}; | |
// EQ Low | |
FaderFoxDJ4.channel1EqLow = function (channel, control, value, status, group) { | |
channelNEqLow(1, status, value); | |
}; | |
FaderFoxDJ4.channel2EqLow = function (channel, control, value, status, group) { | |
channelNEqLow(2, status, value); | |
}; | |
FaderFoxDJ4.channel3EqMid = function (channel, control, value, status, group) { | |
channelNEqLow(3, status, value); | |
}; | |
FaderFoxDJ4.channel4EqMid = function (channel, control, value, status, group) { | |
channelNEqLow(4, status, value); | |
}; | |
// Cue | |
FaderFoxDJ4.channel1Cue = function (channel, control, value, status, group) { | |
channelNCue(1, status, value); | |
}; | |
FaderFoxDJ4.channel2Cue = function (channel, control, value, status, group) { | |
channelNCue(2, status, value); | |
}; | |
FaderFoxDJ4.channel3Cue = function (channel, control, value, status, group) { | |
channelNCue(3, status, value); | |
}; | |
FaderFoxDJ4.channel4Cue = function (channel, control, value, status, group) { | |
channelNCue(4, status, value); | |
}; | |
// Mute | |
FaderFoxDJ4.channel1Mute = function (channel, control, value, status, group) { | |
channelNMute(1, status, value); | |
}; | |
FaderFoxDJ4.channel2Mute = function (channel, control, value, status, group) { | |
channelNMute(2, status, value); | |
}; | |
FaderFoxDJ4.channel3Mute = function (channel, control, value, status, group) { | |
channelNMute(3, status, value); | |
}; | |
FaderFoxDJ4.channel4Mute = function (channel, control, value, status, group) { | |
channelNMute(4, status, value); | |
}; | |
// Volume | |
FaderFoxDJ4.channel1Volume = function (channel, control, value, status, group) { | |
channelNVolume(1, status, value); | |
}; | |
FaderFoxDJ4.channel2Volume = function (channel, control, value, status, group) { | |
channelNVolume(2, status, value); | |
}; | |
// There is no channel 3 and 4 faders, we have to track track assignment ourselves! | |
// ------ | |
// Bottom | |
// ------ | |
// Sync | |
FaderFoxDJ4.channel1Sync = function (channel, control, value, status, group) { | |
channelNSync(1, status, value); | |
}; | |
FaderFoxDJ4.channel2Sync = function (channel, control, value, status, group) { | |
channelNSync(2, status, value); | |
}; | |
FaderFoxDJ4.channel3Sync = function (channel, control, value, status, group) { | |
channelNSync(3, status, value); | |
}; | |
FaderFoxDJ4.channel4Sync = function (channel, control, value, status, group) { | |
channelNSync(4, status, value); | |
}; | |
// Play | |
FaderFoxDJ4.channel1Play = function (channel, control, value, status, group) { | |
channelNPlay(1, status, value); | |
}; | |
FaderFoxDJ4.channel2Play = function (channel, control, value, status, group) { | |
channelNPlay(2, status, value); | |
}; | |
FaderFoxDJ4.channel3Play = function (channel, control, value, status, group) { | |
channelNPlay(3, status, value); | |
}; | |
FaderFoxDJ4.channel4Play = function (channel, control, value, status, group) { | |
channelNPlay(4, status, value); | |
}; | |
// Shift | |
FaderFoxDJ4.shiftButton = function (channel, control, value, status, group) { | |
FaderFoxDJ4.shiftPressed = (value !== 0); | |
getInfo(); | |
}; | |
// Switch decks | |
FaderFoxDJ4.deckAButton = function (channel, control, value, status, group) { | |
FaderFoxDJ4.leftDeckIsC = false; | |
getInfo(); | |
}; | |
FaderFoxDJ4.deckCButton = function (channel, control, value, status, group) { | |
FaderFoxDJ4.leftDeckIsC = true; | |
getInfo(); | |
}; | |
FaderFoxDJ4.deckBButton = function (channel, control, value, status, group) { | |
FaderFoxDJ4.rightDeckIsD = false; | |
getInfo(); | |
}; | |
FaderFoxDJ4.deckDButton = function (channel, control, value, status, group) { | |
FaderFoxDJ4.rightDeckIsD = true; | |
getInfo(); | |
}; | |
// FX assign | |
FaderFoxDJ4.fx1Param1Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(1, 1, value); | |
}; | |
FaderFoxDJ4.fx1Param2Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(1, 2, value); | |
}; | |
FaderFoxDJ4.fx1Param3Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(1, 3, value); | |
}; | |
FaderFoxDJ4.fx2Param1Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(2, 1, value); | |
}; | |
FaderFoxDJ4.fx2Param2Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(2, 2, value); | |
}; | |
FaderFoxDJ4.fx2Param3Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(2, 3, value); | |
}; | |
FaderFoxDJ4.fx3Param1Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(3, 1, value); | |
}; | |
FaderFoxDJ4.fx3Param2Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(3, 2, value); | |
}; | |
FaderFoxDJ4.fx3Param3Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(3, 3, value); | |
}; | |
FaderFoxDJ4.fx4Param1Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(4, 1, value); | |
}; | |
FaderFoxDJ4.fx4Param2Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(4, 2, value); | |
}; | |
FaderFoxDJ4.fx4Param3Toggle = function (channel, control, value, status, group) { | |
fxNParamNToggle(4, 3, value); | |
}; | |
FaderFoxDJ4.fx1Param1Change = function (channel, control, value, status, group) { | |
fxNParamNChange(1, 1, value); | |
}; | |
FaderFoxDJ4.fx1Param2Change = function (channel, control, value, status, group) { | |
fxNParamNChange(1, 2, value); | |
}; | |
FaderFoxDJ4.fx1Param3Change = function (channel, control, value, status, group) { | |
fxNParamNChange(1, 3, value); | |
}; | |
FaderFoxDJ4.fx2Param1Change = function (channel, control, value, status, group) { | |
fxNParamNChange(2, 1, value); | |
}; | |
FaderFoxDJ4.fx2Param2Change = function (channel, control, value, status, group) { | |
fxNParamNChange(2, 2, value); | |
}; | |
FaderFoxDJ4.fx2Param3Change = function (channel, control, value, status, group) { | |
fxNParamNChange(2, 3, value); | |
}; | |
FaderFoxDJ4.fx3Param1Change = function (channel, control, value, status, group) { | |
fxNParamNChange(3, 1, value); | |
}; | |
FaderFoxDJ4.fx3Param2Change = function (channel, control, value, status, group) { | |
fxNParamNChange(3, 2, value); | |
}; | |
FaderFoxDJ4.fx3Param3Change = function (channel, control, value, status, group) { | |
fxNParamNChange(3, 3, value); | |
}; | |
FaderFoxDJ4.fx4Param1Change = function (channel, control, value, status, group) { | |
fxNParamNChange(4, 1, value); | |
}; | |
FaderFoxDJ4.fx4Param2Change = function (channel, control, value, status, group) { | |
fxNParamNChange(4, 2, value); | |
}; | |
FaderFoxDJ4.fx4Param3Change = function (channel, control, value, status, group) { | |
fxNParamNChange(4, 3, value); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<MixxxControllerPreset schemaVersion="1" mixxxVersion="1.11+"> | |
<info> | |
<name>FaderFox DJ4</name> | |
<author>Roger Jungemann</author> | |
<description>MIDI mapping for FaderFox DJ4 Controller</description> | |
<forums>http://www.mixxx.org/forums/viewtopic.php?f=7&t=3940</forums> | |
<manual>faderfox_dj4</manual> | |
</info> | |
<controller id="FaderFox DJ4"> | |
<scriptfiles> | |
<file filename="lodash.mixxx.js"/> | |
<file filename="midi-components-0.0.js"/> | |
<file functionprefix="FaderFoxDJ4" filename="FaderFox-DJ4-scripts.js" /> | |
</scriptfiles> | |
<controls> | |
<!-- Master --> | |
<control> | |
<group>[Master]</group> | |
<key>crossfader</key> | |
<status>0xB0</status> | |
<midino>0x5C</midino> | |
</control> | |
<control> | |
<group>[Master]</group> | |
<key>volume</key> | |
<status>0xB0</status> | |
<midino>0x5E</midino> | |
<options><diff/></options> | |
</control> | |
<!-- FaderFox does not track deck A/C or B/D for faders, so we need to do it in code --> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Volume</key> | |
<status>0xB0</status> | |
<midino>0x16</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Volume</key> | |
<status>0xB1</status> | |
<midino>0x16</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<!-- Knobs at top --> | |
<control> | |
<group>[Master]</group> | |
<key>maximize_library</key> | |
<status>0xB0</status> | |
<midino>0x73</midino> | |
</control> | |
<control> | |
<group>[Library]</group> | |
<key>MoveFocusForward</key> | |
<status>0xB0</status> | |
<midino>0x70</midino> | |
</control> | |
<control> | |
<group>[Library]</group> | |
<key>FaderFoxDJ4.moveLibrary</key> | |
<status>0xB0</status> | |
<midino>0x64</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Library]</group> | |
<key>FaderFoxDJ4.moveLibrary</key> | |
<status>0xB0</status> | |
<midino>0x66</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Library]</group> | |
<key>FaderFoxDJ4.moveLibrary</key> | |
<status>0xB1</status> | |
<midino>0x66</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Library]</group> | |
<key>FaderFoxDJ4.moveLibrary</key> | |
<status>0xB2</status> | |
<midino>0x66</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Library]</group> | |
<key>FaderFoxDJ4.moveLibrary</key> | |
<status>0xB3</status> | |
<midino>0x66</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<!-- Loading tracks from library into deck --> | |
<control> | |
<group>[Channel1]</group> | |
<key>LoadSelectedTrack</key> | |
<status>0xB0</status> | |
<midino>0x6C</midino> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>LoadSelectedTrack</key> | |
<status>0xB1</status> | |
<midino>0x6C</midino> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>LoadSelectedTrack</key> | |
<status>0xB2</status> | |
<midino>0x6C</midino> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>LoadSelectedTrack</key> | |
<status>0xB3</status> | |
<midino>0x6C</midino> | |
</control> | |
<!-- Seek and scrub to cue --> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1BeatJump</key> | |
<status>0xB0</status> | |
<midino>0x18</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1CueJump</key> | |
<status>0xB0</status> | |
<midino>0x19</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2BeatJump</key> | |
<status>0xB1</status> | |
<midino>0x18</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2CueJump</key> | |
<status>0xB1</status> | |
<midino>0x19</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3BeatJump</key> | |
<status>0xB2</status> | |
<midino>0x18</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3CueJump</key> | |
<status>0xB2</status> | |
<midino>0x19</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4BeatJump</key> | |
<status>0xB3</status> | |
<midino>0x18</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4CueJump</key> | |
<status>0xB3</status> | |
<midino>0x19</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<!-- Pitch/Key --> | |
<control> | |
<group>[Channel1]</group> | |
<key>pitch_adjust</key> | |
<status>0xB0</status> | |
<midino>0x1C</midino> | |
<options> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1KeyAdjust</key> | |
<status>0xB0</status> | |
<midino>0x1D</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>pitch_adjust</key> | |
<status>0xB1</status> | |
<midino>0x1C</midino> | |
<options> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2KeyAdjust</key> | |
<status>0xB1</status> | |
<midino>0x1D</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>pitch_adjust</key> | |
<status>0xB2</status> | |
<midino>0x1C</midino> | |
<options> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3KeyAdjust</key> | |
<status>0xB2</status> | |
<midino>0x1D</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>pitch_adjust</key> | |
<status>0xB3</status> | |
<midino>0x1C</midino> | |
<options> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4KeyAdjust</key> | |
<status>0xB3</status> | |
<midino>0x1D</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<!-- Loop --> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1LoopSize</key> | |
<status>0xB0</status> | |
<midino>0x1A</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1LoopMove</key> | |
<status>0xB0</status> | |
<midino>0x1B</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1LoopToggle</key> | |
<status>0xB0</status> | |
<midino>0x54</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2LoopSize</key> | |
<status>0xB1</status> | |
<midino>0x1A</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2LoopMove</key> | |
<status>0xB1</status> | |
<midino>0x1B</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>loop_in</key> | |
<status>0xB1</status> | |
<midino>0x54</midino> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>loop_out</key> | |
<status>0xB1</status> | |
<midino>0x55</midino> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3LoopSize</key> | |
<status>0xB2</status> | |
<midino>0x1A</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3LoopMove</key> | |
<status>0xB2</status> | |
<midino>0x1B</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>loop_in</key> | |
<status>0xB2</status> | |
<midino>0x54</midino> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>loop_out</key> | |
<status>0xB2</status> | |
<midino>0x55</midino> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4LoopSize</key> | |
<status>0xB3</status> | |
<midino>0x1A</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4LoopMove</key> | |
<status>0xB3</status> | |
<midino>0x1B</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>loop_in</key> | |
<status>0xB3</status> | |
<midino>0x54</midino> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>loop_out</key> | |
<status>0xB3</status> | |
<midino>0x55</midino> | |
</control> | |
<!-- Shift and deck-switching --> | |
<control> | |
<group>[Master]</group> | |
<key>FaderFoxDJ4.shiftButton</key> | |
<status>0xB0</status> | |
<midino>0x74</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.deckAButton</key> | |
<status>0xB0</status> | |
<midino>0x75</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.deckBButton</key> | |
<status>0xB1</status> | |
<midino>0x75</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.deckCButton</key> | |
<status>0xB2</status> | |
<midino>0x75</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.deckDButton</key> | |
<status>0xB3</status> | |
<midino>0x75</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<!-- FX Enabled --> | |
<control> | |
<group>[EffectRack1_EffectUnit1_Effect1]</group> | |
<key>FaderFoxDJ4.fx1Param1Toggle</key> | |
<status>0xB0</status> | |
<midino>0x1E</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit1_Effect2]</group> | |
<key>FaderFoxDJ4.fx1Param2Toggle</key> | |
<status>0xB0</status> | |
<midino>0x20</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit1_Effect3]</group> | |
<key>FaderFoxDJ4.fx1Param3Toggle</key> | |
<status>0xB0</status> | |
<midino>0x22</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit2_Effect1]</group> | |
<key>FaderFoxDJ4.fx2Param1Toggle</key> | |
<status>0xB1</status> | |
<midino>0x1E</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit2_Effect2]</group> | |
<key>FaderFoxDJ4.fx2Param2Toggle</key> | |
<status>0xB1</status> | |
<midino>0x20</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit2_Effect3]</group> | |
<key>FaderFoxDJ4.fx2Param3Toggle</key> | |
<status>0xB1</status> | |
<midino>0x22</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit3_Effect1]</group> | |
<key>FaderFoxDJ4.fx3Param1Toggle</key> | |
<status>0xB2</status> | |
<midino>0x1E</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit3_Effect2]</group> | |
<key>FaderFoxDJ4.fx3Param2Toggle</key> | |
<status>0xB2</status> | |
<midino>0x20</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit3_Effect3]</group> | |
<key>FaderFoxDJ4.fx3Param3Toggle</key> | |
<status>0xB2</status> | |
<midino>0x22</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit4_Effect1]</group> | |
<key>FaderFoxDJ4.fx4Param1Toggle</key> | |
<status>0xB3</status> | |
<midino>0x1E</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit4_Effect2]</group> | |
<key>FaderFoxDJ4.fx4Param2Toggle</key> | |
<status>0xB3</status> | |
<midino>0x20</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit4_Effect3]</group> | |
<key>FaderFoxDJ4.fx4Param3Toggle</key> | |
<status>0xB3</status> | |
<midino>0x22</midino> | |
<options><Script-Binding/></options> | |
</control> | |
<!-- FX Change --> | |
<control> | |
<group>[EffectRack1_EffectUnit1_Effect1]</group> | |
<key>FaderFoxDJ4.fx1Param1Change</key> | |
<status>0xB0</status> | |
<midino>0x02</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit1_Effect2]</group> | |
<key>FaderFoxDJ4.fx1Param2Change</key> | |
<status>0xB0</status> | |
<midino>0x04</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit1_Effect3]</group> | |
<key>FaderFoxDJ4.fx1Param3Change</key> | |
<status>0xB0</status> | |
<midino>0x06</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit2_Effect1]</group> | |
<key>FaderFoxDJ4.fx2Param1Change</key> | |
<status>0xB1</status> | |
<midino>0x02</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit2_Effect2]</group> | |
<key>FaderFoxDJ4.fx2Param2Change</key> | |
<status>0xB1</status> | |
<midino>0x04</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit2_Effect3]</group> | |
<key>FaderFoxDJ4.fx2Param3Change</key> | |
<status>0xB1</status> | |
<midino>0x06</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit3_Effect1]</group> | |
<key>FaderFoxDJ4.fx3Param1Change</key> | |
<status>0xB2</status> | |
<midino>0x02</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit3_Effect2]</group> | |
<key>FaderFoxDJ4.fx3Param2Change</key> | |
<status>0xB2</status> | |
<midino>0x04</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit3_Effect3]</group> | |
<key>FaderFoxDJ4.fx3Param3Change</key> | |
<status>0xB2</status> | |
<midino>0x06</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit4_Effect1]</group> | |
<key>FaderFoxDJ4.fx4Param1Change</key> | |
<status>0xB3</status> | |
<midino>0x02</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit4_Effect2]</group> | |
<key>FaderFoxDJ4.fx4Param2Change</key> | |
<status>0xB3</status> | |
<midino>0x04</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit4_Effect3]</group> | |
<key>FaderFoxDJ4.fx4Param3Change</key> | |
<status>0xB3</status> | |
<midino>0x06</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<!-- FX mix --> | |
<control> | |
<group>[EffectRack1_EffectUnit1]</group> | |
<key>FaderFoxDJ4.fx1Mix</key> | |
<status>0xB0</status> | |
<midino>0x08</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit2]</group> | |
<key>FaderFoxDJ4.fx2Mix</key> | |
<status>0xB1</status> | |
<midino>0x08</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit3]</group> | |
<key>FaderFoxDJ4.fx3Mix</key> | |
<status>0xB2</status> | |
<midino>0x08</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[EffectRack1_EffectUnit4]</group> | |
<key>FaderFoxDJ4.fx4Mix</key> | |
<status>0xB3</status> | |
<midino>0x08</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<!-- Channel 1 --> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Filter</key> | |
<status>0xB0</status> | |
<midino>0x14</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1EqHigh</key> | |
<status>0xB0</status> | |
<midino>0x0C</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1EqMid</key> | |
<status>0xB0</status> | |
<midino>0xOE</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1EqLow</key> | |
<status>0xB0</status> | |
<midino>0x10</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[QuickEffectRack1_[Channel1]_Effect1]</group> | |
<key>FaderFoxDJ4.channel1FilterEnabled</key> | |
<status>0xB0</status> | |
<midino>0x32</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Cue</key> | |
<status>0xB0</status> | |
<midino>0x26</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Mute</key> | |
<status>0xB0</status> | |
<midino>0x34</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1EqHighEnabled</key> | |
<status>0xB0</status> | |
<midino>0x33</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1EqMidEnabled</key> | |
<status>0xB0</status> | |
<midino>0x27</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1EqLowEnabled</key> | |
<status>0xB0</status> | |
<midino>0x35</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>filter</key> | |
<status>0xB0</status> | |
<midino>0x14</midino> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>filterHigh</key> | |
<status>0xB0</status> | |
<midino>0x0C</midino> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>filterMid</key> | |
<status>0xB0</status> | |
<midino>0x0E</midino> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>filterLow</key> | |
<status>0xB0</status> | |
<midino>0x10</midino> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Sync</key> | |
<status>0xB0</status> | |
<midino>0x30</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Play</key> | |
<status>0xB0</status> | |
<midino>0x38</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>rate_temp_down</key> | |
<status>0xB0</status> | |
<midino>0x4E</midino> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>rate_temp_up</key> | |
<status>0xB0</status> | |
<midino>0x50</midino> | |
</control> | |
<!-- TODO: Grey keys --> | |
<!-- Channel 2 --> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Filter</key> | |
<status>0xB1</status> | |
<midino>0x14</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2EqHigh</key> | |
<status>0xB1</status> | |
<midino>0x0C</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2EqMid</key> | |
<status>0xB1</status> | |
<midino>0xOE</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2EqLow</key> | |
<status>0xB1</status> | |
<midino>0x10</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[QuickEffectRack1_[Channel2]_Effect1]</group> | |
<key>FaderFoxDJ4.channel2FilterEnabled</key> | |
<status>0xB1</status> | |
<midino>0x32</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Cue</key> | |
<status>0xB1</status> | |
<midino>0x26</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Mute</key> | |
<status>0xB1</status> | |
<midino>0x34</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2EqHighEnabled</key> | |
<status>0xB1</status> | |
<midino>0x33</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2EqMidEnabled</key> | |
<status>0xB1</status> | |
<midino>0x27</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2EqLowEnabled</key> | |
<status>0xB1</status> | |
<midino>0x35</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>filter</key> | |
<status>0xB1</status> | |
<midino>0x14</midino> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>filterHigh</key> | |
<status>0xB1</status> | |
<midino>0x0C</midino> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>filterMid</key> | |
<status>0xB1</status> | |
<midino>0x0E</midino> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>filterLow</key> | |
<status>0xB1</status> | |
<midino>0x10</midino> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Sync</key> | |
<status>0xB1</status> | |
<midino>0x30</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Play</key> | |
<status>0xB1</status> | |
<midino>0x38</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>rate_temp_down</key> | |
<status>0xB1</status> | |
<midino>0x4E</midino> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>rate_temp_up</key> | |
<status>0xB1</status> | |
<midino>0x50</midino> | |
</control> | |
<!-- TODO: Grey keys --> | |
<!-- Channel 3 --> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Filter</key> | |
<status>0xB2</status> | |
<midino>0x14</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3EqHigh</key> | |
<status>0xB2</status> | |
<midino>0x0C</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3EqMid</key> | |
<status>0xB2</status> | |
<midino>0xOE</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3EqLow</key> | |
<status>0xB2</status> | |
<midino>0x10</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[QuickEffectRack1_[Channel3]_Effect1]</group> | |
<key>FaderFoxDJ4.channel3FilterEnabled</key> | |
<status>0xB2</status> | |
<midino>0x32</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Cue</key> | |
<status>0xB2</status> | |
<midino>0x26</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Mute</key> | |
<status>0xB2</status> | |
<midino>0x34</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3EqHighEnabled</key> | |
<status>0xB2</status> | |
<midino>0x33</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3EqMidEnabled</key> | |
<status>0xB2</status> | |
<midino>0x27</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3EqLowEnabled</key> | |
<status>0xB2</status> | |
<midino>0x35</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>filter</key> | |
<status>0xB2</status> | |
<midino>0x14</midino> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>filterHigh</key> | |
<status>0xB2</status> | |
<midino>0x0C</midino> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>filterMid</key> | |
<status>0xB2</status> | |
<midino>0x0E</midino> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>filterLow</key> | |
<status>0xB2</status> | |
<midino>0x10</midino> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Sync</key> | |
<status>0xB2</status> | |
<midino>0x30</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Play</key> | |
<status>0xB2</status> | |
<midino>0x38</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>rate_temp_down</key> | |
<status>0xB2</status> | |
<midino>0x4E</midino> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>rate_temp_up</key> | |
<status>0xB2</status> | |
<midino>0x50</midino> | |
</control> | |
<!-- TODO: Grey keys --> | |
<!-- Channel 4 --> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Filter</key> | |
<status>0xB3</status> | |
<midino>0x14</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4EqHigh</key> | |
<status>0xB3</status> | |
<midino>0x0C</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4EqMid</key> | |
<status>0xB3</status> | |
<midino>0xOE</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4EqLow</key> | |
<status>0xB3</status> | |
<midino>0x10</midino> | |
<options> | |
<Script-Binding/> | |
<diff/> | |
</options> | |
</control> | |
<control> | |
<group>[QuickEffectRack1_[Channel4]_Effect1]</group> | |
<key>FaderFoxDJ4.channel4FilterEnabled</key> | |
<status>0xB3</status> | |
<midino>0x32</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Cue</key> | |
<status>0xB3</status> | |
<midino>0x26</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Mute</key> | |
<status>0xB3</status> | |
<midino>0x34</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4EqHighEnabled</key> | |
<status>0xB3</status> | |
<midino>0x33</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4EqMidEnabled</key> | |
<status>0xB3</status> | |
<midino>0x27</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4EqLowEnabled</key> | |
<status>0xB3</status> | |
<midino>0x35</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>filter</key> | |
<status>0xB3</status> | |
<midino>0x14</midino> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>filterHigh</key> | |
<status>0xB3</status> | |
<midino>0x0C</midino> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>filterMid</key> | |
<status>0xB3</status> | |
<midino>0x0E</midino> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>filterLow</key> | |
<status>0xB3</status> | |
<midino>0x10</midino> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Sync</key> | |
<status>0xB3</status> | |
<midino>0x30</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Play</key> | |
<status>0xB3</status> | |
<midino>0x38</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>rate_temp_down</key> | |
<status>0xB3</status> | |
<midino>0x4E</midino> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>rate_temp_up</key> | |
<status>0xB3</status> | |
<midino>0x50</midino> | |
</control> | |
<!-- FX Assign --> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Fx1Assign</key> | |
<status>0xB0</status> | |
<midino>0x28</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Fx2Assign</key> | |
<status>0xB0</status> | |
<midino>0x2A</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Fx3Assign</key> | |
<status>0xB0</status> | |
<midino>0x29</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel1]</group> | |
<key>FaderFoxDJ4.channel1Fx4Assign</key> | |
<status>0xB0</status> | |
<midino>0x2B</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Fx1Assign</key> | |
<status>0xB1</status> | |
<midino>0x28</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Fx2Assign</key> | |
<status>0xB1</status> | |
<midino>0x2A</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Fx3Assign</key> | |
<status>0xB1</status> | |
<midino>0x29</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel2]</group> | |
<key>FaderFoxDJ4.channel2Fx4Assign</key> | |
<status>0xB1</status> | |
<midino>0x2B</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Fx1Assign</key> | |
<status>0xB2</status> | |
<midino>0x28</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Fx2Assign</key> | |
<status>0xB2</status> | |
<midino>0x2A</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Fx3Assign</key> | |
<status>0xB2</status> | |
<midino>0x29</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel3]</group> | |
<key>FaderFoxDJ4.channel3Fx4Assign</key> | |
<status>0xB2</status> | |
<midino>0x2B</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Fx1Assign</key> | |
<status>0xB3</status> | |
<midino>0x28</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Fx2Assign</key> | |
<status>0xB3</status> | |
<midino>0x2A</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Fx3Assign</key> | |
<status>0xB3</status> | |
<midino>0x29</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
<control> | |
<group>[Channel4]</group> | |
<key>FaderFoxDJ4.channel4Fx4Assign</key> | |
<status>0xB3</status> | |
<midino>0x2B</midino> | |
<options> | |
<Script-Binding/> | |
</options> | |
</control> | |
</controls> | |
</controller> | |
</MixxxControllerPreset> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment