Roos, Felix, and Alex McLean. 2023. “Strudel: Live Coding Patterns on the Web.” In Proceedings of the 7th International Conference on Live Coding. Utrecht, Netherlands. https://doi.org/10.5281/zenodo.7842142.
// froos - woodbark addVoicings('water',{m7:['1P 5P 7m 2A','1P 5P 6A 2A','1P 7m 3m 5P','1P 7m 2A 5P','3m 7m 1P 5P','2A 1P 5P 6A','3m 1P 5P 7m','5P 1P 3m 6A','5P 1P 2A 7m','5P 3m 7m 1P','5P 3m 6A 1P','7m 3m 5P 1P','7m 5P 1P 2A'],m6:['1P 6M 3m 5P','1P 5P 6M 2A','1P 3m 6M 1P','1P 6M 2A 5P'],m9:['1P 7m 3m 5P 2M','1P 3m 7m 2M','1P 3m 6A 2M'],m11:['1P 7m 3m 4P','1P 7m 2A 4P','3m 7m 2M 4P'],'7b9':['1P 7m 3M 5P 1A','1P 7m 2m 3M','1P 3M 7m 1A','1P 3M 6A 1A']}); setcps(.75) let wood = ">/4" let bark = ">/4" stack( // pick wood.voicings('water') .note().arp("[0 1 2 3]*<3 5>").struct("x*4") .add(note("<0 12>/32")) .release(2).gain("[.5 1.2]*2") .s("gm_electric_guitar_muted") .pan(cosine.slow(32)).mask("<1@32 0@16>") .lpf(sine.range(500,8000).slow(17)).lpq(5).color('pink'), // bass note(wood.rootNotes(1)).s("gm_acoustic_bass") .struct("x [x? x?]*2") .sometimes(add(note("12"))) .release(.1).lpf(sine.range(800,1500).slow(31)).lpq(4) .mask("<0@4 1@28>").color('salmon'), // drums stack( s("[ <~ [~ bd?]>] bd").mask("<0@16 1@28>").gain("[.6 .2]*2 .5"), s("~ ").mask("<0@16 1@16>") .lastOf(8, x=>x.add.squeeze(speed(".8 1 2 4*2"))), s("[~ hh]*2").end("<.5 .02>/32").release(.04).speed(.8) .mask("<0@16 1@64>") .gain(.4).off(1/8, x=>x.speed(.5).degradeBy(.8).gain(.2)) ) .room(.2).bank('RolandTR707') .off(1/8, x=>x.speed(1.5).gain(.4).end(.2) .lpf(perlin.range(1000,2000))) .when("<0@56 1@8>", x=>x.hpf(1000)).color('steelblue'), // chords "0/4".off(1/2, add("2,4")).n() .chop("<4 16>/16") .s('gm_koto').almostNever(ply("2")) .scale(bark) .lpf(perlin.range(200,2000)) .gain(saw.range(.125,.75)) .room(.5).pan(sine.slow(32)) .lpf(perlin.range(200,2000)).lpq(8) .mask("<0@32 1@40>").color('darkseagreen') ).late("[0 0.02]*4") .reset(",8,<0 1 2>)>") @15>!32>*2>@3>