w3c / musicxml

MusicXML specification
478 stars 56 forks source link

Choosing the reference note for breath-mark or caesura articulations #498

Open hbitteur opened 7 months ago

hbitteur commented 7 months ago

Audiveris OMR engine is able to recognize a glyph as a breath-mark or a caesura. When exporting to MusicXML, siince these articulation elements are descendants of a note element, the engine has to choose some reference note. The question is how to pick up the correct one?

According to the examples found in MusicXML documentation itself, the choice is not obvious.

Here is the example of a breath-mark:

And the example of a caesura:

Could someone tell me, for each of these two cases, which precise note is the reference note, and why?

Thanks for your help, /Hervé

mscuthbert commented 7 months ago

Generally I've interpreted it to be the note before in both cases. Finale (27) does layout expecting it to be attached to the previous note.

Let's make that a ruling for 4.1 unless objections occur -- breath marks and caesuras are expected to be attached to the prior note in MusicXML.

For some sort of conceptual piece where a breath mark or caesura occurs before the first note of the piece, the encoding is unspecified, and would need to be faked with either a manually positioned negative x position on the breath mark attached to the first note, or some sort of hidden rest. Not to be determined at this point. In MNX it might be worthwhile to allow articulations to be placed at a particular position unattached to any note/rest to allow such concepts, or to more precisely position a breath mark just before the first note of the following measure or after a barline. At present, MusicXML does not have such semantics for reflowing pages, and assuming MNX development continues well, it's not planned.

olin256 commented 7 months ago

I've come across this issue when using Audiveris for digitalization of organ accompaniments like the following: 015 From a certain point of view, this piece does have voices (usual SATB), but the breath marks are not intended for a particular voice, rather indicating a breath of the whole congregation for the organist.

What would be the best solution here? I'm currently attaching the marks only to the notes in the two upper voices in the staves. Another (perhaps more systematic) approach would be to attach them to the lower voices, too, and leave the merging of the two to the displaying software.

mscuthbert commented 7 months ago

Ouch. That is hard. And I have also seen such things only attached to the top staff (which is the worst of all since then then tenors and basses are expected to be constantly looking at the top staff for such things. There is a reason why tempo changes etc should always be accompanied by a double barline in all parts)

The determination of whether a sign applies to more than one voice or staff needs to be done by the OMR or other software. An encoding system can't have that in its remit. But it should help in cases where all parts conceptually have a breath mark or other articulation but only one should be shown.

Would adding print-object to articulation elements be something the community could get behind? I definitely have had the experience where I've wanted to encode "short long" in the playback and conception of a score but couldn't have staccato-legato marks shown in the scores. It would still be up to software to determine which voice gets the shown breath mark (if two voices on the same staff have different numbers of notes, like a half against two quarters then the breath should be on the last note) but at least it can give a better hint as to what should be done.

Fermatas are another place where there is a tradition of only showing on some notes while they apply to all.

hbitteur commented 7 months ago

@mscuthbert Thank you for your hint. Audiveris implementation now attempts to connect a breath-mark sign or a caesura sign with the closest note (abscissawise) found before the sign in the same staff and the same measure.

It makes yet no attempt to connect the sign to several notes as you suggested in your post above..

By the way, I noticed that MusicXML considers these signs as "articulations" while SMuFL gathers them with fermata signs into the section 4.40 "Holds and pauses", separately from section 4.39 "Articulations".

olin256 commented 6 months ago

I was surprised to learn today that Sibelius (importing a MusicXML file) puts the breath mark above the note: breath_above Its native playback interprets it as a breath before the note.

It would be nice to have this cleared up in future versions…