w3c / musicxml

MusicXML specification
499 stars 55 forks source link

<fingering>: substitution and alternate fingerings #437

Open cecilios opened 2 years ago

cecilios commented 2 years ago

According to documentation attribute substitution "Indicates that this fingering is a substitution in the middle of a note", and attribute alternate "Indicates that this is an alternate fingering".

But, how is it specified the main fingering to be substituted or that has an alternative? Is it the previous defined <fingering>?

Could you please share a short MusicXML sample with different <fingering> combinations for better understanding and testing? Thank you.

mdgood commented 2 years ago

@cecilios Yes, the main fingering would precede either the substitution or the alternate fingering. I agree this could be better documented both in the specification text and examples. I will try to provide an example later. Feel free to post a notation image or two that you would like to see the MusicXML for.

cecilios commented 2 years ago

Thank you Michael.

Thank you for the help. Please feel free to close the other two issues related to this one. I'm going to deal here with all of them as they all refer to the same issue: lack of documentation in <fingering> element.

In the absence of information I have made an exercise to imaging how an exporter would create the fingering elements and how an importer should do with them. I do not have access to Finale, Dorico or other commercial software, thus I cannot test this. The result of my exercise is illustrated in the attached score 02-fingering.xml.txt that is imported and rendered by my library as follows:

image

These are my assumptions:

Please, note that positioning information is not needed. Fingering have well defined positions, as articulations have, and thus positioning information is not needed. Could be useful in some cases but I prefer that my software do not depend on the existence of this information.

I don't know if my assumptions are correct, but in any case the behavior should be documented so that all exporters and importers share the same rules.

There are some additional issues that I cannot solve (illustrated in next image, from E.Gould, p.309): image

lemzwerg commented 1 month ago

@cecilios, thanks a lot for your sample! I agree with all your conclusions except one: In measure two, first beat, right hand, you are putting three <fingering> elements on a single note in a chord: for the sake of conformity, and to avoid another exception, I pledge that this should be still handled as a single note with three fingerings. In other words, the result should look like the following:

image

Finally, the default rendering of LilyPond for the last chord in the bass line (<c-5 a,-3 f-1>4) is as follows, making clear that the fingering in your example is, well, peculiar :slightly_smiling_face:

image

cecilios commented 1 month ago

@lemzwerg Thanks for your comments.

I did put the fingering of the first chord you indicate on purpose to check that my library could handle both options perfectly. I don't advocate this option of putting all the fingering of a chord on the first note, but since there is no documentation or examples, I didn't know what I could find in the wild and I preferred my library to be able to handle both options. Also, in the case of chords it is common for many indications to be present only on the first note, so it was not unreasonable to assume that I could find XML files in the wild generated in this way. That's what happens when there is no documentation! But three years later, still nothing clarified! Clearly, it's probably not a topic of interest to anyone.

As to the Lilypond rendition of last chord, I must say that the fingering instructions in my example are not intended for a pianist to play, but rather to check the behavior when importing the file and rendering it. The fingering of the last chord (encoded as note C3 finger 5, note A2 finger 3 and note F3 finger 1) is inverted on purpose, as if it were to be played with the right hand (for the left hand it should be note C3 finger 1, note A2 finger 3 and note F3 finger 5), to check the behaviour of importers. Nevertheless, the rendition provided by my library is IMO the right rendition: fingering in source file is respected and fingering numbers are properly ordered and are placer UNDER the chord. To me, what is really peculiar is Lilypond rendition: some digits above and some under, and more peculiar, how might a pianist cross fingers 5 and 3 as the Lilypond image suggests? But, apart from the implausible position suggested by Lilypond, it has made the mistake of changing the fingering indicated in the source file, associating finger 5 with note A2 and finger 3 to note C3 which is not what is indicated in the XML file.

lemzwerg commented 1 month ago

Nevertheless, the rendition provided by my library is IMO the right rendition: fingering in source file is respected and fingering numbers are properly ordered and are placer UNDER the chord. To me, what is really peculiar is Lilypond rendition: some digits above and some under, and more peculiar, how might a pianist cross fingers 5 and 3 as the Lilypond image suggests? But, apart from the implausible position suggested by Lilypond, it has made the mistake of changing the fingering indicated in the source file, associating finger 5 with note A2 and finger 3 to note C3 which is not what is indicated in the XML file.

That LilyPond automatically distributes fingering instructions above and below a chord can be controlled; the default (as displayed above) is used, for example, by the UE Schenker edition of Beethoven's piano sonatas:

image

BTW, there is no rule for piano music to put fingerings below the bass staff. Again, the Schenker UE edition shows that the positions are completely arbitrary:

image

About the crossing fingers: This is exactly what is given in your MusicXML file: C3 has finger 5 and note A2 has finger 3. It seems that you are not a pianist: LilyPond's rendering of the fingerings can only interpreted in one way.

image

Anyway, this is not the place to discuss LilyPond renderings :-)

cecilios commented 1 month ago

@lemzwerg Ops! You are right! My rendition of last chord is not correct! I was obfuscated, looking only at the order in which the fingering had been defined and not at the notes to which each digit was associated.

And thanks for the information and the images. I know that there is no strict rule for piano music to put fingerings below the bass staff or above for the upper staff, but that is the default positioning my library assumes, unless positioning information is present.

Thanks againg for pointing out the error in my rendition.