Add reverb and use midimix to control selected track reverb
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Wed, 14 Dec 2022 17:55:46 +0000 (18:55 +0100)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Wed, 14 Dec 2022 17:55:46 +0000 (18:55 +0100)
extensions/classes/midibind.sc
Хэзифу/multitrack.scd

index 2a07c64..e8d780c 100644 (file)
@@ -19,7 +19,7 @@
     }
   }
 
-  bindRange {|param, start, end|
+  bindRange {|param, start=0.0, end=1.0|
     ^{|v|
       var newVal = v.linlin(0, 1, start, end);
       this.set(param, newVal);
index 7fbd061..f837a21 100644 (file)
@@ -1,8 +1,12 @@
 ~ke = MidiRemote25SL(\kedifu);
+~mi = MidiMix101(\mix);
 
 (
-SynthDef(\zuFader, {|in, amp=1.0, out=0|
-  Out.ar(out, In.ar(in, 2) * amp);
+SynthDef(\zuFader, {|in, amp=1.0, mix=0.0, room=0.5, damp=0.5, out=0|
+  var sig;
+  sig = In.ar(in, 2);
+  sig = FreeVerb2.ar(sig[0], sig[1], mix, room, damp, amp);
+  Out.ar(out, sig);
 }).add;
 )
 
@@ -23,10 +27,13 @@ SynthDef(\zuFader, {|in, amp=1.0, out=0|
     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.sasihu = MidiMix101(\sasihuTracker, reveal: false);
+      self.selected = 0;
       self.tracks.do{|k, i|
         var group, bus, fader;
         Pdef(k).endless;
@@ -43,14 +50,29 @@ SynthDef(\zuFader, {|in, amp=1.0, out=0|
       self.kedifu.fader_{|v, n|
         self.faders[n].bindRange(\amp, -60.dbamp, 0.dbamp).value(v);
       };
+      self.kedifu.lowrot_{|v, n|
+        self.faders[n].bindRange(\mix, 0, 1).value(v);
+      };
+      self.kedifu.butlr_{|v, n|
+        if (v) {
+          self.selected = n;
+          self.sasihu.afade = self.faders[self.selected].bindRange(\room, 0, 1);
+          self.sasihu.bfade = self.faders[self.selected].bindRange(\damp, 0, 1);
+          "% selected\n".postf(self.tracks[self.selected]);
+        };
+      };
+
       self
     },
   )
 };
 )
-~tracker = ~trackerFactory.value.init;
+
+// test
 
 (
+~tracker = ~trackerFactory.value.init;
+
 ~tracker.lonu_{
   Pbind(*[
     instrument: \naje,
@@ -68,4 +90,72 @@ SynthDef(\zuFader, {|in, amp=1.0, out=0|
     modAmp: Pwhite(0.01, 0.02!2),
   ])
 }.quant_(7).play;
-)
+
+~tracker.fose_{
+  Pbind(*[
+    instrument: \leto,
+    db: -1,
+    dur: Prand([1, 2, 3], inf)/2,
+    pan: Pwhite(-0.4, 0.4, inf),
+    scale: Scale.nahawand,
+    octave: Pxrand([3, 4, 5, 6, 7], inf),
+    degree: [0, 4],
+    legato: Pwhite(0.5, 0.9, inf),
+  ])
+}.quant_(7).play;
+
+~tracker.ziba_{
+  Pbind(*[
+    instrument: \zuqy,
+    db: -5,
+    dur: Prand([1, 2, 3, 4], inf)/4,
+    pan: Pwhite(-0.4, 0.4, inf),
+    scale: Scale.nahawand,
+    octave: Pxrand([2], inf),
+    degree: Prand((0..12), inf),
+    legato: Pwhite(0.2, 0.7, inf),
+    distort: 150.0,
+  ])
+}.quant_(7).play;
+
+~tracker.pepo_{
+  Pbind(*[
+    instrument: \xaxa,
+    db: -5,
+    dur: Prand([1, 2, 3, 4], inf)/1,
+    pan: Pwhite(-0.4, 0.4, inf),
+    scale: Scale.nahawand,
+    octave: Pxrand([2], inf),
+    degree: Prand((0..12), inf),
+    legato: Pwhite(0.3, 0.6, inf),
+    feedbackAmp: 0.2,
+    feedbackRate: 3,
+    detuneAmp: 0.1,
+    detuneRate: 2,
+  ])
+}.quant_(7).play;
+
+~tracker.kaco_{
+  Pmono(\liwe, *[
+    db: -10,
+    trig: 1,
+    dur: Pseq([1, 2, 1, 2, 3, 2, 1, 2], inf)/4,
+    pan: Pwhite(-0.1, 0.1, inf),
+    tension: 0.001 + (0.017 * Pkey(\dur)),
+    loss: 0.99992,
+    impact: 0.1,
+  ])
+}.quant_(7).play;
+
+~tracker.xehi_{
+  Pbind(*[
+    instrument: \neta,
+    db: -19,
+    dur: Pseq([1, 2, 1, 1, 1, 0.5, 1/4, 1/8, 1/8], inf),
+    scale: Scale.nahawand,
+    octave: Pxrand([Pseq(2!3), Pseq(3!3), Pseq(4!3)], inf),
+    degree: Pxrand([0, 2, 4, 5, 7], inf) + [0, 2, 4],
+    legato: Pwhite(0.2, 0.6, inf),
+  ])
+}.quant_(7).play;
+)
\ No newline at end of file