#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