var <>key;
var <>bend;
var <>mod;
+ var <>touch;
*new {|name='Novation SL25 ReMOTE MKII', midiNames=#["ReMOTE SL", "ReMOTE SL MIDI 1", "ReMOTE SL MIDI 1"], reveal=true|
^super.newCopyArgs(name, midiNames, reveal).midiInit.controlInit;
controlInit {
// key pressed/released
MIDIdef.noteOn((\keyDown++name).asSymbol, {|...args|
- key.value(true, *args);
+ key.value(true, args[0].linlin(0, 127, 0, 1), args[1], *args);
}, (0..127), srcID: idin);
MIDIdef.noteOff((\keyUp++name).asSymbol, {|...args|
- key.value(false, *args);
+ key.value(false, args[0].linlin(0, 127, 0, 1), args[1], *args);
}, (0..127), srcID: idin);
// bend
mod.value(args[0].linlin(0, 127, 0, 1), *args);
}, 66, srcID: idin);
+ // pressure
+ MIDIdef.touch((\touch++name).asSymbol, {|...args|
+ touch.value(args[0].linlin(0, 127, 0, 1), *args);
+ }, srcID: idin);
+
// initialize handlers with revealing code
[
- \key, \bend, \mod
+ \key, \bend, \mod, \touch
].do{|handlerName|
this.perform((handlerName++\_).asSymbol, {|...args|
this.noCallback(handlerName, *args);
free {
[
- \keyDown, \keyUp, \bend, \mod
+ \keyDown, \keyUp, \bend, \mod, \touch
].do{|prefix|
var defName = (prefix ++ name).asSymbol;
MIDIdef(defName).free;
// Subtract synth pad
SynthDef(\dyti, {
- | out=0, gate=1, freq=440, amp=1, cut=800, rez=0.8,
+ | out=0, gate=1, freq=440, amp=1, pan=0, doneAction=2, cut=800, rez=0.8,
modFreqMin=7, modFreqMax=12, modAmp=0.01, release=1.0 |
var sig = 0;
var modFreq = SinOsc.kr(Rand(modFreqMin, modFreqMax), 0, modAmp, 1);
sig = sig + Pulse.ar(freq * modFreq);
sig = RLPF.ar(sig, cut, rez);
- sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: 2);
- sig = Pan2.ar(sig, Rand(-0.3, 0.3));
+ sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: doneAction);
+ sig = Pan2.ar(sig, pan);
Out.ar(out, sig * amp);
}).add;
}).add;
// round membrane drum continuous
-SynthDef(\liwe, {|out=0, amp=1, pan=0, t_trig=0, tension=0.05, loss=0.99999, impact=0.025|
+SynthDef(\liwe, {|out=0, amp=1, pan=0, t_trig=0, tension=0.05, loss=0.99999, impact=0.1|
var sig, excitation;
excitation = EnvGen.kr(Env.perc, t_trig, timeScale: impact, doneAction: 0);
excitation = excitation * PinkNoise.ar();