36
ChordCreator::Chord ChordCreator::s_chordTable[] =
36
ChordCreator::ChordTable::Init ChordCreator::ChordTable::s_initTable[] =
38
{ ChordCreator::tr( "octave" ), { 0, -1 } },
39
{ ChordCreator::tr( "Major" ), { 0, 4, 7, -1 } },
40
{ ChordCreator::tr( "Majb5" ), { 0, 4, 6, -1 } },
41
{ ChordCreator::tr( "minor" ), { 0, 3, 7, -1 } },
42
{ ChordCreator::tr( "minb5" ), { 0, 3, 6, -1 } },
43
{ ChordCreator::tr( "sus2" ), { 0, 2, 7, -1 } },
44
{ ChordCreator::tr( "sus4" ), { 0, 5, 7, -1 } },
45
{ ChordCreator::tr( "aug" ), { 0, 4, 8, -1 } },
46
{ ChordCreator::tr( "augsus4" ), { 0, 5, 8, -1 } },
47
{ ChordCreator::tr( "tri" ), { 0, 3, 6, 9, -1 } },
38
{ QT_TRANSLATE_NOOP( "ChordCreator", "octave" ), { 0, -1 } },
39
{ QT_TRANSLATE_NOOP( "ChordCreator", "Major" ), { 0, 4, 7, -1 } },
40
{ QT_TRANSLATE_NOOP( "ChordCreator", "Majb5" ), { 0, 4, 6, -1 } },
41
{ QT_TRANSLATE_NOOP( "ChordCreator", "minor" ), { 0, 3, 7, -1 } },
42
{ QT_TRANSLATE_NOOP( "ChordCreator", "minb5" ), { 0, 3, 6, -1 } },
43
{ QT_TRANSLATE_NOOP( "ChordCreator", "sus2" ), { 0, 2, 7, -1 } },
44
{ QT_TRANSLATE_NOOP( "ChordCreator", "sus4" ), { 0, 5, 7, -1 } },
45
{ QT_TRANSLATE_NOOP( "ChordCreator", "aug" ), { 0, 4, 8, -1 } },
46
{ QT_TRANSLATE_NOOP( "ChordCreator", "augsus4" ), { 0, 5, 8, -1 } },
47
{ QT_TRANSLATE_NOOP( "ChordCreator", "tri" ), { 0, 3, 6, 9, -1 } },
49
{ ChordCreator::tr( "6" ), { 0, 4, 7, 9, -1 } },
50
{ ChordCreator::tr( "6sus4" ), { 0, 5, 7, 9, -1 } },
51
{ ChordCreator::tr( "6add9" ), { 0, 4, 7, 12, -1 } },
52
{ ChordCreator::tr( "m6" ), { 0, 3, 7, 9, -1 } },
53
{ ChordCreator::tr( "m6add9" ), { 0, 3, 7, 9, 14, -1 } },
55
{ ChordCreator::tr( "7" ), { 0, 4, 7, 10, -1 } },
56
{ ChordCreator::tr( "7sus4" ), { 0, 5, 7, 10, -1 } },
57
{ ChordCreator::tr( "7#5" ), { 0, 4, 8, 10, -1 } },
58
{ ChordCreator::tr( "7b5" ), { 0, 4, 6, 10, -1 } },
59
{ ChordCreator::tr( "7#9" ), { 0, 4, 7, 10, 13, 18, -1 } },
60
{ ChordCreator::tr( "7b9" ), { 0, 4, 7, 10, 13, 16, -1 } },
61
{ ChordCreator::tr( "7#5#9" ), { 0, 4, 8, 12, 14, 19, -1 } },
62
{ ChordCreator::tr( "7#5b9" ), { 0, 4, 8, 12, 14, 17, -1 } },
63
{ ChordCreator::tr( "7b5b9" ), { 0, 4, 6, 10, 12, 15, -1 } },
64
{ ChordCreator::tr( "7add11" ), { 0, 4, 7, 10, 17, -1 } },
65
{ ChordCreator::tr( "7add13" ), { 0, 4, 7, 10, 21, -1 } },
66
{ ChordCreator::tr( "7#11" ), { 0, 4, 7, 10, 18, -1 } },
67
{ ChordCreator::tr( "Maj7" ), { 0, 4, 7, 11, -1 } },
68
{ ChordCreator::tr( "Maj7b5" ), { 0, 4, 6, 11, -1 } },
69
{ ChordCreator::tr( "Maj7#5" ), { 0, 4, 8, 11, -1 } },
70
{ ChordCreator::tr( "Maj7#11" ), { 0, 4, 7, 11, 18, -1 } },
71
{ ChordCreator::tr( "Maj7add13" ), { 0, 4, 7, 11, 21, -1 } },
72
{ ChordCreator::tr( "m7" ), { 0, 3, 7, 10, -1 } },
73
{ ChordCreator::tr( "m7b5" ), { 0, 3, 6, 10, -1 } },
74
{ ChordCreator::tr( "m7b9" ), { 0, 3, 7, 10, 13, -1 } },
75
{ ChordCreator::tr( "m7add11" ), { 0, 3, 7, 10, 17, -1 } },
76
{ ChordCreator::tr( "m7add13" ), { 0, 3, 7, 10, 21, -1 } },
77
{ ChordCreator::tr( "m-Maj7" ), { 0, 3, 7, 11, -1 } },
78
{ ChordCreator::tr( "m-Maj7add11" ), { 0, 3, 7, 11, 17, -1 } },
79
{ ChordCreator::tr( "m-Maj7add13" ), { 0, 3, 7, 11, 21, -1 } },
81
{ ChordCreator::tr( "9" ), { 0, 4, 7, 10, 14, -1 } },
82
{ ChordCreator::tr( "9sus4" ), { 0, 5, 7, 10, 14, -1 } },
83
{ ChordCreator::tr( "add9" ), { 0, 4, 7, 14, -1 } },
84
{ ChordCreator::tr( "9#5" ), { 0, 4, 8, 10, 14, -1 } },
85
{ ChordCreator::tr( "9b5" ), { 0, 4, 6, 10, 14, -1 } },
86
{ ChordCreator::tr( "9#11" ), { 0, 4, 7, 10, 14, 18, -1 } },
87
{ ChordCreator::tr( "9b13" ), { 0, 4, 7, 10, 14, 20, -1 } },
88
{ ChordCreator::tr( "Maj9" ), { 0, 4, 7, 11, 14, -1 } },
89
{ ChordCreator::tr( "Maj9sus4" ), { 0, 5, 7, 11, 15, -1 } },
90
{ ChordCreator::tr( "Maj9#5" ), { 0, 4, 8, 11, 14, -1 } },
91
{ ChordCreator::tr( "Maj9#11" ), { 0, 4, 7, 11, 14, 18, -1 } },
92
{ ChordCreator::tr( "m9" ), { 0, 3, 7, 10, 14, -1 } },
93
{ ChordCreator::tr( "madd9" ), { 0, 3, 7, 14, -1 } },
94
{ ChordCreator::tr( "m9b5" ), { 0, 3, 6, 10, 14, -1 } },
95
{ ChordCreator::tr( "m9-Maj7" ), { 0, 3, 7, 11, 14, -1 } },
97
{ ChordCreator::tr( "11" ), { 0, 4, 7, 10, 14, 17, -1 } },
98
{ ChordCreator::tr( "11b9" ), { 0, 4, 7, 10, 13, 17, -1 } },
99
{ ChordCreator::tr( "Maj11" ), { 0, 4, 7, 11, 14, 17, -1 } },
100
{ ChordCreator::tr( "m11" ), { 0, 3, 7, 10, 14, 17, -1 } },
101
{ ChordCreator::tr( "m-Maj11" ), { 0, 3, 7, 11, 14, 17, -1 } },
103
{ ChordCreator::tr( "13" ), { 0, 4, 7, 10, 14, 21, -1 } },
104
{ ChordCreator::tr( "13#9" ), { 0, 4, 7, 10, 15, 21, -1 } },
105
{ ChordCreator::tr( "13b9" ), { 0, 4, 7, 10, 13, 21, -1 } },
106
{ ChordCreator::tr( "13b5b9" ), { 0, 4, 6, 10, 13, 21, -1 } },
107
{ ChordCreator::tr( "Maj13" ), { 0, 4, 7, 11, 14, 21, -1 } },
108
{ ChordCreator::tr( "m13" ), { 0, 3, 7, 10, 14, 21, -1 } },
109
{ ChordCreator::tr( "m-Maj13" ), { 0, 3, 7, 11, 14, 21, -1 } },
111
{ ChordCreator::tr( "Major" ), { 0, 2, 4, 5, 7, 9, 11, -1 } },
112
{ ChordCreator::tr( "Harmonic minor" ), { 0, 2, 3, 5, 7, 8, 11, -1 } },
113
{ ChordCreator::tr( "Melodic minor" ), { 0, 2, 3, 5, 7, 9, 11, -1 } },
114
{ ChordCreator::tr( "Whole tone" ), { 0, 2, 4, 6, 8, 10, -1 } },
115
{ ChordCreator::tr( "Diminished" ), { 0, 2, 3, 5, 6, 8, 9, 11, -1 } },
116
{ ChordCreator::tr( "Major pentatonic" ), { 0, 2, 4, 7, 10, -1 } },
117
{ ChordCreator::tr( "Minor pentatonic" ), { 0, 3, 5, 7, 10, -1 } },
118
{ ChordCreator::tr( "Jap in sen" ), { 0, 1, 5, 7, 10, -1 } },
119
{ ChordCreator::tr( "Major bebop" ), { 0, 2, 4, 5, 7, 8, 9, 11, -1 } },
120
{ ChordCreator::tr( "Dominant bebop" ), { 0, 2, 4, 5, 7, 9, 10, 11, -1 } },
121
{ ChordCreator::tr( "Blues" ), { 0, 3, 5, 6, 7, 10, -1 } },
122
{ ChordCreator::tr( "Arabic" ), { 0, 1, 4, 5, 7, 8, 11, -1 } },
123
{ ChordCreator::tr( "Enigmatic" ), { 0, 1, 4, 6, 8, 10, 11, -1 } },
124
{ ChordCreator::tr( "Neopolitan" ), { 0, 1, 3, 5, 7, 9, 11, -1 } },
125
{ ChordCreator::tr( "Neopolitan minor" ), { 0, 1, 3, 5, 7, 9, 11, -1 } },
126
{ ChordCreator::tr( "Hungarian minor" ), { 0, 2, 3, 6, 7, 9, 11, -1 } },
127
{ ChordCreator::tr( "Dorian" ), { 0, 2, 3, 5, 7, 9, 10, -1 } },
128
{ ChordCreator::tr( "Phrygolydian" ), { 0, 1, 3, 5, 7, 8, 10, -1 } },
129
{ ChordCreator::tr( "Lydian" ), { 0, 2, 4, 6, 7, 9, 11, -1 } },
130
{ ChordCreator::tr( "Mixolydian" ), { 0, 2, 4, 5, 7, 9, 10, -1 } },
131
{ ChordCreator::tr( "Aeolian" ), { 0, 2, 3, 5, 7, 8, 10, -1 } },
132
{ ChordCreator::tr( "Locrian" ), { 0, 1, 3, 5, 6, 8, 10, -1 } },
49
{ QT_TRANSLATE_NOOP( "ChordCreator", "6" ), { 0, 4, 7, 9, -1 } },
50
{ QT_TRANSLATE_NOOP( "ChordCreator", "6sus4" ), { 0, 5, 7, 9, -1 } },
51
{ QT_TRANSLATE_NOOP( "ChordCreator", "6add9" ), { 0, 4, 7, 12, -1 } },
52
{ QT_TRANSLATE_NOOP( "ChordCreator", "m6" ), { 0, 3, 7, 9, -1 } },
53
{ QT_TRANSLATE_NOOP( "ChordCreator", "m6add9" ), { 0, 3, 7, 9, 14, -1 } },
55
{ QT_TRANSLATE_NOOP( "ChordCreator", "7" ), { 0, 4, 7, 10, -1 } },
56
{ QT_TRANSLATE_NOOP( "ChordCreator", "7sus4" ), { 0, 5, 7, 10, -1 } },
57
{ QT_TRANSLATE_NOOP( "ChordCreator", "7#5" ), { 0, 4, 8, 10, -1 } },
58
{ QT_TRANSLATE_NOOP( "ChordCreator", "7b5" ), { 0, 4, 6, 10, -1 } },
59
{ QT_TRANSLATE_NOOP( "ChordCreator", "7#9" ), { 0, 4, 7, 10, 13, 18, -1 } },
60
{ QT_TRANSLATE_NOOP( "ChordCreator", "7b9" ), { 0, 4, 7, 10, 13, 16, -1 } },
61
{ QT_TRANSLATE_NOOP( "ChordCreator", "7#5#9" ), { 0, 4, 8, 12, 14, 19, -1 } },
62
{ QT_TRANSLATE_NOOP( "ChordCreator", "7#5b9" ), { 0, 4, 8, 12, 14, 17, -1 } },
63
{ QT_TRANSLATE_NOOP( "ChordCreator", "7b5b9" ), { 0, 4, 6, 10, 12, 15, -1 } },
64
{ QT_TRANSLATE_NOOP( "ChordCreator", "7add11" ), { 0, 4, 7, 10, 17, -1 } },
65
{ QT_TRANSLATE_NOOP( "ChordCreator", "7add13" ), { 0, 4, 7, 10, 21, -1 } },
66
{ QT_TRANSLATE_NOOP( "ChordCreator", "7#11" ), { 0, 4, 7, 10, 18, -1 } },
67
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj7" ), { 0, 4, 7, 11, -1 } },
68
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj7b5" ), { 0, 4, 6, 11, -1 } },
69
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj7#5" ), { 0, 4, 8, 11, -1 } },
70
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj7#11" ), { 0, 4, 7, 11, 18, -1 } },
71
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj7add13" ), { 0, 4, 7, 11, 21, -1 } },
72
{ QT_TRANSLATE_NOOP( "ChordCreator", "m7" ), { 0, 3, 7, 10, -1 } },
73
{ QT_TRANSLATE_NOOP( "ChordCreator", "m7b5" ), { 0, 3, 6, 10, -1 } },
74
{ QT_TRANSLATE_NOOP( "ChordCreator", "m7b9" ), { 0, 3, 7, 10, 13, -1 } },
75
{ QT_TRANSLATE_NOOP( "ChordCreator", "m7add11" ), { 0, 3, 7, 10, 17, -1 } },
76
{ QT_TRANSLATE_NOOP( "ChordCreator", "m7add13" ), { 0, 3, 7, 10, 21, -1 } },
77
{ QT_TRANSLATE_NOOP( "ChordCreator", "m-Maj7" ), { 0, 3, 7, 11, -1 } },
78
{ QT_TRANSLATE_NOOP( "ChordCreator", "m-Maj7add11" ), { 0, 3, 7, 11, 17, -1 } },
79
{ QT_TRANSLATE_NOOP( "ChordCreator", "m-Maj7add13" ), { 0, 3, 7, 11, 21, -1 } },
81
{ QT_TRANSLATE_NOOP( "ChordCreator", "9" ), { 0, 4, 7, 10, 14, -1 } },
82
{ QT_TRANSLATE_NOOP( "ChordCreator", "9sus4" ), { 0, 5, 7, 10, 14, -1 } },
83
{ QT_TRANSLATE_NOOP( "ChordCreator", "add9" ), { 0, 4, 7, 14, -1 } },
84
{ QT_TRANSLATE_NOOP( "ChordCreator", "9#5" ), { 0, 4, 8, 10, 14, -1 } },
85
{ QT_TRANSLATE_NOOP( "ChordCreator", "9b5" ), { 0, 4, 6, 10, 14, -1 } },
86
{ QT_TRANSLATE_NOOP( "ChordCreator", "9#11" ), { 0, 4, 7, 10, 14, 18, -1 } },
87
{ QT_TRANSLATE_NOOP( "ChordCreator", "9b13" ), { 0, 4, 7, 10, 14, 20, -1 } },
88
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj9" ), { 0, 4, 7, 11, 14, -1 } },
89
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj9sus4" ), { 0, 5, 7, 11, 15, -1 } },
90
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj9#5" ), { 0, 4, 8, 11, 14, -1 } },
91
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj9#11" ), { 0, 4, 7, 11, 14, 18, -1 } },
92
{ QT_TRANSLATE_NOOP( "ChordCreator", "m9" ), { 0, 3, 7, 10, 14, -1 } },
93
{ QT_TRANSLATE_NOOP( "ChordCreator", "madd9" ), { 0, 3, 7, 14, -1 } },
94
{ QT_TRANSLATE_NOOP( "ChordCreator", "m9b5" ), { 0, 3, 6, 10, 14, -1 } },
95
{ QT_TRANSLATE_NOOP( "ChordCreator", "m9-Maj7" ), { 0, 3, 7, 11, 14, -1 } },
97
{ QT_TRANSLATE_NOOP( "ChordCreator", "11" ), { 0, 4, 7, 10, 14, 17, -1 } },
98
{ QT_TRANSLATE_NOOP( "ChordCreator", "11b9" ), { 0, 4, 7, 10, 13, 17, -1 } },
99
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj11" ), { 0, 4, 7, 11, 14, 17, -1 } },
100
{ QT_TRANSLATE_NOOP( "ChordCreator", "m11" ), { 0, 3, 7, 10, 14, 17, -1 } },
101
{ QT_TRANSLATE_NOOP( "ChordCreator", "m-Maj11" ), { 0, 3, 7, 11, 14, 17, -1 } },
103
{ QT_TRANSLATE_NOOP( "ChordCreator", "13" ), { 0, 4, 7, 10, 14, 21, -1 } },
104
{ QT_TRANSLATE_NOOP( "ChordCreator", "13#9" ), { 0, 4, 7, 10, 15, 21, -1 } },
105
{ QT_TRANSLATE_NOOP( "ChordCreator", "13b9" ), { 0, 4, 7, 10, 13, 21, -1 } },
106
{ QT_TRANSLATE_NOOP( "ChordCreator", "13b5b9" ), { 0, 4, 6, 10, 13, 21, -1 } },
107
{ QT_TRANSLATE_NOOP( "ChordCreator", "Maj13" ), { 0, 4, 7, 11, 14, 21, -1 } },
108
{ QT_TRANSLATE_NOOP( "ChordCreator", "m13" ), { 0, 3, 7, 10, 14, 21, -1 } },
109
{ QT_TRANSLATE_NOOP( "ChordCreator", "m-Maj13" ), { 0, 3, 7, 11, 14, 21, -1 } },
111
{ QT_TRANSLATE_NOOP( "ChordCreator", "Major" ), { 0, 2, 4, 5, 7, 9, 11, -1 } },
112
{ QT_TRANSLATE_NOOP( "ChordCreator", "Harmonic minor" ), { 0, 2, 3, 5, 7, 8, 11, -1 } },
113
{ QT_TRANSLATE_NOOP( "ChordCreator", "Melodic minor" ), { 0, 2, 3, 5, 7, 9, 11, -1 } },
114
{ QT_TRANSLATE_NOOP( "ChordCreator", "Whole tone" ), { 0, 2, 4, 6, 8, 10, -1 } },
115
{ QT_TRANSLATE_NOOP( "ChordCreator", "Diminished" ), { 0, 2, 3, 5, 6, 8, 9, 11, -1 } },
116
{ QT_TRANSLATE_NOOP( "ChordCreator", "Major pentatonic" ), { 0, 2, 4, 7, 10, -1 } },
117
{ QT_TRANSLATE_NOOP( "ChordCreator", "Minor pentatonic" ), { 0, 3, 5, 7, 10, -1 } },
118
{ QT_TRANSLATE_NOOP( "ChordCreator", "Jap in sen" ), { 0, 1, 5, 7, 10, -1 } },
119
{ QT_TRANSLATE_NOOP( "ChordCreator", "Major bebop" ), { 0, 2, 4, 5, 7, 8, 9, 11, -1 } },
120
{ QT_TRANSLATE_NOOP( "ChordCreator", "Dominant bebop" ), { 0, 2, 4, 5, 7, 9, 10, 11, -1 } },
121
{ QT_TRANSLATE_NOOP( "ChordCreator", "Blues" ), { 0, 3, 5, 6, 7, 10, -1 } },
122
{ QT_TRANSLATE_NOOP( "ChordCreator", "Arabic" ), { 0, 1, 4, 5, 7, 8, 11, -1 } },
123
{ QT_TRANSLATE_NOOP( "ChordCreator", "Enigmatic" ), { 0, 1, 4, 6, 8, 10, 11, -1 } },
124
{ QT_TRANSLATE_NOOP( "ChordCreator", "Neopolitan" ), { 0, 1, 3, 5, 7, 9, 11, -1 } },
125
{ QT_TRANSLATE_NOOP( "ChordCreator", "Neopolitan minor" ), { 0, 1, 3, 5, 7, 8, 11, -1 } },
126
{ QT_TRANSLATE_NOOP( "ChordCreator", "Hungarian minor" ), { 0, 2, 3, 6, 7, 8, 11, -1 } },
127
{ QT_TRANSLATE_NOOP( "ChordCreator", "Dorian" ), { 0, 2, 3, 5, 7, 9, 10, -1 } },
128
{ QT_TRANSLATE_NOOP( "ChordCreator", "Phrygolydian" ), { 0, 1, 3, 5, 7, 8, 10, -1 } },
129
{ QT_TRANSLATE_NOOP( "ChordCreator", "Lydian" ), { 0, 2, 4, 6, 7, 9, 11, -1 } },
130
{ QT_TRANSLATE_NOOP( "ChordCreator", "Mixolydian" ), { 0, 2, 4, 5, 7, 9, 10, -1 } },
131
{ QT_TRANSLATE_NOOP( "ChordCreator", "Aeolian" ), { 0, 2, 3, 5, 7, 8, 10, -1 } },
132
{ QT_TRANSLATE_NOOP( "ChordCreator", "Locrian" ), { 0, 1, 3, 5, 6, 8, 10, -1 } },
138
ChordCreator::Chord::Chord( const char * n, const ChordSemiTones & semi_tones ) :
139
m_name( ChordCreator::tr( n ) )
141
for( m_size = 0; m_size < MAX_CHORD_POLYPHONY; m_size++ )
143
if( semi_tones[m_size] == -1 )
148
m_semiTones[m_size] = semi_tones[m_size];
155
bool ChordCreator::Chord::hasSemiTone( Sint8 semi_tone ) const
157
for( int i = 0; i < size(); ++i )
159
if( semi_tone == m_semiTones[i] )
168
ChordCreator::ChordTable::ChordTable() :
172
i < static_cast<int>( sizeof s_initTable / sizeof *s_initTable );
175
push_back( Chord( s_initTable[i].m_name, s_initTable[i].m_semiTones ) );
182
const ChordCreator::Chord & ChordCreator::ChordTable::getByName( const QString & name, bool is_scale ) const
184
for( int i = 0; i < size(); i++ )
186
if( at( i ).getName() == name && is_scale == at( i ).isScale() )
139
197
ChordCreator::ChordCreator( Model * _parent ) :
140
198
Model( _parent, tr( "Chords" ) ),
141
199
m_chordsEnabledModel( false, this ),
142
200
m_chordsModel( this, tr( "Chord type" ) ),
143
201
m_chordRangeModel( 1.0f, 1.0f, 9.0f, 1.0f, this, tr( "Chord range" ) )
145
for( int i = 0; s_chordTable[i].interval[0] != -1; ++i )
203
const ChordTable & chord_table = ChordTable::getInstance();
204
for( int i = 0; i < chord_table.size(); ++i )
147
m_chordsModel.addItem( tr( s_chordTable[i].name.toUtf8().
206
m_chordsModel.addItem( chord_table[i].getName() );