);
sig = sig + partial;
});
- distort = 1 + (1.1 * ampEnv);
+ distort = 1 + (0.1 * ampEnv);
sig = (sig * distort).clip(-1, 1);
sig = Pan2.ar(sig, pan, amp);
Out.ar(out, sig);
)
Pdef.all.do{|i| i.stop};
+
+//// make combined beats
+
+(
+~makeBeat = {|
+ depth=1,
+ weights=#[11, 10, 1],
+ dur=1,
+ degree=0,
+ db=0,
+ attack=0.07,
+ release=0.7
+ |
+ var beat = [[dur, degree, db, attack, release]];
+ weights = weights.normalizeSum;
+ (depth-1).do{|i|
+ var newBeat = [];
+ beat.do{|hit|
+ var divider = Array.series(weights.size, 1).wchoose(weights);
+ var newHit = [
+ hit[0] / divider,
+ hit[1] + min(1, divider-1),
+ hit[2] - (3 * min(1, divider-1)),
+ hit[3] * max(0.7, 2-divider),
+ hit[4] * max(0.7, 2-divider),
+ ];
+ divider.do{
+ newBeat = newBeat.add(newHit)
+ };
+ };
+ beat = newBeat;
+ };
+ beat;
+};
+
+~repeat = {|arr, n=1|
+ (arr!n).reshape(*(arr.shape *.s [n, 1, 1, 1, 1, 1]));
+};
+
+~makeCombinedBeat = {|
+ db = -3
+ |
+ var beat = [];
+ beat = (beat
+ ++ ~repeat.(~makeBeat.(7, dur: 1, db: db), 3)
+ ++ ~repeat.(~makeBeat.(7, dur: 1, db: db), 1)
+ );
+};
+
+~makeBeatPat = {|
+ pan = 0,
+ octave = 4,
+ db = -3
+ |
+ var beat = ~makeCombinedBeat.(db: db);
+
+ Pbind(*[
+ out: Pshuf(~reverbBusses.wrapExtend(beat.size), inf),
+ instrument: Pshuf(~synthNames.wrapExtend(beat.size), inf),
+ pan: [pan.neg, pan],
+ scale: Pn(~scale),
+ octave: octave,
+ #[\dur, \degree, \db, \attack, \release]: Pseq(
+ beat, inf,
+ ),
+ timingOffset: 0,
+ ]);
+};
+)
+
+(
+TempoClock.tempo = 1/4;
+thisThread.randSeed = 302;
+Pdef(2, ~makeBeatPat.(0.1, 2, -3-100)).quant_(4).play;
+Pdef(3, ~makeBeatPat.(0.2, 3, -3-100)).quant_(4).play;
+Pdef(4, ~makeBeatPat.(0.35, 4, -6-100)).quant_(4).play;
+Pdef(5, ~makeBeatPat.(0.5, 5, -14-100)).quant_(4).play;
+Pdef(6, ~makeBeatPat.(0.75, 6, -22-100)).quant_(4).play;
+Pdef(7, ~makeBeatPat.(0.9, 6, -21-100)).quant_(4).play;
+)
+
////
s.record(bus: a.h);