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

use Data::Dumper::Compact 'ddc';
use MIDI::Util qw(setup_score midi_format);
use Music::Chord::Progression;

my $score = setup_score();

my $n = 12; # Number of chromatic scale notes

# Make every chord point to every chord!
my $net = { map { $_ => [1 .. $n] } 1 .. $n };

# Set all chords to minor
my $chord_map = [ ('m') x $n ];

my $prog = Music::Chord::Progression->new(
    net        => $net,
    chord_map  => $chord_map,
    scale_name => 'chromatic',
    substitute => 1,  # do substitute for extended chords
    tonic      => -1, # random starting chord
    resolve    => -1, # end with a random chord
    verbose    => 1,
);
my $chords = $prog->generate;

for my $chord (@$chords) {
    $score->n('wn', midi_format(@$chord));
}

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