Metronome: Difference between revisions

171 bytes added ,  5 years ago
→‎{{header|Perl}}: code fixes and enabled autoflush
(→‎{{header|Perl}}: code fixes and enabled autoflush)
Line 759:
=={{header|Perl}}==
The module <code>Time::HiRes</code> provides sub-second <tt>sleep</tt>. Text output only.
<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 * $beats_per_bar);
if (0 == $i++ % $beats_per_bar) {
my $base_time = gettimeofday() + $duration;
 
for (my $next_time = $base_time ; ; $next_time += $duration) {
if (0 == $i++ % $beats_per_bar == 0) {
print "\nTICK";
} else {
else {
print " tick";
}
sleep ($durationnext_time - gettimeofday());
}</lang>
Sample run
2,747

edits