verovio icon indicating copy to clipboard operation
verovio copied to clipboard

note horizontal offset + lyrics interaction

Open craigsapp opened this issue 7 years ago • 4 comments

When notes in different layers are given a horizontal offset from each other, the syllables are duplicated and overlapped (or more likely no longer overstruck):

screen shot 2017-05-11 at 11 56 37 am

Here is the original notation:

screen shot 2017-05-11 at 12 00 02 pm

A related problem is that unisons between layers containing an augmentation dot are horizontally offset from each other (while unisons without a dot are not offset). If both notes have an augmentation dot, then these should also overstrike (one dot for notes in both layers).

Test MEI data:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://music-encoding.org/schema/3.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://music-encoding.org/schema/3.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="3.0.0">
    <meiHead>
        <fileDesc>
            <titleStmt>
                <title />
            </titleStmt>
            <pubStmt />
        </fileDesc>
        <encodingDesc>
            <appInfo>
                <application isodate="2017-05-11T12:01:41" version="0.9.14-dev-a1089b8">
                    <name>Verovio</name>
                    <p>Transcoded from Humdrum</p>
                </application>
            </appInfo>
            <projectDesc>
                <p>Encoded by: Craig Stuart Sapp</p>
            </projectDesc>
        </encodingDesc>
        <workDesc>
            <work>
                <titleStmt>
                    <respStmt>
                        <persName xml:id="persname-L5" analog="humdrum:OCL" role="collector">Erk, Ludwig</persName>
                    </respStmt>
                </titleStmt>
            </work>
        </workDesc>
        <extMeta>
            <frames xmlns:humxml="http://www.humdrum.org/ns/humxml">
                <metaFrame n="1" token="!!!ONB: Neueres Volkslied" xml:id="loc1">
                    <frameInfo>
                        <startTime float="0" />
                        <frameType>reference</frameType>
                        <referenceKey>ONB</referenceKey>
                        <referenceValue>Neueres Volkslied</referenceValue>
                    </frameInfo>
                </metaFrame>
                <metaFrame n="2" token="!!!CDT: 1810" xml:id="loc2">
                    <frameInfo>
                        <startTime float="0" />
                        <frameType>reference</frameType>
                        <referenceKey>CDT</referenceKey>
                        <referenceValue>1810</referenceValue>
                    </frameInfo>
                </metaFrame>
                <metaFrame n="3" token="!!!OMD: Andantino" xml:id="loc3">
                    <frameInfo>
                        <startTime float="0" />
                        <frameType>reference</frameType>
                        <referenceKey>OMD</referenceKey>
                        <referenceValue>Andantino</referenceValue>
                    </frameInfo>
                </metaFrame>
                <metaFrame n="4" token="!!!OCL: Erk, Ludwig" xml:id="loc4">
                    <frameInfo>
                        <startTime float="0" />
                        <frameType>reference</frameType>
                        <referenceKey>OCL</referenceKey>
                        <referenceValue>Erk, Ludwig</referenceValue>
                    </frameInfo>
                </metaFrame>
                <metaFrame n="5" token="!!!GCO: Deutscher Liederschatz, Band 1" xml:id="loc5">
                    <frameInfo>
                        <startTime float="0" />
                        <frameType>reference</frameType>
                        <referenceKey>GCO</referenceKey>
                        <referenceValue>Deutscher Liederschatz, Band 1</referenceValue>
                    </frameInfo>
                </metaFrame>
                <metaFrame n="85" token="!!!ENC: Craig Stuart Sapp" xml:id="loc85">
                    <frameInfo>
                        <startTime float="24" />
                        <frameType>reference</frameType>
                        <referenceKey>ENC</referenceKey>
                        <referenceValue>Craig Stuart Sapp</referenceValue>
                    </frameInfo>
                </metaFrame>
                <metaFrame n="86" token="!!!END: 2004/05/17/" xml:id="loc86">
                    <frameInfo>
                        <startTime float="24" />
                        <frameType>reference</frameType>
                        <referenceKey>END</referenceKey>
                        <referenceValue>2004/05/17/</referenceValue>
                    </frameInfo>
                </metaFrame>
                <metaFrame n="87" token="!!!EFL: 002/651" xml:id="loc87">
                    <frameInfo>
                        <startTime float="24" />
                        <frameType>reference</frameType>
                        <referenceKey>EFL</referenceKey>
                        <referenceValue>002/651</referenceValue>
                    </frameInfo>
                </metaFrame>
            </frames>
        </extMeta>
    </meiHead>
    <music>
        <body>
            <mdiv>
                <score>
                    <scoreDef xml:id="scoredef-0000001915258973" midi.bpm="94">
                        <staffGrp xml:id="staffgrp-0000000244023963">
                            <staffDef xml:id="staffdef-0000001844782908" n="1" clef.shape="G" clef.line="2" key.sig="1f" meter.count="6" meter.unit="8" lines="5" />
                        </staffGrp>
                    </scoreDef>
                    <section xml:id="section-0000001740705780">
                        <measure xml:id="measure-L8" n="0">
                            <staff xml:id="staff-0000000555487748" n="1">
                                <layer xml:id="layer-L8F1N1" n="1">
                                    <note xml:id="note-L16F1" dur="8" oct="4" pname="c" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L16F2" n="1">
                                            <syl xml:id="syl-L16F2">Ach,</syl>
                                        </verse>
                                        <verse xml:id="verse-L16F3" n="2">
                                            <syl xml:id="syl-L16F3">Ach</syl>
                                        </verse>
                                    </note>
                                </layer>
                            </staff>
                            <tempo xml:id="tempo-0000000528094002" staff="1" tstamp="1.000000">Andantino</tempo>
                        </measure>
                        <measure xml:id="measure-L17" n="1">
                            <staff xml:id="staff-L17F1N1" n="1">
                                <layer xml:id="layer-L17F1N1" n="1">
                                    <note xml:id="note-L18F1" dots="1" dur="8" oct="4" pname="a" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L18F2" n="1">
                                            <syl xml:id="syl-L18F2" con="d" wordpos="i">Mäd</syl>
                                        </verse>
                                        <verse xml:id="verse-L18F3" n="2">
                                            <syl xml:id="syl-L18F3">sprich</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L20F1" dur="16" oct="4" pname="g" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L20F2" n="1">
                                            <syl xml:id="syl-L20F2" wordpos="t">chen,</syl>
                                        </verse>
                                        <verse xml:id="verse-L20F3" n="2">
                                            <syl xml:id="syl-L20F3">doch</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L21F1" dur="8" oct="4" pname="f" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L21F2" n="1">
                                            <syl xml:id="syl-L21F2">nur</syl>
                                        </verse>
                                        <verse xml:id="verse-L21F3" n="2">
                                            <syl xml:id="syl-L21F3">das</syl>
                                        </verse>
                                    </note>
                                    <beam xml:id="beam-L23F1-L24F1">
                                        <note xml:id="note-L23F1" dur="8" oct="4" pname="f" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L23F3" n="1">
                                                <syl xml:id="syl-L23F3" con="d" wordpos="i">ei</syl>
                                            </verse>
                                            <verse xml:id="verse-L23F4" n="2">
                                                <syl xml:id="syl-L23F4" con="d" wordpos="i">Ur</syl>
                                            </verse>
                                        </note>
                                        <note xml:id="note-L24F1" dur="8" oct="4" pname="e" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L24F4" n="2">
                                                <syl xml:id="syl-L24F4" wordpos="t">theil</syl>
                                            </verse>
                                        </note>
                                    </beam>
                                    <note xml:id="note-L25F1" dur="8" oct="4" pname="f" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L25F3" n="1">
                                            <syl xml:id="syl-L25F3" wordpos="t">nen</syl>
                                        </verse>
                                        <verse xml:id="verse-L25F4" n="2">
                                            <syl xml:id="syl-L25F4">bald</syl>
                                        </verse>
                                    </note>
                                </layer>
                                <layer xml:id="layer-L23F2N2" n="2">
                                    <space xml:id="space-0000001927273785" dots="1" dur="4" />
                                    <note xml:id="note-L23F2" dur="8" oct="4" pname="f" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L23F3" n="1">
                                            <syl xml:id="syl-L23F3" con="d" wordpos="i">ei</syl>
                                        </verse>
                                        <verse xml:id="verse-L23F4" n="2">
                                            <syl xml:id="syl-L23F4" con="d" wordpos="i">Ur</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L24F2" dur="8" oct="4" pname="e" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L24F4" n="2">
                                            <syl xml:id="syl-L24F4" wordpos="t">theil</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L25F2" dur="8" oct="4" pname="f" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L25F3" n="1">
                                            <syl xml:id="syl-L25F3" wordpos="t">nen</syl>
                                        </verse>
                                        <verse xml:id="verse-L25F4" n="2">
                                            <syl xml:id="syl-L25F4">bald</syl>
                                        </verse>
                                    </note>
                                </layer>
                            </staff>
                        </measure>
                        <measure xml:id="measure-L27" n="2">
                            <staff xml:id="staff-L27F1N1" n="1">
                                <layer xml:id="layer-L27F1N1" n="1">
                                    <note xml:id="note-L28F1" dots="1" dur="4" oct="4" pname="g" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L28F2" n="1">
                                            <syl xml:id="syl-L28F2">Blick,</syl>
                                        </verse>
                                        <verse xml:id="verse-L28F3" n="2">
                                            <syl xml:id="syl-L28F3">aus!</syl>
                                        </verse>
                                    </note>
                                    <rest xml:id="rest-L31F1" dur="4" />
                                    <note xml:id="note-L33F1" dur="8" oct="4" pname="c" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L33F2" n="1">
                                            <syl xml:id="syl-L33F2">ein</syl>
                                        </verse>
                                        <verse xml:id="verse-L33F3" n="2">
                                            <syl xml:id="syl-L33F3">o</syl>
                                        </verse>
                                    </note>
                                </layer>
                            </staff>
                        </measure>
                        <measure xml:id="measure-L34" n="3">
                            <staff xml:id="staff-L34F1N1" n="1">
                                <layer xml:id="layer-L34F1N1" n="1">
                                    <note xml:id="note-L36F1" dots="1" dur="8" oct="4" pname="b" stem.dir="down" accid.ges="f">
                                        <verse xml:id="verse-L36F3" n="1">
                                            <syl xml:id="syl-L36F3">Druck</syl>
                                        </verse>
                                        <verse xml:id="verse-L36F4" n="2">
                                            <syl xml:id="syl-L36F4" con="d" wordpos="i">Mäd</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L38F1" dur="16" oct="4" pname="a" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L38F4" n="2">
                                            <syl xml:id="syl-L38F4" wordpos="t">chen,</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L39F1" dur="8" oct="4" pname="g" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L39F3" n="1">
                                            <syl xml:id="syl-L39F3">von</syl>
                                        </verse>
                                        <verse xml:id="verse-L39F4" n="2">
                                            <syl xml:id="syl-L39F4">sonst</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L40F1" dur="8" oct="4" pname="g" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L40F3" n="1">
                                            <syl xml:id="syl-L40F3" con="d" wordpos="i">dei</syl>
                                        </verse>
                                        <verse xml:id="verse-L40F4" n="2">
                                            <syl xml:id="syl-L40F4">wär's</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L41F1" dur="8" oct="5" pname="c" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L41F4" n="2">
                                            <syl xml:id="syl-L41F4">mit</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L42F1" dur="8" oct="4" pname="b" stem.dir="down" accid.ges="f">
                                        <verse xml:id="verse-L42F3" n="1">
                                            <syl xml:id="syl-L42F3" wordpos="t">ner</syl>
                                        </verse>
                                        <verse xml:id="verse-L42F4" n="2">
                                            <syl xml:id="syl-L42F4">mir</syl>
                                        </verse>
                                    </note>
                                </layer>
                                <layer xml:id="layer-L36F2N2" n="2">
                                    <beam xml:id="beam-L36F2-L38F2">
                                        <note xml:id="note-L36F2" dots="1" dur="8" oct="4" pname="b" stem.dir="up" accid.ges="f">
                                            <verse xml:id="verse-L36F3" n="1">
                                                <syl xml:id="syl-L36F3">Druck</syl>
                                            </verse>
                                            <verse xml:id="verse-L36F4" n="2">
                                                <syl xml:id="syl-L36F4" con="d" wordpos="i">Mäd</syl>
                                            </verse>
                                        </note>
                                        <note xml:id="note-L38F2" dur="16" oct="4" pname="a" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L38F4" n="2">
                                                <syl xml:id="syl-L38F4" wordpos="t">chen,</syl>
                                            </verse>
                                        </note>
                                    </beam>
                                    <note xml:id="note-L39F2" dur="8" oct="4" pname="g" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L39F3" n="1">
                                            <syl xml:id="syl-L39F3">von</syl>
                                        </verse>
                                        <verse xml:id="verse-L39F4" n="2">
                                            <syl xml:id="syl-L39F4">sonst</syl>
                                        </verse>
                                    </note>
                                    <beam xml:id="beam-L40F2-L41F2">
                                        <note xml:id="note-L40F2" dur="8" oct="4" pname="g" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L40F3" n="1">
                                                <syl xml:id="syl-L40F3" con="d" wordpos="i">dei</syl>
                                            </verse>
                                            <verse xml:id="verse-L40F4" n="2">
                                                <syl xml:id="syl-L40F4">wär's</syl>
                                            </verse>
                                        </note>
                                        <note xml:id="note-L41F2" dur="8" oct="5" pname="c" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L41F4" n="2">
                                                <syl xml:id="syl-L41F4">mit</syl>
                                            </verse>
                                        </note>
                                    </beam>
                                    <note xml:id="note-L42F2" dur="8" oct="4" pname="b" stem.dir="up" accid.ges="f">
                                        <verse xml:id="verse-L42F3" n="1">
                                            <syl xml:id="syl-L42F3" wordpos="t">ner</syl>
                                        </verse>
                                        <verse xml:id="verse-L42F4" n="2">
                                            <syl xml:id="syl-L42F4">mir</syl>
                                        </verse>
                                    </note>
                                </layer>
                            </staff>
                        </measure>
                        <measure xml:id="measure-L44" n="4">
                            <staff xml:id="staff-L44F1N1" n="1">
                                <layer xml:id="layer-L44F1N1" n="1">
                                    <note xml:id="note-L45F1" dots="1" dur="4" oct="4" pname="a" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L45F2" n="1">
                                            <syl xml:id="syl-L45F2">Hand</syl>
                                        </verse>
                                        <verse xml:id="verse-L45F3" n="2">
                                            <syl xml:id="syl-L45F3">aus!</syl>
                                        </verse>
                                    </note>
                                    <rest xml:id="rest-L48F1" dur="4" />
                                    <note xml:id="note-L50F1" dur="8" oct="5" pname="c" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L50F2" n="1">
                                            <syl xml:id="syl-L50F2">wär'</syl>
                                        </verse>
                                        <verse xml:id="verse-L50F3" n="2">
                                            <syl xml:id="syl-L50F3">ja,</syl>
                                        </verse>
                                    </note>
                                </layer>
                            </staff>
                        </measure>
                        <measure xml:id="measure-L51" n="5">
                            <staff xml:id="staff-L51F1N1" n="1">
                                <layer xml:id="layer-L51F1N1" n="1">
                                    <beam xml:id="beam-L53F1-L55F1">
                                        <note xml:id="note-L53F1" dots="1" dur="8" oct="5" pname="c" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L53F3" n="1">
                                                <syl xml:id="syl-L53F3" con="d" wordpos="i">Se</syl>
                                            </verse>
                                            <verse xml:id="verse-L53F4" n="2">
                                                <syl xml:id="syl-L53F4">prüf'</syl>
                                            </verse>
                                        </note>
                                        <note xml:id="note-L55F1" dur="16" oct="4" pname="b" stem.dir="up" accid.ges="f">
                                            <verse xml:id="verse-L55F4" n="2">
                                                <syl xml:id="syl-L55F4">mich</syl>
                                            </verse>
                                        </note>
                                    </beam>
                                    <note xml:id="note-L56F1" dur="8" oct="4" pname="a" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L56F3" n="1">
                                            <syl xml:id="syl-L56F3" wordpos="t">lig</syl>
                                        </verse>
                                        <verse xml:id="verse-L56F4" n="2">
                                            <syl xml:id="syl-L56F4">nicht</syl>
                                        </verse>
                                    </note>
                                    <space xml:id="space-L58F1" dots="1" dur="4" />
                                </layer>
                                <layer xml:id="layer-L53F2N2" n="2">
                                    <note xml:id="note-L53F2" dots="1" dur="8" oct="5" pname="c" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L53F3" n="1">
                                            <syl xml:id="syl-L53F3" con="d" wordpos="i">Se</syl>
                                        </verse>
                                        <verse xml:id="verse-L53F4" n="2">
                                            <syl xml:id="syl-L53F4">prüf'</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L55F2" dur="16" oct="4" pname="b" stem.dir="down" accid.ges="f">
                                        <verse xml:id="verse-L55F4" n="2">
                                            <syl xml:id="syl-L55F4">mich</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L56F2" dur="8" oct="4" pname="a" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L56F3" n="1">
                                            <syl xml:id="syl-L56F3" wordpos="t">lig</syl>
                                        </verse>
                                        <verse xml:id="verse-L56F4" n="2">
                                            <syl xml:id="syl-L56F4">nicht</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L58F2" dur="8" oct="4" pname="a" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L58F4" n="1">
                                            <syl xml:id="syl-L58F4">keit</syl>
                                        </verse>
                                        <verse xml:id="verse-L58F5" n="2">
                                            <syl xml:id="syl-L58F5" con="d" wordpos="i">län</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L59F2" dur="8" oct="4" pname="g" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L59F5" n="2">
                                            <syl xml:id="syl-L59F5" wordpos="t">ger</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L60F2" dur="8" oct="4" pname="f" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L60F4" n="1">
                                            <syl xml:id="syl-L60F4">für</syl>
                                        </verse>
                                        <verse xml:id="verse-L60F5" n="2">
                                            <syl xml:id="syl-L60F5">zum</syl>
                                        </verse>
                                    </note>
                                </layer>
                                <layer xml:id="layer-L58F3N3" n="3">
                                    <space xml:id="space-0000001040467483" dots="1" dur="4" />
                                    <beam xml:id="beam-L58F3-L59F3">
                                        <note xml:id="note-L58F3" dur="8" oct="4" pname="a" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L58F4" n="1">
                                                <syl xml:id="syl-L58F4">keit</syl>
                                            </verse>
                                            <verse xml:id="verse-L58F5" n="2">
                                                <syl xml:id="syl-L58F5" con="d" wordpos="i">län</syl>
                                            </verse>
                                        </note>
                                        <note xml:id="note-L59F3" dur="8" oct="4" pname="g" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L59F5" n="2">
                                                <syl xml:id="syl-L59F5" wordpos="t">ger</syl>
                                            </verse>
                                        </note>
                                    </beam>
                                    <note xml:id="note-L60F3" dur="8" oct="4" pname="f" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L60F4" n="1">
                                            <syl xml:id="syl-L60F4">für</syl>
                                        </verse>
                                        <verse xml:id="verse-L60F5" n="2">
                                            <syl xml:id="syl-L60F5">zum</syl>
                                        </verse>
                                    </note>
                                </layer>
                            </staff>
                        </measure>
                        <measure xml:id="measure-L62" n="6">
                            <staff xml:id="staff-L62F1N1" n="1">
                                <layer xml:id="layer-L62F1N1" n="1">
                                    <note xml:id="note-L63F1" dur="4" oct="4" pname="b" stem.dir="down" accid.ges="f">
                                        <verse xml:id="verse-L63F2" n="1">
                                            <syl xml:id="syl-L63F2" con="u" wordpos="t">mich,</syl>
                                        </verse>
                                        <verse xml:id="verse-L63F3" n="2">
                                            <syl xml:id="syl-L63F3" con="u" wordpos="t">Scherz,</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L65F1" dur="8" oct="5" pname="d" stem.dir="down" accid.ges="n" />
                                    <beam xml:id="beam-L66F1-L67F1">
                                        <note xml:id="note-L66F1" dur="8" oct="5" pname="f" stem.dir="down" accid.ges="n" />
                                        <note xml:id="note-L67F1" dur="8" oct="5" pname="e" stem.dir="down" accid.ges="n" />
                                    </beam>
                                    <note xml:id="note-L68F1" dur="8" oct="5" pname="d" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L68F2" n="1">
                                            <syl xml:id="syl-L68F2">wär'</syl>
                                        </verse>
                                        <verse xml:id="verse-L68F3" n="2">
                                            <syl xml:id="syl-L68F3">und</syl>
                                        </verse>
                                    </note>
                                </layer>
                            </staff>
                            <slur xml:id="slur-L63F1-L67F1N1" staff="1" startid="#note-L63F1" endid="#note-L67F1" />
                        </measure>
                        <measure xml:id="measure-L69" n="7">
                            <staff xml:id="staff-L69F1N1" n="1">
                                <layer xml:id="layer-L69F1N1" n="1">
                                    <beam xml:id="beam-L71F1-L73F1">
                                        <note xml:id="note-L71F1" dots="1" dur="8" oct="5" pname="c" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L71F3" n="1">
                                                <syl xml:id="syl-L71F3" con="d" wordpos="i">Se</syl>
                                            </verse>
                                            <verse xml:id="verse-L71F4" n="2">
                                                <syl xml:id="syl-L71F4">schenk'</syl>
                                            </verse>
                                        </note>
                                        <note xml:id="note-L73F1" dur="16" oct="5" pname="d" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L73F4" n="2">
                                                <syl xml:id="syl-L73F4">mir</syl>
                                            </verse>
                                        </note>
                                    </beam>
                                    <note xml:id="note-L74F1" dur="8" oct="5" pname="c" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L74F3" n="1">
                                            <syl xml:id="syl-L74F3" con="d" wordpos="m">lig</syl>
                                        </verse>
                                        <verse xml:id="verse-L74F4" n="2">
                                            <syl xml:id="syl-L74F4">doch</syl>
                                        </verse>
                                    </note>
                                    <beam xml:id="beam-L75F1-L76F1">
                                        <note xml:id="note-L75F1" dur="8" oct="5" pname="c" stem.dir="up" accid.ges="n">
                                            <verse xml:id="verse-L75F3" n="1">
                                                <syl xml:id="syl-L75F3" wordpos="t">keit</syl>
                                            </verse>
                                            <verse xml:id="verse-L75F4" n="2">
                                                <syl xml:id="syl-L75F4" con="d" wordpos="i">end</syl>
                                            </verse>
                                        </note>
                                        <note xml:id="note-L76F1" dur="8" oct="4" pname="b" stem.dir="up" accid.ges="f">
                                            <verse xml:id="verse-L76F4" n="2">
                                                <syl xml:id="syl-L76F4" wordpos="t">lich</syl>
                                            </verse>
                                        </note>
                                    </beam>
                                    <note xml:id="note-L77F1" dur="8" oct="4" pname="g" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L77F3" n="1">
                                            <syl xml:id="syl-L77F3">für</syl>
                                        </verse>
                                        <verse xml:id="verse-L77F4" n="2">
                                            <syl xml:id="syl-L77F4">dein</syl>
                                        </verse>
                                    </note>
                                </layer>
                                <layer xml:id="layer-L71F2N2" n="2">
                                    <note xml:id="note-L71F2" dots="1" dur="8" oct="5" pname="c" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L71F3" n="1">
                                            <syl xml:id="syl-L71F3" con="d" wordpos="i">Se</syl>
                                        </verse>
                                        <verse xml:id="verse-L71F4" n="2">
                                            <syl xml:id="syl-L71F4">schenk'</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L73F2" dur="16" oct="5" pname="d" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L73F4" n="2">
                                            <syl xml:id="syl-L73F4">mir</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L74F2" dur="8" oct="5" pname="c" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L74F3" n="1">
                                            <syl xml:id="syl-L74F3" con="d" wordpos="m">lig</syl>
                                        </verse>
                                        <verse xml:id="verse-L74F4" n="2">
                                            <syl xml:id="syl-L74F4">doch</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L75F2" dur="8" oct="5" pname="c" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L75F3" n="1">
                                            <syl xml:id="syl-L75F3" wordpos="t">keit</syl>
                                        </verse>
                                        <verse xml:id="verse-L75F4" n="2">
                                            <syl xml:id="syl-L75F4" con="d" wordpos="i">end</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L76F2" dur="8" oct="4" pname="b" stem.dir="down" accid.ges="f">
                                        <verse xml:id="verse-L76F4" n="2">
                                            <syl xml:id="syl-L76F4" wordpos="t">lich</syl>
                                        </verse>
                                    </note>
                                    <note xml:id="note-L77F2" dur="8" oct="4" pname="g" stem.dir="down" accid.ges="n">
                                        <verse xml:id="verse-L77F3" n="1">
                                            <syl xml:id="syl-L77F3">für</syl>
                                        </verse>
                                        <verse xml:id="verse-L77F4" n="2">
                                            <syl xml:id="syl-L77F4">dein</syl>
                                        </verse>
                                    </note>
                                </layer>
                            </staff>
                        </measure>
                        <measure xml:id="measure-L79" n="8" right="end">
                            <staff xml:id="staff-L79F1N1" n="1">
                                <layer xml:id="layer-L79F1N1" n="1">
                                    <note xml:id="note-L80F1" dots="1" dur="4" oct="4" pname="f" stem.dir="up" accid.ges="n">
                                        <verse xml:id="verse-L80F2" n="1">
                                            <syl xml:id="syl-L80F2">mich!</syl>
                                        </verse>
                                        <verse xml:id="verse-L80F3" n="2">
                                            <syl xml:id="syl-L80F3">Herz!</syl>
                                        </verse>
                                    </note>
                                    <rest xml:id="rest-L83F1" dur="4" />
                                </layer>
                            </staff>
                        </measure>
                    </section>
                </score>
            </mdiv>
        </body>
    </music>
