Skip to content

Commit

Permalink
Merge pull request #6123 from mattmcclinch/4867-rest-durations
Browse files Browse the repository at this point in the history
Fix #4867: Filling measure with rests be affected by time signature
  • Loading branch information
anatoly-os committed Jun 22, 2020
2 parents 0600345 + a4ad67d commit 1134156
Show file tree
Hide file tree
Showing 9 changed files with 118 additions and 70 deletions.
33 changes: 9 additions & 24 deletions libmscore/cmd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -982,35 +982,20 @@ Fraction Score::makeGap(Segment* segment, int track, const Fraction& _sd, Tuplet
//
accumulated = _sd;
Fraction rd = td - sd;
Fraction tick = cr->tick() + actualTicks(sd, tuplet, timeStretch);

std::vector<TDuration> dList = toDurationList(rd, false);
std::vector<TDuration> dList = toRhythmicDurationList(rd, true, tick - measure->tick(), sigmap()->timesig(tick).nominal(), measure, 0);
if (dList.empty())
break;

Fraction tick = cr->tick() + actualTicks(sd, tuplet, timeStretch);

if ((tuplet == 0) && (((measure->tick() - tick).ticks() % dList[0].ticks().ticks()) == 0)) {
for (TDuration d : dList) {
if (ltuplet) {
// take care not to recreate tuplet we just deleted
Rest* r = setRest(tick, track, d.fraction(), false, 0, false);
tick += r->actualTicks();
}
else {
tick += addClone(cr, tick, d)->actualTicks();
}
for (TDuration d : dList) {
if (ltuplet) {
// take care not to recreate tuplet we just deleted
Rest* r = setRest(tick, track, d.fraction(), false, 0, false);
tick += r->actualTicks();
}
}
else {
for (size_t i = dList.size(); i > 0; --i) { // loop needs to be in this reverse order
if (ltuplet) {
// take care not to recreate tuplet we just deleted
Rest* r = setRest(tick, track, dList[i-1].fraction(), false, 0, false);
tick += r->actualTicks();
}
else {
tick += addClone(cr, tick, dList[i-1])->actualTicks();
}
else {
tick += addClone(cr, tick, d)->actualTicks();
}
}
break;
Expand Down
22 changes: 6 additions & 16 deletions libmscore/edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -333,26 +333,16 @@ Rest* Score::setRest(const Fraction& _tick, int track, const Fraction& _l, bool
//
// compute list of durations which will fit l
//
std::vector<TDuration> dList = toDurationList(f, useDots);
std::vector<TDuration> dList = toRhythmicDurationList(f, true, tick - measure->tick(), sigmap()->timesig(tick).nominal(), measure, useDots ? 1 : 0);
if (dList.empty())
return 0;

Rest* rest = 0;
if (((tick - measure->tick()).ticks() % dList[0].ticks().ticks()) == 0) {
for (const TDuration& d : dList) {
rest = addRest(tick, track, d, tuplet);
if (r == 0)
r = rest;
tick += rest->actualTicks();
}
}
else {
for (size_t i = dList.size(); i > 0; --i) { // loop needs to be in this reverse order
rest = addRest(tick, track, dList[i-1], tuplet);
if (r == 0)
r = rest;
tick += rest->actualTicks();
}
for (const TDuration& d : dList) {
rest = addRest(tick, track, d, tuplet);
if (r == 0)
r = rest;
tick += rest->actualTicks();
}
}
l -= f;
Expand Down
17 changes: 14 additions & 3 deletions mtest/guitarpro/UncompletedMeasure.gpx-ref.mscx
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,10 @@
</Chord>
<Rest>
<linkedMain/>
<dots>1</dots>
<durationType>quarter</durationType>
</Rest>
<Rest>
<linkedMain/>
<durationType>half</durationType>
</Rest>
</voice>
Expand Down Expand Up @@ -318,7 +321,11 @@
<Rest>
<linked>
</linked>
<dots>1</dots>
<durationType>quarter</durationType>
</Rest>
<Rest>
<linked>
</linked>
<durationType>half</durationType>
</Rest>
</voice>
Expand Down Expand Up @@ -351,7 +358,11 @@
<Rest>
<linked>
</linked>
<dots>1</dots>
<durationType>quarter</durationType>
</Rest>
<Rest>
<linked>
</linked>
<durationType>half</durationType>
</Rest>
</voice>
Expand Down
10 changes: 8 additions & 2 deletions mtest/testscript/scripts/#294727-navigate-voice-4.mscx
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
<voice/>
Expand All @@ -364,7 +367,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand Down
50 changes: 40 additions & 10 deletions mtest/testscript/scripts/palette.mscx
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand All @@ -136,7 +139,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand Down Expand Up @@ -170,7 +176,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand All @@ -185,7 +194,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand All @@ -210,7 +222,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand Down Expand Up @@ -244,7 +259,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand Down Expand Up @@ -388,7 +406,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand All @@ -407,7 +428,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand All @@ -428,7 +452,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand Down Expand Up @@ -484,7 +511,10 @@
<durationType>eighth</durationType>
</Rest>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand Down
3 changes: 3 additions & 0 deletions mtest/testscript/scripts/palette_articulations_1.script
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ cmd note-a
cmd note-a
cmd note-a
cmd escape
cmd next-chord
cmd pad-note-2
cmd prev-chord
cmd prev-chord
cmd prev-chord
cmd prev-chord
Expand Down
43 changes: 30 additions & 13 deletions mtest/testscript/scripts/timewise-input.mscx
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,10 @@
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand All @@ -189,7 +192,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand Down Expand Up @@ -249,7 +255,10 @@
</Note>
</Chord>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand All @@ -271,21 +280,26 @@
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
<Measure len="4/4">
<voice>
<Rest>
<durationType>whole</durationType>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure len="4/4">
<voice>
<Rest>
<durationType>whole</durationType>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
Expand Down Expand Up @@ -341,31 +355,34 @@
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
<Measure len="4/4">
<voice>
<Rest>
<durationType>whole</durationType>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure len="4/4">
<voice>
<Rest>
<durationType>whole</durationType>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure len="5/4">
<voice>
<Rest>
<durationType>whole</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
<durationType>measure</durationType>
<duration>5/4</duration>
</Rest>
</voice>
</Measure>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,10 @@
<durationType>eighth</durationType>
</Rest>
<Rest>
<durationType>half</durationType>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
Expand Down
Loading

0 comments on commit 1134156

Please sign in to comment.