musescore / MuseScore

MuseScore is an open source and free music notation software. For support, contribution, bug reports, visit MuseScore.org. Fork and make pull requests!
https://musescore.org
Other
12.06k stars 2.6k forks source link

Allow fermata time stretch greater than 400% #23609

Closed wizofaus closed 3 weeks ago

wizofaus commented 1 month ago

Your idea

Fermatas should be allowed to stretch the time by far longer than 400% (5 times the original note length).

Problem to be solved

It's not unusual for a fermata to occur on a 1/16 note (or rest) with the intention that the note is held for far longer than 5 times its face value. One example might be the top B "ce" in the final "vincero" of Nessun Dorma, however admittedly many notated versions of that don't even show a fermata, but it's certainly common for that 1/16 note to be sustained for up a full measure (~250 times its face value, i.e. over 6000%).

Prior art

Musescore is already perfectly capable of playing fermatas longer than 400% if you edit the mscx file etc.

Additional context

No response

Checklist

Bhavya418 commented 1 month ago

I would like to take up this issue and solve it.

cbjeukendrup commented 1 month ago

Nice, welcome!

cbjeukendrup commented 1 month ago

I'd propose a maximum value of 10000%; that allows the note to be 100x as long and I guess that would be sufficient.

Jojo-Schmitz commented 1 month ago

Just came up again in https://musescore.org/en/node/366352 and 99.99 times longer is what Mu3 allows for, so 10000% seems right

And maybe we want it in times rather than % ?

wizofaus commented 1 month ago

Far bigger issue is that the way fermatas are played back is simply wrong when you have multiple fermatas at different beat positions across staves (which is reported separately). But no reason not to make the trivial UI change here to allow values up to 10000% that I can think of.

cbjeukendrup commented 1 month ago

Indeed, there's this issue how fermatas are played back exactly: https://github.com/musescore/MuseScore/issues/15569 So it's a bit more involved than just halting on the last beat of the note instead of the first one.

chilkaditya commented 3 weeks ago

hi, I want work on this issue. I understand the issue, if we want to set fermata time stretch greater than 400% its automatically set 400%. After seeing the symid_p.h, there is 7 types of fermata and max of them is FermataVeryLong which is returning 4.0 in Fermata::propertyDefault() method. For tackling this issue we have to define new fermata type? or we can just return greater than 4.0 for FermataVeryLong type, or something else we have to do. Any suggestions would be appreciated.

Jojo-Schmitz commented 3 weeks ago

a) it is already assigned to @Bhavya418 (but since a month without any apparent activity) b) no, there's no new fermata needed, just a change in the UI that allows that setting to get changed, which currently limits it to 400% c) @wizofaus 400% is 4 time, not 5 times, or am I missing something here? Or is is "strech by", i.e. 100%+setting rather thsan "stretch to"?

chilkaditya commented 3 weeks ago

Hi @Jojo-Schmitz, I am new here, can I work on this good first issue to start with my contribution towards MuseScore? And I also solved the issue using your instruction.

wizofaus commented 3 weeks ago

I always assumed 0% = no stretch, but I admit I didn't test.

Jojo-Schmitz commented 3 weeks ago

@chilkaditya just create a PR with your fix

Jojo-Schmitz commented 3 weeks ago

@wizofaus yes, setting it to 0% is possible, but doesn't seem to have any effect, plays the same as 100% as far as I can tell. Seems another bug, setting below 100% should shorten the note Actually it does, just 0% doesn't skip it entirely, ut doesn#t do anything, 1% almost does skip it though.

So either 0% should be disallowed, or skip the affected duration

But 400% is indeed 4 times

cbjeukendrup commented 3 weeks ago

The fix has been merged to master. If anyone becomes very happy if this gets included into 4.4.0 too, feel free to create a version for the 4.4.0 branch, since the fix seems safe enough.

Jojo-Schmitz commented 3 weeks ago

Done