#ifndef UDO_INSTRUMENTS #define UDO_INSTRUMENTS ## /* Debugger - Unfixed Bugs : BUG #4 Sound generators Names should correspond to those used in BID file, prepended with play_ */ #include "wavetables.udo" #include "bussing.udo" #include "bid.udo" instr play_bass1 iamp = bid_getparameter(p4, p5, 2) * random(0.4, 1) ifreqmode = bid_getparameter(p4, p5, 4) if (ifreqmode != 0) then ifreq = cpsmidinn(table(ifreqmode, gibid_chordfn) - 24) else ifreq = cpsmidinn(table(1, gibid_chordfn) - 24) endif kindex1 line 4, p3, 1 kindex2 line 5, p3, 1 kamp linseg 1, p3*0.9, 1, p3*0.1, 0 aL foscil iamp, ifreq, 8, 1.5, kindex1, gifnSine aR foscil iamp, ifreq, 8, 1.5, kindex2, gifnSine aL *= kamp * 0.75 aR *= kamp * 0.75 bus_mix("master", aL, aR) endin instr play_melb1 ifreq = cpsmidinn(table(1, gibid_chordfn)) * 1 p3 = 0.03 kindex1 line random(1, 4), p3, random(1, 5) kindex2 line random(1, 4), p3, random(1, 5) kamp linseg 0, p3*0.5, 1, p3*0.4, 1, p3*0.1, 0 aL foscil 1, ifreq, 2, random(1, 4), kindex1, gifnSine aR foscil 1, ifreq, 2, random(1, 4), kindex2, gifnSine aL *= kamp * 0.2 aR *= kamp * 0.2 bus_mix("master", aL, aR) endin instr play_hat1 iamp = bid_getparameter(p4, p5, 2) * 0.9 p3 = 0.1 kfreq line 600, p3, 400 aenv expsega .1, .0005, 1, p3 - .0005, .01 asqr1 oscil 1, kfreq, gifnSquare, -1 asqr2 oscil 1, kfreq*1.4471, gifnSaw, -1 asqr3 oscil 1, kfreq*1.6170, gifnSaw, -1 asqr4 oscil 1, kfreq*1.9265, gifnSaw, -1 asqr5 oscil 1, kfreq*2.5028, gifnSine, -1 asqr6 oscil 1, kfreq*2.6637, gifnSaw, -1 a808 sum asqr1, asqr2, asqr3, asqr4, asqr5, asqr6 a808 butterhp a808, 4270 a808 butterhp a808, 4270 aout = a808 * aenv * iamp bus_mix("master", aout, aout) endin instr play_hat2 iamp = bid_getparameter(p4, p5, 2) p3 = 0.12 idel1 = random(0.005, 0.01) idel2 = random(0.005, 0.01) xtratim(max(idel1, idel2)) kfreq line 200, p3, 100 aenv expsega .1, .0005, 1, p3 - .0005, .01 asqr1 oscil 1, kfreq, gifnSquare, -1 asqr2 oscil 1, kfreq*1.4471, gifnSine, -1 asqr3 oscil 1, kfreq*1.5170, gifnSquare, -1 asqr4 oscil 1, kfreq*1.7265, gifnSquare, -1 asqr5 oscil 1, kfreq*2.2028, gifnSaw, -1 asqr6 oscil 1, kfreq*2.4637, gifnSaw, -1 a808 sum asqr1, asqr2, asqr3, asqr4, asqr5, asqr6 a808 butterhp a808, 3270 a808 butterhp a808, 3270 aout = a808 * aenv * iamp * 1.5 aL delay aout, idel1 aR delay aout, idel2 bus_mix("master", aL, aR) endin instr play_clap iamp = bid_getparameter(p4, p5, 2) * random(0.4, 1) * 0.8 aL noise 1, 0.6 aR noise 1, 0.7 aL butterbp aL, random(1000, 1500), random(800, 1200) aR butterbp aR, random(1000, 1500), random(800, 1200) aL taninv aL*2 aR taninv aR*2 kamp linseg 2, p3*0.1, 0, p3*0.1, 2, p3*0.1, 0, p3*0.1, 1.5, p3*0.1, 0, p3*0.1, 1, p3*0.4, 0 aL *= kamp * iamp * 4 aR *= kamp * iamp * 4 bus_mix("master", aL, aR) endin instr play_kick ; 808 style kick iamp = bid_getparameter(p4, p5, 2) idist = 0.4 ;= (i(gksection) == 1) ? 0.55 : 0.35 xtratim 0.1 krelease release ktune init 0 kmul transeg 0.2, p3*0.5, -15, 0.01, p3*0.5, 0, 0 kbend transeg 0.5, 1.2, -4, 0, 1, 0, 0 asig gbuzz 0.5, 50*octave(ktune)*semitone(kbend), 20, 1, kmul, gifnCosine aenv transeg 1, p3-0.004, -6, 0 gkpump = k(aenv) aatt linseg 0, 0.004, 1 asig = asig*aenv*aatt aenv linseg 1, 0.07, 0 acps expsega 400, 0.07, 0.001, 1, 0.001 aimp oscili aenv, acps*octave(ktune*0.25) amix = ((asig*0.7)+(aimp*0.35))*2*iamp gkpump = min(rms(amix) * 7, 1) aout1 pareq amix, 100, 0.01, 0.7 aout1 distort aout1, idist, gifnSine aout1 pareq aout1, 50, 2, 0.4 ;aout1 pareq aout1, 190, 0.7, 0.6 aout1 pareq aout1, 4900, 2, 0.7 aout1 *= 2 bus_mix("master", aout1, aout1) endin instr play_kick2 iamp = bid_getparameter(p4, p5, 2) xtratim 0.1 krelease release ktune init 1 ifn = gibid_chordgroups[1][1] ; gibid_chordfn ifreq = cpsmidinn(tab_i(1, ifn) - 18) * 0.1 kmul transeg 0.2, p3*0.5, -15, 0.01, p3*0.5, 0, 0 kbend transeg 0.5, 1.2, -4, 0, 1, 0, 0 asig gbuzz 0.5, ifreq, 20, 1, kmul, gifnCosine aenv transeg 1, p3-0.004, -6, 0 aatt linseg 0, 0.004, 1 asig = asig*aenv*aatt aenv linseg 1, 0.07, 0 acps expsega 400, 0.07, 0.001, 1, 0.001 aimp oscili aenv, acps*octave(ktune*0.25) amix = ((asig*0.7)+(aimp*0.35))*2*iamp aout1 pareq amix, 100, 0.01, 0.6 aout1 distort aout1, 0.6, gifnSquare aout1 pareq aout1, 100, 0.8, 0.3 aout1 butterhp aout1, 30 aout1 *= 3.6 ;aout1 *= 1-gkpump bus_mix("master", aout1, aout1) endin instr play_shaker iamp = bid_getparameter(p4, p5, 2) p3 = 0.02 kamp line 1, p3, 0 aL shaker 1, 2000, 8, 0.499, 2, 0 aR shaker 1, 2000, 8, 0.499, 2, 0 aL *= kamp * iamp * 3 aR *= kamp * iamp * 3 bus_mix("master", aL, aR) bus_mix("delay3", aL*0.25, aR*0.25) endin ;glitch sampler vars giglitchsamples = 44100 giglitchbufferL ftgen 0, 0, giglitchsamples, 7, 0 giglitchbufferR ftgen 0, 0, giglitchsamples, 7, 0 instr play_glitchread iamp = bid_getparameter(p4, p5, 2) ifreq = cpsmidinn(tab_i(random(1, ftlen(gibid_chordfn) - 1), gibid_chordfn)) ilen = ((1/(ifreq))*sr)*pow(2, round(random(0, 4))) istart random 0, giglitchsamples-ilen awindex phasor giglitchsamples / ilen aL table awindex*giglitchsamples, giglitchbufferL aR table awindex*giglitchsamples, giglitchbufferR aL butterhp aL, 350 aR butterhp aR, 350 aL *= 0.4 * iamp aR *= 0.4 * iamp if (random(0, 1) > 0.7) then if (random(0, 1) > 0.5) then bus_mix("delay1", aL, aR) else bus_mix("delay2", aL, aR) endif endif bus_mix("master", aL, aR) endin instr play_snare icps0 = 110 iamp = bid_getparameter(p4, p5, 2) p3 = 0.3 icps1 = 4.0 * icps0 kcps port icps0, 0.007, icps1 kcpsx = kcps * 1.5 kfmd port 0.0, 0.01, 0.7 aenv1 expon 1.0, 0.03, 0.5 kenv2 port 1.0, 0.008, 0.0 aenv2 interp kenv2 aenv3 expon 1.0, 0.025, 0.5 a_ oscili 1.0, kcps a1 oscili 1.0, kcps * (1.0 + a_*kfmd) a_ oscili 1.0, kcpsx a2 oscili 1.0, kcpsx * (1.0 + a_*kfmd) a3 unirand 4.0 a3 = a3 - 1.0 a3 butterbp a3, 3200, 1500 a3 = a3 * aenv2 a0 = a1 + a2*aenv3 + a3*1.0 a0 = a0 * aenv1 a0 butterhp a0, 210 aout = a0 * iamp * 1.4 bus_mix("master", aout, aout) endin #end