372 lines
11 KiB
Perl
372 lines
11 KiB
Perl
# This just contains the list of valid guitar chords
|
|
%chord_lists = (
|
|
'C' => 'x32010',
|
|
'C6' => 'x32210',
|
|
'C6(9)' => 'x32233',
|
|
'CM7' => 'x32000',
|
|
'CM7(9)' => 'x30000',
|
|
'C7' => 'x32310',
|
|
'C7(b5)' => 'x34310',
|
|
'C7(b9)' => 'x32323',
|
|
'C7(b9,13)' => 'x21214',
|
|
'C7(9)' => 'x3233x',
|
|
'C7(9,13)' => 'x32335',
|
|
'C7(#9)' => 'x3234x',
|
|
'C7(#11)' => 'x1213x',
|
|
'C7(b13)' => 'x1211x',
|
|
'C7(13)' => 'x1221x',
|
|
'Cm' => 'x35543',
|
|
'Cm6' => 'x31213',
|
|
'Cm6(9)' => 'x3124x',
|
|
'CmM7' => 'x31003',
|
|
'Cm7' => 'x31313',
|
|
'Cm7(b5)' => 'x3434x',
|
|
'Cm7(9)' => 'x3133x',
|
|
'Cm7(9,11)' => 'x31331',
|
|
'Cdim' => 'x3424x',
|
|
'Caug' => 'x3211x',
|
|
'Caug7' => 'x323x4',
|
|
'Csus4' => 'x33011',
|
|
'C7sus4' => 'x33311',
|
|
'Cadd9' => 'x32030',
|
|
'C#' => 'x43121',
|
|
'C#6' => 'x4332x',
|
|
'C#6(9)' => 'x43344',
|
|
'C#M7' => 'x43111',
|
|
'C#M7(9)' => 'x4354x',
|
|
'C#7' => 'x4342x',
|
|
'C#7(b5)' => 'x4542x',
|
|
'C#7(b9)' => 'x43434',
|
|
'C#7(b9,13)' => 'x43436',
|
|
'C#7(9)' => 'x4344x',
|
|
'C#7(9,13)' => 'x43445',
|
|
'C#7(#9)' => 'x4345x',
|
|
'C#7(#11)' => 'x4546x',
|
|
'C#7(b13)' => 'x2322x',
|
|
'C#7(13)' => 'x2332x',
|
|
'C#m' => 'x46654',
|
|
'C#m6' => 'x42324',
|
|
'C#m6(9)' => 'x4234x',
|
|
'C#mM7' => 'x4211x',
|
|
'C#m7' => 'x42100',
|
|
'C#m7(b5)' => 'x4545x',
|
|
'C#m7(9)' => 'x4244x',
|
|
'C#m7(9,11)' => 'x42442',
|
|
'C#dim' => 'x4535x',
|
|
'C#aug' => 'x4322x',
|
|
'C#aug7' => 'x2322x',
|
|
'C#sus4' => 'x46674',
|
|
'C#7sus4' => 'x44422',
|
|
'C#add9' => 'x43141',
|
|
'D' => 'xx0232',
|
|
'D6' => 'xx0202',
|
|
'D6(9)' => 'x54455',
|
|
'DM7' => 'xx0222',
|
|
'DM7(9)' => 'xx0220',
|
|
'D7' => 'xx0212',
|
|
'D7(b5)' => 'xx0112',
|
|
'D7(b9)' => 'x5454x',
|
|
'D7(b9,13)' => 'x54547',
|
|
'D7(9)' => 'xx0210',
|
|
'D7(9,13)' => 'x54557',
|
|
'D7(#9)' => 'x5456x',
|
|
'D7(#11)' => 'xx0112',
|
|
'D7(b13)' => 'x3433x',
|
|
'D7(13)' => 'x3443x',
|
|
'Dm' => 'xx0231',
|
|
'Dm6' => 'xx0201',
|
|
'Dm6(9)' => 'x5345x',
|
|
'DmM7' => 'x5322x',
|
|
'Dm7' => 'xx0211',
|
|
'Dm7(b5)' => 'xx0111',
|
|
'Dm7(9)' => 'x5355x',
|
|
'Dm7(9,11)' => 'x53553',
|
|
'Ddim' => 'xx0101',
|
|
'Daug' => 'xx0332',
|
|
'Daug7' => 'xx0312',
|
|
'Dsus4' => 'x55033',
|
|
'D7sus4' => 'xx0213',
|
|
'Dadd9' => 'xx0230',
|
|
'Eb' => 'xx1343',
|
|
'Eb6' => 'xx1313',
|
|
'Eb6(9)' => 'x65566',
|
|
'EbM7' => 'xx1333',
|
|
'EbM7(9)' => 'xx1331',
|
|
'Eb7' => 'xx1323',
|
|
'Eb7(b5)' => 'xx1223',
|
|
'Eb7(b9)' => 'xx1020',
|
|
'Eb7(b9,13)' => 'x65658',
|
|
'Eb7(9)' => 'xx1021',
|
|
'Eb7(9,13)' => 'x65668',
|
|
'Eb7(#9)' => 'xx1022',
|
|
'Eb7(#11)' => 'xx1223',
|
|
'Eb7(b13)' => 'x4544x',
|
|
'Eb7(13)' => 'x4554x',
|
|
'Ebm' => 'xx1342',
|
|
'Ebm6' => 'xx1312',
|
|
'Ebm6(9)' => 'x6456x',
|
|
'EbmM7' => 'xx1332',
|
|
'Ebm7' => 'xx1322',
|
|
'Ebm7(b5)' => 'xx1222',
|
|
'Ebm7(9)' => 'x6466x',
|
|
'Ebm7(9,11)' => 'xx1121',
|
|
'Ebdim' => 'xx1212',
|
|
'Ebaug' => 'xx1003',
|
|
'Ebaug7' => 'x2102x',
|
|
'Ebsus4' => 'xx1344',
|
|
'Eb7sus4' => 'xx1324',
|
|
'Ebadd9' => 'xx1341',
|
|
'E' => '022100',
|
|
'E6' => '022120',
|
|
'E6(9)' => 'xx2122',
|
|
'EM7' => '02110x',
|
|
'EM7(9)' => '021102',
|
|
'E7' => '020100',
|
|
'E7(b5)' => 'xx2334',
|
|
'E7(b9)' => '020101',
|
|
'E7(b9,13)' => '020131',
|
|
'E7(9)' => '020132',
|
|
'E7(9,13)' => '020122',
|
|
'E7(#9)' => '020103',
|
|
'E7(#11)' => '6x675x',
|
|
'E7(b13)' => '020110',
|
|
'E7(13)' => '020120',
|
|
'Em' => '022000',
|
|
'Em6' => '022020',
|
|
'Em6(9)' => '022022',
|
|
'EmM7' => '021000',
|
|
'Em7' => '020000',
|
|
'Em7(b5)' => '0x2333',
|
|
'Em7(9)' => '020002',
|
|
'Em7(9,11)' => 'xx2232',
|
|
'Edim' => '012020',
|
|
'Eaug' => '03211x',
|
|
'Eaug7' => '032130',
|
|
'Esus4' => '022200',
|
|
'E7sus4' => '020200',
|
|
'Eadd9' => '024100',
|
|
'F' => '133211',
|
|
'F6' => '1x323x',
|
|
'F6(9)' => '100011',
|
|
'FM7' => 'xx3210',
|
|
'FM7(9)' => '1x2010',
|
|
'F7' => '131211',
|
|
'F7(b5)' => '1x120x',
|
|
'F7(b9)' => 'xx1212',
|
|
'F7(b9,13)' => '1x1232',
|
|
'F7(9)' => '131213',
|
|
'F7(9,13)' => '1x123x',
|
|
'F7(#9)' => '131214',
|
|
'F7(#11)' => '101201',
|
|
'F7(b13)' => '1x122x',
|
|
'F7(13)' => '1x123x',
|
|
'Fm' => '133111',
|
|
'Fm6' => '133131',
|
|
'Fm6(9)' => '1xx133',
|
|
'FmM7' => '13211x',
|
|
'Fm7' => '131111',
|
|
'Fm7(b5)' => '1x110x',
|
|
'Fm7(9)' => '131113',
|
|
'Fm7(9,11)' => '131313',
|
|
'Fdim' => '1x0101',
|
|
'Faug' => 'xx3221',
|
|
'Faug7' => '1x1221',
|
|
'Fsus4' => '133311',
|
|
'F7sus4' => '131311',
|
|
'Fadd9' => 'xx3213',
|
|
'F#' => '244322',
|
|
'F#6' => '2x434x',
|
|
'F#6(9)' => '2x112x',
|
|
'F#M7' => 'xx4321',
|
|
'F#M7(9)' => '2x312x',
|
|
'F#7' => '242322',
|
|
'F#7(b5)' => '2x231x',
|
|
'F#7(b9)' => '212020',
|
|
'F#7(b9,13)' => 'x1204x',
|
|
'F#7(9)' => '21212x',
|
|
'F#7(9,13)' => '21213x',
|
|
'F#7(#9)' => '242325',
|
|
'F#7(#11)' => '2x231x',
|
|
'F#7(b13)' => '2x233x',
|
|
'F#7(13)' => '2x234x',
|
|
'F#m' => '244222',
|
|
'F#m6' => '244242',
|
|
'F#m6(9)' => 'xx1224',
|
|
'F#mM7' => '24322x',
|
|
'F#m7' => '242222',
|
|
'F#m7(b5)' => '2x221x',
|
|
'F#m7(9)' => '242224',
|
|
'F#m7(9,11)' => '20210x',
|
|
'F#dim' => '2x121x',
|
|
'F#aug' => 'xx4332',
|
|
'F#aug7' => '2x2332',
|
|
'F#sus4' => '244422',
|
|
'F#7sus4' => '242422',
|
|
'F#add9' => 'xx4324',
|
|
'G' => '320003',
|
|
'G6' => '320000',
|
|
'G6(9)' => '3x223x',
|
|
'GM7' => '320002',
|
|
'GM7(9)' => '3x423x',
|
|
'G7' => '320001',
|
|
'G7(b5)' => '3x342x',
|
|
'G7(b9)' => 'x2313x',
|
|
'G7(b9,13)' => '3x3100',
|
|
'G7(9)' => '353435',
|
|
'G7(9,13)' => '3x3200',
|
|
'G7(#9)' => '353436',
|
|
'G7(#11)' => '3x342x',
|
|
'G7(b13)' => '3x344x',
|
|
'G7(13)' => '323000',
|
|
'Gm' => '355333',
|
|
'Gm6' => '3x233x',
|
|
'Gm6(9)' => 'xx2335',
|
|
'GmM7' => '354333',
|
|
'Gm7' => '353333',
|
|
'Gm7(b5)' => '3x332x',
|
|
'Gm7(9)' => '353335',
|
|
'Gm7(9,11)' => '3x321x',
|
|
'Gdim' => '3x232x',
|
|
'Gaug' => '321003',
|
|
'Gaug7' => '3x3443',
|
|
'Gsus4' => '330013',
|
|
'G7sus4' => '330011',
|
|
'Gadd9' => '3x0233',
|
|
'G#' => '431114',
|
|
'G#6' => '431111',
|
|
'G#6(9)' => '4x334x',
|
|
'G#M7' => 'xx6543',
|
|
'G#M7(9)' => '4x534x',
|
|
'G#7' => '464544',
|
|
'G#7(b5)' => '4x453x',
|
|
'G#7(b9)' => 'x3424x',
|
|
'G#7(b9,13)' => '4x4211',
|
|
'G#7(9)' => '464546',
|
|
'G#7(9,13)' => '4x4311',
|
|
'G#7(#9)' => '464547',
|
|
'G#7(#11)' => '4x453x',
|
|
'G#7(b13)' => '4x455x',
|
|
'G#7(13)' => '434111',
|
|
'G#m' => '466444',
|
|
'G#m6' => 'xx1101',
|
|
'G#m6(9)' => 'xx3446',
|
|
'G#mM7' => 'xx1103',
|
|
'G#m7' => '464444',
|
|
'G#m7(b5)' => 'x20102',
|
|
'G#m7(9)' => '464446',
|
|
'G#m7(9,11)' => '4x432x',
|
|
'G#dim' => '4x343x',
|
|
'G#aug' => 'xx6554',
|
|
'G#aug7' => '4x4554',
|
|
'G#sus4' => '466644',
|
|
'G#7sus4' => '464644',
|
|
'G#add9' => 'xx6546',
|
|
'A' => 'x02220',
|
|
'A6' => 'x02222',
|
|
'A6(9)' => 'x02202',
|
|
'AM7' => 'x02120',
|
|
'AM7(9)' => 'x02100',
|
|
'A7' => 'x02020',
|
|
'A7(b5)' => 'x0102x',
|
|
'A7(b9)' => 'x02323',
|
|
'A7(b9,13)' => 'x05322',
|
|
'A7(9)' => 'x02423',
|
|
'A7(9,13)' => 'x05422',
|
|
'A7(#9)' => '575658',
|
|
'A7(#11)' => 'x01023',
|
|
'A7(b13)' => 'x02021',
|
|
'A7(13)' => 'x02022',
|
|
'Am' => 'x02210',
|
|
'Am6' => 'x02212',
|
|
'Am6(9)' => 'xx4557',
|
|
'AmM7' => 'x02110',
|
|
'Am7' => 'x02010',
|
|
'Am7(b5)' => 'x01213',
|
|
'Am7(9)' => 'x02000',
|
|
'Am7(9,11)' => 'x02433',
|
|
'Adim' => 'x01212',
|
|
'Aaug' => 'x03221',
|
|
'Aaug7' => 'x03021',
|
|
'Asus4' => 'x02230',
|
|
'A7sus4' => 'x02030',
|
|
'Aadd9' => 'x02200',
|
|
'Bb' => 'x13331',
|
|
'Bb6' => 'x13333',
|
|
'Bb6(9)' => 'x10011',
|
|
'BbM7' => 'x13231',
|
|
'BbM7(9)' => 'x10211',
|
|
'Bb7' => 'x13131',
|
|
'Bb7(b5)' => 'x12131',
|
|
'Bb7(b9)' => 'x10101',
|
|
'Bb7(b9,13)' => 'x10103',
|
|
'Bb7(9)' => 'x1011x',
|
|
'Bb7(9,13)' => 'x10113',
|
|
'Bb7(#9)' => 'x1012x',
|
|
'Bb7(#11)' => 'x10130',
|
|
'Bb7(b13)' => 'x13132',
|
|
'Bb7(13)' => 'x13133',
|
|
'Bbm' => 'x13321',
|
|
'Bbm6' => 'x1302x',
|
|
'Bbm6(9)' => 'xx5668',
|
|
'BbmM7' => 'x13221',
|
|
'Bbm7' => 'x13121',
|
|
'Bbm7(b5)' => 'x1212x',
|
|
'Bbm7(9)' => 'x13111',
|
|
'Bbm7(9,11)' => '6x654x',
|
|
'Bbdim' => 'x12020',
|
|
'Bbaug' => 'x10443',
|
|
'Bbaug7' => 'x14132',
|
|
'Bbsus4' => 'x13341',
|
|
'Bb7sus4' => 'x13141',
|
|
'Bbadd9' => 'x13311',
|
|
'B' => 'x24442',
|
|
'B6' => 'x24444',
|
|
'B6(9)' => 'x21122',
|
|
'BM7' => 'x24342',
|
|
'BM7(9)' => 'x2132x',
|
|
'B7' => 'x21202',
|
|
'B7(b5)' => 'x2324x',
|
|
'B7(b9)' => 'x2121x',
|
|
'B7(b9,13)' => 'x21214',
|
|
'B7(9)' => 'x2122x',
|
|
'B7(9,13)' => 'x21224',
|
|
'B7(#9)' => 'x2123x',
|
|
'B7(#11)' => 'x2324x',
|
|
'B7(b13)' => 'x24243',
|
|
'B7(13)' => 'x24244',
|
|
'Bm' => 'x24432',
|
|
'Bm6' => 'x2413x',
|
|
'Bm6(9)' => 'x2012x',
|
|
'BmM7' => 'x20332',
|
|
'Bm7' => 'x20202',
|
|
'Bm7(b5)' => 'x2323x',
|
|
'Bm7(9)' => 'x2022x',
|
|
'Bm7(9,11)' => 'x20220',
|
|
'Bdim' => 'x2313x',
|
|
'Baug' => 'x2100x',
|
|
'Baug7' => 'x25243',
|
|
'Bsus4' => 'x24452',
|
|
'B7sus4' => 'x22202',
|
|
'Badd9' => 'x24422',
|
|
);
|
|
|
|
my %synonyms = (
|
|
'C#' => 'Db',
|
|
'Eb' => 'D#',
|
|
'F#' => 'Gb',
|
|
'G#' => 'Ab',
|
|
'Bb' => 'A#',
|
|
);
|
|
|
|
my $synonyms_re = qr<^([CFG]\#|[EB]b)>;
|
|
|
|
for my $chord (keys %chord_lists) {
|
|
if ($chord =~ $synonyms_re) {
|
|
my $match = $1;
|
|
(my $same_chord = $chord) =~ s/^$match/$synonyms{$match}/;
|
|
$chord_lists{$same_chord} = $chord_lists{$chord}; # copy
|
|
}
|
|
}
|
|
|
|
1;
|