From 06e04996ac49ddab74b09dd2a5044cb97847124c Mon Sep 17 00:00:00 2001 From: Eugene Petkevich Date: Thu, 23 Mar 2023 00:05:04 +0100 Subject: [PATCH] add combined beat and pattern generator --- ...1\213\322\217\320\270\323\210\321\221.scd" | 83 ++++++++++++++++++- 1 file changed, 82 insertions(+), 1 deletion(-) diff --git "a/\320\227\321\217\321\201\320\260\321\205-\320\234\321\213\322\217\320\270\323\210\321\221.scd" "b/\320\227\321\217\321\201\320\260\321\205-\320\234\321\213\322\217\320\270\323\210\321\221.scd" index 7c52ad1..6e83ffa 100644 --- "a/\320\227\321\217\321\201\320\260\321\205-\320\234\321\213\322\217\320\270\323\210\321\221.scd" +++ "b/\320\227\321\217\321\201\320\260\321\205-\320\234\321\213\322\217\320\270\323\210\321\221.scd" @@ -30,7 +30,7 @@ ); 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); @@ -380,6 +380,87 @@ Pdef(\mazywaqo, ~mazywaqo).quant_(2).play; ) 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); -- 2.17.1