Feature request: when changing a measure in simple meter written in triplets to its compound, rewrite by removing tuplets instead of reflowing music #24996
Replies: 13 comments
-
The current behaviour is technically expected: the duration of the notes does not change, and the music is redistributed over the measures (which sometimes leads to the insertion of a rest, because otherwise the measure would be incomplete). The behaviour you propose seems intuitive, and is likely to be the desired result in some cases; but there are some problems with it:
An option would be 'trying to be clever': when music contains only triplets, then rewrite by removing the triplets, otherwise rewrite by 'reflowing'; but experience shows that 'trying to be clever' doesn't really work, because the guess will always be wrong in some cases, and it makes the app feel unpredictable. |
Beta Was this translation helpful? Give feedback.
-
I think, this is related: #23830 |
Beta Was this translation helpful? Give feedback.
-
The algorithm should consider the beats of the selection you make: |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
This issue is asking for a very huge feature, but I agree with @wizofaus, this can be a very nice feature. Feel free to close this, I'll move my messages in the other issue. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
In practice, musically often yes; but mathematically no: 4/4 = 8/8 and 6/4 = 12/8. So if you put 4 triplets that have a duration of a quarter each, you have only four quarters or eight eighths, so the remaining four eighths in a 12/8 bar will have to be filled with a half rest. That is to help you understand why MuseScore does what it is doing, and in what way that can be considered correct. So the behaviour is completely logical, but there is of course a difference between logical and intuitive. In simple cases where you have a 4/4 measure consisting of only triplets, it may indeed feel more intuitive to scale the duration of a beat from a quarter to a dotted quarter (which would make the tuplet ratio 3:3, after which it would be a logical thing to do to extract the eight notes from the tuplet, removing the tuplet). But, as pointed out by me and Sammik, the problem is that this scaling logic is almost impossible to generalise to all possible situations; any attempt at a generalisation would require making bold assumptions, which is not a good idea. So the only somewhat sensible thing we could do, is making exceptions for 4/4 -> 12/8, 3/4 -> 9/8, 2/4 -> 6/8 changes. But "making exceptions" is of course only a last resort, because it is equivalent to "introducing inconsistency". |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
I don't see why you need special cases at all - the facility to change time signature but preserve the existing measure boundaries seems like something that could be done with a general purpose algorithm that would only need to recognise the difference between compound and simple meters. 5/8 to 2/4 would just require using a 5:4 tuplet. If a measure already contains m:n tuplets and the new measure length is n/m of the existing length then the tuplets logically become 1:1 and get just converted to standard notes. However I wouldn't suggest this should be the default behaviour, but similar to using ctrl to add a local time signature, maybe using alt to add a time signature and rewrite durations (so that notes remain within existing measures) would work... |
Beta Was this translation helpful? Give feedback.
-
Simply offering both options is probably the best thing we can do indeed. The "rewrite by scaling" option will be useful in a limited number of cases, so not making it the default would be good. @avvvvve This may be a good addition to your list of time signatures issues to think about. It's a bit of a long read though, apologies for that :) |
Beta Was this translation helpful? Give feedback.
-
The way I normally add time signatures is to select a whole measure (or range of measures) and just click on the palette option. BTW the one time I'd definitely want to be able to change a time signature while preserving the existing measure boundaries (i.e. which notes are in which measures) is when the measures are completely empty - the current behaviour currently feels a bit unexpected, if, for instance, I have, in 4/4, two empty measures followed by other measures containing notes, then I decide the two empty measures should be actually be 3/4 instead, if I select them and then choose 3/4 from the palette, it actually creates an extra measure, presumably to allow for the fact that there were originally 8 1/4 notes worth of rests (but now there are 9!). |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
One thing I would think the proposal here will struggle with is if the existing score contains several existing time signature changes and you want to apply to same transformation to all of them, e.g. 4/4 measures to 12/8, 3/4 measures to 9/8 etc. And if you do select both a 4/4 and 3/4 measure and try to convert them to 12/8 while preserving barline positions, what should happen? |
Beta Was this translation helpful? Give feedback.
-
Issue type
UX/Interaction bug (incorrect behaviour)
Description with steps to reproduce
Expected behaviour: nothing change except the numbers of the tuplet disappear.
Actrual behaviour: a rest adds up to measure and you can't delete it.
Supporting files, videos and screenshots
2024-09-27.19-09-39_Trim.mp4
What is the latest version of MuseScore Studio where this issue is present?
OS: Windows 10 Version 2009 or later, Arch.: x86_64, MuseScore Studio version (64-bit): 4.4.2-242570931, revision: github-musescore-musescore-3130f97
Regression
I was unable to check
Operating system
Windows 10 Pro
Additional context
After conversion the real value is still 12/8, although there is a rest added.
Checklist
Beta Was this translation helpful? Give feedback.
All reactions