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

use lib map { "$ENV{HOME}/sandbox/$_/lib" } qw(MIDI-Util Music-Chord-Progression-Transform); # local author libs

use MIDI::Util qw(setup_score midi_format);
use Music::Chord::Progression::Transform ();

my $bpm        = shift || 100;
my $note       = shift || 'C';
my $octave     = shift || 4;
my $quality    = shift || '';
my $transforms = shift || 'P,L,R,P,L,R'; # giving an integer = random

if ($transforms !~ /^\d+$/) {
    $transforms = [ split /,/, $transforms ];
}

my $transform = Music::Chord::Progression::Transform->new(
    base_note     => $note,
    base_octave   => $octave,
    chord_quality => $quality,
    transforms    => $transforms,
    verbose       => 1,
);
my $chords = $transform->generate;

my $score = setup_score(bpm => $bpm);

$score->n('wn', midi_format(@$_)) for @$chords;

$score->write_score("$0.mid");

__END__
S23 S32 S34 S43 S56 S65
C32 C34 C65
