rism-digital / verovio

🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)
https://www.verovio.org
GNU Lesser General Public License v3.0
678 stars 185 forks source link

Issue with incorrect rendering of prolation in mensural notation when the mensuration changes mid-piece #926

Closed karend27 closed 2 weeks ago

karend27 commented 6 years ago

We've been having a strange issue in a couple of encodings with the incorrect interpretations of mensural values, which seems to result in major prolation being interpreted as minor prolation (so notes above the value of minims end up 2/3 of the value they should be).

Here is a screenshot of the where this begins to happen in the attached file (M18_final_mensural.mei):

screen shot 2018-08-08 at 20 16 10

The prolation is major, so the first semibreve rest should have the value of three minims, but it seems to only have the value of two and this continues for the rest of the tenor part, which continues to align as if its prolation is minor even though the mensuration attributes mark it as major.

This is the encoding for the opening notes of the tenor (lowest voice) at this point:

<mensur xml:id="m-bcc10aee-bb52-4162-9df0-da4fab96f2bc" modusmaior="2" modusminor="2" tempus="3" prolatio="3" />
<rest xml:id="m-1281" dur="semibrevis"  />
<note xml:id="m-1282" dur="longa"  oct="4" oct.ges="3" pname="c" quality="immediate_imp" num="3" numbase="2" />
<note xml:id="m-1283" dur="semibrevis"  oct="3" oct.ges="2" pname="a" />
<dot xml:id="m-53e999dd-ff84-42b8-97ac-5a32b0c10f71" />

A similar thing is possibly happening in the attached file in_arboris_test_MENSURAL.mei where red notes change notes that were previously imperfect modus to perfect modus (the tenor keeps switching back and forth between imperfect and perfect modus for the first section of the piece). The second red long with xml-id=m-416 should be held for 12 minims (an imperfected long in perfect modus, imperfect tempus, and major prolation 2x2x3) but according to the rendering it looks like it is held for 8 minims. However, once the modus changes back to perfect everything lines up properly again until the next mensuration. Here's the screenshot:

screen shot 2018-07-27 at 21 40 27

and here's the tenor code at this moment:

<mensur xml:id="m-ed1fbbaa-047b-4090-99c4-5f439d26e54b" modusmaior="2" modusminor="3" tempus="2" prolatio="3" />
<note xml:id="m-380" color="rgba(255,0,0,1)" dur="longa"  oct="3" oct.ges="2" pname="b">
    <verse xml:id="m-383" n="1">
        <syl xml:id="m-384" wordpos="i">sunt</syl>
    </verse>
</note>
<barLine xml:id="m-20d1717e-df1b-4e64-9db6-9d35f7053dc5" />
<note xml:id="m-415" color="rgba(255,0,0,1)" dur="longa"  oct="4" oct.ges="3" pname="c" quality="i" num="3" numbase="2">
    <verse xml:id="m-417" n="1">
        <syl xml:id="m-418" wordpos="i">et</syl>
    </verse>
</note>
<note xml:id="m-416" color="rgba(255,0,0,1)" dur="brevis"  oct="4" oct.ges="3" pname="e">
    <verse xml:id="m-419" n="1">
        <syl xml:id="m-420" wordpos="i">rube</syl>
    </verse>
</note>
<barLine xml:id="m-de07e560-6751-4fca-9fa3-5671f536f1a7" />
<mensur xml:id="m-cc4c81a3-2431-497e-9257-bc56b6a9927a" modusmaior="2" modusminor="2" tempus="2" prolatio="3" />
<note xml:id="m-440" dur="longa"  oct="4" oct.ges="3" pname="d">
    <verse xml:id="m-441" n="1">
        <syl xml:id="m-442" wordpos="i">sunt</syl>
    </verse>
</note>
<barLine xml:id="m-29739c63-3dff-4fff-8b11-50a83e6a6076" />

Finally in the second section of this piece, there's an issue with the red-colored breve that should be intepreted as a perfect breve in perfect tempus and major prolation (worth nine minims), but you can see in the alignment again it seems to be interpreted as six minims.

Screenshot:

screen shot 2018-07-27 at 21 48 51

Tenor code:

<mensur xml:id="m-755e4cce-08ec-4032-8507-5157678fbab2" modusmaior="2" modusminor="2" tempus="3" prolatio="3" />
<note xml:id="m-1280" color="rgba(255,0,0,1)" dur="brevis"  oct="3" oct.ges="2" pname="b" />
<note xml:id="m-1283" color="rgba(255,0,0,1)" dur="brevis"  oct="4" oct.ges="3" pname="c" quality="i" num="3" numbase="2" />
<note xml:id="m-1284" color="rgba(255,0,0,1)" dur="semibrevis"  oct="4" oct.ges="3" pname="e" />
<barLine xml:id="m-2cdb69b1-6fcd-4358-826e-53b209edeee3" />
<mensur xml:id="m-e2b3fcec-883c-43a0-a10e-6d2630e86fbf" modusmaior="2" modusminor="2" tempus="2" prolatio="3" />
<note xml:id="m-1317" dur="brevis"  oct="4" oct.ges="3" pname="d" />
<rest xml:id="m-1318" dur="brevis"  />
<barLine xml:id="m-63245ffb-22b4-4be4-b083-9eab60e6b3fe" />

M18_final_MENSURAL.mei.zip in_arboris_test_MENSURAL.mei.zip

lpugin commented 2 weeks ago

Not sure about the status of these. Please re-open with examples if necessary - these are hard to debug.