Metronome: Difference between revisions

Content added Content deleted
(→‎{{header|Perl}}: code fixes and enabled autoflush)
Line 759: Line 759:
=={{header|Perl}}==
=={{header|Perl}}==
The module <code>Time::HiRes</code> provides sub-second <tt>sleep</tt>. Text output only.
The module <code>Time::HiRes</code> provides sub-second <tt>sleep</tt>. Text output only.
<lang perl>use Time::HiRes qw(sleep);
<lang perl>use Time::HiRes qw(sleep gettimeofday);


local $| = 1; # autoflush
$beats_per_minute = shift || 72;
$beats_per_bar = shift || 4;


my $beats_per_minute = shift || 72;
$duration = 60 / ($beats_per_minute * $beats_per_bar);
my $beats_per_bar = shift || 4;


my $i = 0;
while () {
my $duration = 60 / $beats_per_minute;
if (0 == $i++ % $beats_per_bar) {
my $base_time = gettimeofday() + $duration;

for (my $next_time = $base_time ; ; $next_time += $duration) {
if ($i++ % $beats_per_bar == 0) {
print "\nTICK";
print "\nTICK";
} else {
}
else {
print " tick";
print " tick";
}
}
sleep $duration;
sleep($next_time - gettimeofday());
}</lang>
}</lang>
Sample run
Sample run