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
661 stars 183 forks source link

verse/label + verse/syl interaction #1845

Closed craigsapp closed 10 months ago

craigsapp commented 3 years ago

Extra space is not provided for verse labels when they occur within the lyrics:

Screen Shot 2020-11-20 at 5 29 03 PM

There are "2" , "4", and "6" labels attached to the syllables on the third note, but these labels are colliding with the syllables on the second note.

MEI test data:

<?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="2020-11-20T17:30:50" version="3.1.0-dev-0b664f2">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mdiv-0000001619928425">
    <score xml:id="score-0000001853364774">
     <scoreDef xml:id="scoredef-0000001830593278">
      <staffGrp xml:id="staffgrp-0000000511565137">
       <staffDef xml:id="staffdef-0000002045471950" n="1" lines="5">
        <clef xml:id="clef-0000001991908819" shape="G" line="2" />
        <meterSig xml:id="metersig-L2F1" count="4" unit="4" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1" n="1">
       <staff xml:id="staff-0000000284308053" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <note xml:id="note-L5F1" dur="4" oct="4" pname="f" accid.ges="n">
          <verse xml:id="verse-L5F2" n="1">
           <label xml:id="label-0000001516817774">1.</label>
           <syl xml:id="syl-L5F2">aaa</syl>
          </verse>
          <verse xml:id="verse-L5F3" n="2">
           <label xml:id="label-0000000227513040">3.</label>
           <syl xml:id="syl-L5F3">bbb</syl>
          </verse>
          <verse xml:id="verse-L5F4" n="3">
           <label xml:id="label-0000001185283078">5.</label>
           <syl xml:id="syl-L5F4">ccc</syl>
          </verse>
         </note>
         <note xml:id="note-L6F1" dur="4" oct="4" pname="e" accid.ges="n">
          <verse xml:id="verse-L6F2" n="1">
           <syl xml:id="syl-L6F2">ddd</syl>
          </verse>
          <verse xml:id="verse-L6F3" n="2">
           <syl xml:id="syl-L6F3">eee</syl>
          </verse>
          <verse xml:id="verse-L6F4" n="3">
           <syl xml:id="syl-L6F4">fff</syl>
          </verse>
         </note>
         <note xml:id="note-L8F1" dur="4" oct="4" pname="d" accid.ges="n">
          <verse xml:id="verse-L8F2" n="1">
           <label xml:id="label-0000001721186354">2.</label>
           <syl xml:id="syl-L8F2">ggg</syl>
          </verse>
          <verse xml:id="verse-L8F3" n="2">
           <label xml:id="label-0000000522699858">4.</label>
           <syl xml:id="syl-L8F3">hhh</syl>
          </verse>
          <verse xml:id="verse-L8F4" n="3">
           <label xml:id="label-0000000343685315">6.</label>
           <syl xml:id="syl-L8F4">iii</syl>
          </verse>
         </note>
         <note xml:id="note-L9F1" dur="4" oct="4" pname="c" accid.ges="n">
          <verse xml:id="verse-L9F2" n="1">
           <syl xml:id="syl-L9F2">jjj</syl>
          </verse>
          <verse xml:id="verse-L9F3" n="2">
           <syl xml:id="syl-L9F3">kkk</syl>
          </verse>
          <verse xml:id="verse-L9F4" n="3">
           <syl xml:id="syl-L9F4">lll</syl>
          </verse>
         </note>
        </layer>
       </staff>
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

This is related to The Linden Tree example, where there are internal labels for the verse numbers in measure 8 (but in this case there is a rest before the labeled notes, so there is no problem):

Screen Shot 2020-11-20 at 5 39 46 PM

Scan of source edition:

https://github.com/music-encoding/sample-encodings/blob/master/MEI_4.0/Music/Complete_examples/Schubert_Lindenbaum.pdf

Screen Shot 2020-11-19 at 7 38 14 AM
MEI data for the above notation ```xml </titleStmt> <pubStmt /> </fileDesc> <encodingDesc> <appInfo> <application isodate="2020-11-20T16:26:56" version="3.1.0-dev-94a4985-dirty"> <name>Verovio</name> <p>Transcoded from Humdrum</p> </application> </appInfo> <projectDesc> <p>Encoded by: Craig Stuart Sapp</p> </projectDesc> </encodingDesc> <workList> <work> <title xml:id="title-L1" analog="humdrum:OTL" type="main" xml:lang="de">Der Lindenbaum The Linden Tree Schubert, Franz Müller, Wilh. reference OTL Der Lindenbaum reference OTL The Linden Tree reference COM Schubert, Franz reference CDT 1826 reference LYR M&uuml;ller, Wilh. reference LAR Erk, Ludwig reference LDT 1822 reference OCL Erk, Ludwig reference GCO Deutscher Liederschatz, Band 2 reference OMD M&auml;ssig reference system-decoration (s1){(s2,s3)} reference ENC Craig Stuart Sapp reference END 2004/05/19/ reference EFL 205/600 reference RDF**kern > = above reference RDF**kern < = below Der Lindenbaum     Wilh. Müller (1822) Franz Schubert
Am Ich Die p Brun musst' kal nen auch ten vor heu Win dem te de Tho wan blie re, dern sen da vor mir steht bei grad ein in ins Lin tie An den fer ge baum; Nacht, sicht, ich da der träumt' hab' Hut in ich flog sei noch mir nem im vom Schat Dun Ko ten kel pfe, so die ich man Au wen chen gen de zu te ssen ge mich Traum. macht; nicht. Ich Und Nun schnitt sei bin in ne ich sei Zwei man ne ge che Rin rausch Stun de ten, de so als ent man rie fernt ches fen von lie sie je be mir nem Wort; zu: Ort, es Komm und pp zog her im in zu mer Freud' mir hör' und Ge ich's Lei sel rau de le, schen: zu hier du ihm find'st fän mich du dest im dei Ru mer ne he fort, Ruh, dort, zu hier du fp ihm find'st fän mich du dest im dei Ru mer ne he fort. Ruh! dort!
```

Why are there railroad tracks between the systems @rettinghaus? These seem to be generated automatically, but they are not necessary in piano-vocal music.

Issue https://github.com/rism-ch/verovio/issues/1840 comes from measure 12.

Issue https://github.com/rism-ch/verovio/issues/1841 comes from measure 16.

Issue https://github.com/rism-ch/verovio/issues/1844 comes from measure 3.

Measure 17 has a problem with an interaction between the tuplet number and the slur which is tricky to figure out how to solve in the general case.

There is also a problem with the placement of the cresendo hairpin endings where they do not reach to the desired @tstamp which I will probably submit as an issue.

craigsapp commented 10 months ago

looks great:

Screenshot 2023-11-14 at 22 00 05