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

Tuplet number + staff interaction #2686

Closed
craigsapp opened this issue Mar 3, 2022 · 7 comments · Fixed by #3222
Closed

Tuplet number + staff interaction #2686

craigsapp opened this issue Mar 3, 2022 · 7 comments · Fixed by #3222

Comments

@craigsapp
Copy link
Contributor

While it is good to avoid placing tuplet numbers outside of staff lines, there are cases where this general rule should be broken. Here is a case where tuplet numbers should be allowed within the staff:

Screen Shot 2022-03-03 at 12 05 29 PM

Click to view MEI data for above example
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="5.0.0-dev">
 <meiHead>
  <fileDesc>
   <titleStmt>
    <title />
   </titleStmt>
   <pubStmt />
  </fileDesc>
  <encodingDesc>
   <appInfo>
    <application isodate="2022-03-03T12:11:00" version="3.10.0-dev-8f3b9e0">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mi06g6r">
    <score xml:id="sj21fpn">
     <scoreDef xml:id="se9hqgt">
      <staffGrp xml:id="sxenmru">
       <staffDef xml:id="s6gq4w3" n="1" lines="5">
        <clef xml:id="cgu4q22" shape="G" line="2" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1" right="invis">
       <staff xml:id="shuhgqx" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <tuplet xml:id="tuplet-L4F1-L6F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L4F1-L6F1">
           <note xml:id="note-L4F1" dur="8" oct="5" pname="f" accid.ges="n" />
           <note xml:id="note-L5F1" dur="8" oct="5" pname="e" accid.ges="n" />
           <note xml:id="note-L6F1" dur="8" oct="5" pname="d" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L8F1-L10F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L8F1-L10F1">
           <note xml:id="note-L8F1" dur="8" oct="5" pname="e" accid.ges="n" />
           <note xml:id="note-L9F1" dur="8" oct="5" pname="d" accid.ges="n" />
           <note xml:id="note-L10F1" dur="8" oct="5" pname="c" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L12F1-L14F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L12F1-L14F1">
           <note xml:id="note-L12F1" dur="8" oct="5" pname="d" accid.ges="n" />
           <note xml:id="note-L13F1" dur="8" oct="5" pname="c" accid.ges="n" />
           <note xml:id="note-L14F1" dur="8" oct="4" pname="b" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L16F1-L18F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L16F1-L18F1">
           <note xml:id="note-L16F1" dur="8" oct="5" pname="c" accid.ges="n" />
           <note xml:id="note-L17F1" dur="8" oct="4" pname="b" accid.ges="n" />
           <note xml:id="note-L18F1" dur="8" oct="4" pname="a" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L20F1-L22F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L20F1-L22F1">
           <note xml:id="note-L20F1" type="placed" dur="8" oct="4" pname="b" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L21F1" dur="8" oct="4" pname="a" accid.ges="n" />
           <note xml:id="note-L22F1" dur="8" oct="4" pname="g" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L24F1-L26F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L24F1-L26F1">
           <note xml:id="note-L24F1" type="placed" dur="8" oct="4" pname="a" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L25F1" dur="8" oct="4" pname="g" accid.ges="n" />
           <note xml:id="note-L26F1" dur="8" oct="4" pname="f" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L28F1-L30F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L28F1-L30F1">
           <note xml:id="note-L28F1" type="placed" dur="8" oct="4" pname="g" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L29F1" dur="8" oct="4" pname="f" accid.ges="n" />
           <note xml:id="note-L30F1" dur="8" oct="4" pname="e" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L32F1-L34F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L32F1-L34F1">
           <note xml:id="note-L32F1" type="placed" dur="8" oct="4" pname="f" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L33F1" dur="8" oct="4" pname="e" accid.ges="n" />
           <note xml:id="note-L34F1" dur="8" oct="4" pname="d" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L36F1-L38F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L36F1-L38F1">
           <note xml:id="note-L36F1" type="placed" dur="8" oct="4" pname="d" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L37F1" dur="8" oct="4" pname="c" accid.ges="n" />
           <note xml:id="note-L38F1" dur="8" oct="3" pname="b" accid.ges="n" />
          </beam>
         </tuplet>
        </layer>
       </staff>
       <slur xml:id="slur-L4F1-L6F1" staff="1" startid="#note-L4F1" endid="#note-L6F1" />
       <slur xml:id="slur-L8F1-L10F1" staff="1" startid="#note-L8F1" endid="#note-L10F1" />
       <slur xml:id="slur-L12F1-L14F1" staff="1" startid="#note-L12F1" endid="#note-L14F1" />
       <slur xml:id="slur-L16F1-L18F1" staff="1" startid="#note-L16F1" endid="#note-L18F1" />
       <slur xml:id="slur-L20F1-L22F1" staff="1" startid="#note-L20F1" endid="#note-L22F1" />
       <slur xml:id="slur-L24F1-L26F1" staff="1" startid="#note-L24F1" endid="#note-L26F1" />
       <slur xml:id="slur-L28F1-L30F1" staff="1" startid="#note-L28F1" endid="#note-L30F1" />
       <slur xml:id="slur-L32F1-L34F1" staff="1" startid="#note-L32F1" endid="#note-L34F1" />
       <slur xml:id="slur-L36F1-L38F1" staff="1" startid="#note-L36F1" endid="#note-L38F1" />
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

