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/transition_mburn.udo | 186 +++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100755 site/udo/fnml/transition_mburn.udo (limited to 'site/udo/fnml/transition_mburn.udo') diff --git a/site/udo/fnml/transition_mburn.udo b/site/udo/fnml/transition_mburn.udo new file mode 100755 index 0000000..f8d35f1 --- /dev/null +++ b/site/udo/fnml/transition_mburn.udo @@ -0,0 +1,186 @@ +#ifndef UDO_TRANSITION_MBURN +#define UDO_TRANSITION_MBURN ## + + +/* + + TODO: use database loads for sounds ie + + + #include "sound_sdb.udo" + + gifnmt_mbstart[][] sdb_getcollection "MBurn1.Start" + gifnmt_mbmid[][] sdb_getcollection "MBurn1.Middle" + gifnmt_mbend[][] sdb_getcollection "MBurn1.End" +*/ + +#include "sound_db.udo" ; for local sound loads +#include "sequencing_scheduled.udo" +#include "sequencing_melodic_portamento.udo" ; for tuning +#include "wavetables.udo" ; for tuning +#include "bussing.udo" +#include "host_tools.udo" ; for dir_random +#include "uniqueid.udo" ; for channels + + +gifnmt_mbstart[] rdb_loaddir dir_random("2021/mBurn-New/Start") +gifnmt_mbmid[] rdb_loaddir dir_random("2021/mBurn-New/Middle") +gifnmt_mbend[] rdb_loaddir dir_random("2021/mBurn-New/End") + + +/* + Play mBurn transition + + p4 number of beats before next event as specified in iwaitmode + p5 wait mode: -1 = start of next bar, -2 = start of next bargroup , any other = number of total beats before event point (0 = immediate) + p6 tune mode: 0 = none, 1 = all, 2 = random + p7 bus name to send output to (0 = main) +*/ +instr fnmt_mburnplay + istartbeats = p4 + iwaitmode = p5 + itunemode = p6 + + if (p7 == 0) then + Sbus = "main" + else + Sbus = p7 + endif + + p3 = 600 + + if (iwaitmode == -1) then + kwaittrig = bar_lastbeatxof(istartbeats) + elseif (iwaitmode == -2) then + kwaittrig = bargroup_lastbeatxof(istartbeats) + elseif (iwaitmode == 0) then + kwaittrig init 1 + else + kwaittrig = lastbeatxof(iwaitmode, istartbeats) + endif + + if (kwaittrig == 1) then + schedulek "_fnmt_mburnplay", 0, i(gkseq_beattime) * istartbeats, itunemode, Sbus + turnoff + endif + +endin + + +instr _fnmt_mburnitem + ifn = p4 + imode = p5 + itune = p6 + ichannel = p7 + ireverseread = p8 + iampmode = p9 ; ; 0 = linear amp, 1 = exponential amp, 2 = no envelope + isounddur = p10 + + + ; start + if (imode == 1) then + if (iampmode == 0) then + kamp linseg 0, p3, 1 + elseif (iampmode == 1) then + kamp expseg 0.00001, p3, 1 + else + kamp init 1 + endif + + ; middle + elseif (imode == 2) then + if (iampmode == 2) then ; mid = no env choice really + kamp init 1 + else + kamp linseg 1, p3*0.8, 1, p3*0.2, 0 + endif + + ; end + elseif (imode == 3) then + if (iampmode == 0) then + kamp linseg 1, p3, 0 ;linseg 0, p3*0.1, 1, p3*0.5, 1, p3*0.4, 0 + elseif (iampmode == 1) then + kamp expseg 1, p3, 0.00001 + else + kamp init 1 + endif + endif + + atime line 0, p3, isounddur + + if (ireverseread == 1) then + atime = isounddur - atime + endif + + arepitch init 1;linseg 1, p3, 0.5 + + iwinsize = round(random(441, 4410)) + irandwin = iwinsize / 10 + aL, aR sndwarpst 1, atime, arepitch, ifn, 0, iwinsize, irandwin, 4, gifnHalfSine, 1 + + if (itune >= 1) then + ;aL, aR mel_tune aL, aR, gifnSaw, 10, 512, 4 + aL, aR mel_tune_portamento aL, aR, gifnSine, 16, 1024, 4 + endif + aL = aL*kamp + aR = aR*kamp + chnmix aL, sprintf("mburn%dL", ichannel) + chnmix aR, sprintf("mburn%dR", ichannel) +endin + + +instr _fnmt_mburnplay + itunemode = p4 + Sbus = p5 + + ichannelid = uniqueid() + idorelease = 1 + + ibeattime = i(gkseq_beattime) + + istartdur = p3 + imiddur = random(ibeattime, ibeattime*2) + ienddur = (idorelease == 1) ? random(ibeattime, ibeattime*4) : 0 + + + + istartfn[] get_sound gifnmt_mbstart[round(random(0, lenarray(gifnmt_mbstart) - 1))] + imidfn[] get_sound gifnmt_mbmid[round(random(0, lenarray(gifnmt_mbmid) - 1))] + + if (idorelease == 1) then + iendfn[] get_sound gifnmt_mbend[round(random(0, lenarray(gifnmt_mbend) - 1))] + endif + + if (itunemode == 0) then + itunestart = 0 + itunemid = 0 + ituneend = 0 + elseif (itunemode == 1) then + itunestart = 1 + itunemid = 1 + ituneend = 1 + elseif (itunemode == 2) then + itunestart = round(random(0, 1)) + itunemid = round(random(0, 1)) + ituneend = round(random(0, 1)) + endif + + iampmodestart = 0 ; 0 = linear amp, 1 = exponential amp + iampmodeend = 0 ; 0 = linear amp, 1 = exponential amp + ireversereadstart = round(random(0, 1)) + ireversereadend = round(random(0, 1)) + + event_i "i", "_fnmt_mburnitem", 0, istartdur, istartfn[0], 1, itunestart, ichannelid, ireversereadstart, iampmodestart, istartfn[3] + event_i "i", "_fnmt_mburnitem", istartdur, imiddur, imidfn[0], 2, itunemid, ichannelid, 0, 1, imidfn[3] + + if (idorelease == 1) then + event_i "i", "_fnmt_mburnitem", istartdur, ienddur, iendfn[0], 3, ituneend, ichannelid, ireversereadend, iampmodeend, iendfn[3] + xtratim ienddur + 3 + endif + + + aL, aR bus_read sprintf("mburn%d", ichannelid) + bus_mix(Sbus, aL, aR) +endin + +#end -- cgit v1.2.3