</mei>

craigsapp avatar May 11 '17 19:05 craigsapp

If you have to have lyrics on every layer, one should be marked as sameas I guess.

rettinghaus avatar Feb 24 '22 10:02 rettinghaus

Perhaps, but unlike note-stem sameas, this case would generate an error without sameas, so automatic identification and correction is more efficient than making the encoder figure it out.

The preferred algorithm would be: if two (or more) syl on a staff have the same tstamp and the same verse number (and the same side of the staff considering @place when it becomes available for <verse>), then only one of the syl should be shown; otherwise, it is clearly going to be an overstrike, and somehow the two syl are not being given exactly the same positions. Here is the current rendering:

Screen Shot 2022-02-24 at 7 35 20 AM

The dotted noteheads are now merged, but a lot more of the overstrikes are not exactly aligned (I am wondering how that is happening). In general text should not be overstruck since that could affect the boldness of the characters (depending on how antialiasing is handled in the device rendering). Otherwise making one of the syllables invisible might be good. If they are slightly off (as in the case for "lig" on the second line), then that will definitely cause boldness.

craigsapp avatar Feb 24 '22 15:02 craigsapp

Does vertical position of the lyrics need to be taken into account? Sometimes different layers are singing different words, or the same words with different rhythms, so the words are repeated intentionally, but at different vertical positions. For example: Screen Shot 2022-02-24 at 11 30 28 AM