The slurs look ridiculous, and they should not do this (i.e., minimizing slur curvature has priority over the tuplet number avoiding staff lines). Tuplet numbers should be allowed inside of the staff automatically whenever the slur would otherwise be extreme as in this example.

Entering the staff should be allowed to start at about the 4th or 5th beamed group in this example (starting at the 3rd would be OK, particularly for consistency with adjacent tuplet numbers).


A related issue is that when there is a slur with a tuplet number underneath it, then the slur endpoints should be moved further from the noteheads than they currently are. Basically, the slur should be typeset without the tuplet there, and then raised in order to fit the tuplet number underneath — the slur's curvature should not be increased to accommodate the tuplet.

Here is an example from a Schubert Impromptu:

https://s9.imslp.org/files/imglnks/usimg/b/b3/IMSLP00364-Franz_Schubert_-_4_Impromptus,_Op_90.pdf#page=7

Screen Shot 2022-03-03 at 12 17 01 PM

@rettinghaus
Copy link
Contributor

You mistake curved tuplet brackets as slurs. If you need to reproduce this style you should find a way to encode this properly in MEI or make a suggestion over there.
For tuplets on staves see discussion on music-encoding/music-encoding#853

@craigsapp
Copy link
Contributor Author

For tuplets on staves see discussion on music-encoding/music-encoding#853

I would say that if there is no @num.place for tuplets, then verovio should make a reasonable decision about when to enter the staff, and the encoder can give an instruction to avoid the staff or place above/below if they do not like veorvio's placement decision.

Here is the example without slurs:

Screen Shot 2022-03-04 at 12 31 42 AM

