Add continuous synthdefs
authorEugene Petkevich <nasedil.genio.code@gmail.com>
Thu, 26 May 2022 12:18:09 +0000 (15:18 +0300)
committerEugene Petkevich <nasedil.genio.code@gmail.com>
Thu, 26 May 2022 12:18:19 +0000 (15:18 +0300)
startup.scd
Хэзифу/33.7.5.1-morning.scd

index f24c01d..03bad72 100644 (file)
@@ -14,6 +14,36 @@ MIDIClient.init;
 MIDIIn.connectAll;
 
 // ==== Synths
+
+// 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;
+  sig = AnalogSnareDrum.ar(
+    t_trig,
+    infsustain: 0.0,
+    accent: accent,
+    freq: freq,
+    tone: tone,
+    decay: decay,
+    snappy: snappy,
+  ) * amp;
+  sig = Pan2.ar(sig, pan);
+  Out.ar(out, sig);
+}).add;
+
+// Subtract synth pad
+SynthDef(\dyti, {
+  | out=0, gate=1, freq=440, amp=1, cut=800, rez=0.8,
+    modFreqMin=7, modFreqMax=12, modAmp=0.01, release=1.0 |
+  var sig = 0;
+  var modFreq = SinOsc.kr(Rand(modFreqMin, modFreqMax), 0, modAmp, 1);
+  sig = sig + Pulse.ar(freq * modFreq);
+  sig = RLPF.ar(sig, cut, rez);
+  sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: 2);
+  sig = Pan2.ar(sig, Rand(-0.3, 0.3));
+  Out.ar(out, sig * amp);
+}).add;
+
 // additive sin synth, sounds like metal
 SynthDef(\leto, { |freq = 440, sustain = 1, amp=1, out=0|
   var sig = 0;
@@ -30,33 +60,18 @@ SynthDef(\leto, { |freq = 440, sustain = 1, amp=1, out=0|
   Out.ar(out, sig*amp);
 }).add;
 
-// additive pulse synth
-SynthDef(\pope, {|out=0, gate=1, freq=440, amp=1|
-  var sig = 0;
-  var num = 30;
-  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: Done.freeSelf);
-  sig = Pan2.ar(sig, Rand(-0.2, 0.2), amp);
+// round membrane drum continuous
+SynthDef(\liwe, {|out=0, amp=1, pan=0, t_trig=0, tension=0.05, loss=0.99999, impact=0.025|
+  var sig, excitation;
+  excitation = EnvGen.kr(Env.perc, t_trig, timeScale: impact, doneAction: 0);
+  excitation = excitation * PinkNoise.ar();
+  sig = MembraneCircle.ar(excitation, tension, loss, mul: amp);
+  sig = Pan2.ar(sig, pan);
   Out.ar(out, sig);
 }).add;
 
-// Subtract synth pad
-SynthDef(\dyti, {
-  | out=0, gate=1, freq=440, amp=1, cut=800, rez=0.8,
-    modFreqMin=7, modFreqMax=12, modAmp=0.01, release=1.0 |
-  var sig = 0;
-  var modFreq = SinOsc.kr(Rand(modFreqMin, modFreqMax), 0, modAmp, 1);
-  sig = sig + Pulse.ar(freq * modFreq);
-  sig = RLPF.ar(sig, cut, rez);
-  sig = sig * EnvGen.ar(Env.asr(releaseTime: release), gate, doneAction: 2);
-  sig = Pan2.ar(sig, Rand(-0.3, 0.3));
-  Out.ar(out, sig * amp);
-}).add;
-
 // Subtract synth drum
-SynthDef(\dytu, {
+SynthDef(\naje, {
   | out=0, sustain=0.5, freq=440, amp=1, cut=800, rez=0.8,
     modFreqMin=7, modFreqMax=12, modAmp=0.01, release=1.0 |
   var sig = 0;
@@ -68,14 +83,43 @@ SynthDef(\dytu, {
   Out.ar(out, sig * amp);
 }).add;
 
-// bass drum
+// additive pulse synth
+SynthDef(\pope, {|out=0, gate=1, freq=440, amp=1|
+  var sig = 0;
+  var num = 30;
+  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: Done.freeSelf);
+  sig = Pan2.ar(sig, Rand(-0.2, 0.2), amp);
+  Out.ar(out, sig);
+}).add;
+
+// bass drum 808 continuous
+SynthDef(\qoba, {|out=0, amp=1, pan=0, t_trig=0, accent=0.5, freq=50, tone=0.5, decay=0.5, attackfm=0.5, selffm=0.25|
+  var sig;
+  sig = AnalogBassDrum.ar(
+    t_trig,
+    infsustain: 0.0,
+    accent: accent,
+    freq: freq,
+    tone: tone,
+    decay: decay,
+    attackfm: attackfm,
+    selffm: selffm,
+  ) * amp;
+  sig = Pan2.ar(sig, pan);
+  Out.ar(out, sig);
+}).add;
+
+// bass drum single-use
 SynthDef(\ruse, { | gate = 1, freq = 55, amp=1, out=0 |
   var sig = AnalogBassDrum.ar(
     gate,
     infsustain: 1,
     accent: 0.9,
     freq: freq,
-    tone: 0.7,
+    tone: 0.6,
     decay: 0.15,
     attackfm: 0.31,
     selffm: 0.15,
@@ -83,4 +127,4 @@ SynthDef(\ruse, { | gate = 1, freq = 55, amp=1, out=0 |
   sig = sig * EnvGen.ar(Env.adsr(0.01, 0.2, 0.9, 0.25), gate, doneAction: 2);
   sig = Pan2.ar(sig, 0);
   Out.ar(out, sig * amp);
-}).add;
\ No newline at end of file
+}).add;
index 3aa9a22..4700613 100644 (file)
@@ -1,41 +1,54 @@
+
+TempoClock.tempo = 1.5;
+
 (
-SynthDef(\drum, {|out=0, amp=1, freq=110,
-  sustain=1.0, attack=0.01, tension=0.01, loss=0.999999|
-  var sig, env;
-  sig = SinOsc.ar(freq, mul: 0.1) + BrownNoise.ar(mul: 0.5);
-  env = Env.perc(attack, sustain-attack);
-  sig = sig * EnvGen.ar(env, doneAction: 2);
-  sig = MembraneCircle.ar(sig, tension, loss, mul: amp);
-  sig = Pan2.ar(sig, Rand(-0.3, 0.3));
-  Out.ar(out, sig);
-}).add;
+Pdef(\ritm, Pmono(\liwe, *[
+  dur: Pwrand([
+    Pseq([1, 1, 1, 1].normalizeSum*4, 1),
+    Pseq([1, 1, 1, 1, 1, 1, 1, 1].normalizeSum*4, 1),
+    Pseq([2, 2, 1, 1, 1, 1].normalizeSum*4, 1),
+    Pseq([4, 2, 2, 2, 2, 1, 1, 1, 1].normalizeSum*4, 1),
+    Pseq([3, 3, 2, 3, 2, 3].normalizeSum*4, 1),
+    Pseq([3, 3, 2, 2, 3, 3].normalizeSum*4, 1),
+    Pseq([3, 3, 2, 3, 3, 2].normalizeSum*4, 1),
+    Pseq([2, 1, 2, 1, 4, 2, 2, 2].normalizeSum*4, 1),
+    Pseq([3, 3, 2, 2, 1, 1, 1/2, 1/2, 1/2, 1/2, 2].normalizeSum*4, 1),
+  ], [5, 2, 1, 1, 2, 2, 2, 1, 1].normalizeSum, inf),
+  db: -21,
+  pan: Pwhite(-0.5, 0.5),
+  t_trig: Pwrand([1, 0], [15, 1], inf),
+  tension: 0.006/(Pkey(\dur)**0.4)*Pwhite(0.95, 1.05),
+  loss: Plprand(0.9999, 0.99995, inf),
+])).quant_(4).stop;
 )
 
 (
-SynthDef(\membrane, {|out=0, amp=1, t_trig=0, tension=0.05, loss=0.99999|
-  var sig, excitation;
-  excitation = EnvGen.kr(Env.perc, t_trig, timeScale: 0.1, doneAction: 0);
-  excitation = excitation * PinkNoise.ar();
-  sig = MembraneCircle.ar(excitation, tension, loss, mul: amp);
-  //sig = FreeVerb.ar(sig, 0.5, 0.2, 0.7);
-  sig = sig + (JPverb.ar(sig) * 0.2);
-  sig = Pan2.ar(sig, Rand(-0.3, 0.3));
-  Out.ar(out, sig);
-}).add;
+Pdef(\ritm2, Pmono(\qoba, *[
+  dur: Pwrand([
+    Pseq([1, 1, 1, 1].normalizeSum*4, 1),
+    Pseq([1, 1, 1, 1, 1, 1, 1, 1].normalizeSum*4, 1),
+    Pseq([2, 2, 1, 1, 1, 1].normalizeSum*4, 1),
+    Pseq([4, 2, 2, 2, 2, 1, 1, 1, 1].normalizeSum*4, 1),
+    Pseq([3, 3, 2, 3, 2, 3].normalizeSum*4, 1),
+    Pseq([3, 3, 2, 2, 3, 3].normalizeSum*4, 1),
+    Pseq([3, 3, 2, 3, 3, 2].normalizeSum*4, 1),
+    Pseq([2, 1, 2, 1, 4, 2, 2, 2].normalizeSum*4, 1),
+    Pseq([3, 3, 2, 2, 1, 1, 1/2, 1/2, 1/2, 1/2, 2].normalizeSum*4, 1),
+  ], [5, 2, 1, 1, 2, 2, 2, 1, 1].normalizeSum, inf),
+  db: 15,
+  pan: Pwhite(-0.5, 0.5),
+  trig: Pwrand([1, 0], [15, 1], inf),
+  accent: 0.3,
+  freq: Pexprand(40, 80),
+  tone: 0.01,
+  decay: 0.2,
+  attackfm: 0.15,
+  selffm: 0.6,
+])).quant_(4).stop;
 )
 
-~m.free;
-~m = Synth(\membrane);
-
-~m.set(\t_trig, 1);
-
-TempoClock.tempo = 2;
-
 (
-Pdef(\ritm, Pbind(*[
-  type: \set,
-  id: ~m.nodeID,
-  \args, #[\t_trig, \tension, \loss, \amp],
+Pdef(\ritm3, Pmono(\buti, *[
   dur: Pwrand([
     Pseq([1, 1, 1, 1].normalizeSum*4, 1),
     Pseq([1, 1, 1, 1, 1, 1, 1, 1].normalizeSum*4, 1),
@@ -47,13 +60,38 @@ Pdef(\ritm, Pbind(*[
     Pseq([2, 1, 2, 1, 4, 2, 2, 2].normalizeSum*4, 1),
     Pseq([3, 3, 2, 2, 1, 1, 1/2, 1/2, 1/2, 1/2, 2].normalizeSum*4, 1),
   ], [5, 2, 1, 1, 2, 2, 2, 1, 1].normalizeSum, inf),
+  timingOffset: 1/2,
   db: -20,
-  t_trig: Pwrand([1, 0], [15, 1], inf),
-  tension: 0.006/(Pkey(\dur)**0.4)*Pwhite(0.95, 1.05),
-  loss: Plprand(0.9999, 0.99995, inf),
-])).quant_(4).play;
+  pan: Pwhite(-0.5, 0.5),
+  trig: Pwrand([1, 0], [15, 1], inf),
+  accent: 0.5,
+  freq: Pexprand(40, 160),
+  tone: 0.1,
+  decay: Pwhite(0.1, 0.5),
+  snappy: Pwhite(0.1, 0.9),
+])).quant_(4).stop;
 )
 
+(
+Ndef(\stormofkicks, {
+  var trig = Impulse.kr(8);
+  var sig = AnalogBassDrum.ar(
+    trig,
+    infsustain: 0.0,
+    accent: 0.25,
+    freq: TExpRand.kr(40,120, trig),
+    tone: 0.0,//TRand.kr(0.5,1.0,trig),
+    decay: 0.15,
+    attackfm: 0.11,//TRand.kr(0.1,1.0,trig),
+    selffm:TRand.kr(0.1,0.9,trig)
+  );
+
+  Pan2.ar(sig, TRand.kr(-1.0,1.0,trig));
+}).play;
+)
+
+{ Impulse.ar(5, 0.0, 0.5, 0) }.play
+
 (
 Pdef(\ritmbase, Pbind(*[
   type: \set,