From decb2dc0e9f1167d5cd8fb4d455305be6b9fdfbe Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 4 Oct 2022 00:17:55 +0100 Subject: initial --- include/instruments_hybrid.inc | 184 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100755 include/instruments_hybrid.inc (limited to 'include/instruments_hybrid.inc') 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 -- cgit v1.2.3