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

# Show two octaves of a chord on a full-length fretboard.

# For author testing only:
use lib map { "$ENV{HOME}/sandbox/$_/lib" } qw(MIDI-Chord-Guitar Music-FretboardDiagram);

use MIDI::Chord::Guitar;
use Music::FretboardDiagram;

my $note   = shift || 'C3';
my $flavor = shift || '';
my $frets  = shift || 16;

my $mcg = MIDI::Chord::Guitar->new(
    # For author testing only:
    voicing_file => '/home/gene/sandbox/MIDI-Chord-Guitar/share/midi-guitar-chord-voicings.csv'
);

my @specs;

my $fingerings = $mcg->fingering($note, $flavor);
for my $fingering (@$fingerings) {
    my ($chord, $posn) = split /-/, $fingering;
    $chord =~ s/[oO0xX]/-/g;
    push @specs, [$posn, $chord];
}
$fingerings = $mcg->fingering(++$note, $flavor);
for my $fingering (@$fingerings) {
    my ($chord, $posn) = split /-/, $fingering;
    $chord =~ s/[oO0xX]/-/g;
    push @specs, [$posn, $chord]
        if $posn < $frets - 1;
}

@specs = sort { $a->[0] <=> $b->[0] } @specs;
#use Data::Dumper::Compact qw(ddc);
#warn __PACKAGE__,' L',__LINE__,' ',ddc(\@specs, {max_width=>128});

my $dia = Music::FretboardDiagram->new(
#  frets    => 6,
#  chord    => 'x02220',
#  position => 1,
  frets    => $frets,
  chord    => \@specs,
  absolute => 1,
  outfile  => 'fretboard',
  horiz    => 1,
  showname => 0,
  verbose  => 1,
);

$dia->draw();
