// "Pump Up The Jam" - Work In Progress // song @by Technotronic // script @by eefano const pickRestart = register('pickRestart', (arr, pat) => pat.pick(arr.map((x)=>x.restart(pat.collect().fmap(v=>v+1))))) const as = register('as', (mapping, pat) => { mapping = Array.isArray(mapping) ? mapping : [mapping]; return pat.fmap((v) => { v = Array.isArray(v) ? v : [v, 0]; return Object.fromEntries(mapping.map((prop, i) => [prop, v[i]])); }); }); stack("~" ,"<~@8 0@4 1@4 ~@8>".pickRestart( ["[u [u e] a [u i] [u ~] [a u] [i a] [o@3 i] ~ [a e] [a i] [o@3 i] [~ u@2 a] [e e] [o i] [o@3 i]]/4" ,"~ [u i] [u ~ ~ a] [i i@2 o]" ]).vowel().s("z_sawtooth").clip(0.8).gain(1.4) ,"<~@16 0@8>".pickRestart( ["[ ~@2 4 [5:1 ~] ~ [~ 0] [3:-1@5 3:1@2 2]@2 ~ [4@3:1 3 3@3 2 2@3 3 4:1@3 0 0@2 2:2@2]@5 [~ ~ 0@2 ~ 0@2 -2:-3]@2 ]/4" ]).as("n:penv").scale("c4:minor").clip(0.90).patt("0.15").s("square").delay(0.3).dfb(0.3).dt(60/128).gain(0.7) ,"<0@32>".pickRestart( ["[~@13 [[~@3 [0,-2,-4]@2 ~]@3 [0,-2,-4] [1,-1,-3]!2]@3 ]/4" ]).scale("c4:minor").note().clip(0.7).s("z_sawtooth").color("red").adsr("0.07:.1:0.6:0.1").gain(0.5) ,"<0@12 0 1 ~@2 3@8>".pickRestart( ["[0 ~@23]/2" ,"~@2 [~ [e2 ~]] [[0 2] ~]" ,"[0 ~ ~ 0 ~ ~ 0 ~] <[[~ [0 1]] [2 ~]] ~>" ]).scale("c2:minor").note().clip(0.9) .layer(x=>x.s("z_sawtooth").delay(0.6).dfb(0.5).dt(60/125*3/4).pan(0.55).gain(0.8) ,x=>x.s("z_square").lpf(300).lpe(2).lpa(-1.5).lpd(0.1).lpr(0.05).pan(0.45).gain(1)).color("green") ,"<0@4 [0,1]@12 [0,1,2]@4 [0,1,2,3]@4>".pickRestart( [stack(s("oh*16").pan(0.45).gain("[0.08 0.16]*4").release(0),s("hh*4").pan(0.7).gain(0.20)) ,s("bd*4").lpf(150).gain(1) ,s("[~ cp]*2").gain(0.5).pan(0.25) ,s("[~ rd]*4").gain(0.15).release(0).hpf(1500).pan(0.75) ,s("[~ sd!3]!4 [sd*4]!4").slow(2).gain(run(32).slow(2).mul(1/31).add(0.1).mul(0.4)) ,s("cr").gain(0.2) ,s("bd").gain(0.8) ]).bank("RolandTR909").color("yellow").velocity(0.7) ).cpm(124.5/4).room(0.3)