diff options
Diffstat (limited to 'site/app/partialemergence/instruments_water.inc')
-rw-r--r-- | site/app/partialemergence/instruments_water.inc | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/site/app/partialemergence/instruments_water.inc b/site/app/partialemergence/instruments_water.inc new file mode 100644 index 0000000..bf38576 --- /dev/null +++ b/site/app/partialemergence/instruments_water.inc @@ -0,0 +1,240 @@ +#ifndef INC_WATER_INSTR
+#define INC_WATER_INSTR ##
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Partial Emergence
+ by Richard Knight 2022
+
+ Installation submission for the International Csound Conference 2022
+
+ Water instruments
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#include "/soundxdb.udo"
+#include "/array_tools.udo"
+#include "/sequencing_melodic.udo"
+#include "/sequencing_melodic_portamento.udo"
+#include "/bussing.udo"
+#include "/frequency_tools.udo"
+#include "/wavetables.udo"
+
+; sound collections
+gisnd_waterpaddling[] sounddb_getcollection "Water.Paddling"
+gisnd_waterdrop[] sounddb_getcollection "Water.Droplet"
+
+
+instr play_waterpaddling1
+ ifileid = arr_random(gisnd_waterpaddling)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+
+ kfreqshift init -100
+ ipitch = random(0.5, 1.2)
+ ktime init random(0, idur)
+ aL, aR mincer a(port(ktime, 0.1, random(0, idur))), 1, ipitch, ifn, 0, pow(2, round(random(4, 7))) ;64
+
+ aL, aR freqshift1 aL, aR, port(kfreqshift, 0.2)
+
+ if (random:k(0, 1) > 0.2) then
+ ktime = random:k(0, idur)
+ endif
+
+ if (random:k(0, 1) > 0.2) then
+ kfreqshift = random(-1000, -100)
+ endif
+
+ kamp linseg 1, p3*0.8, 1, p3*0.2, 0
+ aL *= kamp * 1.8
+ aR *= kamp * 1.8
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("delay1", aL*random(0, 0.3), aR*random(0, 0.3))
+ endif
+
+ if (random(0, 1) > 0.3) then
+ bus_mix("reverb1", aL*random(0.2, 0.8), aR*random(0.2, 0.8))
+ endif
+
+ if (random(0, 1) > 0.5) then
+ bus_mix("pvsamp1", aL*0.6, aR*0.6)
+ endif
+
+ bus_mix("master", aL, aR)
+endin
+
+
+instr _phrase_waterbubbler1_item
+ ipitch = p4
+ iamp = p5
+ ioutmain = p6
+ ifileid = arr_random(gisnd_waterdrop)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ p3 = idur / ipitch
+ kamp linseg 1, p3*0.8, 1, p3*0.2, 0
+ kamp *= iamp
+ aL, aR loscil kamp, ipitch, ifn, 1
+ aL, aR freqshift1 aL, aR, random(-1000, -400)
+ ipan = random(0, 1)
+
+ if (random(0, 1) > 0.5) then
+ aLr resony aL, table:k(0, gimel_freqs)*2, 4, 16, 10
+ aRr resony aL, table:k(0, gimel_freqs)*2, 4, 16, 10
+ aL balance aLr, aL
+ aR balance aRr, aR
+ aL dcblock aL
+ aR dcblock aR
+ endif
+
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("delay1", aL*0.2, aR*0.2)
+ endif
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("reverb1", aL*0.5, aR*0.5)
+ endif
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("pvsamp1", aL, aR)
+ endif
+
+ Schannel = (ioutmain == 1) ? "main" : "phrase_waterbubbler"
+ bus_mix(Schannel, aL*(1-ipan), aR*ipan)
+endin
+
+
+instr phrase_waterbubbler1
+ ioutmain = p4
+ kamp linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ iamp = random(0.25, 0.5)
+ kamp *= iamp
+ kfreq = abs:k(oscil:k(30, 0.01)) + 10
+ kmetro metro kfreq
+ if (kmetro == 1) then
+ schedulek("_phrase_waterbubbler1_item", random:k(0, 0.2), 1, random:k(0.8, 1.2), random:k(0.5, 1)*kamp, ioutmain)
+ endif
+endin
+
+
+instr note_drop1
+ ifileid = arr_random(gisnd_waterdrop)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ ipitch = random(0.6, 1.3)
+ p3 = idur / ipitch
+ aL, aR loscil 1, ipitch, ifn, 1
+ kamp linseg 1, p3*0.9, 1, p3*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*random(0, 0.2), aR*random(0, 0.2))
+ bus_mix("master", aL, aR)
+endin
+
+
+instr _phrase_droproll1_item
+ ifileid = arr_random(gisnd_waterdrop)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ ipitch = random(0.1, 1.3)
+ p3 = idur / ipitch
+ aL, aR loscil 1, ipitch, ifn, 1
+ kamp linseg 1, p3*0.9, 1, p3*0.1, 0
+ ipan = random(0, 1)
+ aL *= kamp * ipan
+ aR *= kamp * (1-ipan)
+ bus_mix("droproll1_item", aL, aR)
+ bus_mix("pvsamp1", aL*random(0, 0.5), aR*random(0, 0.5))
+endin
+
+instr phrase_droproll1
+ iamp = p4
+ ifreq1 = random(0.00001, 20)
+ kmetrofreq expseg ifreq1, p3, 19.99 - ifreq1
+ klpf linseg random(4000, 22050), p3, random(4000, 22050)
+ kamp linseg 0, p3*0.3, 1, p3*0.4, 1, p3*0.3, 0
+ kmetro metro kmetrofreq
+ if (kmetro == 1) then
+ schedulek("_phrase_droproll1_item", random:k(0, 0.2), 1)
+ endif
+
+ aL, aR bus_read "droproll1_item"
+ aL butterlp aL, klpf
+ aR butterlp aR, klpf
+ aL *= kamp * 0.7 * iamp
+ aR *= kamp * 0.7 * iamp
+ bus_mix("reverb1", aL*0.2, aR*0.2)
+ bus_mix("master", aL, aR)
+endin
+
+
+instr transition_droplets1
+ iriseratio = p4
+ kamp expseg 0.00001, p3*iriseratio, 1, p3*(1-iriseratio), 0.00001
+ kmetro metro 30
+ if (kmetro == 1) then
+ schedulek("_phrase_droproll1_item", random:k(0, 0.2), 1)
+ endif
+
+ aL, aR bus_read "droproll1_item"
+ aL *= kamp * 2.5
+ aR *= kamp * 2.5
+ bus_mix("reverb1", aL*0.43, aR*0.43)
+ bus_mix("master", aL, aR)
+endin
+
+
+instr transition_waterbubbler1
+ ioutmain = p4
+ iriseratio = p4
+ kamp expseg 0.00001, p3*iriseratio, 1, p3*(1-iriseratio), 0.00001
+ kfreq = abs:k(oscil:k(30, 0.01)) + 10
+ kmetro metro kfreq
+ if (kmetro == 1) then
+ schedulek("_phrase_waterbubbler1_item", random:k(0, 0.2), 1, random:k(0.8, 1.2), random:k(0.5, 1)*kamp, 1)
+ endif
+endin
+
+
+instr phrase_dropstretch1
+ ireadpitch = p4
+ ido_reson = p5
+ ifades = p6
+ iresonfreqratio = p7
+ ifileid = arr_random(gisnd_waterdrop)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ istart = random(0, idur*0.2)
+ iend = random(idur*0.4, idur*0.8) ; 0.3, 0.4
+ atime = abs:a(oscil:a(iend-istart, random(0.001, 0.1), gifnSine, random(0, 1)))
+ kenv = abs:k(oscil:k(0.8, random(0.01, 0.1), gifnSine, random(0, 1))) + 0.2
+
+ aL, aR sndwarpst 1, atime, ireadpitch, ifn, istart, 441*random(1, 10), 44*random(1, 10), 8, gifnHalfSine, 1
+
+ if (ifades == 1) then
+ kamp linseg 0, p3*0.25, 1, p3*0.5, 1, p3*0.25, 0
+ else
+ kamp linsegr 1, p3, 1, 2, 0
+ endif
+ aL *= kamp * kenv
+ aR *= kamp * kenv
+
+ if (ido_reson == 1) then
+ aLr resony aL, table:k(0, gimel_freqs)*2*iresonfreqratio, 2, 16, 10
+ aRr resony aR, table:k(1, gimel_freqs)*2*iresonfreqratio, 2, 16, 10 ; *4*
+ aL balance butterhp(aLr, 50), aL
+ aR balance butterhp(aRr, 50), aR
+ endif
+
+ aL pareq aL, 1000, 0.4, 0.75
+ aR pareq aR, 1000, 0.4, 0.75
+
+ bus_mix("master", aL, aR)
+endin
+
+
+#end
|