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

Mensuration signs being rendered in implicit mensurations #1489

Closed martha-thomae closed 4 years ago

martha-thomae commented 4 years ago

In recent changes in the Mensural MEI schema, the attributes related to the mensuration signs (@dot, @sign, and @slash) were moved into the visual domain, separating them from the attributes that encode the semantics of the mensuration signs (@mdousmaior, @modusminor, @tempus, @prolatio, and@divisio that encode the divisions / relative_values of the notes) which remain in the logical domain.

This is useful because some pieces don't have a mensuration sign, but there is an implied mensuration still. Additionally, the meaning of some mensuration signs varies through time and between geographical regions. And, for Italian Trecento mensuration, multiple symbols can represent the same mensuration (have the same semantics).

Therefore, Verovio should not render the mensuration sign unless the @sign attribute is present (this is, unless there is a clear mensuration sign in the source). To illustrate this, I am including here an example of a an incipit with four voices in which two of them contain a mensuration sign and in the other two voices the mensuration is implicit (there is no mensuration sign in the source).

Here is the screenshot describing the example, followed by the MEI code encoding this example, and the rendering of this code snippet by Verovio can be seen in the screenshot.

Issue: Since there are no mensuration signs for the Altus and Bassus (staves 3 and 4) in the source, no @sign attribute was provided in them, and there should not be any mensuration sign being rendered by Verovio for these two voices.

Implicit Mensuration

<section>
  <staff n="1">
    <layer>
      <mensur sign="C" slash="1" tempus="2" prolatio="2"/>
      <note pname="b" oct="4" dur="brevis"/>
      <note pname="b" oct="4" dur="brevis"/>
      <note pname="a" oct="4" dur="brevis"/>
      <note pname="g" oct="4" dur="brevis"/>
      <note pname="g" oct="4" dur="semibrevis"/>
      <note pname="g" oct="4" dur="semibrevis"/>
    </layer>
  </staff>
  <staff n="2">
    <layer>
      <mensur sign="C" slash="1" tempus="2" prolatio="2"/>
      <note pname="g" oct="3" dur="brevis"/>
      <note pname="b" oct="3" dur="brevis"/>
      <note pname="c" oct="4" dur="brevis"/>
      <note pname="c" oct="4" dur="brevis"/>
      <note pname="c" oct="4" dur="semibrevis"/>
      <note pname="c" oct="4" dur="semibrevis"/>
    </layer>
  </staff>
  <staff n="3">
    <layer>
      <mensur tempus="2" prolatio="2"/>
      <note pname="d" oct="4" dur="brevis"/>
      <note pname="d" oct="4" dur="brevis"/>
      <note pname="f" oct="4" dur="brevis"/>
      <note pname="e" oct="4" dur="brevis"/>
      <note pname="e" oct="4" dur="semibrevis"/>
      <note pname="e" oct="4" dur="semibrevis"/>
    </layer>
  </staff>
  <staff n="4">
    <layer>
      <mensur tempus="2" prolatio="2"/>
      <note pname="g" oct="2" dur="brevis"/>
      <note pname="g" oct="3" dur="brevis"/>
      <note pname="g" oct="3" dur="brevis"/>
      <note pname="c" oct="3" dur="brevis"/>
      <note pname="c" oct="3" dur="semibrevis"/>
      <note pname="c" oct="3" dur="semibrevis"/>
    </layer>
  </staff>
</section>

Note: This example comes from Secton 5.2 of Chapter 5 (Mensural Notation) in the development version of the guidelines.

martha-thomae commented 4 years ago

One big change in the schema was the removal of the mensuration-related attributes from the <staffDef> and <scoreDef>. Now mensuration is solely defined in <mensur>, it doesn’t matter if it is encoding the mensuration of the whole voice or a change in mensuration.

I guess that the reason why this issue is happening now (rendering of mensuration signs when there is no mensuration sign encoded) is because the original idea was to use <mensur> when a mensuration change happened, therefore, when there was a explicit sign in the middle of the staff; and that is why (as soon as there is a @tempus or @prolatio attribute in the <mensur> element) the mensuration sign is rendered.

rettinghaus commented 4 years ago

Could you please update your test version. This has already been addressed with a5f85fc3e796343c4a6e620016225a1a9e9be79d

martha-thomae commented 4 years ago

Hi @rettinghaus. Thank you for looking into this! Could you indicate me how to update the test version? This example of "implicit mensuration" is a file that is on the guidelines. Where can I update the test version in the Guidelines repo so that this file renders correctly?

rettinghaus commented 4 years ago

The guidelines are using the latest release. @lpugin could we move to the development version of Verovio just for the development version of the guidelines?

lpugin commented 4 years ago

We could, but since @kepper is working on moving away from GitHub pages / repo I don't think we should invest time into this. However, since there are nearly zero examples in the latest version of the guidelines, I think you can just switch to the develop version.

kepper commented 4 years ago

well, if this can be done by simply replacing one verovio version with another, I see no problem. The transition to the new guidelines setup is currently scheduled for the November workshop, so there is still some time that we'll have to live with the current situation.

lpugin commented 4 years ago

@martha-thomae has it been addressed?

martha-thomae commented 4 years ago

Not yet.

I agree that it is fine to use the development version of Verovio for the guidelines, there are not that many examples there yet.

rettinghaus commented 4 years ago

But this is no Verovio issue, but a guidelines issue …

lpugin commented 4 years ago

Please open an issue on music-encoding/guidelines.