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;
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;
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,
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;
+
+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),
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,