1// TYPESAFE JEV — drill'n'bass for a well-typed agent 2// vox: real 22 Jump Street "my name is jeff" + a SAPI robot saying "type safe jev" 3setcps(170/60/4) 4await samples('github:tidalcycles/dirt-samples') 5// vox: the repo's samples/ folder, served with the site (see README) 6await samples('jev-samples/strudel.json') 7 8// 16-cycle form: intro | enter | drill | everything 9const intro = "<1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0>" 10const body = "<0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0>" 11const drill = "<0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0>" 12const late = "<0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1>" 13 14stack( 15 // detuned Avril-14th-ish pad, always there 16 note("<[c3,eb3,g3,bb3] [ab2,c3,eb3,g3] [f2,ab2,c3,eb3] [g2,b2,d3,f3]>") 17 .s("supersaw").detune(.35).attack(.6).release(2) 18 .lpf(sine.range(500,2200).slow(16)).room(.8).size(.9).gain(.28), 19 20 // music-box lead, wonky and slightly out of tune 21 n("<[0 2 4 ~ 7 ~ 4 2] [~ 0 3 ~ 5 3 ~ 2] [4 ~ 2 0 ~ -1 0 ~] [2 4 ~ 6 ~ 4 ~ 2]>") 22 .scale("C4:minor").s("triangle").decay(.25).sustain(0) 23 .detune(sine.range(-.15,.15).slow(7)).delay(.4).delaytime(.375).delayfeedback(.45) 24 .room(.5).gain(.35).degradeBy(.15), 25 26 // intro vox: huge washed-out "type safe jev" 27 s("<tsjev ~ tsjev ~>").speed(.8).room(.95).size(.95) 28 .delay(.6).delaytime(.5).delayfeedback(.55).gain(1.1).mask(intro), 29 30 // chopped amen, ratchets and reverse edits 31 n("0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15") 32 .s("amencutup").sometimesBy(.3, x=>x.ply("<2 4 3>")) 33 .sometimesBy(.12, x=>x.speed(-1)).sometimesBy(.1, x=>x.speed(2)) 34 .gain(.9).mask(body), 35 36 // drill kicks 37 s("bd:3").struct("x ~ ~ ~ ~ ~ x ~ ~ ~ x ~ ~ x ~ ~").gain(1.1).mask(body), 38 39 // acid squelch 40 note("c2 c3 c2 eb2 c2 g2 [c2 c2] bb1").fast(2).s("sawtooth") 41 .lpf(sine.range(250,3200).slow(4)).lpq(18).decay(.14).sustain(0) 42 .distort(1.5).gain(.35).mask(body), 43 44 // call-and-response: "my name is jeff" / "my name is jev" / "type safe ... jev" 45 s("<[jeff ~ ~ ~] [mnjev ~ ~ ~] [jeff ~ ~ ~] [~ ts ~ jev]>") 46 .gain(1.25).room(.25).mask(body), 47 48 // "my my my name is jeff" stutter 49 s("[jeff jeff jeff] jeff").end("<[.12 .12 .12] 1>").cut(1) 50 .speed("<1 1 .75 1.5>").gain(1.2).mask(drill).degradeBy(.2), 51 52 // glitch confetti: jev shredded to 16ths, flung around the stereo field 53 s("jev*16").end(.5).speed("<1 1.5 2 -1>").sometimesBy(.4, x=>x.speed(4)) 54 .degradeBy(.45).pan(rand).hpf(600).gain(.7).mask(drill), 55 56 // finale: pitched-down TYPE SAFE JEV slamming every bar 57 s("tsjev ~").speed("<.6 .5>").distort(2).lpf(2500).gain(1).mask(late) 58)