Click to view MEI data for above example
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="5.0.0-dev">
 <meiHead>
  <fileDesc>
   <titleStmt>
    <title />
   </titleStmt>
   <pubStmt />
  </fileDesc>
  <encodingDesc>
   <appInfo>
    <application isodate="2022-03-03T12:11:00" version="3.10.0-dev-8f3b9e0">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mi06g6r">
    <score xml:id="sj21fpn">
     <scoreDef xml:id="se9hqgt">
      <staffGrp xml:id="sxenmru">
       <staffDef xml:id="s6gq4w3" n="1" lines="5">
        <clef xml:id="cgu4q22" shape="G" line="2" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1" right="invis">
       <staff xml:id="shuhgqx" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <tuplet xml:id="tuplet-L4F1-L6F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L4F1-L6F1">
           <note xml:id="note-L4F1" dur="8" oct="5" pname="f" accid.ges="n" />
           <note xml:id="note-L5F1" dur="8" oct="5" pname="e" accid.ges="n" />
           <note xml:id="note-L6F1" dur="8" oct="5" pname="d" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L8F1-L10F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L8F1-L10F1">
           <note xml:id="note-L8F1" dur="8" oct="5" pname="e" accid.ges="n" />
           <note xml:id="note-L9F1" dur="8" oct="5" pname="d" accid.ges="n" />
           <note xml:id="note-L10F1" dur="8" oct="5" pname="c" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L12F1-L14F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L12F1-L14F1">
           <note xml:id="note-L12F1" dur="8" oct="5" pname="d" accid.ges="n" />
           <note xml:id="note-L13F1" dur="8" oct="5" pname="c" accid.ges="n" />
           <note xml:id="note-L14F1" dur="8" oct="4" pname="b" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L16F1-L18F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L16F1-L18F1">
           <note xml:id="note-L16F1" dur="8" oct="5" pname="c" accid.ges="n" />
           <note xml:id="note-L17F1" dur="8" oct="4" pname="b" accid.ges="n" />
           <note xml:id="note-L18F1" dur="8" oct="4" pname="a" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L20F1-L22F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L20F1-L22F1">
           <note xml:id="note-L20F1" type="placed" dur="8" oct="4" pname="b" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L21F1" dur="8" oct="4" pname="a" accid.ges="n" />
           <note xml:id="note-L22F1" dur="8" oct="4" pname="g" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L24F1-L26F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L24F1-L26F1">
           <note xml:id="note-L24F1" type="placed" dur="8" oct="4" pname="a" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L25F1" dur="8" oct="4" pname="g" accid.ges="n" />
           <note xml:id="note-L26F1" dur="8" oct="4" pname="f" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L28F1-L30F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L28F1-L30F1">
           <note xml:id="note-L28F1" type="placed" dur="8" oct="4" pname="g" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L29F1" dur="8" oct="4" pname="f" accid.ges="n" />
           <note xml:id="note-L30F1" dur="8" oct="4" pname="e" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L32F1-L34F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L32F1-L34F1">
           <note xml:id="note-L32F1" type="placed" dur="8" oct="4" pname="f" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L33F1" dur="8" oct="4" pname="e" accid.ges="n" />
           <note xml:id="note-L34F1" dur="8" oct="4" pname="d" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L36F1-L38F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L36F1-L38F1">
           <note xml:id="note-L36F1" type="placed" dur="8" oct="4" pname="d" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L37F1" dur="8" oct="4" pname="c" accid.ges="n" />
           <note xml:id="note-L38F1" dur="8" oct="3" pname="b" accid.ges="n" />
          </beam>
         </tuplet>
        </layer>
       </staff>
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

This is no longer ridiculous, but it is in the silly category, starting at the 5th beam group.

I can also generate an example that is not a bracket slur which looks ridiculous:

Screen Shot 2022-03-04 at 12 42 32 AM

