w3c / musicxml

MusicXML specification
479 stars 56 forks source link

Element 'octave-shift' with type="continue" #471

Open hbitteur opened 1 year ago

hbitteur commented 1 year ago

I haven't found any example in MusicXML documentation showing a concrete use of octave-shift with type="continue". So I would appreciate any help on this topic.

For an octave shift limited to a single physical staff, say from location A to location B, we will have for example:

But for an octave shift that crosses system boundaries, we can have an octave shift that starts on staff 1 (at location A) and ends on staff 2 (at location D). Let's name B the location at end of staff 1, and C the location at beginning of staff 2. In terms of MusicXML stream, what should we use at locations A, B, C and D?

I implemented the case C with type="continue", and fed both MuseScore 3.6.2 and Finale 27 with my MusicXML data.

Note that if I slightly modify the score within MuseScore and re-export it to MusicXML, it just exports the start and stop elements, the "continue" element has disappeared. So I tried to totally remove the octave-shift type="continue" at location C. Then both MuseScore and Finale are able to see the octave shift.

How come?

mdgood commented 1 year ago

@hbitteur - Do you mean "system 1" and "system 2" when describing this issue, rather than "staff 1" and "staff 2"?

The "continue" type is indeed used for positioning at system breaks. For the <octave-shift> element it would be unusual to need one at the end of the first system (location B), but more likely at the start of the second system (location C) if the height differs between systems. But I wouldn't expect an <octave-shift> to start on the top staff of a piano part and then end on the bottom staff.

Finale currently cannot import these type="continue" values, but it should not be ignoring <octave-shift> elements that contain them. That is a bug that we will try to fix for our upcoming 27.3 release.

hbitteur commented 1 year ago

@mdgood Yes, I mean a logical octave shift crossing the system breaks (not going from one staff to the other within the same system!). Staff 1 and staff 2 are just two names to refer to these logically connected staves, there is no reference to staff position within the page, I could have used staff 'a' and staff 'b' instead.

So, back to my question, I understand you are confirming that the octave-shift element with continue type:

May I suggest these points get explicitly stated in MusicXML documentation? Together with concrete examples?

Thanks for your help.

mdgood commented 1 year ago

I wouldn't say "should not" for the end of system 'a', just unusual. I could see some situations where the end of the line might be adjusted inward to avoid a collision with some other notation element, for instance.

Yes, this needs better documentation. This is a good example of the situation where we have examples for each type of MusicXML element, but not for each attribute or for each value within enumerated types. Thank you for raising this issue!