diff --git a/libmscore/rendermidi.cpp b/libmscore/rendermidi.cpp index 49e633e5faa25..0a88ea151fb82 100644 --- a/libmscore/rendermidi.cpp +++ b/libmscore/rendermidi.cpp @@ -2253,7 +2253,7 @@ void Score::createGraceNotesPlayEvents(const Fraction& tick, Chord* chord, int& // - the grace note duration as notated does not matter // Chord* graceChord = gnb[0]; - if (graceChord->noteType() == NoteType::ACCIACCATURA) { + if (graceChord->noteType() == NoteType::ACCIACCATURA || nb > 1) { // treat multiple subsequent grace notes as acciaccaturas int graceTimeMS = 65 * nb; // value determined empirically (TODO: make instrument-specific, like articulations) // 1000 occurs below as a unit for ontime ontime = qMin(500, static_cast((graceTimeMS / chordTimeMS) * 1000)); diff --git a/mtest/libmscore/midi/testBeforeAfterGraceTrill-ref.txt b/mtest/libmscore/midi/testBeforeAfterGraceTrill-ref.txt index 9b2ce88bc94d5..f515ae28ebc45 100644 --- a/mtest/libmscore/midi/testBeforeAfterGraceTrill-ref.txt +++ b/mtest/libmscore/midi/testBeforeAfterGraceTrill-ref.txt @@ -4,26 +4,26 @@ Tick = 0 Type = 176 Pitch = 2 Velocity = 80 Channel = Tick = 0 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 0 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 0 Type = 3 Pitch = 0 Velocity = 127 Channel = 0 -Tick = 118 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 -Tick = 119 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 -Tick = 237 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 -Tick = 238 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 -Tick = 356 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 -Tick = 357 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 -Tick = 475 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 -Tick = 476 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 60 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 +Tick = 61 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 +Tick = 121 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 +Tick = 122 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 182 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 184 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 244 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 245 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 305 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 +Tick = 311 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 Tick = 480 Type = 4 Pitch = 0 Velocity = 80 Channel = 0 -Tick = 594 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 -Tick = 599 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 958 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 960 Type = 144 Pitch = 69 Velocity = 80 Channel = 0 Tick = 960 Type = 4 Pitch = 0 Velocity = 127 Channel = 0 +Tick = 1277 Type = 144 Pitch = 69 Velocity = 0 Channel = 0 +Tick = 1278 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 Tick = 1440 Type = 4 Pitch = 0 Velocity = 80 Channel = 0 -Tick = 1559 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 -Tick = 1560 Type = 144 Pitch = 69 Velocity = 80 Channel = 0 -Tick = 1678 Type = 144 Pitch = 69 Velocity = 0 Channel = 0 -Tick = 1680 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 -Tick = 1798 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 -Tick = 1799 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 -Tick = 1917 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 1595 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 1597 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 1914 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 Tick = 1920 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 1920 Type = 144 Pitch = 81 Velocity = 80 Channel = 0 Tick = 1920 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 @@ -200,23 +200,23 @@ Tick = 7680 Type = 176 Pitch = 2 Velocity = 80 Channel = Tick = 7680 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 7680 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 7680 Type = 3 Pitch = 0 Velocity = 127 Channel = 0 -Tick = 7798 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 -Tick = 7799 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 -Tick = 7917 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 -Tick = 7918 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 -Tick = 8036 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 -Tick = 8037 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 -Tick = 8155 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 -Tick = 8156 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 7740 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 +Tick = 7741 Type = 144 Pitch = 79 Velocity = 80 Channel = 0 +Tick = 7801 Type = 144 Pitch = 79 Velocity = 0 Channel = 0 +Tick = 7802 Type = 144 Pitch = 77 Velocity = 80 Channel = 0 +Tick = 7862 Type = 144 Pitch = 77 Velocity = 0 Channel = 0 +Tick = 7864 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 7924 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 7925 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 7985 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 +Tick = 7991 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 Tick = 8160 Type = 4 Pitch = 0 Velocity = 80 Channel = 0 -Tick = 8274 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 -Tick = 8279 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 8638 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 8640 Type = 144 Pitch = 69 Velocity = 80 Channel = 0 Tick = 8640 Type = 4 Pitch = 0 Velocity = 127 Channel = 0 +Tick = 8957 Type = 144 Pitch = 69 Velocity = 0 Channel = 0 +Tick = 8958 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 Tick = 9120 Type = 4 Pitch = 0 Velocity = 80 Channel = 0 -Tick = 9239 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 -Tick = 9240 Type = 144 Pitch = 69 Velocity = 80 Channel = 0 -Tick = 9358 Type = 144 Pitch = 69 Velocity = 0 Channel = 0 -Tick = 9360 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 -Tick = 9478 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 -Tick = 9479 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 -Tick = 9597 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 9275 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 9277 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 9594 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 diff --git a/mtest/libmscore/midi/testBeforeAfterGraceTrillPlay=false-ref.txt b/mtest/libmscore/midi/testBeforeAfterGraceTrillPlay=false-ref.txt index bee9a26d4b6ed..f2edda13f7022 100644 --- a/mtest/libmscore/midi/testBeforeAfterGraceTrillPlay=false-ref.txt +++ b/mtest/libmscore/midi/testBeforeAfterGraceTrillPlay=false-ref.txt @@ -4,20 +4,20 @@ Tick = 0 Type = 176 Pitch = 2 Velocity = 80 Channel = Tick = 0 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 0 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 0 Type = 3 Pitch = 0 Velocity = 127 Channel = 0 -Tick = 118 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 -Tick = 357 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 -Tick = 475 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 -Tick = 476 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 60 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 +Tick = 184 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 244 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 245 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 305 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 +Tick = 311 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 Tick = 480 Type = 4 Pitch = 0 Velocity = 80 Channel = 0 -Tick = 594 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 -Tick = 599 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 958 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 Tick = 960 Type = 4 Pitch = 0 Velocity = 127 Channel = 0 +Tick = 1278 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 Tick = 1440 Type = 4 Pitch = 0 Velocity = 80 Channel = 0 -Tick = 1559 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 -Tick = 1680 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 -Tick = 1798 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 -Tick = 1799 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 -Tick = 1917 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 1595 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 1597 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 1914 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 Tick = 1920 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 1920 Type = 144 Pitch = 81 Velocity = 80 Channel = 0 Tick = 1920 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 @@ -178,17 +178,17 @@ Tick = 7680 Type = 176 Pitch = 2 Velocity = 80 Channel = Tick = 7680 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 7680 Type = 176 Pitch = 2 Velocity = 80 Channel = 0 Tick = 7680 Type = 3 Pitch = 0 Velocity = 127 Channel = 0 -Tick = 7798 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 -Tick = 8037 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 -Tick = 8155 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 -Tick = 8156 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 7740 Type = 144 Pitch = 81 Velocity = 0 Channel = 0 +Tick = 7864 Type = 144 Pitch = 76 Velocity = 80 Channel = 0 +Tick = 7924 Type = 144 Pitch = 76 Velocity = 0 Channel = 0 +Tick = 7925 Type = 144 Pitch = 74 Velocity = 80 Channel = 0 +Tick = 7985 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 +Tick = 7991 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 Tick = 8160 Type = 4 Pitch = 0 Velocity = 80 Channel = 0 -Tick = 8274 Type = 144 Pitch = 74 Velocity = 0 Channel = 0 -Tick = 8279 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 8638 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 Tick = 8640 Type = 4 Pitch = 0 Velocity = 127 Channel = 0 +Tick = 8958 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 Tick = 9120 Type = 4 Pitch = 0 Velocity = 80 Channel = 0 -Tick = 9239 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 -Tick = 9360 Type = 144 Pitch = 71 Velocity = 80 Channel = 0 -Tick = 9478 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 -Tick = 9479 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 -Tick = 9597 Type = 144 Pitch = 72 Velocity = 0 Channel = 0 +Tick = 9275 Type = 144 Pitch = 71 Velocity = 0 Channel = 0 +Tick = 9277 Type = 144 Pitch = 72 Velocity = 80 Channel = 0 +Tick = 9594 Type = 144 Pitch = 72 Velocity = 0 Channel = 0