75 lignes
10 Kio
Text
75 lignes
10 Kio
Text
|
##
|
||
|
### (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)
|