diff options
author | Richard <q@1bpm.net> | 2025-04-13 18:48:02 +0100 |
---|---|---|
committer | Richard <q@1bpm.net> | 2025-04-13 18:48:02 +0100 |
commit | 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 (patch) | |
tree | 291bd79ce340e67affa755a8a6b4f6a83cce93ea /site/udo/fnml/instrument_sineblips.udo | |
download | apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.gz apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.bz2 apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.zip |
initial
Diffstat (limited to 'site/udo/fnml/instrument_sineblips.udo')
-rwxr-xr-x | site/udo/fnml/instrument_sineblips.udo | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/site/udo/fnml/instrument_sineblips.udo b/site/udo/fnml/instrument_sineblips.udo new file mode 100755 index 0000000..5990909 --- /dev/null +++ b/site/udo/fnml/instrument_sineblips.udo @@ -0,0 +1,81 @@ +#ifndef UDO_FNMI_SINEBLIP
+#define UDO_FNMI_SINEBLIP ##
+/*
+ Stochastic sequenced sine blip instrument
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "bussing.udo"
+#include "sequencing_melodic.udo"
+
+
+/*
+ Randomised sine blip playback internal instrument
+*/
+instr _fnmi_sineblip
+ Sbus = p4
+ inote = mel_randomnote:i() + 12
+ if (random(0, 1) > 0.5) then
+ inote += 12
+ endif
+
+ if (random(0, 1) > 0.5) then
+ inote += 12
+ endif
+
+ if (random(0, 1) > 0.5) then
+ inote += 12
+ endif
+
+ if (random(0, 1) > 0.99) then
+ inote += 1
+ endif
+ ibasefreq = cpsmidinn(inote)
+ ifreqL = ibasefreq + random(-5, 5)
+ ifreqR = ibasefreq + random(-5, 5)
+ iampL = random(0.5, 1)
+ iampR = random(0.5, 1)
+ aL oscil iampL, ifreqL
+ aR oscil iampR, ifreqR
+
+ if (random(0, 1) > 0.5) then
+ kamp line 1, p3, 0
+ else
+ kamp linseg 1, p3*0.9, 1, p3*0.1, 0
+ endif
+ bus_mix(Sbus, aL*0.6*kamp, aR*0.6*kamp)
+endin
+
+
+/*
+ Randomised sine blip playback scheduler
+*/
+instr fnmi_sineblips
+ if (p4 == 0) then
+ Sbus = "main"
+ else
+ Sbus = p4
+ endif
+
+ if (p5 == 0) then
+ iqtime = i(gkseq_quartertime)
+ else
+ iqtime = p5
+ endif
+
+ inum = random(2, 8)
+ itimeindex = random(0, 8)
+ index = 0
+ while (index < inum) do
+ itime = seq_swingtime:i(iqtime * itimeindex, itimeindex)
+ schedule "_fnmi_sineblip", itime, random(0.05, 0.1), Sbus
+ itimeindex += random(1, 4)
+ index += 1
+ od
+ xtratim iqtime * itimeindex
+endin
+
+#end
|