Closed ameamenoame closed 2 years ago
Related: w3c/musicxml#439
That issue seems to be about fingering without positioning information, but in this case -fingering for a chord with positioning information- shouldn't we be able to fix it?
The fingering 5
is bound to the note C
, 1
is bound to G
.
The fing
tags seem to be bound to the correct notes also using startid
, yet it still renders as 5 1
instead of 1 5
.
I think MEI is not sufficient to describe all properties when it comes to fingering. Maybe you could open a discussion over at https://github.com/music-encoding/music-encoding ?
These should be wrapped in a fingGrp
element, no?
https://music-encoding.org/guidelines/dev/elements/fingGrp.html
The order would be the order that they are listed as children in that element.
Here is what I am doing in the Humdrum-to-MEI converter (which was implemented before <fing>
was available):
Transcoded from Humdrum
Ordering of the <dir>
(or <fing>
) is the method I use to select the stacking order of the fingering numbers. Note that the stacking order is from near to far from the staff, so if you move the fingerings to the other side of the staff, then they will flip their order (so you would have to reverse their order when moving to the other side of the staff if you want to keep the same order of the numbers from top-down).
So it is possible to get the correct order in the MusicXML importer by considering the pitches related to the fingerings, but it would be a lot of work, and perhaps better would be to improve the system in verovio.
In the MusicXML example, the fingering number is attached to the note, with the stacking order left up to the renderer (which should match the pitch order for the fingerings, of course). A possible enhancement in the fingering positions would be to use the @startid
of the <fing>
to calculate an order for the fingering that matches the order of the note pitches which they are attached to (when @startid
is available; otherwise, use the current stacking behavior).
fingGrp
would be good to implement, but in that case the MusicXML importer would still have to do work to calculate the order that matches the pitches. In other words, fingGrp
should assumed to be in a fixed vertical order, such as top-down as in <fb>
).
Perhaps utilizing the code for figured bass which has a similar visual syntax to <fingGrp>
(which I do not think is implemented in verovio yet)?
Transcoded from Humdrum
Describe the problem Using the MEI file, the rendered fingering differs from the fingering in the MusicXML file used to create the MEI file.
Fingering in the MusicXML file
The chord's fingering is
1 5
Fingering in the rendered MEI file
The chord's fingering is now
5 1
To Reproduce MusicXML file: https://files.catbox.moe/snhj4k.musicxml
Example MEI file: https://files.catbox.moe/s9bg7m.mei
Expected behavior The fingering rendered by the MEI file should be the same as the MusicXML file.
Verovio information Verovio 3.5.0, Python bindings
Environment information (as appropriate) OS: Fedora 35