Skip to content

Commit

Permalink
fix #259771 : make tremolo between notes play correct rhythm when bet…
Browse files Browse the repository at this point in the history
…ween tuplets
  • Loading branch information
AntonioBL committed Nov 15, 2020
1 parent 94d43c5 commit 8e5caa4
Show file tree
Hide file tree
Showing 4 changed files with 483 additions and 1 deletion.
5 changes: 4 additions & 1 deletion libmscore/rendermidi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1352,6 +1352,9 @@ void renderTremolo(Chord* chord, QList<NoteEventList>& ell)
// render tremolo with multiple events
if (chord->tremoloChordType() == TremoloChordType::TremoloFirstNote) {
int t = MScore::division / (1 << (tremolo->lines() + chord->durationType().hooks()));
if (t == 0) { // avoid crash on very short tremolo
t = 1;
}
SegmentType st = SegmentType::ChordRest;
Segment* seg2 = seg->next(st);
int track = chord->track();
Expand All @@ -1376,7 +1379,7 @@ void renderTremolo(Chord* chord, QList<NoteEventList>& ell)
if (c2->type() == ElementType::CHORD) {
int notes2 = int(c2->notes().size());
int tnotes = qMax(notes, notes2);
int tticks = chord->actualTicks().ticks() * 2; // use twice the size
int tticks = chord->ticks().ticks() * 2; // use twice the size
int n = tticks / t;
n /= 2;
int l = 2000 * t / tticks;
Expand Down
118 changes: 118 additions & 0 deletions mtest/libmscore/midi/testMultiNoteTremoloTuplet-ref.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
Tick = 0 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
Tick = 0 Type = 3 Pitch = 0 Velocity = 127 Channel = 0
Tick = 227 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
Tick = 240 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
Tick = 467 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
Tick = 480 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
Tick = 480 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
Tick = 707 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
Tick = 720 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
Tick = 947 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
Tick = 960 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
Tick = 960 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 960 Type = 4 Pitch = 0 Velocity = 127 Channel = 0
Tick = 1110 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
Tick = 1110 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 1119 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
Tick = 1269 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
Tick = 1279 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
Tick = 1279 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 1429 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
Tick = 1429 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 1439 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
Tick = 1440 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
Tick = 1589 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
Tick = 1599 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
Tick = 1599 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 1749 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
Tick = 1749 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 1759 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
Tick = 1909 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
Tick = 1920 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 1920 Type = 3 Pitch = 0 Velocity = 127 Channel = 0
Tick = 2223 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 2240 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
Tick = 2400 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
Tick = 2543 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
Tick = 2560 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 2660 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 2666 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
Tick = 2766 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
Tick = 2773 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 2873 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 2879 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
Tick = 2880 Type = 4 Pitch = 0 Velocity = 127 Channel = 0
Tick = 2979 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
Tick = 2986 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 3086 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 3092 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
Tick = 3192 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
Tick = 3200 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 3300 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 3306 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
Tick = 3360 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
Tick = 3406 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
Tick = 3413 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 3513 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 3519 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
Tick = 3619 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
Tick = 3627 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 3828 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 3840 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
Tick = 3840 Type = 144 Pitch = 77 Velocity = 80 Channel = 0
Tick = 3840 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
Tick = 3840 Type = 3 Pitch = 0 Velocity = 127 Channel = 0
Tick = 3914 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
Tick = 3919 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
Tick = 3919 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 3993 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
Tick = 3993 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 3999 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
Tick = 4073 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
Tick = 4079 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
Tick = 4079 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 4153 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
Tick = 4153 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 4158 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
Tick = 4232 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
Tick = 4238 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
Tick = 4238 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 4295 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
Tick = 4295 Type = 144 Pitch = 77 Velocity = 0 Channel = 0
Tick = 4312 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
Tick = 4312 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 4318 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
Tick = 4320 Type = 144 Pitch = 82 Velocity = 80 Channel = 0
Tick = 4320 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
Tick = 4392 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
Tick = 4397 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
Tick = 4397 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 4471 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
Tick = 4471 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 4477 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
Tick = 4551 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
Tick = 4557 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
Tick = 4557 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 4631 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
Tick = 4631 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 4636 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
Tick = 4710 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
Tick = 4716 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
Tick = 4716 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
Tick = 4775 Type = 144 Pitch = 82 Velocity = 0 Channel = 0
Tick = 4790 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
Tick = 4790 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
Tick = 4800 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
Tick = 4800 Type = 144 Pitch = 79 Velocity = 80 Channel = 0
Tick = 4800 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
Tick = 4800 Type = 144 Pitch = 68 Velocity = 80 Channel = 0
Tick = 4800 Type = 4 Pitch = 0 Velocity = 127 Channel = 0
Tick = 5255 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
Tick = 5255 Type = 144 Pitch = 79 Velocity = 0 Channel = 0
Tick = 5255 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
Tick = 5255 Type = 144 Pitch = 68 Velocity = 0 Channel = 0
Tick = 5280 Type = 144 Pitch = 84 Velocity = 80 Channel = 0
Tick = 5280 Type = 144 Pitch = 58 Velocity = 80 Channel = 0
Tick = 5280 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
Tick = 5735 Type = 144 Pitch = 84 Velocity = 0 Channel = 0
Tick = 5735 Type = 144 Pitch = 58 Velocity = 0 Channel = 0
Loading

0 comments on commit 8e5caa4

Please sign in to comment.