var <>rewind, <>forward, <>stop, <>bplay, <>loop, <>brec;
var <>pad;
- *new {|name='Novation SL25 ReMOTE MKII', midiNames=#["ReMOTE SL", ["ReMOTE SL MIDI 1", "ReMOTE SL MIDI 1"]], reveal=true|
+ *new {|name='Novation SL25 ReMOTE MKII', midiNames=#["ReMOTE SL", ["ReMOTE SL MIDI 1", "Port 1"]], reveal=true|
^super.newCopyArgs(name, midiNames, reveal).midiInit.controlInit;
}
}
controlInit {
- idin2 = MIDIClient.sources.detect{|i| i.name == "ReMOTE SL MIDI 2"}.uid;
+ idin2 = MIDIClient.sources.detect{ |i|
+ (i.device == midiNames[0])
+ .and(["ReMOTE SL MIDI 2", "Port 2"].includesEqual(i.name))
+ }.uid;
// key pressed/released
MIDIdef.noteOn((\keyDown++name).asSymbol, {|...args|
--- /dev/null
+~ke = MidiRemote25SL(\kedifu);
+
+(
+SynthDef(\zuFader, {|in, amp=1.0, out=0|
+ Out.ar(out, In.ar(in, 2) * amp);
+}).add;
+)
+
+(
+// Multitrack class
+/*
+~trackFactory = {
+ (
+ name: \mumy,
+ def:
+ )
+};
+*/
+
+~trackerFactory = {
+ (
+ tracks: [\lonu, \fose, \ziba, \pepo, \kaco, \xehi, \puso, \nuhu],
+ groups: Array(8),
+ buses: Array(8),
+ faders: Array(8),
+ init: {|self|
+ self.sourceGroup = Group();
+ self.faderGroup = Group.after(self.sourceGroup);
+ self.kedifu = MidiRemote25SL(\kedifuTracker, reveal: false);
+ self.tracks.do{|k, i|
+ var group, bus, fader;
+ Pdef(k).endless;
+ self[k] = Pdef(k);
+ self[(k ++ \_).asSymbol] = {|self, f| Pdef(k, f)};
+ group = Group(self.sourceGroup);
+ self.groups.add(group);
+ bus = Bus.audio(numChannels: 2);
+ self.buses.add(bus);
+ Pdef(k).set(\group, group, \out, bus);
+ fader = Synth(\zuFader, [in: bus, out: 0], self.faderGroup);
+ self.faders.add(fader);
+ };
+ self.kedifu.fader_{|v, n|
+ self.faders[n].bindRange(\amp, -60.dbamp, 0.dbamp).value(v);
+ };
+ self
+ },
+ )
+};
+)
+~tracker = ~trackerFactory.value.init;
+
+(
+~tracker.lonu_{
+ Pbind(*[
+ instrument: \naje,
+ db: Pwhite(-9, -6!2),
+ dur: Prand((1!43)++(2!14)++(3!51)++(4!31), inf)/4,
+ pan: Pwhite(-0.7, 0.7!2, inf),
+ scale: Scale.nahawand,
+ octave: Pseq([2, 2, 2, 3, 3, 2, 3, 4, 3, 4], inf) + [2, 6],
+ degree: Pseq([0, 4, 5, 7, 6, 1], inf),
+ legato: Pwhite(0.8, 1.3!2, inf),
+ cut: Pwhite(600, 900!2),
+ rez: Pwhite(0.7, 0.9!2),
+ modFreqMin: Pwhite(6, 8!2),
+ modFreqMax: Pwhite(11, 13!2),
+ modAmp: Pwhite(0.01, 0.02!2),
+ ])
+}.quant_(7).play;
+)