Click to view MEI data for above example
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="5.0.0-dev">
 <meiHead>
  <fileDesc>
   <titleStmt>
    <title />
   </titleStmt>
   <pubStmt />
  </fileDesc>
  <encodingDesc>
   <appInfo>
    <application isodate="2022-03-03T12:11:00" version="3.10.0-dev-8f3b9e0">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mi06g6r">
    <score xml:id="sj21fpn">
     <scoreDef xml:id="se9hqgt">
      <staffGrp xml:id="sxenmru">
       <staffDef xml:id="s6gq4w3" n="1" lines="5">
        <clef xml:id="cgu4q22" shape="G" line="2" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1" right="invis">
       <staff xml:id="shuhgqx" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <tuplet xml:id="tuplet-L4F1-L6F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L4F1-L6F1">
           <note xml:id="note-L4F1" dur="8" oct="5" pname="f" accid.ges="n" />
           <note xml:id="note-L5F1" dur="8" oct="5" pname="e" accid.ges="n" />
           <note xml:id="note-L6F1" dur="8" oct="5" pname="d" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L8F1-L10F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L8F1-L10F1">
           <note xml:id="note-L8F1" dur="8" oct="5" pname="e" accid.ges="n" />
           <note xml:id="note-L9F1" dur="8" oct="5" pname="d" accid.ges="n" />
           <note xml:id="note-L10F1" dur="8" oct="5" pname="c" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L12F1-L14F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L12F1-L14F1">
           <note xml:id="note-L12F1" dur="8" oct="5" pname="d" accid.ges="n" />
           <note xml:id="note-L13F1" dur="8" oct="5" pname="c" accid.ges="n" />
           <note xml:id="note-L14F1" dur="8" oct="4" pname="b" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L16F1-L18F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L16F1-L18F1">
           <note xml:id="note-L16F1" dur="8" oct="5" pname="c" accid.ges="n" />
           <note xml:id="note-L17F1" dur="8" oct="4" pname="b" accid.ges="n" />
           <note xml:id="note-L18F1" dur="8" oct="4" pname="a" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L20F1-L22F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L20F1-L22F1">
           <note xml:id="note-L20F1" type="placed" dur="8" oct="4" pname="b" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L21F1" dur="8" oct="4" pname="a" accid.ges="n" />
           <note xml:id="note-L22F1" dur="8" oct="4" pname="g" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L24F1-L26F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L24F1-L26F1">
           <note xml:id="note-L24F1" type="placed" dur="8" oct="4" pname="a" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L25F1" dur="8" oct="4" pname="g" accid.ges="n" />
           <note xml:id="note-L26F1" dur="8" oct="4" pname="f" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L28F1-L30F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L28F1-L30F1">
           <note xml:id="note-L28F1" type="placed" dur="8" oct="4" pname="g" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L29F1" dur="8" oct="4" pname="f" accid.ges="n" />
           <note xml:id="note-L30F1" dur="8" oct="4" pname="e" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L32F1-L34F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L32F1-L34F1">
           <note xml:id="note-L32F1" type="placed" dur="8" oct="4" pname="f" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L33F1" dur="8" oct="4" pname="e" accid.ges="n" />
           <note xml:id="note-L34F1" dur="8" oct="4" pname="d" accid.ges="n" />
          </beam>
         </tuplet>
         <tuplet xml:id="tuplet-L36F1-L38F1" num="3" numbase="2" bracket.place="above" bracket.visible="false" num.format="count">
          <beam xml:id="beam-L36F1-L38F1">
           <note xml:id="note-L36F1" type="placed" dur="8" oct="4" pname="d" stem.dir="down" accid.ges="n" />
           <note xml:id="note-L37F1" dur="8" oct="4" pname="c" accid.ges="n" />
           <note xml:id="note-L38F1" dur="8" oct="3" pname="b" accid.ges="n" />
          </beam>
         </tuplet>
        </layer>
       </staff>
       <slur xml:id="slur-LF28-L38F1" staff="1" startid="#note-L28F1" endid="#note-L38F1" />
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

@rettinghaus
Copy link
Contributor

rettinghaus commented Mar 4, 2022

Verovio is making a reasonable decision where to put the tuplet number. But you set the bracket place and expect the number then to be free floating? That makes no sense to me.
If you remove the encoded place for the brackets everything works fine.
tuplet

tuplet

@craigsapp
Copy link
Contributor Author

I want the bracket and number to be placed on the notehead side of the note (older style for diplomatic encodings) rather than the beam side, with no indication of whether or not the tuplet number/bracket are on or off of the staff.

See the --tuplet-num-head verovio option that I made @lpugin implement last year, which is related to issue #1224 and MEI issue music-encoding/guidelines#99.

@rettinghaus
Copy link
Contributor

Yes, as I said. I see that there is a need for styling options for this, but before trying to bring Verovio to correctly guess what someone wants to display, this should be sorted out on MEI side.

@craigsapp
Copy link
Contributor Author

The curve line thingy above a tuplet number is often ambiguous in its meaning: either it is a curved bracket or it is a slur, and often it is both. When it is both, then it should be encoded as a slur (for performance rendering purposes).

Here is a clear example where the curve line thingy is definitely not indented to be a bracket but rather a slur:

https://github.com/craigsapp/beethoven-piano-sonatas/blob/master/reference-edition/sonata01-1.pdf

(first three systems)

For example in measure 10:

Screen Shot 2022-03-04 at 12 58 35 AM

There is no curved line thingy on the triplet 16th notes, but in the next measure, there is:
Screen Shot 2022-03-04 at 12 59 29 AM

The reason for this is that the curved line thingy means exactly a slur: In measure 10 the triplet 16ths are already within a slur with the adjacent notes, and in measure 11 that are the only notes within the slur.

More in modern notation you will often see the curved bracket being notated in a more clear way to indicated that they are not slurs:

Screen Shot 2022-03-04 at 1 37 13 AM

@craigsapp
Copy link
Contributor Author

but before trying to bring Verovio to correctly guess what someone wants to display, this should be sorted out on MEI side.

You will notice that issue music-encoding/guidelines#99 was from 2018...

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.

2 participants