Metronome: Difference between revisions

755 bytes added ,  5 years ago
Added Sidef
(→‎{{header|Perl}}: code fixes and enabled autoflush)
(Added Sidef)
Line 1,464:
metronome(120, 4, 20) // limit to 20</lang>
{{Out}} See it running in your browser by [https://scastie.scala-lang.org/7iejBcWqQISAIGtBCG6BNQ Scastie (JVM)].
 
=={{header|Sidef}}==
<lang ruby>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(_) }...)</lang>
{{out}}
<pre>
% sidef metronome.sf 60 6
 
TICK tick tick tick tick tick
TICK tick tick tick tick tick
TICK tick tick tick tick tick
TICK tick tick tick tick tick
TICK tick tick tick tick tick
TICK tick tick tick tick tick
TICK tick tick tick^C
</pre>
 
=={{header|Tcl}}==
This code only rings the bell on the high beat, which occurs at the start of the bar.
2,747

edits