in reply to Transpose guitar chords
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
|
|---|