aboutsummaryrefslogtreecommitdiff
path: root/BUG7/instruments.udo
diff options
context:
space:
mode:
Diffstat (limited to 'BUG7/instruments.udo')
-rw-r--r--BUG7/instruments.udo272
1 files changed, 272 insertions, 0 deletions
diff --git a/BUG7/instruments.udo b/BUG7/instruments.udo
new file mode 100644
index 0000000..6c3bb31
--- /dev/null
+++ b/BUG7/instruments.udo
@@ -0,0 +1,272 @@
+#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