diff --git a/libmscore/utils.cpp b/libmscore/utils.cpp index 4a05ffe65a8f..1707365176c4 100644 --- a/libmscore/utils.cpp +++ b/libmscore/utils.cpp @@ -624,7 +624,7 @@ int diatonicUpDown(Key k, int pitch, int steps) { static int ptab[15][7] = { // c c# d d# e f f# g g# a a# b - { -1, 1, 3, 5, 6, 8, 10 }, // Ces + { -1, 1, 3, 4, 6, 8, 10 }, // Ces { -1, 1, 3, 5, 6, 8, 10 }, // Ges { 0, 1, 3, 5, 6, 8, 10 }, // Des { 0, 1, 3, 5, 7, 8, 10 }, // As @@ -647,31 +647,53 @@ int diatonicUpDown(Key k, int pitch, int steps) int step = pitch % 12; int octave = pitch / 12; - for (int i = 0; i < 7; ++i) { - if (ptab[key][i] == step) { - if (steps > 0) { - while (steps--) { - ++i; - if (i == 7) { - ++octave; - i = 0; - } - } + // loop through the diatonic steps of the key looking for the given note + // or the gap where it would fit + int i = 0; + while (i < 7) { + if (ptab[key][i] >= step) + break; + ++i; + } + + // neither step nor gap found + // reset to beginning + if (i == 7) { + ++octave; + i = 0; + } + // if given step not found (gap found instead), and we are stepping up + // then we've already accounted for one step + if (ptab[key][i] > step && steps > 0) + --steps; + + // now start counting diatonic steps up or down + if (steps > 0) { + // count up + while (steps--) { + ++i; + if (i == 7) { + // hit last step; reset to beginning + ++octave; + i = 0; } - else { - while (++steps <= 0) { - --i; - if (i < 0) { - i = 6; - --octave; - } - } + } + } + else if (steps < 0) { + // count down + while (steps++) { + --i; + if (i < 0) { + // hit first step; reset to end + --octave; + i = 6; } - step = ptab[key][i]; - break; } } - pitch = octave * 12 + step; + + // convert step to pitch + step = ptab[key][i]; + pitch = octave * 12 + step; if (pitch < 0) pitch = 0; if (pitch > 127) diff --git a/mtest/libmscore/midi/testMordents-ref.txt b/mtest/libmscore/midi/testMordents-ref.txt new file mode 100644 index 000000000000..330e76a536a4 --- /dev/null +++ b/mtest/libmscore/midi/testMordents-ref.txt @@ -0,0 +1,414 @@ +Tick = 0 Type = 144 Pitch = 60 Velocity = 80 Channel = 0 +Tick = 0 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 112 Type = 144 Pitch = 60 Velocity = 0 Channel = 0 +Tick = 120 Type = 144 Pitch = 62 Velocity = 80 Channel = 0 +Tick = 232 Type = 144 Pitch = 62 Velocity = 0 Channel = 0 +Tick = 240 Type = 144 Pitch = 60 Velocity = 80 Channel = 0 +Tick = 480 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 922 Type = 144 Pitch = 60 Velocity = 0 Channel = 0 +Tick = 960 Type = 144 Pitch = 61 Velocity = 80 Channel = 0 +Tick = 960 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 1072 Type = 144 Pitch = 61 Velocity = 0 Channel = 0 +Tick = 1080 Type = 144 Pitch = 62 Velocity = 80 Channel = 0 +Tick = 1192 Type = 144 Pitch = 62 Velocity = 0 Channel = 0 +Tick = 1200 Type = 144 Pitch = 61 Velocity = 80 Channel = 0 +Tick = 1440 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 1882 Type = 144 Pitch = 61 Velocity = 0 Channel = 0 +Tick = 1920 Type = 144 Pitch = 64 Velocity = 80 Channel = 0 +Tick = 1920 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 2032 Type = 144 Pitch = 64 Velocity = 0 Channel = 0 +Tick = 2040 Type = 144 Pitch = 65 Velocity = 80 Channel = 0 +Tick = 2152 Type = 144 Pitch = 65 Velocity = 0 Channel = 0 +Tick = 2160 Type = 144 Pitch = 64 Velocity = 80 Channel = 0 +Tick = 2400 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 2842 Type = 144 Pitch = 64 Velocity = 0 Channel = 0 +Tick = 2880 Type = 144 Pitch = 65 Velocity = 80 Channel = 0 +Tick = 2880 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 2992 Type = 144 Pitch = 65 Velocity = 0 Channel = 0 +Tick = 3000 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 3112 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 3120 Type = 144 Pitch = 65 Velocity = 80 Channel = 0 +Tick = 3360 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 3802 Type = 144 Pitch = 65 Velocity = 0 Channel = 0 +Tick = 3840 Type = 144 Pitch = 66 Velocity = 80 Channel = 0 +Tick = 3840 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 3952 Type = 144 Pitch = 66 Velocity = 0 Channel = 0 +Tick = 3960 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 4072 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 4080 Type = 144 Pitch = 66 Velocity = 80 Channel = 0 +Tick = 4320 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 4762 Type = 144 Pitch = 66 Velocity = 0 Channel = 0 +Tick = 4800 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 4800 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 4912 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 4920 Type = 144 Pitch = 69 Velocity = 80 Channel = 0 +Tick = 5032 Type = 144 Pitch = 69 Velocity = 0 Channel = 0 +Tick = 5040 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 5280 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 5722 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 5760 Type = 144 Pitch = 70 Velocity = 80 Channel = 0 +Tick = 5760 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 5872 Type = 144 Pitch = 70 Velocity = 0 Channel = 0 +Tick = 5880 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 5992 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 6000 Type = 144 Pitch = 70 Velocity = 80 Channel = 0 +Tick = 6240 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 6682 Type = 144 Pitch = 70 Velocity = 0 Channel = 0 +Tick = 6720 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 6720 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 6832 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 6840 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 6952 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 6960 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 7200 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 7642 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 7680 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 7680 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 7792 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 7800 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 7912 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 7920 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 8160 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 8602 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 8640 Type = 144 Pitch = 73 Velocity = 80 Channel = 0 +Tick = 8640 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 8752 Type = 144 Pitch = 73 Velocity = 0 Channel = 0 +Tick = 8760 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 8872 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 8880 Type = 144 Pitch = 73 Velocity = 80 Channel = 0 +Tick = 9120 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 9562 Type = 144 Pitch = 73 Velocity = 0 Channel = 0 +Tick = 9600 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 9600 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 9712 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 9720 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 9832 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 +Tick = 9840 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 10080 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 10522 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 10560 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 10560 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 10672 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 10680 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 10792 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 10800 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 11040 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 11482 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 11520 Type = 144 Pitch = 78 Velocity = 80 Channel = 0 +Tick = 11520 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 11632 Type = 144 Pitch = 78 Velocity = 0 Channel = 0 +Tick = 11640 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 11752 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 11760 Type = 144 Pitch = 78 Velocity = 80 Channel = 0 +Tick = 12000 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 12442 Type = 144 Pitch = 78 Velocity = 0 Channel = 0 +Tick = 12480 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 +Tick = 12480 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 12592 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 +Tick = 12600 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 12712 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 12720 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 +Tick = 12960 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 13402 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 +Tick = 13440 Type = 144 Pitch = 82 Velocity = 80 Channel = 0 +Tick = 13440 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 13552 Type = 144 Pitch = 82 Velocity = 0 Channel = 0 +Tick = 13560 Type = 144 Pitch = 81 Velocity = 80 Channel = 0 +Tick = 13672 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 +Tick = 13680 Type = 144 Pitch = 82 Velocity = 80 Channel = 0 +Tick = 13920 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 14362 Type = 144 Pitch = 82 Velocity = 0 Channel = 0 +Tick = 14400 Type = 144 Pitch = 83 Velocity = 80 Channel = 0 +Tick = 14400 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 14512 Type = 144 Pitch = 83 Velocity = 0 Channel = 0 +Tick = 14520 Type = 144 Pitch = 81 Velocity = 80 Channel = 0 +Tick = 14632 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 +Tick = 14640 Type = 144 Pitch = 83 Velocity = 80 Channel = 0 +Tick = 14880 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 15322 Type = 144 Pitch = 83 Velocity = 0 Channel = 0 +Tick = 15360 Type = 144 Pitch = 84 Velocity = 80 Channel = 0 +Tick = 15360 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 15585 Type = 144 Pitch = 84 Velocity = 0 Channel = 0 +Tick = 15600 Type = 144 Pitch = 83 Velocity = 80 Channel = 0 +Tick = 15825 Type = 144 Pitch = 83 Velocity = 0 Channel = 0 +Tick = 15840 Type = 144 Pitch = 84 Velocity = 80 Channel = 0 +Tick = 15840 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 16320 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 16800 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 17206 Type = 144 Pitch = 84 Velocity = 0 Channel = 0 +Tick = 17280 Type = 144 Pitch = 60 Velocity = 80 Channel = 0 +Tick = 17280 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 17392 Type = 144 Pitch = 60 Velocity = 0 Channel = 0 +Tick = 17400 Type = 144 Pitch = 61 Velocity = 80 Channel = 0 +Tick = 17512 Type = 144 Pitch = 61 Velocity = 0 Channel = 0 +Tick = 17520 Type = 144 Pitch = 60 Velocity = 80 Channel = 0 +Tick = 17760 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 18202 Type = 144 Pitch = 60 Velocity = 0 Channel = 0 +Tick = 18240 Type = 144 Pitch = 61 Velocity = 80 Channel = 0 +Tick = 18240 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 18352 Type = 144 Pitch = 61 Velocity = 0 Channel = 0 +Tick = 18360 Type = 144 Pitch = 63 Velocity = 80 Channel = 0 +Tick = 18472 Type = 144 Pitch = 63 Velocity = 0 Channel = 0 +Tick = 18480 Type = 144 Pitch = 61 Velocity = 80 Channel = 0 +Tick = 18720 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 19162 Type = 144 Pitch = 61 Velocity = 0 Channel = 0 +Tick = 19200 Type = 144 Pitch = 64 Velocity = 80 Channel = 0 +Tick = 19200 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 19312 Type = 144 Pitch = 64 Velocity = 0 Channel = 0 +Tick = 19320 Type = 144 Pitch = 65 Velocity = 80 Channel = 0 +Tick = 19432 Type = 144 Pitch = 65 Velocity = 0 Channel = 0 +Tick = 19440 Type = 144 Pitch = 64 Velocity = 80 Channel = 0 +Tick = 19680 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 20122 Type = 144 Pitch = 64 Velocity = 0 Channel = 0 +Tick = 20160 Type = 144 Pitch = 65 Velocity = 80 Channel = 0 +Tick = 20160 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 20272 Type = 144 Pitch = 65 Velocity = 0 Channel = 0 +Tick = 20280 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 20392 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 20400 Type = 144 Pitch = 65 Velocity = 80 Channel = 0 +Tick = 20640 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 21082 Type = 144 Pitch = 65 Velocity = 0 Channel = 0 +Tick = 21120 Type = 144 Pitch = 66 Velocity = 80 Channel = 0 +Tick = 21120 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 21232 Type = 144 Pitch = 66 Velocity = 0 Channel = 0 +Tick = 21240 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 21352 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 21360 Type = 144 Pitch = 66 Velocity = 80 Channel = 0 +Tick = 21600 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 22042 Type = 144 Pitch = 66 Velocity = 0 Channel = 0 +Tick = 22080 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 22080 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 22192 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 22200 Type = 144 Pitch = 68 Velocity = 80 Channel = 0 +Tick = 22312 Type = 144 Pitch = 68 Velocity = 0 Channel = 0 +Tick = 22320 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 22560 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 23002 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 23040 Type = 144 Pitch = 70 Velocity = 80 Channel = 0 +Tick = 23040 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 23152 Type = 144 Pitch = 70 Velocity = 0 Channel = 0 +Tick = 23160 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 23272 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 23280 Type = 144 Pitch = 70 Velocity = 80 Channel = 0 +Tick = 23520 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 23962 Type = 144 Pitch = 70 Velocity = 0 Channel = 0 +Tick = 24000 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 24000 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 24112 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 24120 Type = 144 Pitch = 73 Velocity = 80 Channel = 0 +Tick = 24232 Type = 144 Pitch = 73 Velocity = 0 Channel = 0 +Tick = 24240 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 24480 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 24922 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 24960 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 24960 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 25072 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 25080 Type = 144 Pitch = 70 Velocity = 80 Channel = 0 +Tick = 25192 Type = 144 Pitch = 70 Velocity = 0 Channel = 0 +Tick = 25200 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 25440 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 25882 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 25920 Type = 144 Pitch = 73 Velocity = 80 Channel = 0 +Tick = 25920 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 26032 Type = 144 Pitch = 73 Velocity = 0 Channel = 0 +Tick = 26040 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 26152 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 26160 Type = 144 Pitch = 73 Velocity = 80 Channel = 0 +Tick = 26400 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 26842 Type = 144 Pitch = 73 Velocity = 0 Channel = 0 +Tick = 26880 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 26880 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 26992 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 27000 Type = 144 Pitch = 75 Velocity = 80 Channel = 0 +Tick = 27112 Type = 144 Pitch = 75 Velocity = 0 Channel = 0 +Tick = 27120 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 27360 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 27802 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 27840 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 27840 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 27952 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 27960 Type = 144 Pitch = 75 Velocity = 80 Channel = 0 +Tick = 28072 Type = 144 Pitch = 75 Velocity = 0 Channel = 0 +Tick = 28080 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 28320 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 28762 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 28800 Type = 144 Pitch = 78 Velocity = 80 Channel = 0 +Tick = 28800 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 28912 Type = 144 Pitch = 78 Velocity = 0 Channel = 0 +Tick = 28920 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 29032 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 29040 Type = 144 Pitch = 78 Velocity = 80 Channel = 0 +Tick = 29280 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 29722 Type = 144 Pitch = 78 Velocity = 0 Channel = 0 +Tick = 29760 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 +Tick = 29760 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 29872 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 +Tick = 29880 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 29992 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 30000 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 +Tick = 30240 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 30682 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 +Tick = 30720 Type = 144 Pitch = 82 Velocity = 80 Channel = 0 +Tick = 30720 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 30832 Type = 144 Pitch = 82 Velocity = 0 Channel = 0 +Tick = 30840 Type = 144 Pitch = 80 Velocity = 80 Channel = 0 +Tick = 30952 Type = 144 Pitch = 80 Velocity = 0 Channel = 0 +Tick = 30960 Type = 144 Pitch = 82 Velocity = 80 Channel = 0 +Tick = 31200 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 31642 Type = 144 Pitch = 82 Velocity = 0 Channel = 0 +Tick = 31680 Type = 144 Pitch = 83 Velocity = 80 Channel = 0 +Tick = 31680 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 31792 Type = 144 Pitch = 83 Velocity = 0 Channel = 0 +Tick = 31800 Type = 144 Pitch = 82 Velocity = 80 Channel = 0 +Tick = 31912 Type = 144 Pitch = 82 Velocity = 0 Channel = 0 +Tick = 31920 Type = 144 Pitch = 83 Velocity = 80 Channel = 0 +Tick = 32160 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 32602 Type = 144 Pitch = 83 Velocity = 0 Channel = 0 +Tick = 32640 Type = 144 Pitch = 84 Velocity = 80 Channel = 0 +Tick = 32640 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 32865 Type = 144 Pitch = 84 Velocity = 0 Channel = 0 +Tick = 32880 Type = 144 Pitch = 82 Velocity = 80 Channel = 0 +Tick = 33105 Type = 144 Pitch = 82 Velocity = 0 Channel = 0 +Tick = 33120 Type = 144 Pitch = 84 Velocity = 80 Channel = 0 +Tick = 33120 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 33600 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 34080 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 34486 Type = 144 Pitch = 84 Velocity = 0 Channel = 0 +Tick = 34560 Type = 144 Pitch = 60 Velocity = 80 Channel = 0 +Tick = 34560 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 34672 Type = 144 Pitch = 60 Velocity = 0 Channel = 0 +Tick = 34680 Type = 144 Pitch = 61 Velocity = 80 Channel = 0 +Tick = 34792 Type = 144 Pitch = 61 Velocity = 0 Channel = 0 +Tick = 34800 Type = 144 Pitch = 60 Velocity = 80 Channel = 0 +Tick = 35040 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 35482 Type = 144 Pitch = 60 Velocity = 0 Channel = 0 +Tick = 35520 Type = 144 Pitch = 61 Velocity = 80 Channel = 0 +Tick = 35520 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 35632 Type = 144 Pitch = 61 Velocity = 0 Channel = 0 +Tick = 35640 Type = 144 Pitch = 63 Velocity = 80 Channel = 0 +Tick = 35752 Type = 144 Pitch = 63 Velocity = 0 Channel = 0 +Tick = 35760 Type = 144 Pitch = 61 Velocity = 80 Channel = 0 +Tick = 36000 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 36442 Type = 144 Pitch = 61 Velocity = 0 Channel = 0 +Tick = 36480 Type = 144 Pitch = 64 Velocity = 80 Channel = 0 +Tick = 36480 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 36592 Type = 144 Pitch = 64 Velocity = 0 Channel = 0 +Tick = 36600 Type = 144 Pitch = 66 Velocity = 80 Channel = 0 +Tick = 36712 Type = 144 Pitch = 66 Velocity = 0 Channel = 0 +Tick = 36720 Type = 144 Pitch = 64 Velocity = 80 Channel = 0 +Tick = 36960 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 37402 Type = 144 Pitch = 64 Velocity = 0 Channel = 0 +Tick = 37440 Type = 144 Pitch = 65 Velocity = 80 Channel = 0 +Tick = 37440 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 37552 Type = 144 Pitch = 65 Velocity = 0 Channel = 0 +Tick = 37560 Type = 144 Pitch = 66 Velocity = 80 Channel = 0 +Tick = 37672 Type = 144 Pitch = 66 Velocity = 0 Channel = 0 +Tick = 37680 Type = 144 Pitch = 65 Velocity = 80 Channel = 0 +Tick = 37920 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 38362 Type = 144 Pitch = 65 Velocity = 0 Channel = 0 +Tick = 38400 Type = 144 Pitch = 66 Velocity = 80 Channel = 0 +Tick = 38400 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 38512 Type = 144 Pitch = 66 Velocity = 0 Channel = 0 +Tick = 38520 Type = 144 Pitch = 68 Velocity = 80 Channel = 0 +Tick = 38632 Type = 144 Pitch = 68 Velocity = 0 Channel = 0 +Tick = 38640 Type = 144 Pitch = 66 Velocity = 80 Channel = 0 +Tick = 38880 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 39322 Type = 144 Pitch = 66 Velocity = 0 Channel = 0 +Tick = 39360 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 39360 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 39472 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 39480 Type = 144 Pitch = 68 Velocity = 80 Channel = 0 +Tick = 39592 Type = 144 Pitch = 68 Velocity = 0 Channel = 0 +Tick = 39600 Type = 144 Pitch = 67 Velocity = 80 Channel = 0 +Tick = 39840 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 40282 Type = 144 Pitch = 67 Velocity = 0 Channel = 0 +Tick = 40320 Type = 144 Pitch = 70 Velocity = 80 Channel = 0 +Tick = 40320 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 40432 Type = 144 Pitch = 70 Velocity = 0 Channel = 0 +Tick = 40440 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 40552 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 40560 Type = 144 Pitch = 70 Velocity = 80 Channel = 0 +Tick = 40800 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 41242 Type = 144 Pitch = 70 Velocity = 0 Channel = 0 +Tick = 41280 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 41280 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 41392 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 41400 Type = 144 Pitch = 73 Velocity = 80 Channel = 0 +Tick = 41512 Type = 144 Pitch = 73 Velocity = 0 Channel = 0 +Tick = 41520 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 41760 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 42202 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 42240 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 42240 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 42352 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 42360 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 42472 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 42480 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 42720 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 43162 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 43200 Type = 144 Pitch = 73 Velocity = 80 Channel = 0 +Tick = 43200 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 43312 Type = 144 Pitch = 73 Velocity = 0 Channel = 0 +Tick = 43320 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 +Tick = 43432 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 43440 Type = 144 Pitch = 73 Velocity = 80 Channel = 0 +Tick = 43680 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 44122 Type = 144 Pitch = 73 Velocity = 0 Channel = 0 +Tick = 44160 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 44160 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 44272 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 44280 Type = 144 Pitch = 75 Velocity = 80 Channel = 0 +Tick = 44392 Type = 144 Pitch = 75 Velocity = 0 Channel = 0 +Tick = 44400 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 44640 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 45082 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 45120 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 45120 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 45232 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 45240 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 45352 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 45360 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 45600 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 46042 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 46080 Type = 144 Pitch = 78 Velocity = 80 Channel = 0 +Tick = 46080 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 46192 Type = 144 Pitch = 78 Velocity = 0 Channel = 0 +Tick = 46200 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 46312 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 46320 Type = 144 Pitch = 78 Velocity = 80 Channel = 0 +Tick = 46560 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 47002 Type = 144 Pitch = 78 Velocity = 0 Channel = 0 +Tick = 47040 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 +Tick = 47040 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 47152 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 +Tick = 47160 Type = 144 Pitch = 78 Velocity = 80 Channel = 0 +Tick = 47272 Type = 144 Pitch = 78 Velocity = 0 Channel = 0 +Tick = 47280 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 +Tick = 47520 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 47962 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 +Tick = 48000 Type = 144 Pitch = 82 Velocity = 80 Channel = 0 +Tick = 48000 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 48112 Type = 144 Pitch = 82 Velocity = 0 Channel = 0 +Tick = 48120 Type = 144 Pitch = 81 Velocity = 80 Channel = 0 +Tick = 48232 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 +Tick = 48240 Type = 144 Pitch = 82 Velocity = 80 Channel = 0 +Tick = 48480 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 48922 Type = 144 Pitch = 82 Velocity = 0 Channel = 0 +Tick = 48960 Type = 144 Pitch = 83 Velocity = 80 Channel = 0 +Tick = 48960 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 49072 Type = 144 Pitch = 83 Velocity = 0 Channel = 0 +Tick = 49080 Type = 144 Pitch = 81 Velocity = 80 Channel = 0 +Tick = 49192 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 +Tick = 49200 Type = 144 Pitch = 83 Velocity = 80 Channel = 0 +Tick = 49440 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 49882 Type = 144 Pitch = 83 Velocity = 0 Channel = 0 +Tick = 49920 Type = 144 Pitch = 84 Velocity = 80 Channel = 0 +Tick = 49920 Type = 3 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 50145 Type = 144 Pitch = 84 Velocity = 0 Channel = 0 +Tick = 50160 Type = 144 Pitch = 83 Velocity = 80 Channel = 0 +Tick = 50385 Type = 144 Pitch = 83 Velocity = 0 Channel = 0 +Tick = 50400 Type = 144 Pitch = 84 Velocity = 80 Channel = 0 +Tick = 50400 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 50880 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 51360 Type = 4 Pitch = 0 Velocity = 0 Channel = 0 +Tick = 51766 Type = 144 Pitch = 84 Velocity = 0 Channel = 0 diff --git a/mtest/libmscore/midi/testMordents.mscx b/mtest/libmscore/midi/testMordents.mscx new file mode 100644 index 000000000000..f3b37c966f80 --- /dev/null +++ b/mtest/libmscore/midi/testMordents.mscx @@ -0,0 +1,802 @@ + + + 2.0.0 + b79c7fc + + + 0 + + + 480 + + 1 + 1 + 1 + 0 + + + + 2014-11-22 + + + + Linux + + + + + TestMordents + + + + + + + + + + + + + + + + stdNormal + + + Piano + + Piano + Pno. + Piano + 21 + 108 + 21 + 108 + F + + 100 + 95 + + + 100 + 33 + + + 100 + 50 + + + 100 + 67 + + + 100 + 100 + + + 120 + 67 + + + 120 + 100 + + + + Fluid + + + + + + 10 + + + TestMordents + + + + + 0 + + + 4 + 4 + 1 + + + half + + prall + + + 60 + 14 + + + + half + + prall + + + + sharp + + 61 + 21 + + + + + + half + + prall + + + 64 + 18 + + + + half + + prall + + + 65 + 13 + + + + + + half + + prall + + + + sharp + + 66 + 20 + + + + half + + prall + + + 67 + 15 + + + + + + half + + prall + + + + flat + + 70 + 12 + + + + half + + prall + + + + natural + + 71 + 19 + + + + + + half + + mordent + + + 72 + 14 + + + + half + + mordent + + + + sharp + + 73 + 21 + + + + + + half + + mordent + + + 76 + 18 + + + + half + + mordent + + + 77 + 13 + + + + + + half + + mordent + + + + sharp + + 78 + 20 + + + + half + + mordent + + + 79 + 15 + + + + + + half + + mordent + + + + flat + + 82 + 12 + + + + half + + mordent + + + + natural + + 83 + 19 + + + + + + line + 3 + + + whole + + mordent + + + 84 + 14 + + + + double + 1 + + + + + -4 + + + half + + prall + + + 60 + 14 + + + + half + + prall + + + 61 + 9 + + + + + + half + + prall + + + + natural + + 64 + 18 + + + + half + + prall + + + 65 + 13 + + + + + + half + + prall + + + + sharp + + 66 + 20 + + + + half + + prall + + + 67 + 15 + + + + + + half + + prall + + + 70 + 12 + + + + half + + prall + + + + natural + + 71 + 19 + + + + + + half + + mordent + + + 72 + 14 + + + + half + + mordent + + + 73 + 9 + + + + + + half + + mordent + + + + natural + + 76 + 18 + + + + half + + mordent + + + 77 + 13 + + + + + + half + + mordent + + + + sharp + + 78 + 20 + + + + half + + mordent + + + 79 + 15 + + + + + + half + + mordent + + + 82 + 12 + + + + half + + mordent + + + + natural + + 83 + 19 + + + + + + line + 3 + + + whole + + mordent + + + 84 + 14 + + + + + + 4 + + + half + + prall + + + + natural + + 60 + 14 + + + + half + + prall + + + + sharp + + 61 + 21 + + + + + + half + + prall + + + 64 + 18 + + + + half + + prall + + + + natural + + 65 + 13 + + + + + + half + + prall + + + + 1 + sharp + + 66 + 20 + + + + half + + prall + + + + natural + + 67 + 15 + + + + + + half + + prall + + + + flat + + 70 + 12 + + + + half + + prall + + + + natural + + 71 + 19 + + + + + + half + + mordent + + + + natural + + 72 + 14 + + + + half + + mordent + + + + sharp + + 73 + 21 + + + + + + half + + mordent + + + 76 + 18 + + + + half + + mordent + + + + natural + + 77 + 13 + + + + + + half + + mordent + + + + 1 + sharp + + 78 + 20 + + + + half + + mordent + + + + natural + + 79 + 15 + + + + + + half + + mordent + + + + flat + + 82 + 12 + + + + half + + mordent + + + + natural + + 83 + 19 + + + + + + whole + + mordent + + + + natural + + 84 + 14 + + + + end + 1 + + + + + diff --git a/mtest/libmscore/midi/tst_midi.cpp b/mtest/libmscore/midi/tst_midi.cpp index 11ab82bc680a..eca5373293a4 100644 --- a/mtest/libmscore/midi/tst_midi.cpp +++ b/mtest/libmscore/midi/tst_midi.cpp @@ -81,6 +81,8 @@ void TestMidi::events_data() // Test Text Cominations QTest::newRow("testSwingStyleText") << "testSwingStyleText"; QTest::newRow("testSwingTexts") << "testSwingTexts"; + // ornaments + QTest::newRow("testMordents") << "testMordents"; } //---------------------------------------------------------