Metronome: Difference between revisions

Content added Content deleted
(+C)
No edit summary
Line 94: Line 94:
return 0;
return 0;
}</lang>
}</lang>

=={{header|Liberty BASIC}}==
Requires two supplied wav files for accentuated & standard sounds.
<lang lb>
WindowWidth =230
WindowHeight =220

button #w.b1 "Start", [start], LR, 110, 90, 55, 20
button #w.b2 "Tempo", [tempo], LR, 180, 90, 55, 20
button #w.b3 "Pattern", [pattern], LR, 40, 90, 55, 20

open "Metronome" for graphics_nsb_nf as #w

#w "trapclose quit"
#w "down"
#w "fill darkblue ; backcolor darkblue ; color white"

tempo = 60 ' per minute
interval =1000 /(tempo /60) ' timer works in ms
tickCount = 0 ' cycle counter
running = 1 ' flag for state
bar$ = "HLLL" ' initially strong-weak-weak-weak
count = len( bar$)

wait

sub quit w$
close #w$
end
end sub

[start]
if running =1 then
running =0
#w.b1 "Stop"
#w.b2 "!disable"
#w.b3 "!disable"
else
running =1
#w.b1 "Start"
#w.b2 "!enable"
#w.b3 "!enable"
end if
if running =0 then timer interval, [tick] else timer 0
wait

[tempo]
prompt "New tempo 30...360"; tempo$
tempo =val( tempo$)
tempo =min( tempo, 360)
tempo =max( tempo, 30)
interval =int( 1000 /(tempo /60))
wait

[pattern]
prompt "New Pattern, eg 'HLLL' "; bar$
count =len( bar$)
if count <2 or count >8 then goto [pattern]

wait

[tick]
'beep and flash
#w "place 115 40"

if mid$( bar$, tickCount +1, 1) ="H" then
playwave "mHi.wav", async
#w "backcolor blue ; color white ; circlefilled "; 20 -tickCount *2
else
playwave "mLo.wav", async
#w "backcolor cyan ; circlefilled "; 20 -tickCount *2
end if

#w "place 50 140 ; backcolor darkblue ; color white"
#w "\ "; tempo; " beats /min."
#w "place 85 160"
#w "\"; bar$

#w "place 85 120"
#w "\Beat # "; tickCount +1

#w "place 115 40"
#w "color darkblue"

tickCount =( tickCount +1) mod count

#w "flush"

wait
</lang>