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/transitional/base.udo | 141 ++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100755 site/udo/fnml/transitional/base.udo (limited to 'site/udo/fnml/transitional/base.udo') diff --git a/site/udo/fnml/transitional/base.udo b/site/udo/fnml/transitional/base.udo new file mode 100755 index 0000000..ba40fbc --- /dev/null +++ b/site/udo/fnml/transitional/base.udo @@ -0,0 +1,141 @@ +#ifndef UDO_FNML_TRANSITIONBASE +#define UDO_FNML_TRANSITIONBASE ## + +instr fnm_transitionplayer + if (gifirsttransition == 1) then + StransInstrument = "fnm_trans5" + gifirsttransition = 0 + else + StransInstrument = arr_random(gSfnm_transitionitems) + endif + schedule StransInstrument, 0, 36000 + + kreleasing init 0 + if (release:k() == 1 && kreleasing == 0) then + turnoff2 StransInstrument, 0, 1 + kreleasing = 1 + endif + aL, aR bus_read "fnm_transition" + bus_mix("master", aL, aR) +endin + +instr fnm_sectionplayer + SnoteInstrument = arr_random(gSfnm_chorditems) + SbassInstrument = arr_random(gSfnm_bassitems) + SaugInstrument = arr_random(gSfnm_augmentitems) + iplaybass = (random(0, 1) >= 0.44) ? 1 : 0 + iplayaugment = (random(0, 1) >= 0.34) ? 1 : 0 + + + if (random(0, 1) >= 0.5) then + ifadeintime = random(0.1, 3) + else + ifadeintime = 0 + endif + index = 0 + while (index < table:i(0, gimel_current_notes)) do + inoteaugment = (random(0, 1) >= 0.7) ? 12 : 0 + schedule SnoteInstrument, 0, p3, table:i(index+1, gimel_current_notes) + inoteaugment, ifadeintime + index += 1 + od + if (iplaybass == 1) then + ibassnoteindex = round(random(1, 3)) + schedule SbassInstrument, 0, p3, table:i(ibassnoteindex, gimel_current_notes) - 24 + endif + if (iplayaugment == 1) then + schedule SaugInstrument, 0, p3 + endif + + aL, aR bus_read "fnm_chordnote" + if (random(0, 1) > 0.6) then + aLc, aRc simplechorus aL, aR, 0.004, 0.001 + aL += aLc + aR += aRc + endif + aL butterhp aL, 120 + aR butterhp aR, 120 + + if (iplaybass == 1) then + aLb, aRb bus_read "fnm_chordbass" + aL += aLb + aR += aRb + endif + + if (iplayaugment == 1) then + aLa, aRa bus_read "fnm_augment" + aL += aLa + aR += aRa + endif + + kamp linseg 1, p3, 1, 0.1, 0 + aL *= kamp + aR *= kamp + + kduck = port(gkduck, 0.1) + aL *= (1 - kduck) + aR *= (1 - kduck) + bus_mix("master", aL*0.8, aR*0.8) + + kreleasing init 0 + if (release:k() == 1 && kreleasing == 0) then + turnoff2 SnoteInstrument, 0, 1 + if (iplaybass == 1) then + turnoff2 SbassInstrument, 0, 1 + endif + if (iplayaugment == 1) then + turnoff2 SaugInstrument, 0, 1 + endif + kreleasing = 1 + endif +endin + + +instr fnm_sectionmanager + gkmel_pause = 1 + + ksectionstart init 0.01 + ksectionchange = 0 + ktransitioner = chnget:k("fnm_transition") + kadvance = chnget:k("fnm_advance") + krepeat = chnget:k("fnm_repeat") + + if (changed:k(ktransitioner) == 1) then + if (ktransitioner == 0) then + turnoff2 "fnm_transitionplayer", 0, 1 + if (random:k(0, 1) > 0.5) then ; have ultimate transition + if (random:k(0, 1) > 0.5) then ; no other output during ultimate transition + turnoff2 "fnm_sectionplayer", 0, 1 + endif + gkutransitiontime = random:k(0.2, 1) + schedulek("fnm_ultimatetransitionplayer", 0, gkutransitiontime) + ksectionstart = gkutransitiontime + else + gkutransitiontime = 0 + ksectionstart = 0.01 + endif + ksectionchange = 1 + else + schedulek("fnm_transitionplayer", 0, 36000) + endif + endif + + if (ksectionchange == 1 || (changed:k(kadvance) == 1 && kadvance == 1) || (changed:k(krepeat) == 1 && krepeat == 1)) then + if (krepeat == 1) then + ksectionstart = 0 + endif + turnoff2 "fnm_sectionplayer", 0, 1 + if (krepeat != 1) then + gkmel_advance_trig = 1 + endif + schedulek("fnm_sectionplayer", ksectionstart, 36000) + endif + + kreleasing init 0 + if (release:k() == 1 && kreleasing == 0) then + turnoff2 "fnm_sectionplayer", 0, 1 + kreleasing = 1 + endif + +endin + +#end \ No newline at end of file -- cgit v1.2.3