Based in Controller class for Arturia BeatStep, mapped to factory defaults (actual controller defaults, which differ from the data sheet).
Copy MCClass.sc to SuperCollider Extensions folder and recompile class library from scide or command line.
~mpkmidimix = AkaiMidiMix();
~irigpad = IRigPads();
//master volume (SC in DB)
v = s.volume;
~irigpad.knob4.onChange = {|val| v.volume = val.linlin(0, 127, -10, 10) };
a = ArturiaBeatStep();
// register a function to be evaluted when fader1 is changed
a.knob1.onChange = {|val| (val/127).postln };
// overwrite the previous assignment
a.knob1.onChange = {|val| val.linexp(0, 127, 20, 20000).postln };
a.pad1.onPress = { "Hello, ".post };
a.pad1.onRelease = { "Arturia BeatStep!".postln };
It is possible to incrementally assign the knobs and pads.
a = ArturiaBeatStep();
a.knobs.do {|knob, i|
knob.onChange = {|val|
"Knob % value %\n".postf(i+1, val);
};
};
a.pads.do {|pad, i|
pad.onPress = {|val|
"Pad % pressed %\n".postf(i+1, val);
};
pad.onRelease = {|val|
"Pad % released %\n".postf(i+1, val);
};
};
onChange all controls can register a function using this method
onPress register pad press
onRelease register pad release
free unregisters a MIDI responder
freeAll unregisters all MIDI responders
Note: Cmd-. removes all MIDI responders by default
knob1 .. 8pad1 .. 8
knobspads