aboutsummaryrefslogtreecommitdiff
path: root/site/app/partialemergence/instruments_hybrid.inc
diff options
context:
space:
mode:
Diffstat (limited to 'site/app/partialemergence/instruments_hybrid.inc')
-rw-r--r--site/app/partialemergence/instruments_hybrid.inc254
1 files changed, 254 insertions, 0 deletions
diff --git a/site/app/partialemergence/instruments_hybrid.inc b/site/app/partialemergence/instruments_hybrid.inc
new file mode 100644
index 0000000..1d9f77f
--- /dev/null
+++ b/site/app/partialemergence/instruments_hybrid.inc
@@ -0,0 +1,254 @@
+#ifndef INC_HYBRID_INSTR
+#define INC_HYBRID_INSTR ##
+
+#include "/instruments_water.inc"
+#include "/instruments_idiophone.inc"
+#include "/array_tools.udo"
+#include "/wavetables.udo"
+#include "/soundxdb.udo"
+#include "/sequencing_melodic.udo"
+
+; reson
+instr note_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.2, 0.5)
+ 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
+
+ aLr pareq aLr, ifreq, 0.4, 0.7
+ aRr pareq aRr, ifreq, 0.4, 0.7
+
+ 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
+
+
+instr phrase_hybrid1
+ if (random(0, 1) > 0.5) then
+ ifreqstart = random(1, 10)
+ ifreqend = random(1, 10)
+ else
+ ifreqstart = random(1, 10)
+ ifreqend = random(1, 10)
+ endif
+ kfreq linseg ifreqstart, p3, ifreqend
+
+ kamp init 1
+ ktrig metro kfreq
+ if (ktrig == 1) then
+ knote = min:k(mel_randomnote:k() + (round:k(random:k(-2, 2)) * 12), 127)
+ if (random:k(0, 1) >= 0.5) then
+ schedulek("note_idiophone1", random:k(0, 0.1), 0.1, knote, kamp*2)
+ else
+ schedulek("note_hybrid1", random:k(0, 0.1), 0.1, knote)
+ endif
+ endif
+endin
+
+
+/*
+ Chord changing from idiophone to drops
+
+ p4 one note (0 = play one note, 1 = play chord)
+*/
+instr phrase_hybrid2
+ ionenote = p4
+
+ if (ionenote == 1) then
+ knote init mel_randomnote() + (round(random(-2, 4)) * 12)
+ endif
+
+ if (random(0, 1) > 0.5) then
+ ifreqstart = random(10, 30)
+ ifreqend = random(2, 10)
+ else
+ ifreqstart = random(2, 10)
+ ifreqend = random(10, 30)
+ endif
+ kfreq linseg ifreqstart, p3, ifreqend
+
+ kamp linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ ktransition line 1, p3, 0
+
+ ktrig metro kfreq
+ if (ktrig == 1) then
+ if (random:k(0, 1) >= ktransition) then
+ if (ionenote != 1) then
+ knote = mel_randomnote:k() + (round:k(random:k(-2, 4)) * 12)
+ endif
+ schedulek("note_idiophone1", random:k(0, 0.1), 0.1, min:k(knote, 127), kamp*2)
+ else
+ schedulek("note_drop1", random:k(0, 0.1), 0.1)
+ endif
+ endif
+endin
+
+
+opcode portchord_drop, aa, iio
+ ifreqmult, ireadmode, 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 (ireadmode == 0) then
+ aLm, aRm mincer atime*idur, 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, 2, random(8, 16), 10
+ aR resony aRm, kfreq*ifreqmult, 2, 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, ireadmode, index + 1
+ aL += aLx
+ aR += aRx
+ endif
+ xout aL, aR
+endop
+
+
+
+instr phrase_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, 1
+ ;aL2, aR2 portchord_drop 1, 1
+ aL3, aR3 portchord_drop 4, 1
+ k3amp = abs:k(oscil:k(1, 0.1))
+
+ ;aL = (aL1 + aL2 + (aL3 * port(k3amp, 1))) * kamp
+ ;aR = (aR1 + aR2 + (aR3 * port(k3amp, 1))) * kamp
+
+ aL = (aL1 + (aL3 * port(k3amp, 1))) * kamp
+ aR = (aR1 + (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", aL3*kreverb3, aR3*kreverb3)
+ bus_mix("master", aL, aR)
+endin
+
+
+/*
+; pvsmorph
+instr note_hybrid1x
+ inote = p4
+
+ ifileidBox, ipitchBox sounddb_mel_nearestnote gicol_idiophone, 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