Local Time Signatures: polymeter or polyrhythm

• Jan 22, 2020 - 09:16

When looking into some issues regarding local time signatures (e.g. #299246: Hiding courtesy time signature only works for the first staff) I'm getting puzzled which issue local time signatures tries to solve. Is it meant for polymeter (in which case I don't understand the stretch parameter in the TimeSig class) or polyrhythm (in which case at least something is wrong in TrackList::read(), causing a Q_ASSERT(gap >= Fraction(0,1));, and maybe at some more locations).
Based on several item I read (e.g. #297237: Incorrect Polymeter Handling I get the idea local time signatures implements polyrhythm but I'm note 100% sure and like to be sure before touching anything here.
Can somebody help me here?


A composer is free to use local time signatures for any purpose they want of course, but the most common use case is probably simple things like 9/8 on one staff, 3/4 on another - so one staff has three beats subdivided in two parts, the other has it in three. Avoids the need for triplets. But some people do more "advanced" polyrhythms as well - 4/4 against 5/4, etc. Here there are actually four beats on one staff, five on the other.

In reply to by Marc Sabatella

To support both use cases, I think there is a conflict. In the first use case, 3/4 as a global time signature and 9/8 as a local time signature, both measures will still have the same length, 1440 ticks.
However for the second use case, I expect both measure will have a different length (1920 ticks for 4/4 and 2400 for 4/5) but both measures are still 1920 and the quarter note in 5/4 is not 480 ticks but 384 ticks. Also, measures always "follow" the global time signature. To get the bars right for the stave with the local time signature, you have to play with extra bar lines and making bars lines invisible (as https://musescore.org/en/node/254556 shows). But playback will fail because the length of quarter notes (or whatever notes) in both 4/4 and 5/4 isn't the same.
Altogether it seems to me the first use case is the "real" use case and should be fully supported. The second use case is also possible but more as a kind of trick instead as a fully implemented feature.
Am I right in this?

In reply to by njvdberg

I don’t know that the old definition of “ticks” in the MIDI 480 per quarter note still applies. But to be clear: the actual real time duration of the measure never changes as a result of local time signatures. It’s just that one staff has five quarters per measure and another has four. What you are talking about - different actual measure lengths, with independent barlines etc - is completely different. It has nothing to do with local time signatures, and is not directly supported at all. Local time signatures are only about dividing up the measure differently for different staves.

Do you still have an unanswered question? Please log in first to post your question.