#ifndef UDO_INSTRUMENTS #define UDO_INSTRUMENTS ## /* Debugger - Unfixed Bugs : BUG #7 Sound generators Names should correspond to those used in BID file, prepended with play_ */ #include "wavetables.udo" #include "bussing.udo" #include "bid.udo" gi3031index = 1 instr play_3031 iamp = bid_getparameter(p4, p5, 2) inote1 = table(gi3031index, gibid_chordfn, 0, 0, 1) if (gi3031index < 5) then gi3031index += 1 else gi3031index = 1 endif ifilter = random(20, 40) ifrq1 = 440 * exp(log(2) * (ifilter - 69) / 12) ; filter start freq. kamp linseg 1, p3*0.8, 1, p3*0.2, 0 kcps init cpsmidinn(inote1) kffrq port 0, 60/150, ifrq1 ; filter frequency a1 phasor kcps ; oscillator a1 = 1 - 2 * a1 a1x butterbp a1, kffrq, kcps * 1.0 ; filters a1x = a1x * (2 + kffrq / kcps) ; correct amplitude a1 = a1x + a1 * 0.25 ; 0.5 a1 butterlp a1, kffrq a1 = taninv(a1 * 2.5 * iamp) ; distortion ; 2.5 keqf limit kffrq * 4, 10, sr * 0.48 ; EQ frequency a1 pareq a1 * 0.6, keqf, 4.0, 1.0, 2 a1 pareq a1, 50, 1.3, 0.6 a1 pareq a1, 130, 0.6, 0.6 a1 = a1 * kamp * 0.8 ;a1 *= line(0, p3, 1) aL, aR pan2 a1, random(0.3, 0.7) bus_mix("delay1", aL*0.3, aR*0.3) bus_mix("master", aL, aR) endin gi3032index = 3 instr play_3032 iamp = bid_getparameter(p4, p5, 2) inote1 = table(gi3032index, gibid_chordfn, 0, 0, 1) if (gi3032index < 9) then gi3032index += 1 else gi3032index = 3 endif ifilter = random(20, 40) ifrq1 = 440 * exp(log(2) * (ifilter - 69) / 12) ; filter start freq. kamp linseg 1, p3*0.8, 1, p3*0.2, 0 kcps init cpsmidinn(inote1) kffrq port 0, 60/150, ifrq1 ; filter frequency a1 phasor kcps ; oscillator a1 = 1 - 2 * a1 a1x butterbp a1, kffrq, kcps * 1.0 ; filters a1x = a1x * (2 + kffrq / kcps) ; correct amplitude a1 = a1x + a1 * 0.25 ; 0.5 a1 butterlp a1, kffrq a1 = taninv(a1 * 2.5 * iamp) ; distortion ; 2.5 keqf limit kffrq * 4, 10, sr * 0.48 ; EQ frequency a1 pareq a1 * 0.6, keqf, 4.0, 1.0, 2 a1 pareq a1, 50, 1.3, 0.6 a1 pareq a1, 130, 0.6, 0.6 a1 = a1 * kamp * 0.8 ;a1 *= line(0, p3, 1) aL, aR pan2 a1, random(0.3, 0.7) bus_mix("delay1", aL*0.3, aR*0.3) 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.3 aR noise 1, 0.4 aL butterbp aL, random(1200, 1800), random(800, 1200) aR butterbp aR, random(1200, 1800), random(800, 1200) aL taninv aL*7 aR taninv aR*7 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 aR *= kamp * iamp bus_mix("clap", aL, aR) endin instr play_hat1 iamp = bid_getparameter(p4, p5, 2) idel1 = random(0.005, 0.02) idel2 = random(0.005, 0.02) xtratim(max(idel1, idel2)) kfreq = 380 + oscil(50, 23);550 ;line 600, p3, 600 aenv expsega .1, .0005, 1.5, p3 - .0005, .01 asqr1 oscil 1, kfreq, gifnSquare, -1 asqr2 oscil 1, kfreq*1.4471, gifnSquare, -1 asqr3 oscil 1, kfreq*1.6170, gifnSaw, -1 asqr4 oscil 1, kfreq*1.9265, gifnSaw, -1 asqr5 oscil 1, kfreq*4.5028, gifnSine, -1 asqr6 oscil 1, kfreq*3.6637, gifnSine, -1 a808L sum asqr1, asqr2, asqr3 a808R sum asqr4, asqr5, asqr6 a808L butterhp a808L, 4270 a808R butterhp a808R, 4270 aoutL = a808L * aenv * iamp aoutR = a808R * aenv * iamp aL delay aoutL, idel1 aR delay aoutR, idel2 bus_mix("hat1", aL, aR) endin instr play_hat2 iamp = bid_getparameter(p4, p5, 2) * 0.7 kfreq line 880, p3, 400 aenv expsega .1, .0005, 1.5, p3 - .0005, .01 asqr1 oscil 1, kfreq, gifnSquare, -1 asqr2 oscil 1, kfreq*1.4471, gifnSquare, -1 asqr3 oscil 1, kfreq*1.6170, gifnSquare, -1 asqr4 oscil 1, kfreq*1.9265, gifnSquare, -1 asqr5 oscil 1, kfreq*2.5028, gifnSquare, -1 asqr6 oscil 1, kfreq*2.6637, gifnSquare, -1 a808L sum asqr4, asqr5, asqr6 a808R sum asqr1, asqr2, asqr3 a808L butterhp a808L, 3270 a808R butterhp a808R, 3270 aL = a808L * aenv * iamp aR = a808R * aenv * iamp bus_mix("master", aL, aR*0.7) endin instr rim icps = p4 ;1000 iamp = p5 acps expon icps, 0.0025, icps * 0.5 acps = acps + icps iamp = iamp * 0.3 a1a phasor acps, 0 a1b phasor acps, random(0, 1) afmenv expon 1.0, 0.02, 0.4 a1 = (a1a-a1b)*random(1, 10)*afmenv acps = acps*(1.0+a1) a0 oscil3 1.0, acps aenv expon 1.0, 0.005, 0.5 a0 limit 4.0*a0*aenv, -1.0, 1.0 a0 butterhp a0, 230 aL, aR pan2 a0*iamp, random(0.3, 0.8) bus_mix("rim", aL, aR) bus_mix("delay1", butterlp(aL*0.6, 2000), butterlp(aR*0.6, 2000)) endin instr blip1 iup = p4 iamp = p5 inote1 = table(p4+3, gibid_chordfn, 0, 0, 1) + iup inote2 = table(p4+5, gibid_chordfn, 0, 0, 1) + iup a1 oscil 0.7, cpsmidinn(inote1) a2 oscil 0.7, cpsmidinn(inote2) kamp linseg 1, p3*0.2, 0, p3*0.8, 0 a1 *= kamp a2 *= kamp a1 butterhp a1, 250 a2 butterhp a2, 250 a1 butterhp a1, 250 a2 butterhp a2, 250 aL1, aR1 pan2 a1, random(0, 1) aL2, aR2 pan2 a2, random(0, 1) bus_mix("master", aL1+aL2, aR1+aR2) bus_mix("delay1", butterlp(aL1*0.5, 4000), butterlp(aR2*0.5, 4000)) endin instr play_rim iamp = bid_getparameter(p4, p5, 2) if (random(0, 1) > 0.6) then event_i "i", "rim", 0, 0.4, 3000, iamp endif if (random(0, 1) > 0.6) then event_i "i", "rim", 0, 0.4, 1000, iamp endif if (random(0, 1) > 0.6) then event_i "i", "rim", 0, 0.4, 2000, iamp endif if (random(0, 1) > 0.6) then event_i "i", "rim", 0, 0.4, 2500, iamp endif if (random(0, 1) > 0.6) then event_i "i", "rim", 0, 0.4, 3500, iamp endif if (random(0, 1) > 0.6) then event_i "i", "blip1", 0, random(0.01, 0.1), 48, iamp endif if (random(0, 1) > 0.6) then event_i "i", "blip1", 0, random(0.01, 0.1), 24, iamp endif if (random(0, 1) > 0.6) then event_i "i", "blip1", 0, random(0.01, 0.1), 36, iamp endif endin instr play_kick ; 808 style kick iamp = bid_getparameter(p4, p5, 2) idist = 0.5 ;= (i(gksection) == 1) ? 0.55 : 0.35 xtratim 0.1 krelease release ktune init -1.5 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 linseg 0, p3*0.8, 1, p3*0.2, 0 gkpump = k(aenv) asig = asig*aenv aenv linseg 0, 0.07, 1 acps expsega 400, 0.07, 0.001, 1, 0.001 amix = (asig*0.7)*1*iamp gkpump = min(rms(amix) * 7, 1) aout1 pareq amix, 100, 0.01, 0.7 aout1 distort aout1, idist, gifnSquare aout1 pareq aout1, 50, 2, 0.4 aout1 pareq aout1, 190, 0.7, 0.6 aout1 butterlp aout1, 140 aout1 *= 2 bus_mix("kick", aout1, aout1) endin instr play_koffer iamp = bid_getparameter(p4, p5, 2) ifreq = cpsmidinn(tab_i(ftlen(gibid_chordfn) - 2, gibid_chordfn)+12) aL buzz 2, ifreq, random(7, 12), gifnSquare aL butterhp aL, 500 aR buzz 2, ifreq, random(7, 12), gifnSquare aR butterhp aR, 500 kamp linseg 0, p3*0.2, 1, p3*0.1, 0, p3*0.7, 0 aL *= kamp aR *= kamp bus_mix("koffer", aL, aR) endin #end