Add fiboorgan and jpverb
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Sun, 5 Jun 2022 19:11:04 +0000 (22:11 +0300)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Sun, 5 Jun 2022 19:11:04 +0000 (22:11 +0300)
startup.scd

index e3b2f34..06ed20d 100644 (file)
@@ -15,6 +15,8 @@ MIDIIn.connectAll;
 
 // ==== Synths
 
+// == Sources
+
 // snare drum 808 continuous
 SynthDef(\buti, {|out=0, amp=1, pan=0, t_trig=0, accent=0.1, freq=200, tone=0.5, decay=0.5, snappy=0.5|
   var sig;
@@ -85,16 +87,37 @@ SynthDef(\naje, {
   Out.ar(out, sig * amp);
 }).add;
 
+// fibonacci organ
+SynthDef.new(\neta, { arg freq = 440, amp = 1.0, gate = 1, out = 0;
+  var shape = Env.adsr(0.1, 0.2, 0.7, 0.5, 1.0, -4.0, 0);
+  var fb = 1.0;
+  var ss = SinOscFB.ar(freq, fb, amp)
+    + SinOscFB.ar(freq*2, fb, amp/2)
+    + SinOscFB.ar(freq*3, fb, amp/3)
+    + SinOscFB.ar(freq*5, fb, amp/5)
+    + SinOscFB.ar(freq*8, fb, amp/8)
+    + SinOscFB.ar(freq*13, fb, amp/13)
+    + SinOscFB.ar(freq*21, fb, amp/21)
+    + SinOscFB.ar(freq*34, fb, amp/34)
+    + SinOscFB.ar(freq*55, fb, amp/55)
+  ;
+  ss = [ss, DelayC.ar(ss, 0.005, 0.005)];
+  ss = ss * 0.7;
+  ss = BLowPass4.ar(ss, Rand(1060, 1260));
+  Out.ar(out, EnvGen.kr(shape, gate, doneAction: 2) * ss);
+}).add;
+
 // additive pulse synth
 SynthDef(\pope, {|out=0, gate=1, freq=440, amp=1, pan=0, doneAction=2|
   var sig = 0;
   var num = 30;
+  var panDelay = 0.005;
   num.do({
     sig = sig + (LFPulse.ar(freq, Rand(0, 0.01), SinOsc.kr(SinOsc.kr(Rand(2, 8), 0, 2, 2), Rand(0, 2pi), 0.5, 0.5)) / num);
   });
   sig = sig * EnvGen.kr(Env.asr(0.03, 0.3, 1.8), gate, doneAction: doneAction);
   sig = Pan2.ar(sig, pan, amp);
-  sig = [DelayN.ar(sig[0], 0.01, (0.01*pan).clip(0, 1)), DelayN.ar(sig[1], 0.01, (-0.01*pan).clip(0, 1))];
+  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);
 }).add;
 
@@ -133,3 +156,25 @@ SynthDef(\ruse, { | gate = 1, freq = 55, amp=1, out=0 |
   sig = Pan2.ar(sig, 0);
   Out.ar(out, sig * amp);
 }).add;
+
+// == Effects
+
+// JPverb with all parameters and mix
+SynthDef(\qahe, {|in, out=0, mix=0, t60=1.0, damp=0.0, size=1.0, earlyDiff=0.707, modDepth=0.1, modFreq=2.0, low=1.0,
+  mid=1.0, high=1.0, lowcut=500.0, highcut=2000.0|
+  var sig, rev;
+  sig = In.ar(in, 2);
+  rev = JPverb.ar(sig,
+    t60: t60,
+    damp: damp,
+    size: size,
+    earlyDiff: earlyDiff,
+    modDepth: modDepth,
+    modFreq: modFreq,
+    low: low,
+    mid: mid,
+    high: high,
+    lowcut: lowcut,
+    highcut: highcut);
+  Out.ar(out, sig + (mix * rev));
+}).add;