Being about as musical as a brick, I can't comment about how you transpose the notes. I do think you'd be better off setting up the array first and then deriving the hash from it rather than the other way around; it saves you having to sort. The no warnings qw{ qw }; is to silence warnings where Perl thinks we are trying to put comments inside a qw{ ... } list.
knoppix@Microknoppix:~$ perl -Mstrict -MData::Dumper -wE ' > my @notesArr = do { > no warnings qw{ qw }; > qw{ A A# B C C# D D# E F F# G G# }; > }; > my $value = 0; > my %notesHash = map { $_ => $value ++ } @notesArr; > print Data::Dumper->Dumpxs( > [ \ @notesArr, \ %notesHash ], > [ qw{ *notesArr *notesHash } ] > );' @notesArr = ( 'A', 'A#', 'B', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#' ); %notesHash = ( 'F' => 8, 'A' => 0, 'A#' => 1, 'C#' => 4, 'E' => 7, 'B' => 2, 'D#' => 6, 'C' => 3, 'D' => 5, 'G#' => 11, 'F#' => 9, 'G' => 10 ); knoppix@Microknoppix:~$
I hope this is of interest.
Cheers,
JohnGG
In reply to Re: Transpose guitar chords
by johngg
in thread Transpose guitar chords
by Cody Fendant
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |