#!/usr/bin/perl
use strict;
use warnings;

use MIDI::Simple::Drummer;
my $d = MIDI::Simple::Drummer->new(
    -bpm     => shift || 111,
    -volume  => shift || 121,
    -phrases => shift || 2,
);
#use Data::Dumper;local$Data::Dumper::Indent=1;local$Data::Dumper::Terse=1;local$Data::Dumper::Sortkeys=1;
#die Dumper($d->p2n);

my $last_beat = 0;
my $last_fill = 0;

$d->count_in();

# Play it for me, Vinnie.
for my $p (1 .. $d->phrases) {
    warn "last_beat $last_beat, last_fill: $last_fill\n";
    if($p % 2 > 0) {
        $last_beat = $d->beat(-n => 3, -fill => $last_fill);
    }
    else {
        $last_beat = $d->beat(-n => 4);
        $last_fill = $d->fill(-last => $last_fill);
    }
}

$last_beat = $d->beat(-n => 3, -fill => $last_fill);

# Add a finishing touch.
#fin($d); # Perfectly reasonable.
$d->pattern('fin', \&fin);
$d->beat(-n => 'fin');

$d->write;

sub fin {
    my $d = shift;
    $d->note($d->EIGHTH, $d->strike($d->option_strike));
    $d->note($d->EIGHTH, $d->strike('Splash Cymbal', 'Bass Drum 1'));
    $d->note($d->SIXTEENTH, $d->strike('Acoustic Snare')) for 0 .. 2;
    $d->rest($d->SIXTEENTH);
    $d->note($d->EIGHTH, $d->strike('Splash Cymbal', 'Bass Drum 1'));
    $d->note($d->SIXTEENTH, $d->strike('Acoustic Snare')) for 0 .. 2;
    $d->note($d->EIGHTH, $d->strike('Crash Cymbal 1', 'Bass Drum 1'));
}
