Hello again,

After a few days of enthusiastic remembering about QT and C++ (some
years of java and php made me forget many things), reading, studying,
the criticisms provided (I really appreciate the prompt and precious
reply to posts and questions), the tutorials regarding midi, github
etc. etc. I am daring to submit a small change in the arpeggio files.

As I am digging into midi and the lmms code, slowly (very)
understanding some of the features which led to such an elegant and
functional implementation, I can just admire the work that has been
done!

The arpeggio section caught my imagination, I'm using it a lot and as
it is it already produces marvellous effects: it's potential goes far
beyond simple scale repetition!

I currently use the diff I'm proposing here to set up rhythms in
conjunction with the excellent tempo syncing.
Up to now I only added the possibility to use -1 as a semitone,
substituting it with a boundary constant.

But this is just temporary and here follows the next step:

I've just forked the lmms repo (I am thankful for the clear
explanations) and will try to do the following (won't be easy, I'm not
a pro, know little c and am working only in my spare time):

- the arpeggio data at present work through an array of hardcoded char
semitones.
I'll try to change that into an array of structs (key, volume,
panning, silenced, active), eliminating the boundary program logic,
too.
the data should reside into text files, maybe json formatted, and in
time there should be an editor for it to be easily edited.

I have a question: all I'm doing is by inspecting and trying to
understand the code. Am I so dumb to have missed any lmms specific
coding notes/tutorials/manuals (all I found so far was work in
progress)?

Hoping not to be too naive and dreamy
I'm sending all my best regards and appreciation
R.
diff --git a/include/InstrumentFunctions.h b/include/InstrumentFunctions.h
index befc16e..7348703 100644
--- a/include/InstrumentFunctions.h
+++ b/include/InstrumentFunctions.h
@@ -43,6 +43,7 @@ class InstrumentFunctionNoteStacking : public Model, public 
JournallingObject
 
 public:
        static const int MAX_CHORD_POLYPHONY = 13;
+    static const int BOUNDARY_CHORD = -100;
 
 private:
        typedef int8_t ChordSemiTones [MAX_CHORD_POLYPHONY];
diff --git a/src/core/InstrumentFunctions.cpp b/src/core/InstrumentFunctions.cpp
index 67d3a0e..e6b90fe 100644
--- a/src/core/InstrumentFunctions.cpp
+++ b/src/core/InstrumentFunctions.cpp
@@ -36,108 +36,110 @@
 
 InstrumentFunctionNoteStacking::ChordTable::Init 
