From 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 13 Apr 2025 18:48:02 +0100 Subject: initial --- site/app/partialemergence/instruments_hybrid.inc | 254 +++++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 site/app/partialemergence/instruments_hybrid.inc (limited to 'site/app/partialemergence/instruments_hybrid.inc') 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 -- cgit v1.2.3