// ==== 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;
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;
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;