aboutsummaryrefslogtreecommitdiff
path: root/include/instruments_hybrid.inc
diff options
context:
space:
mode:
Diffstat (limited to 'include/instruments_hybrid.inc')
-rwxr-xr-xinclude/instruments_hybrid.inc184
1 files changed, 184 insertions, 0 deletions
diff --git a/include/instruments_hybrid.inc b/include/instruments_hybrid.inc
new file mode 100755
index 0000000..61817bf
--- /dev/null
+++ b/include/instruments_hybrid.inc
@@ -0,0 +1,184 @@
+#ifndef INC_HYBRID_INSTR
+#define INC_HYBRID_INSTR ##
+
+#include "include/instruments_water.inc"
+#include "include/instruments_musicbox.inc"
+
+; reson
+instr play_hybrid1
+ inote = p4
+
+ ifreq = cpsmidinn(inote)
+ ifileid = arr_random(gisnd_waterdrop)
+
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+
+ ipitch = random(0.8, 1.6)
+
+ itdur = (idur / ipitch) + random(0.3, 1)
+ p3 = itdur
+ ;aL, aR loscil 1, ipitch, ifn, 1
+ atime line 0, p3, idur*0.9
+ aL, aR mincer atime, 1, ipitch, ifn, 0, 128 ; 1024
+ aLr resony aL, ifreq, 2, random(8, 16), 10
+ aRr resony aL, ifreq, 2, random(8, 16), 10
+ aL balance aLr, aL
+ aR balance aRr, aR
+ aL dcblock aL
+ aR dcblock aR
+
+ kamp linseg 1, itdur*0.9, 1, itdur*0.1, 0
+
+ iamp = random(0.7, 1)
+ ipan = random(0, 1)
+ aL *= kamp * iamp * ipan
+ aR *= kamp * iamp * (1-ipan)
+ bus_mix("pvsamp1", aL*random(0, 0.3), aR*random(0, 0.3))
+ bus_mix("reverb1", aL*0.1, aR*0.1)
+ bus_mix("delay2", aL*random(0, 0.01), aR*random(0, 0.01))
+ bus_mix("master", aL, aR)
+endin
+
+
+
+
+
+opcode portchord_drop, aa, po
+ ifreqmult, index xin
+
+ ifileid = arr_random(gisnd_waterdrop)
+ ifftsize = 16
+
+ ifn = gisounddb[ifileid][0]
+ ichannels = gisounddb[ifileid][1]
+ idur = gisounddb[ifileid][2]
+ irmsnorm = gisounddb[ifileid][3]
+
+ kampb table index, gimel_amps
+ kfreq table index, gimel_freqs
+
+ kamp portk kampb, (i(gkseq_beattime) * gimel_portamento_beatratio) ; fade out when change
+
+ kpitch = line(random(0.8, 1.2), p3, random(0.8, 1.2))
+
+ istart = random(0.05, 0.2)
+ iend = random(istart+0.1, 0.8)
+ atime = abs(oscil(iend - istart, random(0.001, 0.1), gifnSine, random(0, 1))) + istart
+
+ klfo = oscil:k(random(0.0001, 0.009), random(1, 5)) + 1
+ kfreq *= klfo
+
+ aL init 0
+ aR init 0
+ if (kamp != 0) then
+ if (random(0, 1) > 0.4) then
+ aLm, aRm mincer atime, kamp, kpitch, ifn, 0, ifftsize
+ else
+ aLm, aRm sndwarpst kamp, atime*idur, kpitch, ifn, 0, 4410, 441, 8, gifnHalfSine, 1
+ endif
+ aL resony aLm, kfreq*ifreqmult, random(1, 4), random(8, 16), 10
+ aR resony aRm, kfreq*ifreqmult, random(1, 4), random(8, 16), 10
+ aL balance aL, aLm
+ aR balance aR, aRm
+ aL butterhp aL, 210
+ aR butterhp aR, 210
+ endif
+ ipan = random(0, 1)
+
+ aL *= (1 - irmsnorm) * 0.5 * ipan
+ aR *= (1 - irmsnorm) * 0.5 * (1-ipan)
+
+ ; recursion for all chord parts
+ if (index + 1 < ftlen(gimel_amps)) then
+ aLx, aRx portchord_drop ifreqmult, index + 1
+ aL += aLx
+ aR += aRx
+ endif
+ xout aL, aR
+endop
+
+instr play_hybridstretch1
+ kamp linsegr 1, p3, 1, 1, 0
+ kampx3 init 0.2
+ kreverb1 init 0
+ kreverb2 init 0
+ kreverb3 init 0
+
+ aL1, aR1 portchord_drop 0.5
+ aL2, aR2 portchord_drop 1
+ aL3, aR3 portchord_drop 4
+ k3amp = abs:k(oscil:k(1, 0.1))
+
+ aL = (aL1 + aL2 + (aL3 * port(k3amp, 1))) * kamp
+ aR = (aR1 + aR2 + (aR3 * port(k3amp, 1))) * kamp
+
+
+ kchangemetro = metro(0.2)
+ if (kchangemetro == 1) then
+ if (random:k(0, 1) > 0.2) then
+ kampx3 = random:k(0.2, 1)
+ endif
+ if (random:k(0, 1) > 0.5) then
+ kreverb1 = random:k(0, 0.4)
+ endif
+ if (random:k(0, 1) > 0.5) then
+ kreverb2 = random:k(0, 0.4)
+ endif
+ if (random:k(0, 1) > 0.5) then
+ kreverb3 = random:k(0, 0.4)
+ endif
+ endif
+
+ aL pareq aL, 1000, 0.4, 0.7
+ aR pareq aR, 1000, 0.4, 0.7
+
+ bus_mix("reverb1", aL1*kreverb1, aR1*kreverb1)
+ bus_mix("reverb1", aL2*kreverb2, aR2*kreverb2)
+ bus_mix("reverb1", aL2*kreverb3, aR3*kreverb3)
+ bus_mix("master", aL, aR)
+endin
+
+
+
+; pvsmorph
+instr play_hybrid1x
+ inote = p4
+
+ ifileidBox, ipitchBox sounddb_mel_nearestnote gicol_musicbox, inote
+ ifileidWater = arr_random(gisnd_waterdrop)
+
+ ifnBox = gisounddb[ifileidBox][0]
+ idurBox = gisounddb[ifileidBox][2]
+ ifnWater = gisounddb[ifileidWater][0]
+ idurWater = gisounddb[ifileidWater][2]
+
+ ipitchWater = random(0.8, 1)
+
+ p3 = min((idurWater / ipitchWater), (idurBox / ipitchBox))
+
+ aboxL, aboxR loscil 1, ipitchBox, ifnBox, 1
+ awaterL, awaterR loscil 1, ipitchWater, ifnWater, 1
+
+ ir = 1024
+ fboxL pvsanal aboxL, ir, ir/4, ir, 1
+ fboxR pvsanal aboxR, ir, ir/4, ir, 1
+ fwaterL pvsanal awaterL, ir, ir/4, ir, 1
+ fwaterR pvsanal awaterR, ir, ir/4, ir, 1
+ fL pvsmorph fboxL, fwaterL, 1, 0
+ fR pvsmorph fboxR, fwaterR, 1, 0
+ aL pvsynth fL
+ aR pvsynth fR
+
+ kamp linseg 1, p3*0.9, 1, p3*0.1, 0
+
+ iamp = 5
+
+ aL *= kamp * iamp
+ aR *= kamp * iamp
+ bus_mix("pvsamp1", aL*random(0, 0.1), aR*random(0, 0.1))
+ bus_mix("reverb1", aL*random(0, 0.1), aR*random(0, 0.1))
+ bus_mix("master", aL, aR)
+endin
+
+#end