## ### (c)Peter 'grin' Gervai, 2017 ## ## CC_BY-SA-4.0 / GPLv3+ ## :local chan1 "880,2,0,1,880,2,0,4,880,2,0,4,698,2,0,1,880,2,0,4,1047,2,0,22,698,2,0,7,523,2,0,7,440,2,0,7,587,2,0,4,659,2,0,4,622,2,0,1,587,2,0,4,523,2,0,2,880,2,0,2,1047,2,0,2,1175,2,0,4,932,2,0,1,1047,2,0,4,880,2,0,4,698,2,0,1,784,2,0,1,659,2,0,7,698,2,0,7,523,2,0,7,440,2,0,7,587,2,0,4,659,2,0,4,622,2,0,1,587,2,0,4,523,2,0,2,880,2,0,2,1047,2,0,2,1175,2,0,4,932,2,0,1,1047,2,0,4,880,2,0,4,698,2,0,1,784,2,0,1,659,2,0,13,1047,2,0,1,988,2,0,1,932,2,0,1,831,2,0,4,880,2,0,4,554,2,0,1,587,2,0,1,698,2,0,4,587,2,0,1,698,2,0,1,784,2,0,7,1047,2,0,1,988,2,0,1,932,2,0,1,831,2,0,4,880,2,0,4,1397,2,0,4,1397,2,0,1,1397,2,0,16,1047,2,0,1,988,2,0,1,932,2,0,1,831,2,0,4,880,2,0,4,554,2,0,1,587,2,0,1,698,2,0,4,587,2,0,1,698,2,0,1,784,2,0,7,831,2,0,7,784,2,0,7,698,2,0,28,1047,2,0,1,988,2,0,1,932,2,0,1,831,2,0,4,880,2,0,4,554,2,0,1,587,2,0,1,698,2,0,4,587,2,0,1,698,2,0,1,784,2,0,7,1047,2,0,1,988,2,0,1,932,2,0,1,831,2,0,4,880,2,0,4,1397,2,0,4,1397,2,0,1,1397,2,0,16,1047,2,0,1,988,2,0,1,932,2,0,1,831,2,0,4,880,2,0,4,554,2,0,1,587,2,0,1,698,2,0,4,587,2,0,1,698,2,0,1,784,2,0,7,831,2,0,7,784,2,0,7,698,2,0,22,698,2,0,1,698,2,0,4,698,2,0,4,698,2,0,1,784,2,0,4,880,2,0,1,698,2,0,4,587,2,0,1,523,2,0,10,698,2,0,1,698,2,0,4,698,2,0,4,698,2,0,1,784,2,0,1,880,2,0,25,698,2,0,1,698,2,0,4,698,2,0,4,698,2,0,1,784,2,0,4,880,2,0,1,698,2,0,4,587,2,0,1,523,2,0,10,880,2,0,1,880,2,0,4,880,2,0,4,698,2,0,1,880,2,0,4,1047,2,0,22,698,2,0,7,523,2,0,7,440,2,0,7,587,2,0,4,659,2,0,4,622,2,0,1,587,2,0,4,523,2,0,2,880,2,0,2,1047,2,0,2,1175,2,0,4,932,2,0,1,1047,2,0,4,880,2,0,4,698,2,0,1,784,2,0,1,659,2,0,7,698,2,0,7,523,2,0,7,440,2,0,7,587,2,0,4,659,2,0,4,622,2,0,1,587,2,0,4,523,2,0,2,880,2,0,2,1047,2,0,2,1175,2,0,4,932,2,0,1,1047,2,0,4,880,2,0,4,698,2,0,1,784,2,0,1,659,2,0,7,880,2,0,1,698,2,0,4,523,2,0,7,554,2,0,4,587,2,0,1,932,2,0,4,932,2,0,1,587,2,0,10,659,2,0,2,1175,2,0,2,1175,2,0,2,1175,2,0,2,1047,2,0,2,932,2,0,2,880,2,0,1,698,2,0,4,587,2,0,1,523,2,0,10,880,2,0,1,698,2,0,4,523,2,0,7,554,2,0,4,587,2,0,1,932,2,0,4,932,2,0,1,587,2,0,10,659,2,0,1,932,2,0,4,932,2,0,1,932,2,0,2,880,2,0,2,784,2,0,2,698,2,0,22,880,2,0,1,698,2,0,4,523,2,0,7,554,2,0,4,587,2,0,1,932,2,0,4,932,2,0,1,587,2,0,10,659,2,0,2,1175,2,0,2,1175,2,0,2,1175,2,0,2,1047,2,0,2,932,2,0,2,880,2,0,1,698,2,0,4,587,2,0,1,523,2,0,10,880,2,0,1,698,2,0,4,523,2,0,7,554,2,0,4,587,2,0,1,932,2,0,4,932,2,0,1,587,2,0,10,659,2,0,1,932,2,0,4,932,2,0,1,932,2,0,2,880,2,0,2,784,2,0,2,698,2,0,22,698,2,0,1,698,2,0,4,698,2,0,4,698,2,0,1,784,2,0,4,880,2,0,1,698,2,0,4,587,2,0,1,523,2,0,10,698,2,0,1,698,2,0,4,698,2,0,4,698,2,0,1,784,2,0,1,880,2,0,25,698,2,0,1,698,2,0,4,698,2,0,4,698,2,0,1,784,2,0,4,880,2,0,1,698,2,0,4,587,2,0,1,523,2,0,10,880,2,0,1,880,2,0,4,880,2,0,4,698,2,0,1,880,2,0,4,1047,2,0,22,880,2,0,1,698,2,0,4,523,2,0,7,554,2,0,4,587,2,0,1,932,2,0,4,932,2,0,1,587,2,0,10,659,2,0,2,1175,2,0,2,1175,2,0,2,1175,2,0,2,1047,2,0,2,932,2,0,2,880,2,0,1,698,2,0,4,587,2,0,1,523,2,0,10,880,2,0,1,698,2,0,4,523,2,0,7,554,2,0,4,587,2,0,1,932,2,0,4,932,2,0,1,587,2,0,10,659,2,0,1,932,2,0,4,932,2,0,1,932,2,0,2,880,2,0,2,784,2,0,2,698,2," :local chan2 "494,2,0,1,494,2,0,4,494,2,0,4,494,2,0,1,494,2,0,4,659,2,0,10,523,2,0,10,440,2,0,7,349,2,0,7,262,2,0,7,349,2,0,4,392,2,0,4,370,2,0,1,349,2,0,4,349,2,0,2,523,2,0,2,659,2,0,2,698,2,0,4,587,2,0,1,659,2,0,4,587,2,0,4,440,2,0,1,466,2,0,1,392,2,0,7,440,2,0,7,349,2,0,7,262,2,0,7,349,2,0,4,392,2,0,4,370,2,0,1,349,2,0,4,349,2,0,2,523,2,0,2,659,2,0,2,698,2,0,4,587,2,0,1,659,2,0,4,587,2,0,4,440,2,0,1,466,2,0,1,392,2,0,13,880,2,0,1,831,2,0,1,784,2,0,1,659,2,0,4,698,2,0,4,440,2,0,1,466,2,0,1,523,2,0,4,349,2,0,1,440,2,0,1,466,2,0,7,880,2,0,1,831,2,0,1,784,2,0,1,659,2,0,4,698,2,0,4,932,2,0,4,932,2,0,1,932,2,0,16,880,2,0,1,831,2,0,1,784,2,0,1,659,2,0,4,698,2,0,4,440,2,0,1,466,2,0,1,523,2,0,4,349,2,0,1,440,2,0,1,466,2,0,7,554,2,0,7,466,2,0,7,440,2,0,28,880,2,0,1,831,2,0,1,784,2,0,1,659,2,0,4,698,2,0,4,440,2,0,1,466,2,0,1,523,2,0,4,349,2,0,1,440,2,0,1,466,2,0,7,880,2,0,1,831,2,0,1,784,2,0,1,659,2,0,4,698,2,0,4,932,2,0,4,932,2,0,1,932,2,0,16,880,2,0,1,831,2,0,1,784,2,0,1,659,2,0,4,698,2,0,4,440,2,0,1,466,2,0,1,523,2,0,4,349,2,0,1,440,2,0,1,466,2,0,7,554,2,0,7,466,2,0,7,440,2,0,22,554,2,0,1,554,2,0,4,554,2,0,4,554,2,0,1,622,2,0,4,523,2,0,1,440,2,0,4,440,2,0,1,349,2,0,10,554,2,0,1,554,2,0,4,554,2,0,4,554,2,0,1,622,2,0,1,523,2,0,25,554,2,0,1,554,2,0,4,554,2,0,4,554,2,0,1,622,2,0,4,523,2,0,1,440,2,0,4,440,2,0,1,349,2,0,10,494,2,0,1,494,2,0,4,494,2,0,4,494,2,0,1,494,2,0,4,659,2,0,10,523,2,0,10,440,2,0,7,349,2,0,7,262,2,0,7,349,2,0,4,392,2,0,4,370,2,0,1,349,2,0,4,349,2,0,2,523,2,0,2,659,2,0,2,698,2,0,4,587,2,0,1,659,2,0,4,587,2,0,4,440,2,0,1,466,2,0,1,392,2,0,7,440,2,0,7,349,2,0,7,262,2,0,7,349,2,0,4,392,2,0,4,370,2,0,1,349,2,0,4,349,2,0,2,523,2,0,2,659,2,0,2,698,2,0,4,587,2,0,1,659,2,0,4,587,2,0,4,440,2,0,1,466,2,0,1,392,2,0,7,698,2,0,1,587,2,0,4,440,2,0,7,440,2,0,4,466,2,0,1,698,2,0,4,698,2,0,1,466,2,0,10,523,2,0,2,932,2,0,2,932,2,0,2,932,2,0,2,880,2,0,2,784,2,0,2,698,2,0,1,587,2,0,4,466,2,0,1,440,2,0,10,698,2,0,1,587,2,0,4,440,2,0,7,440,2,0,4,466,2,0,1,698,2,0,4,698,2,0,1,466,2,0,10,523,2,0,1,784,2,0,4,784,2,0,1,784,2,0,2,698,2,0,2,659,2,0,2,523,2,0,1,440,2,0,4,440,2,0,1,349,2,0,10,698,2,0,1,587,2,0,4,440,2,0,7,440,2,0,4,466,2,0,1,698,2,0,4,698,2,0,1,466,2,0,10,523,2,0,2,932,2,0,2,932,2,0,2,932,2,0,2,880,2,0,2,784,2,0,2,698,2,0,1,587,2,0,4,466,2,0,1,440,2,0,10,698,2,0,1,587,2,0,4,440,2,0,7,440,2,0,4,466,2,0,1,698,2,0,4,698,2,0,1,466,2,0,10,523,2,0,1,784,2,0,4,784,2,0,1,784,2,0,2,698,2,0,2,659,2,0,2,523,2,0,1,440,2,0,4,440,2,0,1,349,2,0,10,554,2,0,1,554,2,0,4,554,2,0,4,554,2,0,1,622,2,0,4,523,2,0,1,440,2,0,4,440,2,0,1,349,2,0,10,554,2,0,1,554,2,0,4,554,2,0,4,554,2,0,1,622,2,0,1,523,2,0,25,554,2,0,1,554,2,0,4,554,2,0,4,554,2,0,1,622,2,0,4,523,2,0,1,440,2,0,4,440,2,0,1,349,2,0,10,494,2,0,1,494,2,0,4,494,2,0,4,494,2,0,1,494,2,0,4,659,2,0,10,523,2,0,10,698,2,0,1,587,2,0,4,440,2,0,7,440,2,0,4,466,2,0,1,698,2,0,4,698,2,0,1,466,2,0,10,523,2,0,2,932,2,0,2,932,2,0,2,932,2,0,2,880,2,0,2,784,2,0,2,698,2,0,1,587,2,0,4,466,2,0,1,440,2,0,10,698,2,0,1,587,2,0,4,440,2,0,7,440,2,0,4,466,2,0,1,698,2,0,4,698,2,0,1,466,2,0,10,523,2,0,1,784,2,0,4,784,2,0,1,784,2,0,2,698,2,0,2,659,2,0,2,523,2,0,1,440,2,0,4,440,2,0,1,349,2," :local chan3 "196,2,0,1,196,2,0,4,196,2,0,4,196,2,0,1,196,2,0,4,523,2,0,10,262,2,0,10,262,2,0,7,220,2,0,7,175,2,0,7,233,2,0,4,262,2,0,4,247,2,0,1,233,2,0,4,220,2,0,2,349,2,0,2,440,2,0,2,466,2,0,4,392,2,0,1,440,2,0,4,349,2,0,4,294,2,0,1,330,2,0,1,262,2,0,7,262,2,0,7,220,2,0,7,175,2,0,7,233,2,0,4,262,2,0,4,247,2,0,1,233,2,0,4,220,2,0,2,349,2,0,2,440,2,0,2,466,2,0,4,392,2,0,1,440,2,0,4,349,2,0,4,294,2,0,1,330,2,0,1,262,2,0,7,175,2,0,7,262,2,0,7,349,2,0,4,233,2,0,7,349,2,0,1,349,2,0,4,233,2,0,4,175,2,0,7,220,2,0,7,262,2,0,1,349,2,0,4,1047,2,0,4,1047,2,0,1,1047,2,0,4,262,2,0,4,175,2,0,7,262,2,0,7,349,2,0,4,233,2,0,7,349,2,0,1,349,2,0,4,233,2,0,4,175,2,0,4,277,2,0,7,311,2,0,7,349,2,0,7,262,2,0,1,262,2,0,4,175,2,0,4,175,2,0,7,262,2,0,7,349,2,0,4,233,2,0,7,349,2,0,1,349,2,0,4,233,2,0,4,175,2,0,7,220,2,0,7,262,2,0,1,349,2,0,4,1047,2,0,4,1047,2,0,1,1047,2,0,4,262,2,0,4,175,2,0,7,262,2,0,7,349,2,0,4,233,2,0,7,349,2,0,1,349,2,0,4,233,2,0,4,175,2,0,4,277,2,0,7,311,2,0,7,349,2,0,7,262,2,0,1,262,2,0,4,175,2,0,4,139,2,0,7,208,2,0,7,277,2,0,4,262,2,0,7,175,2,0,7,131,2,0,4,139,2,0,7,208,2,0,7,277,2,0,4,262,2,0,7,175,2,0,7,131,2,0,4,139,2,0,7,208,2,0,7,277,2,0,4,262,2,0,7,175,2,0,7,131,2,0,4,196,2,0,1,196,2,0,4,196,2,0,4,196,2,0,1,196,2,0,4,523,2,0,10,262,2,0,10,262,2,0,7,220,2,0,7,175,2,0,7,233,2,0,4,262,2,0,4,247,2,0,1,233,2,0,4,220,2,0,2,349,2,0,2,440,2,0,2,466,2,0,4,392,2,0,1,440,2,0,4,349,2,0,4,294,2,0,1,330,2,0,1,262,2,0,7,262,2,0,7,220,2,0,7,175,2,0,7,233,2,0,4,262,2,0,4,247,2,0,1,233,2,0,4,220,2,0,2,349,2,0,2,440,2,0,2,466,2,0,4,392,2,0,1,440,2,0,4,349,2,0,4,294,2,0,1,330,2,0,1,262,2,0,7,175,2,0,7,247,2,0,1,262,2,0,4,349,2,0,4,233,2,0,4,233,2,0,4,349,2,0,1,349,2,0,1,233,2,0,4,196,2,0,7,233,2,0,1,262,2,0,4,330,2,0,4,262,2,0,4,262,2,0,4,349,2,0,1,349,2,0,1,262,2,0,4,175,2,0,7,247,2,0,1,262,2,0,4,349,2,0,4,233,2,0,4,233,2,0,4,349,2,0,1,349,2,0,1,233,2,0,4,262,2,0,1,262,2,0,4,262,2,0,1,262,2,0,2,294,2,0,2,330,2,0,2,349,2,0,4,262,2,0,4,175,2,0,10,175,2,0,7,247,2,0,1,262,2,0,4,349,2,0,4,233,2,0,4,233,2,0,4,349,2,0,1,349,2,0,1,233,2,0,4,196,2,0,7,233,2,0,1,262,2,0,4,330,2,0,4,262,2,0,4,262,2,0,4,349,2,0,1,349,2,0,1,262,2,0,4,175,2,0,7,247,2,0,1,262,2,0,4,349,2,0,4,233,2,0,4,233,2,0,4,349,2,0,1,349,2,0,1,233,2,0,4,262,2,0,1,262,2,0,4,262,2,0,1,262,2,0,2,294,2,0,2,330,2,0,2,349,2,0,4,262,2,0,4,175,2,0,10,139,2,0,7,208,2,0,7,277,2,0,4,262,2,0,7,175,2,0,7,131,2,0,4,139,2,0,7,208,2,0,7,277,2,0,4,262,2,0,7,175,2,0,7,131,2,0,4,139,2,0,7,208,2,0,7,277,2,0,4,262,2,0,7,175,2,0,7,131,2,0,4,196,2,0,1,196,2,0,4,196,2,0,4,196,2,0,1,196,2,0,4,523,2,0,10,262,2,0,10,175,2,0,7,247,2,0,1,262,2,0,4,349,2,0,4,233,2,0,4,233,2,0,4,349,2,0,1,349,2,0,1,233,2,0,4,196,2,0,7,233,2,0,1,262,2,0,4,330,2,0,4,262,2,0,4,262,2,0,4,349,2,0,1,349,2,0,1,262,2,0,4,175,2,0,7,247,2,0,1,262,2,0,4,349,2,0,4,233,2,0,4,233,2,0,4,349,2,0,1,349,2,0,1,233,2,0,4,262,2,0,1,262,2,0,4,262,2,0,1,262,2,0,2,294,2,0,2,330,2,0,2,349,2,0,4,262,2,0,4,175,2," # slot timespan (~20ms) :local st 20 # speed (~500ms) :local spd ( $st * 2 ) :local slotlen ($spd / $st / 3) :local slottime ($st . "ms") :local c1 [:toarray $chan1] :local c2 [:toarray $chan2] :local c3 [:toarray $chan3] :local chan ({$c1},{$c2}) :set $chan [:put ($chan, {$c3})] :local voice {0;0;0} # slot left for a tune to go :local sleft :set $sleft {0;0;0} # position in a channel :local cpointer # this should fucking zero it, why doesn't it :set $cpointer {0;0;0} # force it down into its throat :for i from=0 to=2 do={ :set ($cpointer->$i) 0 :set ($sleft->$i) 0 :put ("Cpointer $i = " . ($cpointer->$i)) } :local running 1 :do { # prepare actual voice for every channel :for c from=0 to=2 do={ :if ( ($sleft->$c) > 1 ) do={ # same voice :set ($sleft->$c) (($sleft->$c) - 1) #:put ( "keep c=$c s=" . ($sleft->$c)) } else={ # new voice #:put (">> c=$c p=" . ($cpointer->$c) ." v=" . ($chan->$c->($cpointer->$c))) :set ($voice->$c) ($chan->$c->($cpointer->$c)) :set ($cpointer->$c) (($cpointer->$c)+1) #:put (">> c=$c p=" . ($cpointer->$c) ." s=" . ($chan->$c->($cpointer->$c))) :set ($sleft->$c) ($chan->$c->($cpointer->$c)) :set ($cpointer->$c) (($cpointer->$c)+1) :if ( $cpointer->$c > [:len ($chan->$c)] ) do={ :set $running 0 } } } :for i from=0 to=$slotlen do={ :for c from=0 to=2 do={ :if ( ($voice->$c) > 0 ) do={ :beep length=$slottime frequency=($voice->$c) } :delay $slottime } } #:set $running 0 } while=( $running = 1)