1; returns value of given key in given "string map" 2; keymap("freq", "note/c3/freq/220/gain/0.5") 3; yields "220" 4opcode keymap, S, SS 5 Skey, Smap xin 6 idelimiter = strindex(Smap, strcat(Skey, "/")) 7 ifrom = idelimiter + strlen(Skey) + 1 8 Svalue = strsub(Smap, ifrom, strlen(Smap)) 9 Svalue = strsub(Svalue, 0, strindex(Svalue, "/")) 10 xout Svalue 11endop 12 13; TODO add incredibly dope synths 14instr organ 15 iduration = p3 16 ifreq = p4 17 igain = p5 18 ioct = octcps(ifreq) 19 20 asig = vco2(igain, ifreq, 12, .5) ; my edit 21 kpwm = oscili(.1, 5) 22 asig = vco2(igain, ifreq, 4, .5 + kpwm) 23 asig += vco2(igain/4, ifreq * 2) 24 25 ; filter 26 ; idepth = 2 27 ; acut = transegr:a(0, .005, 0, idepth, .06, -4.2, 0.001, .01, -4.2, 0) ; filter envelope 28 ; asig = zdf_2pole(asig, cpsoct(ioct + acut), 0.5) 29 30 ; amp envelope 31 iattack = .001 32 irelease = .05 33 asig *= linsegr:a(0, iattack, 1, iduration, 1, irelease, 0) 34 35 out(asig, asig) 36 37endin 38 39instr triangle 40 iduration = p3 41 ifreq = p4 42 igain = p5 43 ioct = octcps(ifreq) 44 45 asig = vco2(igain, ifreq, 12, .5) 46 47 ; amp envelope 48 iattack = .001 49 irelease = .05 50 asig *= linsegr:a(0, iattack, 1, iduration, 1, irelease, 0) 51 52 out(asig, asig) 53endin 54 55instr pad 56 iduration = p3 57 ifreq = p4 58 igain = p5 59 ioct = octcps(ifreq) 60 61 asig = vco2(igain, ifreq, 0) 62 63 ; amp envelope 64 iattack = .5 65 irelease = .1 66 asig *= linsegr:a(0, iattack, 1, iduration, 1, irelease, 0) 67 68 idepth = 2 69 acut = transegr:a(0, .005, 0, idepth, .06, -4.2, 0.001, .01, -4.2, 0) 70 asig = zdf_2pole(asig, 1000, 2) 71 72 out(asig, asig) 73endin 74 75 76gisine ftgen 0, 0, 4096, 10, 1 77 78instr bow 79 kpres = 2 80 krat = 0.16 81 kvibf = 6.12723 82 83 kvib linseg 0, 0.5, 0, 1, 1, p3-0.5, 1 84 kvamp = kvib * 0.01 85 asig wgbow .7, p4, kpres, krat, kvibf, kvamp, gisine 86 asig = asig*p5 87 outs asig, asig 88endin 89 90 91instr Meta 92 Smap = strget(p6) 93 Sinstrument = keymap("s", Smap) 94 schedule(Sinstrument, 0, p3, p4, p5) 95 ; TODO find a way to pipe Sinstrument through effects 96endin