Closed o-sapov closed 4 years ago
Hi Oleksii, hm, these labels do not make life easy for the string maching algorithms. ;)
A quick and dirty workaround is to export the MSM/MPS and adapt the names there to something like "Horn" and "Soprano". But that is, of course, no automatic solution.
I have to look deeper into the <perfMedium>
, <perfResList>
and <perfRes>
definitions to see what they do, mean and allow. However, I will run into a conflict anyway as the general rule in meicos decision making for competing information is to prioritize local information. Regarding the <staffDef>
it means, meico first looks for @label
and then child <label>
. Verovio seems to do the same here. Element <perfRes>
is even less local ...
I have to think about this and get back to you. Give me some time.
I just commited a solution for this issue via release version 0.8.17. It does not follow your suggestion with element <perfRes>
, though. This element is so vaguely specified and allows too much troublesome usecases. You may still use it, but meico keeps ignoring it. What you should do instead to specify the instrument in case of a nonexpressive or misleading label is the following.
Add to the <staffDef>
an <instrDef>
as described in the MEI Guidelines in the section on Recording General MIDI Instrumentation, just like this.
<staffDef clef.line="2" clef.shape="G" decls="#instrVoice_1" key.sig="0" lines="5" n="1" trans.diat="-1" trans.semi="-2" xml:id="staffDef_P1">
<label xml:id="label_P1">Corno<lb xml:id="lb_P1"/> in Si♭ alto/B hoch</label>
<instrDef midi.instrnum="60" midi.instrname="French Horn"/>
</staffDef>
You need only one of the attributes @midi.instrnum
and @midi.instrname
. The latter is subject to processing via the instruments dictionary, so it works also with instrument names that are not in the General MIDI list. Be aware that the instrument number must be in [0, 127]. Many GM instrument lists provide numbers from 1 to 128; those must be decreased by 1 to get the right instrument. This is also addressed in the MEI specification of this attribute.
So on your side of the data creation, instead of the relatively complicated <perfRes>
approach you can, instead, just add an <instrDef>
to the <staffDef>
and you are done. Meico supports this now. Further information on this can be found here.
Hi Axel, we have the following issues regarding the recognition of the instruments.
Case 1: Symphony
The french horn is mapped to soprano saxophone because we use German and Italian terms in the \<label>:
Full example
Case 2: Canons
Soprano voices are mapped to piva and scifi because the \<label> contains Roman numerals:
Possible solution
The both problems could be solved if MEICO would first check in the \<meiHead> if there is information about the instruments. In our case, there is a link via staffDef@decls to the MARC instruments vocabulary.