~ubuntu-branches/ubuntu/raring/lmms/raring-proposed

« back to all changes in this revision

Viewing changes to src/core/InstrumentFunctions.cpp

  • Committer: Charlie Smotherman
  • Date: 2012-12-05 22:08:38 UTC
  • mfrom: (33.1.7 lmms_0.4.13)
  • Revision ID: cjsmo@cableone.net-20121205220838-09pjfzew9m5023hr
* New  Upstream release.
  - Minor tweaking to ZynAddSubFX, CALF, SWH plugins  and Stefan Fendt's RC
    filters.
  - Added UI fixes: Magnentic effect of knobs and Piano-roll fixes
  - Updated German localization and copyright year
* debian/lmms-common.install:
  - added /usr/share/applications so the lmms.desktop file will correctly
    install (LP: #863366)
  - This should also fix the Software Center not displaying lmms in sound
    and video (LP: #824231)

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
 
34
34
 
35
35
 
36
 
ChordCreator::Chord ChordCreator::s_chordTable[] =
 
36
ChordCreator::ChordTable::Init ChordCreator::ChordTable::s_initTable[] =
37
37
{
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 } },
48
48
        
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 } },
54
 
 
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 } },
80
 
 
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 } },
96
 
 
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 } },
102
 
 
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 } },
110
 
 
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 } },
133
 
 
134
 
        { "", { -1, -1 } }
135
 
 
 
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 } },
 
54
 
 
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 } },
 
80
 
 
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 } },
 
96
 
 
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 } },
 
102
 
 
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 } },
 
110
 
 
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 } },
136
133
} ;
137
134
 
138
135
 
 
136
 
 
137
 
 
138
ChordCreator::Chord::Chord( const char * n, const ChordSemiTones & semi_tones ) :
 
139
        m_name( ChordCreator::tr( n ) )
 
140
{
 
141
        for( m_size = 0; m_size < MAX_CHORD_POLYPHONY; m_size++ )
 
142
        {
 
143
                if( semi_tones[m_size] == -1 )
 
144
                {
 
145
                        break;
 
146
                }
 
147
 
 
148
                m_semiTones[m_size] = semi_tones[m_size];
 
149
        }
 
150
}
 
151
 
 
152
 
 
153
 
 
154
 
 
155
bool ChordCreator::Chord::hasSemiTone( Sint8 semi_tone ) const
 
156
{
 
157
        for( int i = 0; i < size(); ++i )
 
158
        {
 
159
                if( semi_tone == m_semiTones[i] )
 
160
                        return true;
 
161
        }
 
162
        return false;
 
163
}
 
164
 
 
165
 
 
166
 
 
167
 
 
168
ChordCreator::ChordTable::ChordTable() :
 
169
        QVector<Chord>()
 
170
{
 
171
        for( int i = 0;
 
172
                i < static_cast<int>( sizeof s_initTable / sizeof *s_initTable );
 
173
                i++ )
 
174
        {
 
175
                push_back( Chord( s_initTable[i].m_name, s_initTable[i].m_semiTones ) );
 
176
        }
 
177
}
 
178
 
 
179
 
 
180
 
 
181
 
 
182
const ChordCreator::Chord & ChordCreator::ChordTable::getByName( const QString & name, bool is_scale ) const
 
183
{
 
184
        for( int i = 0; i < size(); i++ )
 
185
        {
 
186
                if( at( i ).getName() == name && is_scale == at( i ).isScale() )
 
187
                        return at( i );
 
188
        }
 
189
 
 
190
        static Chord empty;
 
191
        return empty;
 
192
}
 
193
 
 
194
 
 
195
 
 
196
 
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" ) )
144
202
{
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 )
146
205
        {
147
 
                m_chordsModel.addItem( tr( s_chordTable[i].name.toUtf8().
148
 
                                                                constData() ) );
 
206
                m_chordsModel.addItem( chord_table[i].getName() );
149
207
        }
150
208
}
151
209
 
162
220
void ChordCreator::processNote( notePlayHandle * _n )
163
221
{
164
222
        const int base_note_key = _n->key();
 
223
        const ChordTable & chord_table = ChordTable::getInstance();
165
224
        // we add chord-subnotes to note if either note is a base-note and
166
225
        // arpeggio is not used or note is part of an arpeggio
167
226
        // at the same time we only add sub-notes if nothing of the note was
186
245
                        // create it in the following loop, then we loop until
187
246
                        // there's a -1 in the interval-array
188
247
                        for( int i = ( octave_cnt == 0 ) ? 1 : 0;
189
 
                                s_chordTable[selected_chord].interval[i] != -1;
 
248
                                i < chord_table[selected_chord].size();
190
249
                                                                        ++i )
191
250
                        {
192
251
                                // add interval to sub-note-key
193
252
                                const int sub_note_key = sub_note_key_base +
194
 
                                                        (int) s_chordTable[
195
 
                                                selected_chord].interval[i];
 
253
                                                        (int) chord_table[
 
254
                                                selected_chord][i];
196
255
                                // maybe we're out of range -> let's get outta
197
256
                                // here!
198
257
                                if( sub_note_key > NumKeys )
255
314
        m_arpDirectionModel( this, tr( "Arpeggio direction" ) ),
256
315
        m_arpModeModel( this, tr( "Arpeggio mode" ) )
257
316
{
258
 
        for( int i = 0; ChordCreator::s_chordTable[i].interval[0] != -1; ++i )
 
317
        const ChordCreator::ChordTable & chord_table = ChordCreator::ChordTable::getInstance();
 
318
        for( int i = 0; i < chord_table.size(); ++i )
259
319
        {
260
 
                m_arpModel.addItem( ChordCreator::tr(
261
 
                                        ChordCreator::s_chordTable[i].
262
 
                                                name.toUtf8().constData() ) );
 
320
                m_arpModel.addItem( chord_table[i].getName() );
263
321
        }
264
322
 
265
323
        m_arpDirectionModel.addItem( tr( "Up" ), new PixmapLoader( "arp_up" ) );
314
372
                }
315
373
        }
316
374
 
317
 
        const int cur_chord_size = ChordCreator::getChordSize(
318
 
                                ChordCreator::s_chordTable[selected_arp] );
 
375
        const ChordCreator::ChordTable & chord_table = ChordCreator::ChordTable::getInstance();
 
376
        const int cur_chord_size = chord_table[selected_arp].size();
319
377
        const int range = (int)( cur_chord_size * m_arpRangeModel.value() );
320
378
        const int total_range = range * cnphv.size();
321
379
 
401
459
                const int sub_note_key = base_note_key + (cur_arp_idx /
402
460
                                                        cur_chord_size ) *
403
461
                                                        KeysPerOctave +
404
 
                                ChordCreator::s_chordTable[selected_arp].
405
 
                                        interval[cur_arp_idx % cur_chord_size];
 
462
                                chord_table[selected_arp][cur_arp_idx % cur_chord_size];
406
463
 
407
464
                // range-checking
408
465
                if( sub_note_key >= NumKeys ||