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.23k stars 2.65k forks source link

Allow per-staff tempo #24465

Open metasekk opened 1 month ago

metasekk commented 1 month ago

Your idea

This is an either fanciful or completely silly idea, and its implementation (and design) would probably be a mess, but nonetheless is a regular request for modern compositions (minimal music especially) in which two ore more instruments play at different tempi simultaneously.

Problem to be solved

Currently, two staves will need to be exported as audio separately, then opened in an external software (like Audacity), then processed so that one plays faster than the other. This is a long and painful process, especially when there are more than two instruments involved.

For instance, at the moment, trying to play Steve Reich's renowned Piano Phase on MuseScore Studio is a long and painful process (e.g. see https://musescore.com/user/14023351/scores/6334545#comment-5983550). I'm aware of the local time signatures "trick", also reported by https://musescore.org/en/node/198121#comment-714906, but read what the author has to do to get a realistic result in this particular instance: on the first pattern shift there's an invisible change to 30/4 (120 sixteenth notes) with a hidden instrument part playing a 121-tuplet over the entire bar, which puts it one sixteenth note ahead..

Prior art

The unfortunate recurring MuseSampler sync bugs over the last years (#19232, #20019, #20021, #20195) make it seem utterly possible to have staves playing out of sync at different rates (!). More seriously, the biggest question likely lies on the design side: how to make it clear that staves are "un-linked" in their respective tempi? Could the playback cursor play a role, for instance by being "cut" in different portions for each staff (see the image below; but that would be impossible on the Musescore.com website, I assume)? When starting playback at a specific bar, what staff should be playing synchronously at that bar (would there be some kind of "global" and "local" tempi, like for time signatures, with the "global" tempi being synchronized with the playback cursor)? and so forth...

An (awful) example of what a cut playback cursor could look like, to underline the tempo differences. I'm not a huge fan of this solution, but just mentioning it:

Different_tempi

Additionally, recently implemented per-staff dynamics may have paved the way towards integrating similar "per-staves" properties (such as per-staff tempo), both in terms of implementation and distinctive design by colours. This, if course, is from a complete layman's perspective.

Additional context

Old related topics: https://musescore.org/en/node/186216, https://musescore.org/en/node/198121

Checklist

oktophonie commented 1 month ago

Oh, it's all Part of the Plan! (but please don't expect it particularly soon)