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.29k stars 2.66k forks source link

"Rubato fermata" for more natural playback #23844

Open yoavshati opened 3 months ago

yoavshati commented 3 months ago

Your idea

Add a way to indicate that an individual voice/instrument or the whole ensemble should speed up/slow down momentarily but recover that time a bit later The icon for it could look like a fermata inside a dashed box like the layout icons Its properties would be:

Problem to be solved

There is no clean way to get playback that imitates rubato playing intentionally and in a controlled way, which can make solo pieces and lyrical melodies sound "unmusical" as they would be playing 100% in time Some workarounds for this could be invisible tempo changes and fermatas, or entirely differently notated melodies with complicated rhythms that try to capture that rubato feeling, but I don't think these solutions are always possible and they are never easy to do

Prior art

No response

Additional context

No response

Checklist

wizofaus commented 3 months ago

I'd think rubato for the whole ensemble is easy enough with invisible tempo changes, but the ability to have a soloist rubato while the rest of the ensemble maintains strict time would be quite enough thing entirely (or indeed, have, for instance piano music where the left hand stays in time but the right hand melody plays with rubato - which is arguably the only way you can play much of Chopin's music). Ideally it would just happen automatically the way a human player naturally feels when rubato is appropriate, but I suspect that level of AI is a little way off.

yoavshati commented 3 months ago

I agree that rubato for the whole ensemble isn't difficult to do, but if this gets added without this feature then you now have two ways to achieve rubato that you have to use in different cases. I also think that extending the functionality to the whole ensemble is the easy part compared to making it work in the other cases, but I don't know C++ so I don't know how everything works now and how this feature might be implemented About the AI, I think you'd still want a way to control it so you get the result you want and not be stuck with what it came up with. Even if it works 99% of the time, I'd still want to be able to manually correct that 1% when it happens