humdrum-tools / verovio-humdrum-viewer

Verovio Humdrum Viewer
http://verovio.humdrum.org
37 stars 9 forks source link

mensuration changes missing #619

Open craigsapp opened 3 years ago

craigsapp commented 3 years ago

Mensuration changes are not being transferred to MEI conversion:

Screen Shot 2021-08-11 at 8 22 15 AM

They used to, but probably related to changes earlier this year related to storage location of initial mensuration sign.

Test data:

**kern
*k[f#]
*met(O)
=1
1e.
*clefC3
=||
*k[b-]
*met(C|)
1f
==
*-
craigsapp commented 3 years ago

Current MEI conversion:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="4.0.0">
 <meiHead>
  <fileDesc>
   <titleStmt>
    <title />
   </titleStmt>
   <pubStmt />
  </fileDesc>
  <encodingDesc>
   <appInfo>
    <application isodate="2021-08-11T08:26:26" version="3.6.0-dev-a671bd0">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mdiv-0000000595483665">
    <score xml:id="score-0000000473980667">
     <scoreDef xml:id="scoredef-0000000012731884" midi.bpm="400.000000">
      <staffGrp xml:id="staffgrp-0000000046124351">
       <staffDef xml:id="staffdef-0000000497067203" n="1" lines="5">
        <clef xml:id="clef-0000000727472974" shape="G" line="2" />
        <keySig xml:id="keysig-L2F1" sig="1s" />
        <mensur xml:id="mensur-L3F1" prolatio="2" tempus="3" sign="O" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1" right="dbl" n="1">
       <staff xml:id="staff-0000001471734620" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <note xml:id="note-L5F1" dots="1" dur="1" oct="4" pname="e" accid.ges="n" />
         <clef xml:id="clef-L6F1" shape="C" line="3" />
        </layer>
       </staff>
      </measure>
      <scoreDef xml:id="scoredef-0000001494047736">
       <keySig xml:id="keysig-L8F1" sig="1f" />
      </scoreDef>
      <measure xml:id="measure-L7" right="end">
       <staff xml:id="staff-L7F1N1" n="1">
        <layer xml:id="layer-L7F1N1" n="1">
         <note xml:id="note-L10F1" dur="1" oct="4" pname="f" accid.ges="n" />
        </layer>
       </staff>
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>
craigsapp commented 3 years ago

Partial implementation with commit https://github.com/rism-digital/verovio/commit/0f46e76d6894268936c2e0d8f73177aff2ad7115

The commit also suppresses @prolation etc. when the mensuration is shown in modern notation (since the rhythmic level information has already been applied to the duration of the notes).

Mensuration changes still need to be implemented at the staff level (when changes are different on different staves).

craigsapp commented 3 years ago

Another test: (checking timestamps as well):

**kern
*k[f#]
*M3/1
*met(O)
=1
2e
!LO:TX:a:t=above F
1f#
*clefC3
=||
*k[b-]
*M2/1
*met(C|)
2f
!LO:TX:a:t=above G
2g
==
*-
Screen Shot 2021-08-11 at 11 57 41 AM

Note that time signatures are required before mensuration changes. Also should be required before the initial mensuration sign at the start of the music (currently not required).