add synth + impro main
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Tue, 14 May 2024 23:15:00 +0000 (01:15 +0200)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Tue, 14 May 2024 23:15:00 +0000 (01:15 +0200)
extensions/classes/splitters.sc
temp.scd
Ка/Кафул 35.7.4.2 2024-05-14 ⋆ Ҫяԋоԏо/Кафул-Ҫяԋоԏо.scd [new file with mode: 0644]

index 9961448..ad58995 100644 (file)
@@ -1,3 +1,32 @@
+Psplit : FilterPattern {
+  var <>passes, <>weights;
+
+  *new { arg pattern, passes=1, weights=#[11, 10, 1];
+    ^super.new(pattern).passes_(passes).weights_(weights)
+  }
+
+  storeArgs { ^[pattern, passes, weights] }
+
+  embedInStream { arg inval;
+    var stream, outval;
+    stream = pattern.asStream;
+    loop {
+      outval = stream.next(inval);
+      if (outval.isNil) { ^inval };
+      outval = outval.split(passes, weights);
+      outval.do{arg v;
+        inval = yield(v);
+      };
+    }
+  }
+}
+
++ Pattern {
+  split {|passes=1, weights=#[11, 10, 1]|
+    ^Psplit(this, passes, weights)
+  }
+}
+
 + Array {
   split {|passes=1, weights=#[11, 10, 1]|
     var arr = this;
   split {|passes=1, weights=#[11, 10, 1]|
     ^[this].split(passes=passes, weights=weights)
   }
-}
-
-/*
-Psplit : FilterPattern {
-  var <>passes, <>weights;
-  *new { arg pattern, passes=1, weights=#[11, 10, 1];
-    ^super.newCopyArgs(pattern, repeats, key)
-  }
-  storeArgs { ^[pattern, passes, weights] }
-  embedInStream { | event |
-    passes.value(event).do{|i|
-      event = pattern.embedInStream(event);
-      var newArr = [];
-      arr.do{|val|
-        var divider = Array.series(nweights.size, 1).wchoose(nweights);
-        var newVal = val / divider;
-        divider.do{
-          newArr = newArr.add(newVal);
-        };
-      };
-      arr = newArr;
-    };
-    ^event;
-  }
-}
-*/
\ No newline at end of file
+}
\ No newline at end of file
index cd15bd9..8502f2f 100644 (file)
--- a/temp.scd
+++ b/temp.scd
@@ -348,4 +348,13 @@ fork {
 
 // bcr2000 test
 
-~dijutu = MidiBcr(false, \dijutu);
\ No newline at end of file
+~dijutu = MidiBcr(false, \dijutu);
+
+// pattern design
+
+(
+var a, b;
+a = Preject({ arg item; item == 6}, Pseq([1, Prand([2, 5, 6], 3), 7],inf));
+x = a.asStream;
+9.do({ x.next.postln; });
+)
\ No newline at end of file
diff --git a/Ка/Кафул 35.7.4.2 2024-05-14 ⋆ Ҫяԋоԏо/Кафул-Ҫяԋоԏо.scd b/Ка/Кафул 35.7.4.2 2024-05-14 ⋆ Ҫяԋоԏо/Кафул-Ҫяԋоԏо.scd
new file mode 100644 (file)
index 0000000..caef6e8
--- /dev/null
@@ -0,0 +1,214 @@
+~kedi = MidiRemote25SL();
+
+(
+~m = KeySynth(~kedi, \hocugabo, amp: 0.2, panAcross: true);
+~m.params[\out] = a.h;
+)
+
+(
+~m.params[\modAmp] = 0.0;
+~kedi.press_{|v|
+  v = v * 0.01;
+  ~m.group.set(\modAmp, v);
+  ~m.params[\modAmp] = v;
+};
+
+~kedi.lowrot_{|v, n|
+  var bindExp = {|param, minVal, maxVal|
+    var value = v.linexp(0, 1, minVal, maxVal);
+    ~m.group.set(param, value);
+    ~m.params[param] = value;
+    (param++": "++value.asStringPrec(4)).postln;
+  };
+  switch(n)
+  { 6 } { bindExp.(\cut, 0.50, 8000); }
+  { 7 } { bindExp.(\mixFreq, 0.01, 100); }
+  {};
+};
+)
+
+~m.free
+
+//
+
+~midiup.();
+
+(
+SynthDef(\hocugabo, {
+  | out=0, gate=1, freq=440, amp=1, pan=0, doneAction=2, cut=800, rez=0.8, modFreq=10, modAmp=0.01, release=1.0, mixFreq=5 |
+  var sig = 0, hisig = 0;
+  var panDelay = 0.005;
+  var makeSig = {|freq|
+    var sig = 0;
+    var modFreqOsc = SinOsc.kr(modFreq, 0, modAmp, 1);
+    var widthOsc = SinOsc.kr(modFreq/31, Rand(0, 2pi)).range(0.2, 0.8);
+    var mix = SinOsc.kr(mixFreq, Rand(0, 2pi)).range(0, 1);
+    sig = sig + (Pulse.ar(freq * modFreqOsc, widthOsc) * mix);
+    sig = sig + (Saw.ar(freq * modFreqOsc) * (1-mix));
+  };
+  sig = makeSig.(freq);
+  [3, 7, 19/2].do{|v, i|
+    hisig = hisig + (makeSig.(freq*v)/(v*(i+1)*(i+1)));
+  };
+  sig = RLPF.ar(sig, cut, rez);
+  sig = sig * EnvGen.ar(Env.adsr(decayTime: 0.1, releaseTime: release), gate, doneAction: doneAction);
+  sig = sig + hisig;
+  sig = Pan2.ar(sig, pan);
+  Out.ar(out, sig * amp/2);
+}).add;
+)
+
+//11-9-11-11-7-9-11
+
+(
+Pdef(\test, Pbind(*[
+  instrument: \hocugabo,
+  db: -10,
+  out: a.h,
+  octave: 3,
+  note: Pseq([11, 9, 11, 11, 7, 9, 11], inf),
+  dur: Pseq([2, 2, 2, 2, 3, 3, 2].split/4, inf),
+  cut: [800, 1600],
+  rez: 0.8,
+  modFreq: 6,
+  modAmp: 0.01,
+  mixFreq: 1.5,
+  release: 0.5,
+  legato: 0.5,
+])).quant_(1).play;
+)
+
+// etude song
+
+History.clear.end;
+History.start;
+
+(
+~createGroupsBusses = {
+  ~instrumentGroup = Group(s);
+  ~effectGroup = Group.after(~instrumentGroup);
+  ~masterGroup = Group.after(~effectGroup);
+
+  ~mainBus = Bus.audio(s, 2);
+  ~masterer = Synth(\masterer, (
+    in: ~mainBus,
+    out: a.h,
+    amp: -6.dbamp,
+    lookAheadTime: 0.05,
+  ).asPairs, ~masterGroup);
+
+  ~numReverbs = 3;
+  ~jpverbs = Array();
+  ~reverbBuses = Array();
+  ~numReverbs.do{|i|
+    ~reverbBuses = ~reverbBuses.add(Bus.audio(s, 2));
+    ~jpverbs = ~jpverbs.add(Synth(\qahe, (
+      mix: i*1/~numReverbs+0.1,
+      t60: 1.0.rrand(10.0),
+      damp: 0.0.rrand(1.0),
+      size: 1.0.rrand(4.0),
+      earlyDiff: 0.5.rrand(0.9),
+      modDepth: 0.0.rrand(0.05),
+      modFreq: 2.0.rrand(15.0),
+      low: 0.7.rrand(1.0),
+      mid: 0.7.rrand(1.0),
+      high: 0.7.rrand(1.0),
+      lowcut: 500.0,
+      highcut: 2000.0,
+      in: ~reverbBuses.last,
+      out: ~mainBus,
+    ).asPairs, ~effectGroup));
+  };
+};
+ServerTree.removeAll;
+ServerTree.add(~createGroupsBusses);
+)
+
+(
+s.recorder.filePrefix = "Ҫяԋоԏо_main_";
+s.record(bus: ~mainBus);
+
+~r = Recorder(s);
+~r.filePrefix = "Ҫяԋоԏо_master_";
+~r.record(bus: a.h);
+)
+
+(
+s.stopRecording;
+~r.stopRecording;
+)
+
+// finishing
+
+History.end;
+History.saveCS(PathName(thisProcess.nowExecutingPath).parentPath+/+"history-cs.scd");
+History.saveStory(PathName(thisProcess.nowExecutingPath).parentPath+/+"history-story.scd");
+
+/// patterns
+
+~dur2 = Pseq([3, 3, 2].split(4), inf);
+~dur3 = Pseq([2, 2, 2, 2, 3, 3, 2].split(1)/4, inf);
+~dur4 = Pseq([2, 2, 2, 2, 3, 3, 2].split(1)/4, inf);
+
+(
+Pdef(\melody2, Pbind(*[
+  instrument: \hocugabo,
+  db: -10,
+  pan: Pseq([-0.6, 0.6], inf),
+  out: Prand(~reverbBuses, inf),
+  group: ~instrumentGroup,
+  octave: 2,
+  note: Pseq([11, 9, 11, 11, 7, 9, 11], inf),
+  dur: ~dur2,
+  cut: 600,
+  rez: 0.8,
+  modFreq: 6,
+  modAmp: 0.01,
+  mixFreq: 1.5,
+  release: Pwhite(0.2, 0.4),
+  legato: 0.2,
+  pass: Pseq([1, \r, \r], inf),
+])).quant_(4).play;
+)
+
+(
+Pdef(\melody3, Pbind(*[
+  instrument: \hocugabo,
+  db: -10,
+  pan: Pseq([-0.7, 0.7], inf),
+  out: Prand(~reverbBuses, inf),
+  group: ~instrumentGroup,
+  octave: 3,
+  note: Pseq([11, 9, 11, 11, 7, 9, 11], inf),
+  dur: ~dur3,
+  cut: 800,
+  rez: 0.8,
+  modFreq: 6,
+  modAmp: 0.01,
+  mixFreq: 1.5,
+  release: Pwhite(0.5, 0.8),
+  legato: 0.5,
+  pass: Pseq([1, 1, 1], inf),
+])).quant_(4).stop;
+)
+
+(
+Pdef(\melody4, Pbind(*[
+  instrument: \hocugabo,
+  db: -12,
+  pan: Pseq([0.7, -0.7], inf),
+  out: Prand(~reverbBuses, inf),
+  group: ~instrumentGroup,
+  octave: 4,
+  note: Pseq([11, 9, 11, 11, 7, 9, 11], inf),
+  dur: ~dur4,
+  cut: 1600,
+  rez: 0.8,
+  modFreq: 6,
+  modAmp: 0.01,
+  mixFreq: 1.5,
+  release: Pwhite(0.5, 0.8),
+  legato: 0.5,
+  pass: Pseq([1, 1, 1], inf),
+])).quant_(4).stop;
+)
\ No newline at end of file