musescore / musescore/MuseScore
Allow per-staff tempo
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 15.1k
- Forks
- 3.3k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 91
Description
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:
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
- This request follows the guidelines for reporting issues
- I have verified that this feature request has not been logged before, by searching the issue tracker for similar requests
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the issue's prior-art links and the referenced MuseSampler sync issues to understand existing playback behavior and constraints. The issue does not identify files, entry points, or tests; define the tempo model, playback-cursor behavior, synchronization rules, and acceptance tests before implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100