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

# Minor / Major chord ratios

#use lib map { "$ENV{HOME}/sandbox/$_/lib" } qw(Music-BachChoralHarmony); # local author libs
use Music::BachChoralHarmony;

#my $data_file = 'share/jsbach_chorals_harmony.data'; # local author files
#my $key_title = 'share/jsbach_BWV_keys_titles.txt';  # "
my $bach = Music::BachChoralHarmony->new(
#    data_file => $data_file,
#    key_title => $key_title,
);
my $songs = $bach->parse();

my %score;

for my $id ( keys %$songs ) {
    $score{$id}->{key} = $songs->{$id}{key};

    for my $event ( @{ $songs->{$id}{events} } ) {
        if ( $event->{chord} =~ /m/ ) {
            $score{$id}->{minor}++;
        }
        else {
            $score{$id}->{major}++;
        }
    }
}

for my $id ( keys %score ) {
    $score{$id}->{ratio} = $score{$id}->{minor} / ($score{$id}->{major} + $score{$id}->{minor});
}

my @sorted = map { "$_ => $score{$_}->{ratio}" } sort { $score{$a}->{ratio} <=> $score{$b}->{ratio} } keys %score;
use Data::Dumper;warn Dumper\@sorted;
