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. |