21 lines
464 B
Plaintext
21 lines
464 B
Plaintext
func metronome (beats_per_minute = 72, beats_per_bar = 4) {
|
|
|
|
var counter = 0
|
|
var duration = 60/beats_per_minute
|
|
var base_time = Time.micro+duration
|
|
|
|
STDOUT.autoflush(true)
|
|
|
|
for next_time in (base_time..Inf `by` duration) {
|
|
if (counter++ %% beats_per_bar) {
|
|
print "\nTICK"
|
|
}
|
|
else {
|
|
print " tick"
|
|
}
|
|
Sys.sleep(next_time - Time.micro)
|
|
}
|
|
}
|
|
|
|
say metronome(ARGV.map{ Num(_) }...)
|