Repeat and volta measures not played correctly

• Jul 10, 2018 - 17:20
Reported version
2.3
Type
Functional
Severity
S4 - Minor
Status
by design
Project

This is an ongoing problem, through to 2.3. There are several related issues with this.

1) On exiting a repeat with volta, the exit measure is played with the following measure.
2) The end repeat bar (3 repeats) is ignored when the volta count does not match the repeat count, i.e. volta 1 (2nd repeat)
3) volta counts 3 and above all require their own end repeat bar as per 2) above.
4) All voltas are played the first time through a repeat, regardless of their count (2+).
5) Voltas placed after the repeat do not repeat.

The idea is we can play a phrase 4 times and get four variations, but we can't because the end repeat (when placed after the 1st volta) is ignored the 2nd time through, so the 3rd and higher voltas are never played.

I don't understand how the repeat is supposed to work when the 1st volta is placed between the repeat measures, but the remaining voltas (3+) are placed after the end repeat.

What I expect:
1) Repeat bars to apply regardless of volta, i.e. the measure is first checked for a repeat, and then volta. Thus, the repeat is always applied even when the volta isn't.
2) All voltas for a repeat are contained within the repeat bars (both start and end).
3) Only voltas matching the repeat count are executed. (which maybe none or all)

This is an old problem: https://musescore.org/en/node/97461 I hope will get more attention.

Attachment Size
Repeat and Volta Bugs.mscz 9.72 KB

Comments

To further clarify:
A volta takes precedence over everything it covers, including the end repeat bar of the measures it spans.

Status (old) by design active
Status by design active

Okay that is in fact what is happening, the volta takes precedence and leaves a hole in the playback.

If I want a piece to repeat 3 times with only a 1 volta, it will only repeat twice. See the amended score (thanks Ziya Mete Demircan).

Attachment Size
Repeat and Volta Bugs.mscz 9.92 KB

Well, it is not only volta 1 but a volta 1 and a volta 3 that is triggering this ... behavoir (reluctant to call it a bug just yet).
This behavoir is still by design as far as I can see, so not a bug but maybe a fearture reguest.
@jeetee?

Status (old) active by design
Status active by design

The file from https://musescore.org/en/node/274162#comment-843613 plays back as intended.

Keep in mind that musically a Volta is defined as an alternate ending and always takes precedence over whatever measure content there is including barlines and jumps. There simply isn't a musical notation that allows you to write an empty alternate ending but still trigger a repeat.

Allow me to walk you through the unwinding process of your three sections/lines:

first line

We start at measure 1; as it is the start of the piece, it also refers as the current start-repeat reference point (where to return to when having to perform a repeat). We are currently at the first playthrough.
We move on to measure 2: it has a start repeat and thus becomes the new start-from reference point. We are still at the first playthrough.
Moving on to measure 3: first the volta is evaluated. We are still at the first playthrough of this repeatsegment and this matches an entry in the volta's repeatlist → the volta will be taken. So we play measure 3 for the first time and encounter the end repeat; it is evaluated: its playcount is at 3 and the current playthrough count of this measure is less (1) so the repeat is executed.
We now go back to our start-repeat reference (measure 2).

We are now at the second playthrough of the repeatsegment starting at measure 2.
Moving on to measure 3. The volta is evaluated. We are at the second playthrough of this repeatsegment and there is no matching entry in the volta's repeatlist → it is skipped (this means all measure spanned by it are now skipped).
We skip over that volta and onto measure 4: this one also has a volta, which is now evaluated. We are still at the 2nd playthrough of our repeatsegment, which doesn't match with an entry of this volta (repeatlist of it == 3) → the volta must be skipped.
We skip over the volta and onto measure 5.

second line

measure 5 and 6 are both "normal" measure and are played back.
Measure 7 contains a start repeat. It becomes the new start-repeat-reference (which still was measure 2) and the playthrough count gets reset to the first playthrough of this new segment (which was still at 2nd playthrough of the previous segment).
Then we hit measure 8 (similar as with measure 3 before): Evaluate volta → it is taken. Evaluate end-repeat (1 < 3) → it is also taken.
Back at measure 7, playthrough count now becomes two.
Onto measure 8: evaluate volta for 2nd playthrough → skip it.
Playback measure 9 and 10

3rd line

Playback measure 11 (start reference is still m7, playthrough count is 2)
Measure 12: start repeat makes this the new start-reference and playback count gets reset to 1
Measure 13; evaluate volta (first playthrough) → take it. evaluate end repeat (1 < 3) → follow it
Measure 12: playback count 2
Measure 13; evaluate volta (2nd playthrough) → skip it.
Measure 14; evaluate volta (2nd playthrough) → take it. Evaluate end repeat (1(measure playbackcount, not segment) < 4) → follow it.
Measure 12: playback count 3
Measure 13; evaluate volta (3rd playthrough) → take it. Evaluate end repeat (2 < 3) → follow it
Measure 12: playback count 4
Measure 13; evaluate volta (4th playthrough) → skip it
Measure 14; evaluate volta (4th playthrough) → skip it
Measure 15; evaluate volta (4th playthrough) → take it
Measure 16: play it
--End of Score--

While this ended up being a long post; I hope it clarifies how/when a volta is evaluated and why it can't do what you want it to do.

Status (old) by design active
Status by design active

Thanks for the analysis, jeetee, so are you saying that a repeat with missing volta counts is incorrect?

@Peter Yes, it is.

Let's consider for a moment that it would be allowed and have a look at your first line:
843633_what_if_repeat_worked_always.png
Playback would then evaluate to:
1, 2, 3, 2, (skip 3 because of volta, but honor repeat), 2, 4

Now, by the same logic, consider your 3rd line:
843633_what_if_repeat_worked_always__oh_oh.png
Now playback would become:
11, 12[first], 13[repeat1],
12[2nd], (skip 13 because no 2 in volta, but honor repeat[2]),
12[3rd], 13 (no longer repeat, because it has been used up), (skip 14 because volta says 2, but count is at 3) (but honor it's repeat[1]),
12[4th], (skip 13 because volta, skip 14 because volta, honor repeat[2]),
12[5th], (skip 13 because volta, skip 14 because volta, honor repeat[3]),
12[6th], (skip 13 because volta, skip 14 because volta, no longer repeat),
(skip 15 because volta 4, but playback 6), 16

And this example quite clearly demonstrates why a volta also covers the repeat barlines. It simply wouldn't be possible to write alternating endings (such as the one in the thread you've linked).

I agree with your analysis, but surely concede that a human would play the first 4 measures as expected and also the remaining score. In other words, the absents of a volta doesn't terminate the repeat?

Well, I even tried a measure 2 volta for 1-3 repeats, but got to measure 3 and restarted from the beginning not measure 2, which I found surprising. I also changed the volta/repeats to what I assume the theory would state: All voltas but the last between repeats. This I think would be a feature request, but unlikely to be implemented?

There is still an issue of double play, I will try to reproduce it.

Attachment Size
.Repeat and Volta Bugs.mscz, 10.03 KB

Please do try and reproduce; though make sure that (with respect to volta) you use at least v2.2 or later; as that is when most of these repeat list interpretations have been changed (which should've also eliminated the double playback issue).

If you find another bug, feel free to turn it into a new issue; when unsure, better post into the forum first.

Thanks for taking the time to work this through, I have spent a while trying to figure this out, and I'm pleased to see 2.3 has resolved the problems. Now I have to rework my scores because they're currently broken. I have been combining repeats, voltas, and jumps, so it is getting ... interesting.