Metronome: Difference between revisions

Content added Content deleted
(→‎{{header|Perl}}: code fixes and enabled autoflush)
(Added Sidef)
Line 1,464: Line 1,464:
metronome(120, 4, 20) // limit to 20</lang>
metronome(120, 4, 20) // limit to 20</lang>
{{Out}} See it running in your browser by [https://scastie.scala-lang.org/7iejBcWqQISAIGtBCG6BNQ Scastie (JVM)].
{{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}}==
=={{header|Tcl}}==
This code only rings the bell on the high beat, which occurs at the start of the bar.
This code only rings the bell on the high beat, which occurs at the start of the bar.