livecoding experiments with behringer controller and splitter
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Mon, 29 Jan 2024 19:14:13 +0000 (20:14 +0100)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Mon, 29 Jan 2024 19:14:13 +0000 (20:14 +0100)
extensions/classes/patutils.sc
Ка/Капец 35.5.2.7 2024-01-29 ⋆ Ӡывудя ⋆ с Ԃиџуту/Ӡывудя.scd [new file with mode: 0644]

index 6eec0d4..3c893d4 100644 (file)
@@ -1,5 +1,5 @@
 + Pdefn {
-  swap {|newPattern|
+  swap {|newPattern=\fbs|
     var tempSource, keyName;
     keyName = (\Pdefn++this.key).asSymbol;
     if(newPattern.isNil) {
diff --git a/Ка/Капец 35.5.2.7 2024-01-29 ⋆ Ӡывудя ⋆ с Ԃиџуту/Ӡывудя.scd b/Ка/Капец 35.5.2.7 2024-01-29 ⋆ Ӡывудя ⋆ с Ԃиџуту/Ӡывудя.scd
new file mode 100644 (file)
index 0000000..ff2e0a2
--- /dev/null
@@ -0,0 +1,369 @@
+~midiup.();
+
+~dijutu = MidiBcr(false, \dijutu);
+
+History.clear.end;
+History.start;
+
+(
+s.recorder.filePrefix = "Ӡывудя_main_";
+s.record(bus: ~mainBus);
+
+~r = Recorder(s);
+~r.filePrefix = "Ӡывудя_master_";
+~r.record(bus: a.h);
+)
+
+(
+s.stopRecording;
+~r.stopRecording;
+)
+
+(
+~createGroupsBusses = {
+  ~instrumentGroup = Group(s);
+  ~effectGroup = Group.after(~instrumentGroup);
+  ~masterGroup = Group.after(~effectGroup);
+
+  ~helagijoGroup = Group.tail(~instrumentGroup);
+
+  ~reverbSynths = Array(~reverbNames.size);
+  ~reverbBusses = Array(~reverbNames.size);
+  ~reverbNames.do{|item|
+    ~reverbBusses = ~reverbBusses.add(Bus.audio(s, 2));
+    ~reverbSynths = ~reverbSynths.add(Synth(item, [
+      in: ~reverbBusses.last,
+      out: ~mainBus,
+    ], ~effectGroup, \addToTail));
+  };
+
+  ~mainBus = Bus.audio(s, 2);
+  ~masterer = Synth(\masterer, (
+    in: ~mainBus,
+    out: a.h,
+    amp: -60.dbamp,
+    lookAheadTime: 0.05,
+  ).asPairs, ~masterGroup);
+};
+ServerTree.removeAll;
+ServerTree.add(~createGroupsBusses);
+)
+
+// finishing
+
+History.end;
+History.saveCS(PathName(thisProcess.nowExecutingPath).parentPath+/+"history-cs.scd");
+History.saveStory(PathName(thisProcess.nowExecutingPath).parentPath+/+"history-story.scd");
+
+//
+
+(
+SynthDef(\lajyfika, { arg
+  out=0,
+  amp=1,
+  relAmp=1, // for controlling volume of a set of synths
+  pan=0,
+  t_trig=1,
+  gate=1,
+  freq=440,
+  freqStart=440,
+  freqEnd=440,doneAction=2, cut=800, rez=0.8,
+  modFreq=3, modAmp=0.01, release=1.0
+  ;
+  var sig = 0;
+  var panDelay = 0.005;
+  var modFreqMul = SinOsc.kr(modFreq, 0, modAmp, 1);
+  var curFreq = EnvGen.ar(Env([freqStart, freq, freqEnd], [0.01, release], \exp, 1), gate);
+  sig = sig + Pulse.ar(curFreq * modFreqMul);
+  //sig = (sig*11.2).fold(-1, 1);
+  sig = RLPF.ar(sig, cut, rez);
+  sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: doneAction);
+  sig = Pan2.ar(sig, pan);
+  sig = [DelayN.ar(sig[0], panDelay, (panDelay*pan).clip(0, 1)), DelayN.ar(sig[1], panDelay, (panDelay.neg*pan).clip(0, 1))];
+  Out.ar(out, sig * amp * relAmp);
+}).add;
+)
+
+(
+~synthGen = {|n=25, prefix=\fokyxiqa, numHarm = 13|
+  var synthNames = Array(n);
+  n.do{|i|
+    var synthName = (prefix ++ i.asString).asSymbol;
+    synthNames = synthNames.add(synthName);
+    SynthDef(synthName, {|
+      freq = 440,
+      attack = 0.01,
+      release = 1.0,
+      distort = 0.0,
+      detuneMax = 0.15
+      lowHarm = 2,
+      highHarm = 41,
+      harmMul = 1.3,
+      harmLen = 1.0,
+      amp = 1,
+      pan = 0,
+      out = 0
+      |
+      var sig;
+      var partial, detune, distortMul, ampEnv;
+      detune = Rand(detuneMax.neg, detuneMax).midiratio;
+      sig = SinOsc.ar(freq * detune, 2pi.rand);
+      ampEnv = EnvGen.kr(Env.perc(attack, release), doneAction: 2);
+      sig = sig * ampEnv;
+      numHarm.do({
+        var pfact = IRand(lowHarm, highHarm);
+        detune = Rand(detuneMax.neg, detuneMax).midiratio;
+        partial = SinOsc.ar(freq * detune * pfact, 2pi.rand);
+        partial = partial * EnvGen.kr(
+          Env.perc(attack, release),
+          levelScale: pfact.reciprocal * harmMul.rand,
+          timeScale: harmLen.rand * pfact.reciprocal,
+        );
+        sig = sig + partial;
+      });
+      distortMul = 1 + (distort * ampEnv);
+      sig = (sig * distortMul).clip(-2, 2);
+      sig = HPF.ar(sig, 20);
+      sig = LPF.ar(sig, 16000);
+      sig = Pan2.ar(sig, pan, amp);
+      Out.ar(out, sig);
+    }).add;
+  };
+  synthNames;
+};
+
+~reverbGen = {|n=15, prefix=\fokyxiqa|
+  var synthNames = Array(n);
+  n.do{|i|
+    var synthName = (prefix ++ i.asString).asSymbol;
+    synthNames = synthNames.add(synthName);
+    SynthDef(synthName, {|
+      in,
+      mix = 0.2,
+      out = 0
+      |
+      var sig = In.ar(in, 2);
+      var rev = JPverb.ar(sig,
+        t60: 5.0.rand,
+        damp: 1.0.rand,
+        size: 0.5+4.0.rand,
+        earlyDiff: 1.0.rand,
+        modDepth: 1.0.rand,
+        modFreq: 10.0.rand,
+        low: 1.0.rand,
+        mid: 1.0.rand,
+        high: 1.0.rand);
+      Out.ar(out, sig + (mix * rev));
+    }).add;
+  };
+  synthNames;
+}
+)
+
+(
+~synthNames = ~synthGen.value(15);
+~reverbNames = ~reverbGen.value(15, prefix: \jumisevu);
+)
+
+(
+~reverbSynths.do{|item|
+  item.set(\mix, 0.5);
+};
+)
+
+TempoClock.tempo = 0.2;
+
+//
+
+~walomajuWeights = [1, 0, 0, 0, 0, 0, 0, 0];
+~walomajuPasses = 1;
+~quqohecoWeights = [1, 0, 0, 0, 0, 0, 0, 0];
+~quqohecoPasses = 1;
+~gyvekewiWeights = [1, 0, 0, 0, 0, 0, 0, 0];
+~gyvekewiPasses = 1;
+
+~updateBeat = {|name, weights, passes|
+  var beat = 1.split(passes, weights);
+  "beat = %\n".postf(beat);
+  Pdefn(name, Pseq(beat, inf)).quant_(1);
+};
+
+(
+~dijutu.rot[0] = {|v, n|
+  ~walomajuWeights[n] = v;
+  ~walomajuWeights.postln;
+  ~updateBeat.(\fagiDur, ~walomajuWeights, ~walomajuPasses);
+};
+
+~dijutu.rot[1] = {|v, n|
+  ~quqohecoWeights[n] = v;
+  ~quqohecoWeights.postln;
+  ~updateBeat.(\quqoDur, ~quqohecoWeights, ~quqohecoPasses);
+};
+
+~dijutu.rot[2] = {|v, n|
+  ~gyvekewiWeights[n] = v;
+  ~gyvekewiWeights.postln;
+  ~updateBeat.(\gyvekewiDur, ~gyvekewiWeights, ~gyvekewiPasses);
+};
+
+~dijutu.rot[4] = {|v, n|
+  switch (n)
+  {0} {
+    ~walomajuPasses = v;
+    ~updateBeat.(\fagiDur, ~walomajuWeights, ~walomajuPasses);
+  }
+  {1} {
+    ~quqohecoPasses = v;
+    ~updateBeat.(\quqoDur, ~quqohecoWeights, ~quqohecoPasses);
+  }
+  {2} {
+    ~gyvekewiPasses = v;
+    ~updateBeat.(\gyvekewiDur, ~gyvekewiWeights, ~gyvekewiPasses);
+  }
+};
+)
+
+Pdefn(\fagiDur).swap(\fbs);
+Pdefn(\quqoDur).swap(\fbs);
+Pdefn(\gyvekewiDur).swap(\fbs);
+
+(
+Pdef(\tesaquvo, Pbind(*[
+  group: ~instrumentGroup,
+  out: Prand(~reverbBusses, inf),
+  instrument: Prand(~synthNames, inf),
+  db: -35,
+  pan: Pwhite(0.2, 0.7) * [-1, 1],
+  trig: 1,
+  dur: Pdefn(\fagiDur),
+  attack: Pkey(\dur) / 3,
+  release: Pkey(\dur) * 4.5 * Pwhite(1.0, 2.0),
+  octave: 2,
+  note: Pshuf([5, 7, 9], inf),
+  detuneMax: 1,
+])).quant_(1);
+)
+Pdef(\tesaquvo).play;
+
+(
+Pdef(\comafahi, Pbind(*[
+  group: ~instrumentGroup,
+  out: Prand(~reverbBusses, inf),
+  instrument: Prand(~synthNames, inf),
+  db: -35,
+  pan: Pwhite(0.2, 0.7),
+  trig: 1,
+  dur: Pdefn(\quqoDur),
+  attack: Pkey(\dur) / 2,
+  release: Pkey(\dur) * 2.5 * Pwhite(1.0, 2.0),
+  octave: 3,
+  note: Pshuf([2, 3, 5, 7, 9], inf),
+  detuneMax: 0.5,
+])).quant_(1);
+)
+Pdef(\comafahi).play;
+
+(
+Pdef(\gyvekewi, Pbind(*[
+  group: ~instrumentGroup,
+  out: Prand(~reverbBusses, inf),
+  instrument: Prand(~synthNames, inf),
+  db: -45,
+  pan: Pwhite(0.2, 0.7),
+  trig: 1,
+  dur: Pdefn(\gyvekewiDur),
+  attack: Pkey(\dur) / 4,
+  release: Pkey(\dur) * 2.7 * Pwhite(1.0, 2.0),
+  octave: Prand([4, 5], inf),
+  note: Pshuf([2, 2, 3, 4, 5, 7, 7, 7, 9, 11], inf),
+  detuneMax: 0.2,
+])).quant_(1);
+)
+Pdef(\gyvekewi).play;
+
+(
+Pdef(\fedecyne, Pbind(*[
+  instrument: \dyti,
+  db: -60,
+  octave: Prand([4, 5], inf),
+  note: Pshuf([6, 5, 3, 2, 2, 7, 7, 0], inf),
+  dur: Pdefn(\gyvekewiDur),
+  release: Pwhite(0.5, 1.2) * Pkey(\dur),
+  legato: Pwhite(0.6, 0.7),
+  cut: Pexprand(400, 3200),
+  rez: Pwhite(0.6, 0.9),
+  modFreqMin: 4,
+  modFreqMax: 11,
+  modAmp: Pwhite(0.005, 0.01) * 4,
+  pan: Pwhite(-0.2, 0.2),
+  group: ~instrumentGroup,
+  out: ~reverbBusses[0],
+])).quant_(1).play;
+)
+
+(
+Pdef(\sijytufy, Pbind(*[
+  group: ~instrumentGroup,
+  out: ~reverbBusses[1],
+  instrument: \lajyfika,
+  db: -65,
+  pan: Pwhite(-0.4, 0.4),
+  dur: Pdefn(\gyvekewiDur),
+  legato: 0.5,
+  release: Pkey(\dur),
+  octave: Prand([6], inf),
+  note: Pshuf([6, 5, 3, 2, 2, 7, 7, 0], inf),
+  freqStart: Pkey(\freq) / 4,
+  freqEnd: Pkey(\freq) / 2,
+  modFreq: Pwhite(8, 16),
+  modAmp: 0.01,
+  cut: Pkey(\freq),
+  rez: 0.9,
+])).quant_(1).play;
+)
+
+(
+Pdef(\haqefuto, Pbind(*[
+  group: ~instrumentGroup,
+  out: ~reverbBusses[2],
+  instrument: \lajyfika,
+  db: -70,
+  pan: Pwhite(-0.4, 0.4),
+  dur: Pdefn(\fagiDur),
+  legato: 0.7,
+  release: Pkey(\dur),
+  octave: Prand([7], inf),
+  note: Pshuf([6, 5, 3, 2, 2, 7, 7, 0], inf),
+  freqStart: Pkey(\freq) / 2,
+  freqEnd: Pkey(\freq) / 1,
+  modFreq: Pwhite(4, 8),
+  modAmp: Pwhite(0.01, 0.02),
+  cut: Pkey(\freq)*2,
+  rez: 0.9,
+])).quant_(1).play;
+)
+
+(
+Pdef(\tifacuji, Pbind(*[
+  group: ~instrumentGroup,
+  out: ~reverbBusses[3],
+  instrument: \lajyfika,
+  db: -75,
+  pan: Pwhite(-0.4, 0.4),
+  dur: Pdefn(\fagiDur),
+  legato: 0.1,
+  release: Pkey(\dur) * 2,
+  octave: Prand([8], inf),
+  note: Pshuf([6, 5, 3, 2, 2, 7, 7, 0], inf),
+  freqStart: Pkey(\freq) / 1,
+  freqEnd: Pkey(\freq) * 2,
+  modFreq: Pwhite(2, 4),
+  modAmp: 0.01,
+  cut: Pkey(\freq)*2,
+  rez: 0.9,
+])).quant_(1).play;
+)
+
+//
+