samuelbradshaw avatar Feb 24 '22 18:02 samuelbradshaw

It seems that using verse@n should be used in such cases for layout of the text. For example, the beginning of the chorus "Glory to God" would be in verse@n="2" for the two voices in the top staff, and verse@n="1" below the bottom staff.

Semantic sequencing of the music should be done other than withverse@n, which is partially done now in MEI with verse/label, which would be used for these numbers:

Screen Shot 2022-02-24 at 11 38 37 AM

craigsapp avatar Feb 24 '22 19:02 craigsapp

Regarding the initial issue raise here, the solution is to adjust the encoding and to use @sameas for the syllables of the second layer. The lyrics for the second layer should be:

<beam>
   <note dots="1" dur="8" oct="4" pname="b" stem.dir="up" accid.ges="f">
      <verse n="1">
         <syl sameas="#syl-L36F3"/>
      </verse>
      <verse n="2">
         <syl sameas="#syl-L36F4"/>
      </verse>
   </note>
   <note dur="16" oct="4" pname="a" stem.dir="up" accid.ges="n">
      <verse n="2">
         <syl sameas="syl-L38F4"/>
      </verse>
   </note>
</beam>

Since the dotted unison problem has now been fixed, I am closing the issue

lpugin avatar Nov 16 '23 10:11 lpugin