inc duration of previous note causes subsequent note to break into un-tied smaller notes if necessarily changes start tick
The title is temporary. I'm on commit ae09a445ff884bbca59bb21cf71f328c9e7e6510 2.1-dev. If I change this selected 64th rest into a quarter rest:
Then that action necessarily will cause the subsequent quarter note to start 1/32th later and become 7/32th of a beat, however MuseScore is currently breaking that into 1/32 + 1/16 + 1/8, but is incorrectly forgetting to tie those notes together:
I should note MuseScore should be able to represent that as a double-dotted eight note, but for some reason it isn't.
Attachment | Size |
---|---|
make-rest-quarter-rest-will-break-quarter-note.mscx | 6.94 KB |
Comments
Here's a simpler case, starting with:
If change that 128th rest to 64th rest, then the result is not tied, but needs to be:
I don't know if in the process you are looking at the placement of these rests. The final 64th, 32nd and 16th rests of the measures should all be lined up, but notice BnA-change-to-64th.mscz
I thought the rest count was getting off again, but it seems this is only the location of the rests. I left line 1 so the time sig wouldn't affect layout.
line 2 is your example
line 3 is 2 with first rest doubled
line 4 is line 3 with expanded notes changed to double dotted 1/2 to see where rests fall.
@mike320, actually there is no requirement for musescore to line up rests between different measures, and in fact that is not desired. There is only the requirement to line up elements in the same *measure*. So if I put each of those on a different *staff* but in the same *measure*, then all the rests and notes line up correctly:
Sorry, you are correct.
Probably somewhere here https://github.com/musescore/MuseScore/blob/3ee8fca91eb548936adc03f9dfd…
In Score::makeGap, I notice https://github.com/musescore/MuseScore/blob/3ee8fca91eb548936adc03f9dfd… that is splitting up note with useDots=false. I'd like to have useDots=true, that way the resulting duration list will be much more compact for situations like in my issue. That code QList dList = toDurationList(rd, false); is from werner's initial 5 years ago, according to git blame.