InstrumentFunctionNoteStacking::ChordTable::s_initTable[] =
 {
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "octave" ), { 0, 
-1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Major" ), { 0, 
4, 7, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Majb5" ), { 0, 
4, 6, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "minor" ), { 0, 
3, 7, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "minb5" ), { 0, 
3, 6, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "sus2" ), { 0, 
2, 7, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "sus4" ), { 0, 
5, 7, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "aug" ), { 0, 4, 
8, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "augsus4" ), { 
0, 5, 8, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "tri" ), { 0, 3, 
6, 9, -1 } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "octave" ), { 0, 
BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Major" ), { 0, 4, 
7, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Majb5" ), { 0, 4, 
6, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "minor" ), { 0, 3, 
7, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "minb5" ), { 0, 3, 
6, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "sus2" ), { 0, 2, 
7, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "sus4" ), { 0, 5, 
7, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "aug" ), { 0, 4, 8, 
BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "augsus4" ), { 0, 
5, 8, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "tri" ), { 0, 3, 6, 
9, BOUNDARY_CHORD } },
        
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "6" ), { 0, 4, 
7, 9, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "6sus4" ), { 0, 
5, 7, 9, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "6add9" ), { 0, 
4, 7, 9, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m6" ), { 0, 3, 
7, 9, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m6add9" ), { 0, 
3, 7, 9, 14, -1 } },
-
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7" ), { 0, 4, 
7, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7sus4" ), { 0, 
5, 7, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#5" ), { 0, 4, 
8, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7b5" ), { 0, 4, 
6, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#9" ), { 0, 4, 
7, 10, 15, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7b9" ), { 0, 4, 
7, 10, 13, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#5#9" ), { 0, 
4, 8, 10, 15, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#5b9" ), { 0, 
4, 8, 10, 13, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7b5b9" ), { 0, 
4, 6, 10, 13, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7add11" ), { 0, 
4, 7, 10, 17, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7add13" ), { 0, 
4, 7, 10, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#11" ), { 0, 
4, 7, 10, 18, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7" ), { 0, 
4, 7, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7b5" ), { 0, 
4, 6, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7#5" ), { 0, 
4, 8, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7#11" ), { 
0, 4, 7, 11, 18, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7add13" ), { 
0, 4, 7, 11, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7" ), { 0, 3, 
7, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7b5" ), { 0, 
3, 6, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7b9" ), { 0, 
3, 7, 10, 13, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7add11" ), { 
0, 3, 7, 10, 17, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7add13" ), { 
0, 3, 7, 10, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj7" ), { 0, 
3, 7, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj7add11" ), 
{ 0, 3, 7, 11, 17, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj7add13" ), 
{ 0, 3, 7, 11, 21, -1 } },
-
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9" ), { 0, 4, 
7, 10, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9sus4" ), { 0, 
5, 7, 10, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "add9" ), { 0, 
4, 7, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9#5" ), { 0, 4, 
8, 10, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9b5" ), { 0, 4, 
6, 10, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9#11" ), { 0, 
4, 7, 10, 14, 18, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9b13" ), { 0, 
4, 7, 10, 14, 20, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj9" ), { 0, 
4, 7, 11, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj9sus4" ), { 
0, 5, 7, 11, 15, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj9#5" ), { 0, 
4, 8, 11, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj9#11" ), { 
0, 4, 7, 11, 14, 18, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m9" ), { 0, 3, 
7, 10, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "madd9" ), { 0, 
3, 7, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m9b5" ), { 0, 
3, 6, 10, 14, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m9-Maj7" ), { 
0, 3, 7, 11, 14, -1 } },
-
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "11" ), { 0, 4, 
7, 10, 14, 17, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "11b9" ), { 0, 
4, 7, 10, 13, 17, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj11" ), { 0, 
4, 7, 11, 14, 17, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m11" ), { 0, 3, 
7, 10, 14, 17, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj11" ), { 
0, 3, 7, 11, 14, 17, -1 } },
-
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "13" ), { 0, 4, 
7, 10, 14, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "13#9" ), { 0, 
4, 7, 10, 15, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "13b9" ), { 0, 
4, 7, 10, 13, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "13b5b9" ), { 0, 
4, 6, 10, 13, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj13" ), { 0, 
4, 7, 11, 14, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m13" ), { 0, 3, 
7, 10, 14, 21, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj13" ), { 
0, 3, 7, 11, 14, 21, -1 } },
-
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Major" ), { 0, 
2, 4, 5, 7, 9, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Harmonic minor" 
), { 0, 2, 3, 5, 7, 8, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Melodic minor" 
), { 0, 2, 3, 5, 7, 9, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Whole tone" ), 
{ 0, 2, 4, 6, 8, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Diminished" ), 
{ 0, 2, 3, 5, 6, 8, 9, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Major 
pentatonic" ), { 0, 2, 4, 7, 9, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Minor 
pentatonic" ), { 0, 3, 5, 7, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Jap in sen" ), 
{ 0, 1, 5, 7, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Major bebop" ), 
{ 0, 2, 4, 5, 7, 8, 9, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Dominant bebop" 
), { 0, 2, 4, 5, 7, 9, 10, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Blues" ), { 0, 
3, 5, 6, 7, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Arabic" ), { 0, 
1, 4, 5, 7, 8, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Enigmatic" ), { 
0, 1, 4, 6, 8, 10, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Neopolitan" ), 
{ 0, 1, 3, 5, 7, 9, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Neopolitan 
minor" ), { 0, 1, 3, 5, 7, 8, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Hungarian 
minor" ), { 0, 2, 3, 6, 7, 8, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Dorian" ), { 0, 
2, 3, 5, 7, 9, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Phrygolydian" 
), { 0, 1, 3, 5, 7, 8, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Lydian" ), { 0, 
2, 4, 6, 7, 9, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Mixolydian" ), 
{ 0, 2, 4, 5, 7, 9, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Aeolian" ), { 
0, 2, 3, 5, 7, 8, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Locrian" ), { 
0, 1, 3, 5, 6, 8, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Minor" ), { 0, 
2, 3, 5, 7, 8, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Chromatic" ), { 
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Half-Whole 
Diminished" ), { 0, 1, 3, 4, 6, 7, 9, 10, -1 } },
-       
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "5" ), { 0, 7, 
-1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Phrygian 
dominant" ), { 0, 1, 4, 5, 7, 8, 10, -1 } },
-       { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Persian" ), { 
0, 1, 4, 5, 6, 8, 11, -1 } }
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "6" ), { 0, 4, 7, 
9, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "6sus4" ), { 0, 5, 
7, 9, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "6add9" ), { 0, 4, 
7, 9, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m6" ), { 0, 3, 7, 
9, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m6add9" ), { 0, 3, 
7, 9, 14, BOUNDARY_CHORD } },
+
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7" ), { 0, 4, 7, 
10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7sus4" ), { 0, 5, 
7, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#5" ), { 0, 4, 8, 
10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7b5" ), { 0, 4, 6, 
10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#9" ), { 0, 4, 7, 
10, 15, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7b9" ), { 0, 4, 7, 
10, 13, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#5#9" ), { 0, 4, 
8, 10, 15, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#5b9" ), { 0, 4, 
8, 10, 13, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7b5b9" ), { 0, 4, 
6, 10, 13, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7add11" ), { 0, 4, 
7, 10, 17, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7add13" ), { 0, 4, 
7, 10, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "7#11" ), { 0, 4, 
7, 10, 18, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7" ), { 0, 4, 
7, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7b5" ), { 0, 4, 
6, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7#5" ), { 0, 4, 
8, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7#11" ), { 0, 
4, 7, 11, 18, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj7add13" ), { 0, 
4, 7, 11, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7" ), { 0, 3, 7, 
10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7b5" ), { 0, 3, 
6, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7b9" ), { 0, 3, 
7, 10, 13, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7add11" ), { 0, 
3, 7, 10, 17, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m7add13" ), { 0, 
3, 7, 10, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj7" ), { 0, 3, 
7, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj7add11" ), { 
0, 3, 7, 11, 17, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj7add13" ), { 
0, 3, 7, 11, 21, BOUNDARY_CHORD } },
+
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9" ), { 0, 4, 7, 
10, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9sus4" ), { 0, 5, 
7, 10, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "add9" ), { 0, 4, 
7, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9#5" ), { 0, 4, 8, 
10, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9b5" ), { 0, 4, 6, 
10, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9#11" ), { 0, 4, 
7, 10, 14, 18, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "9b13" ), { 0, 4, 
7, 10, 14, 20, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj9" ), { 0, 4, 
7, 11, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj9sus4" ), { 0, 
5, 7, 11, 15, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj9#5" ), { 0, 4, 
8, 11, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj9#11" ), { 0, 
4, 7, 11, 14, 18, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m9" ), { 0, 3, 7, 
10, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "madd9" ), { 0, 3, 
7, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m9b5" ), { 0, 3, 
6, 10, 14, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m9-Maj7" ), { 0, 
3, 7, 11, 14, BOUNDARY_CHORD } },
+
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "11" ), { 0, 4, 7, 
10, 14, 17, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "11b9" ), { 0, 4, 
7, 10, 13, 17, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj11" ), { 0, 4, 
7, 11, 14, 17, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m11" ), { 0, 3, 7, 
10, 14, 17, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj11" ), { 0, 
3, 7, 11, 14, 17, BOUNDARY_CHORD } },
+
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "13" ), { 0, 4, 7, 
10, 14, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "13#9" ), { 0, 4, 
7, 10, 15, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "13b9" ), { 0, 4, 
7, 10, 13, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "13b5b9" ), { 0, 4, 
6, 10, 13, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Maj13" ), { 0, 4, 
7, 11, 14, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m13" ), { 0, 3, 7, 
10, 14, 21, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "m-Maj13" ), { 0, 
3, 7, 11, 14, 21, BOUNDARY_CHORD } },
+
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Major" ), { 0, 2, 
4, 5, 7, 9, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Harmonic minor" ), 
{ 0, 2, 3, 5, 7, 8, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Melodic minor" ), 
{ 0, 2, 3, 5, 7, 9, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Whole tone" ), { 
0, 2, 4, 6, 8, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Diminished" ), { 
0, 2, 3, 5, 6, 8, 9, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Major pentatonic" 
), { 0, 2, 4, 7, 9, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Minor pentatonic" 
), { 0, 3, 5, 7, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Jap in sen" ), { 
0, 1, 5, 7, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Major bebop" ), { 
0, 2, 4, 5, 7, 8, 9, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Dominant bebop" ), 
{ 0, 2, 4, 5, 7, 9, 10, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Blues" ), { 0, 3, 
5, 6, 7, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Arabic" ), { 0, 1, 
4, 5, 7, 8, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Enigmatic" ), { 0, 
1, 4, 6, 8, 10, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Neopolitan" ), { 
0, 1, 3, 5, 7, 9, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Neopolitan minor" 
), { 0, 1, 3, 5, 7, 8, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Hungarian minor" 
), { 0, 2, 3, 6, 7, 8, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Dorian" ), { 0, 2, 
3, 5, 7, 9, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Phrygolydian" ), { 
0, 1, 3, 5, 7, 8, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Lydian" ), { 0, 2, 
4, 6, 7, 9, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Mixolydian" ), { 
0, 2, 4, 5, 7, 9, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Aeolian" ), { 0, 
2, 3, 5, 7, 8, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Locrian" ), { 0, 
1, 3, 5, 6, 8, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Minor" ), { 0, 2, 
3, 5, 7, 8, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Chromatic" ), { 0, 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Half-Whole 
Diminished" ), { 0, 1, 3, 4, 6, 7, 9, 10, BOUNDARY_CHORD } },
+
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "5" ), { 0, 7, 
BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Phrygian dominant" 
), { 0, 1, 4, 5, 7, 8, 10, BOUNDARY_CHORD } },
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Persian" ), { 0, 
1, 4, 5, 6, 8, 11, BOUNDARY_CHORD } },
+
+    { QT_TRANSLATE_NOOP( "InstrumentFunctionNoteStacking", "Batman" ), { 0, 0, 
-2, -2, -5, -5, -2, -2, BOUNDARY_CHORD } }
 } ;
 
 
@@ -148,7 +150,7 @@ InstrumentFunctionNoteStacking::Chord::Chord( const char * 
n, const ChordSemiTon
 {
        for( m_size = 0; m_size < MAX_CHORD_POLYPHONY; m_size++ )
        {
-               if( semi_tones[m_size] == -1 )
+        if( semi_tones[m_size] == BOUNDARY_CHORD  )
                {
                        break;
                }
------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
LMMS-devel mailing list
LMMS-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lmms-devel

Reply via email to