-
Notifications
You must be signed in to change notification settings - Fork 186
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
Comments
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. |
I would say that if there is no Here is the example without slurs: 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: 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> |
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 |
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. |
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: There is no curved line thingy on the triplet 16th notes, but in the next measure, there is: 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: |
You will notice that issue music-encoding/guidelines#99 was from 2018... |
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:
Click to view MEI data for above example
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
The text was updated successfully, but these errors were encountered: