From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!/usr/bin/perl
use strict;
my $d = MIDI::Drummer::Tiny->new(
bars => 16,
soundfont => '/Users/gene/Music/soundfont/FluidR3_GM.sf2',
);
my $f = MIDI::Drummer::Tiny::SwingFills->new;
my $every = 4;
for my $i (1 .. $d->bars) {
my $fill = $f->get_fill($d, $d->ride2);
if (($i % $every == 0) && ($fill->{dura} == 4)) {
$fill->{fill}->();
}
else {
$d->note( $d->quarter, $d->ride2, $d->kick );
if (($i % $every == 0) && ($fill->{dura} == 3)) {
$fill->{fill}->();
}
else {
$d->note( $d->triplet_eighth, $d->ride2 );
$d->rest( $d->triplet_eighth );
$d->note( $d->triplet_eighth, $d->ride2, $d->kick );
if (($i % $every == 0) && ($fill->{dura} == 2)) {
$fill->{fill}->();
}
else {
$d->note( $d->quarter, $d->ride2, $d->snare );
if (($i % $every == 0) && ($fill->{dura} == 1)) {
$fill->{fill}->();
}
else {
$d->note( $d->triplet_eighth, $d->ride2, $d->kick );
$d->rest( $d->triplet_eighth );
$d->note( $d->triplet_eighth, $d->ride2 );
}
}
}
}
}
# $d->write;
$d->play_with_timidity;
# $d->play_with_fluidsynth;