Skip to content

Commit 793c68a

Browse files
committed
fix #259771 : make tremolo between notes play correct rhythm when between tuplets
1 parent 6c374fd commit 793c68a

File tree

4 files changed

+483
-1
lines changed

4 files changed

+483
-1
lines changed

libmscore/rendermidi.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
#include "hairpin.h"
4747
#include "bend.h"
4848
#include "tremolo.h"
49+
#include "tuplet.h"
4950
#include "noteevent.h"
5051
#include "segment.h"
5152
#include "undo.h"
@@ -1257,6 +1258,8 @@ void renderTremolo(Chord* chord, QList<NoteEventList>& ell)
12571258
// render tremolo with multiple events
12581259
if (chord->tremoloChordType() == TremoloChordType::TremoloFirstNote) {
12591260
int t = MScore::division / (1 << (tremolo->lines() + chord->durationType().hooks()));
1261+
if (t == 0) // avoid crash on very short tremolo
1262+
t = 1;
12601263
SegmentType st = SegmentType::ChordRest;
12611264
Segment* seg2 = seg->next(st);
12621265
int track = chord->track();
@@ -1278,7 +1281,7 @@ void renderTremolo(Chord* chord, QList<NoteEventList>& ell)
12781281
if (c2->type() == ElementType::CHORD) {
12791282
int notes2 = int(c2->notes().size());
12801283
int tnotes = qMax(notes, notes2);
1281-
int tticks = chord->actualTicks().ticks() * 2; // use twice the size
1284+
int tticks = chord->ticks().ticks() * 2; // use twice the size
12821285
int n = tticks / t;
12831286
n /= 2;
12841287
int l = 2000 * t / tticks;
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
Tick = 0 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
2+
Tick = 0 Type = 3 Pitch = 0 Velocity = 127 Channel = 0
3+
Tick = 227 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
4+
Tick = 240 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
5+
Tick = 467 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
6+
Tick = 480 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
7+
Tick = 480 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
8+
Tick = 707 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
9+
Tick = 720 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
10+
Tick = 947 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
11+
Tick = 960 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
12+
Tick = 960 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
13+
Tick = 960 Type = 4 Pitch = 0 Velocity = 127 Channel = 0
14+
Tick = 1110 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
15+
Tick = 1110 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
16+
Tick = 1119 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
17+
Tick = 1269 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
18+
Tick = 1279 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
19+
Tick = 1279 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
20+
Tick = 1429 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
21+
Tick = 1429 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
22+
Tick = 1439 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
23+
Tick = 1440 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
24+
Tick = 1589 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
25+
Tick = 1599 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
26+
Tick = 1599 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
27+
Tick = 1749 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
28+
Tick = 1749 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
29+
Tick = 1759 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
30+
Tick = 1909 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
31+
Tick = 1920 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
32+
Tick = 1920 Type = 3 Pitch = 0 Velocity = 127 Channel = 0
33+
Tick = 2223 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
34+
Tick = 2240 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
35+
Tick = 2400 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
36+
Tick = 2543 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
37+
Tick = 2560 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
38+
Tick = 2660 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
39+
Tick = 2666 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
40+
Tick = 2766 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
41+
Tick = 2773 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
42+
Tick = 2873 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
43+
Tick = 2879 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
44+
Tick = 2880 Type = 4 Pitch = 0 Velocity = 127 Channel = 0
45+
Tick = 2979 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
46+
Tick = 2986 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
47+
Tick = 3086 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
48+
Tick = 3092 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
49+
Tick = 3192 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
50+
Tick = 3200 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
51+
Tick = 3300 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
52+
Tick = 3306 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
53+
Tick = 3360 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
54+
Tick = 3406 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
55+
Tick = 3413 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
56+
Tick = 3513 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
57+
Tick = 3519 Type = 144 Pitch = 72 Velocity = 80 Channel = 0
58+
Tick = 3619 Type = 144 Pitch = 72 Velocity = 0 Channel = 0
59+
Tick = 3627 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
60+
Tick = 3828 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
61+
Tick = 3840 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
62+
Tick = 3840 Type = 144 Pitch = 77 Velocity = 80 Channel = 0
63+
Tick = 3840 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
64+
Tick = 3840 Type = 3 Pitch = 0 Velocity = 127 Channel = 0
65+
Tick = 3914 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
66+
Tick = 3919 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
67+
Tick = 3919 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
68+
Tick = 3993 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
69+
Tick = 3993 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
70+
Tick = 3999 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
71+
Tick = 4073 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
72+
Tick = 4079 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
73+
Tick = 4079 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
74+
Tick = 4153 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
75+
Tick = 4153 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
76+
Tick = 4158 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
77+
Tick = 4232 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
78+
Tick = 4238 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
79+
Tick = 4238 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
80+
Tick = 4295 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
81+
Tick = 4295 Type = 144 Pitch = 77 Velocity = 0 Channel = 0
82+
Tick = 4312 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
83+
Tick = 4312 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
84+
Tick = 4318 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
85+
Tick = 4320 Type = 144 Pitch = 82 Velocity = 80 Channel = 0
86+
Tick = 4320 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
87+
Tick = 4392 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
88+
Tick = 4397 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
89+
Tick = 4397 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
90+
Tick = 4471 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
91+
Tick = 4471 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
92+
Tick = 4477 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
93+
Tick = 4551 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
94+
Tick = 4557 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
95+
Tick = 4557 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
96+
Tick = 4631 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
97+
Tick = 4631 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
98+
Tick = 4636 Type = 144 Pitch = 70 Velocity = 80 Channel = 0
99+
Tick = 4710 Type = 144 Pitch = 70 Velocity = 0 Channel = 0
100+
Tick = 4716 Type = 144 Pitch = 62 Velocity = 80 Channel = 0
101+
Tick = 4716 Type = 144 Pitch = 69 Velocity = 80 Channel = 0
102+
Tick = 4775 Type = 144 Pitch = 82 Velocity = 0 Channel = 0
103+
Tick = 4790 Type = 144 Pitch = 62 Velocity = 0 Channel = 0
104+
Tick = 4790 Type = 144 Pitch = 69 Velocity = 0 Channel = 0
105+
Tick = 4800 Type = 144 Pitch = 74 Velocity = 80 Channel = 0
106+
Tick = 4800 Type = 144 Pitch = 79 Velocity = 80 Channel = 0
107+
Tick = 4800 Type = 144 Pitch = 65 Velocity = 80 Channel = 0
108+
Tick = 4800 Type = 144 Pitch = 68 Velocity = 80 Channel = 0
109+
Tick = 4800 Type = 4 Pitch = 0 Velocity = 127 Channel = 0
110+
Tick = 5255 Type = 144 Pitch = 74 Velocity = 0 Channel = 0
111+
Tick = 5255 Type = 144 Pitch = 79 Velocity = 0 Channel = 0
112+
Tick = 5255 Type = 144 Pitch = 65 Velocity = 0 Channel = 0
113+
Tick = 5255 Type = 144 Pitch = 68 Velocity = 0 Channel = 0
114+
Tick = 5280 Type = 144 Pitch = 84 Velocity = 80 Channel = 0
115+
Tick = 5280 Type = 144 Pitch = 58 Velocity = 80 Channel = 0
116+
Tick = 5280 Type = 4 Pitch = 0 Velocity = 80 Channel = 0
117+
Tick = 5735 Type = 144 Pitch = 84 Velocity = 0 Channel = 0
118+
Tick = 5735 Type = 144 Pitch = 58 Velocity = 0 Channel = 0

0 commit comments

Comments
 (0)