From 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 13 Apr 2025 18:48:02 +0100 Subject: initial --- site/udo/fnml/instrument_tikbank.udo | 78 ++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 site/udo/fnml/instrument_tikbank.udo (limited to 'site/udo/fnml/instrument_tikbank.udo') diff --git a/site/udo/fnml/instrument_tikbank.udo b/site/udo/fnml/instrument_tikbank.udo new file mode 100755 index 0000000..895c8b0 --- /dev/null +++ b/site/udo/fnml/instrument_tikbank.udo @@ -0,0 +1,78 @@ +#ifndef UDO_FNMI_TIKBANK +#define UDO_FNMI_TIKBANK ## + + + +#include "sounddb.udo" +#include "bussing.udo" +#include "uniqueid.udo" + + +instr _tik_play + ifn = p4 + ipitch = p5 + ipan = p6 + instanceid = p7 + + aL, aR loscil 0.4, ipitch, ifn, 1 + bus_mix(sprintf("tikaudio%d", instanceid), aL*ipan, aR*(1-ipan)) +endin + + +instr _tik_item + ifn = p4 + idur = p5 + ipitch = p6 + instanceid = p7 + index = p8 + + kfreq chnget sprintf("tikitemfreq_%d_%d", instanceid, index) + ipan = random(0, 1) + + if (kfreq != 0) then + kmetro metro kfreq*2, random(0, 1) + if (kmetro == 1) then + schedulek "_tik_play", 0, idur, ifn, ipitch, ipan, instanceid + endif + endif +endin + + +opcode tik_bank, iaa, i[]ipj + icollection[], inum, ipitch, instanceid xin + + if (instanceid == -1) then + instanceid = uniqueid() + endif + + iusedinstruments[] uniqueinstrnums "_tik_item", inum + + index = 0 + ifileindex = 0 + while (index < lenarray(iusedinstruments)) do + idbindex = icollection[ifileindex] + ifn = gisounddb[idbindex][0] + idur = gisounddb[idbindex][2] / ipitch + + schedule iusedinstruments[index], 0, p3, ifn, idur, ipitch, instanceid, index + if (ifileindex + 1 < lenarray(icollection)) then + ifileindex += 1 + else + ifileindex = 0 + endif + index += 1 + od + + if (release:k() == 1) then + kindex = 0 + while (kindex < lenarray(iusedinstruments)) do + turnoff2 iusedinstruments[kindex], 4, 1 + kindex += 1 + od + endif + + aL, aR bus_read sprintf("tikaudio%d", instanceid) + xout instanceid, aL, aR +endop + +#end -- cgit v1.2.3