The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use warnings;

use MIDI::Simple::Drummer;

my $d = MIDI::Simple::Drummer->new(-file => "$0.mid");

$d->patterns(b1 => \&hihat);
$d->patterns(b2 => \&backbeat);

$d->sync_tracks(
    sub { $d->beat(-name => 'b1') },
    sub { $d->beat(-name => 'b2') },
);

$d->write();

sub hihat { # tick
    my $self = shift;
    for (1 .. 2 * $self->beats) {
        $self->pan(75);
        $self->note($self->EIGHTH, $self->tick);
    }
}
sub backbeat { # kick/snare
    my $self = shift;
    for (1 .. $self->beats) {
        $self->pan(64);
        $self->note($self->QUARTER, $self->rotate($_));
    }
}