Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement chord/verse #1337

Closed
craigsapp opened this issue Mar 10, 2020 · 1 comment · Fixed by #1338
Closed

Implement chord/verse #1337

craigsapp opened this issue Mar 10, 2020 · 1 comment · Fixed by #1338

Comments

@craigsapp
Copy link
Contributor

MEI 4.0 allows for <verse> to be sub-elements of <chord>:

https://music-encoding.org/guidelines/v4/elements/chord.html

Screen Shot 2020-03-10 at 09 26 06

Verovio should implement this, since it is now possible. Currently there is a warning printed when verse is found attached to chord:

[Warning] Element <verse> within <chord> is not supported and will be ignored 

And the text for the verse is not rendered:

Screen Shot 2020-03-10 at 10 09 07

MEI test data for verse attached to chord:

<?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-03-10T09:58:50" version="2.6.0-dev-606fd3b">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mdiv-0000001255711147">
    <score xml:id="score-0000000208786641">
     <scoreDef xml:id="scoredef-0000001905825959">
      <staffGrp xml:id="staffgrp-0000000952426229">
       <staffDef xml:id="staffdef-0000000920969044" n="1" lines="5">
        <clef xml:id="clef-0000000033375364" shape="G" line="2" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1">
       <staff xml:id="staff-0000001332919464" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <note xml:id="note-L2F1" dur="2" oct="4" pname="c" accid.ges="n">
          <verse xml:id="verse-L2F2" n="1">
           <syl xml:id="syl-L2F2">one</syl>
          </verse>
         </note>
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L3">
       <staff xml:id="staff-L3F1N1" n="1">
        <layer xml:id="layer-L3F1N1" n="1">
         <chord xml:id="chord-L4F1" dur="2">
          <note xml:id="note-L4F1S1" oct="4" pname="e" accid.ges="n" />
          <note xml:id="note-L4F1S2" oct="4" pname="c" accid.ges="n" />
          <verse xml:id="verse-L4F2" n="1">
           <syl xml:id="syl-L4F2">two</syl>
          </verse>
         </chord>
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L5" right="end">
       <staff xml:id="staff-L5F1N1" n="1">
        <layer xml:id="layer-L5F1N1" n="1">
         <note xml:id="note-L6F1" dur="2" oct="4" pname="c" accid.ges="n">
          <verse xml:id="verse-L6F2" n="1">
           <syl xml:id="syl-L6F2">three</syl>
          </verse>
         </note>
        </layer>
       </staff>
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

Originally the verse had to be attached to all notes in the chord, but this is now causing overstrike problems in verovio:

Screen Shot 2020-03-10 at 10 11 24

Ideally this should be fixed, but preferrably in such cases there would be one verse at the chord level.

MEI test data for double encoding of verse on notes in chord:

<?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-03-10T09:58:50" version="2.6.0-dev-606fd3b">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mdiv-0000001255711147">
    <score xml:id="score-0000000208786641">
     <scoreDef xml:id="scoredef-0000001905825959">
      <staffGrp xml:id="staffgrp-0000000952426229">
       <staffDef xml:id="staffdef-0000000920969044" n="1" lines="5">
        <clef xml:id="clef-0000000033375364" shape="G" line="2" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1">
       <staff xml:id="staff-0000001332919464" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <note xml:id="note-L2F1" dur="2" oct="4" pname="c" accid.ges="n">
          <verse xml:id="verse-L2F2" n="1">
           <syl xml:id="syl-L2F2">one</syl>
          </verse>
         </note>
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L3">
       <staff xml:id="staff-L3F1N1" n="1">
        <layer xml:id="layer-L3F1N1" n="1">
         <chord xml:id="chord-L4F1" dur="2">
          <note xml:id="note-L4F1S1" oct="4" pname="e" accid.ges="n">
           <verse xml:id="verse-L4F2" n="1">
            <syl xml:id="syl-L4F2">two</syl>
           </verse>
          </note>
          <note xml:id="note-L4F1S2" oct="4" pname="c" accid.ges="n">
           <verse xml:id="verse-L4F2b" n="1">
            <syl xml:id="syl-L4F2b">two</syl>
           </verse>
          </note>
         </chord>
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L5" right="end">
       <staff xml:id="staff-L5F1N1" n="1">
        <layer xml:id="layer-L5F1N1" n="1">
         <note xml:id="note-L6F1" dur="2" oct="4" pname="c" accid.ges="n">
          <verse xml:id="verse-L6F2" n="1">
           <syl xml:id="syl-L6F2">three</syl>
          </verse>
         </note>
        </layer>
       </staff>
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

The current solution is to attach the verse to a single note in the chord (does not matter which one):

Screen Shot 2020-03-10 at 10 13 43

MEI test data for single-note verse in chord:

<?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-03-10T09:58:50" version="2.6.0-dev-606fd3b">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mdiv-0000001255711147">
    <score xml:id="score-0000000208786641">
     <scoreDef xml:id="scoredef-0000001905825959">
      <staffGrp xml:id="staffgrp-0000000952426229">
       <staffDef xml:id="staffdef-0000000920969044" n="1" lines="5">
        <clef xml:id="clef-0000000033375364" shape="G" line="2" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1">
       <staff xml:id="staff-0000001332919464" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <note xml:id="note-L2F1" dur="2" oct="4" pname="c" accid.ges="n">
          <verse xml:id="verse-L2F2" n="1">
           <syl xml:id="syl-L2F2">one</syl>
          </verse>
         </note>
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L3">
       <staff xml:id="staff-L3F1N1" n="1">
        <layer xml:id="layer-L3F1N1" n="1">
         <chord xml:id="chord-L4F1" dur="2">
          <note xml:id="note-L4F1S1" oct="4" pname="e" accid.ges="n">
           <verse xml:id="verse-L4F2" n="1">
            <syl xml:id="syl-L4F2">two</syl>
           </verse>
          </note>
          <note xml:id="note-L4F1S2" oct="4" pname="c" accid.ges="n" />
         </chord>
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L5" right="end">
       <staff xml:id="staff-L5F1N1" n="1">
        <layer xml:id="layer-L5F1N1" n="1">
         <note xml:id="note-L6F1" dur="2" oct="4" pname="c" accid.ges="n">
          <verse xml:id="verse-L6F2" n="1">
           <syl xml:id="syl-L6F2">three</syl>
          </verse>
         </note>
        </layer>
       </staff>
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>
@craigsapp
Copy link
Contributor Author

Also note that there may be some connection to issue #1329 (related to the double-strking seen in the second example on this page).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant