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

use lib map { "$ENV{HOME}/sandbox/$_/lib" } qw(MIDI-Util Music-Chord-Progression-NRO);
use MIDI::Util qw(setup_score midi_format);
use Music::Chord::Progression::NRO ();

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

print "Initial: $note$octave\nTransforms: $transform\n";

if ($transform =~ /[A-Z,]/) {
    $transform = [ split /,/, $transform ];
}

my $nro = Music::Chord::Progression::NRO->new(
    base_note   => $note,
    base_octave => $octave,
    transform   => $transform,
    verbose     => 1,
);
my $chords = $nro->generate;

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

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

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