-
Notifications
You must be signed in to change notification settings - Fork 9
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
Allow for reversed half notes #134
Comments
Implemented with commit rism-digital/verovio@df021a1 Example encoding in Humdrum:
Currently verovio ignores Once implemented in verovio, the notation should render as: Notice that the MEI conversion of the above example includes a <?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://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="2018-07-19T00:18:54" version="2.0.0-dev-9b4f756">
<name>Verovio</name>
<p>Transcoded from Humdrum</p>
</application>
</appInfo>
</encodingDesc>
<workDesc>
<work>
<titleStmt>
<title />
</titleStmt>
</work>
</workDesc>
</meiHead>
<music>
<body>
<mdiv xml:id="mdiv-0000001787360856">
<score xml:id="score-0000001172652556">
<scoreDef xml:id="scoredef-0000000192277192" midi.bpm="400">
<staffGrp xml:id="staffgrp-0000001258246286">
<staffDef xml:id="staffdef-0000001023641863" clef.shape="G" clef.line="2" n="1" lines="5">
<label xml:id="label-0000000966273581" />
</staffDef>
</staffGrp>
</scoreDef>
<section xml:id="section-L1F1">
<measure xml:id="measure-L2" n="1">
<staff xml:id="staff-L2F1N1" n="1">
<layer xml:id="layer-L2F1N1" n="1">
<note xml:id="note-L3F1" dur="2" oct="5" pname="d" accid.ges="n" />
</layer>
</staff>
</measure>
<measure xml:id="measure-L4" n="2">
<staff xml:id="staff-L4F1N1" n="1">
<layer xml:id="layer-L4F1N1" n="1">
<note xml:id="note-L6F1" dur="2" oct="5" pname="e" stem.pos="right" accid.ges="n" />
</layer>
</staff>
</measure>
<measure xml:id="measure-L7" right="end" n="3">
<staff xml:id="staff-L7F1N1" n="1">
<layer xml:id="layer-L7F1N1" n="1">
<note xml:id="note-L9F1" dur="2" oct="5" pname="f" accid.ges="n" />
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei> |
Implemented in verovio with pull rism-digital/verovio#918 by @rettinghaus New rendering from verovio: Not exactly the same as the original edition example yet, since the notehead would also need to be mirrored: But it is good that the stem is lengthened to touch the notehead. Is there a need for both orientations of notheads? And if so, is there a way to represent that in MEI? |
Check if head.rotation attribute could be used for that.
|
http://music-encoding.org/guidelines/v3/elements/note.html So Test rendering: Here is the test data. I rotated the first note by 180 degrees (which theoretically should not make any visual change). But I rotated the notes in the chord by 90 degrees, so they should appear tall and skinny, which they don't. <?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://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="2018-07-23T00:16:32" version="2.0.0-dev-d3c9630">
<name>Verovio</name>
<p>Transcoded from Humdrum</p>
</application>
</appInfo>
</encodingDesc>
<workDesc>
<work>
<titleStmt>
<title />
</titleStmt>
</work>
</workDesc>
</meiHead>
<music>
<body>
<mdiv xml:id="mdiv-0000002117707217">
<score xml:id="score-0000001664702050">
<scoreDef xml:id="scoredef-0000001903582908" midi.bpm="400">
<staffGrp xml:id="staffgrp-0000000966129940">
<staffDef xml:id="staffdef-0000001167651943" clef.shape="G" clef.line="2" n="1" lines="5">
<label xml:id="label-0000001932711835" />
</staffDef>
</staffGrp>
</scoreDef>
<section xml:id="section-L1F1">
<measure xml:id="measure-L2" n="1">
<staff xml:id="staff-L2F1N1" n="1">
<layer xml:id="layer-L2F1N1" n="1">
<note xml:id="note-L3F1" dur="2" oct="5" pname="d" accid.ges="n" />
</layer>
</staff>
</measure>
<measure xml:id="measure-L4" n="2">
<staff xml:id="staff-L4F1N1" n="1">
<layer xml:id="layer-L4F1N1" n="1">
<note xml:id="note-L6F1" dur="2" oct="5" pname="e" stem.pos="right" head.rotation="180" accid.ges="n" />
</layer>
</staff>
</measure>
<measure xml:id="measure-L7" right="end" n="3">
<staff xml:id="staff-L7F1N1" n="1">
<layer xml:id="layer-L7F1N1" n="1">
<chord xml:id="chord-L8F1" dur="2" stem.pos="right">
<note xml:id="note-L8F1S1" oct="5" pname="f" head.rotation="90" accid.ges="n" />
<note xml:id="note-L8F1S2" oct="4" pname="f" head.rotation="90" accid.ges="n" />
</chord>
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei> |
I was wandering if it would be possible to use Encoding proposal:
MEI encoding: <?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>Missa in E op. 62 - Sanctus</title>
</titleStmt>
<pubStmt />
</fileDesc>
<encodingDesc>
<appInfo>
<application isodate="2020-03-17T11:42:02" version="2.6.0-dev-45b2acb-dirty">
<name>Verovio</name>
<p>Transcoded from Humdrum</p>
</application>
</appInfo>
</encodingDesc>
<workList>
<work>
<title xml:id="title-L4" analog="humdrum:OTL" type="main">Missa in E op. 62 - Sanctus</title>
<composer analog="humdrum:COM" xml:id="person-L3">Elsner, Józef</composer>
</work>
</workList>
<extMeta>
<frames xmlns="http://www.humdrum.org/ns/humxml">
<metaFrame n="0" token="!!!!SEGMENT: pl-cz-iii-190_elsner-missa-E-op-62-04-sanctus.krn" xml:id="L1">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>SEGMENT</referenceKey>
<referenceValue />
</frameInfo>
</metaFrame>
<metaFrame n="1" token="!!!id: 18xx:42" xml:id="L2">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>id</referenceKey>
<referenceValue>18xx:42</referenceValue>
</frameInfo>
</metaFrame>
<metaFrame n="2" token="!!!COM: Elsner, Józef" xml:id="L3">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>COM</referenceKey>
<referenceValue>Elsner, Józef</referenceValue>
</frameInfo>
</metaFrame>
<metaFrame n="3" token="!!!OTL: Missa in E op. 62 - Sanctus" xml:id="L4">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>OTL</referenceKey>
<referenceValue>Missa in E op. 62 - Sanctus</referenceValue>
</frameInfo>
</metaFrame>
<metaFrame n="4" token="!!!PDT: 1838" xml:id="L5">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>PDT</referenceKey>
<referenceValue>1838</referenceValue>
</frameInfo>
</metaFrame>
<metaFrame n="5" token="!!!SMS-siglum: PL-CZ" xml:id="L6">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>SMS-siglum</referenceKey>
<referenceValue>PL-CZ</referenceValue>
</frameInfo>
</metaFrame>
<metaFrame n="6" token="!!!SMS-shelfmark: III-190" xml:id="L7">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>SMS-shelfmark</referenceKey>
<referenceValue>III-190</referenceValue>
</frameInfo>
</metaFrame>
<metaFrame n="7" token="!!!NIFC-rismID:" xml:id="L8">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>NIFC-rismID</referenceKey>
<referenceValue />
</frameInfo>
</metaFrame>
<metaFrame n="8" token="!!!URL-scan: http://repozytorium.nifc.pl/skany/pl-cz-nut--iii-190" xml:id="L9">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>URL-scan</referenceKey>
<referenceValue>http://repozytorium.nifc.pl/skany/pl-cz-nut--iii-190</referenceValue>
</frameInfo>
</metaFrame>
<metaFrame n="9" token="!!!ONB-nifc:" xml:id="L10">
<frameInfo>
<startTime float="0" />
<frameType>reference</frameType>
<referenceKey>ONB-nifc</referenceKey>
<referenceValue />
</frameInfo>
</metaFrame>
<metaFrame n="84" token="!!!RDF**kern: p = stem position right" xml:id="L85">
<frameInfo>
<startTime float="44" />
<frameType>reference</frameType>
<referenceKey>RDF**kern</referenceKey>
<referenceValue>p = stem position right</referenceValue>
</frameInfo>
</metaFrame>
</frames>
</extMeta>
</meiHead>
<music>
<body>
<mdiv xml:id="mdiv-0000000473456862">
<score xml:id="score-0000000805457369">
<scoreDef xml:id="scoredef-0000001092582323">
<staffGrp xml:id="staffgrp-0000001300227697">
<staffDef xml:id="staffdef-0000001930142392" n="1" lines="5">
<clef xml:id="clef-L12F1" shape="G" line="2" />
<keySig xml:id="keysig-L13F1" accid="s" pname="c" mode="minor" sig="4s" />
<meterSig xml:id="metersig-L15F1" count="4" sym="common" unit="4" />
</staffDef>
</staffGrp>
<pgHead xml:id="pghead-0000001541042674">
<rend xml:id="rend-0000000675922223" halign="center" valign="middle">
<rend xml:id="rend-0000000643584064" fontsize="large">Missa in E op. 62 - Sanctus</rend>
<lb xml:id="lb-0000000143060747" />
<lb xml:id="lb-0000001000646721" /> </rend>
<rend xml:id="rend-0000001165833163" halign="right" valign="bottom" fontsize="small">Józef Elsner</rend>
</pgHead>
</scoreDef>
<section xml:id="section-L11F1">
<measure xml:id="measure-L1" n="62">
<staff xml:id="staff-0000000488827655" n="1">
<layer xml:id="layer-L11F1N1" n="1">
<note xml:id="note-L18F1" dur="2" oct="6" pname="e" accid.ges="n" stem.pos="right" />
<note xml:id="note-L19F1" dur="4" oct="5" pname="g" accid.ges="s" stem.pos="right" />
<beam xml:id="beam-L20F1-L21F1">
<note xml:id="note-L20F1" dots="1" dur="8" oct="6" pname="c" accid.ges="s" />
<note xml:id="note-L21F1" dur="16" oct="6" pname="c" accid.ges="s" />
</beam>
</layer>
</staff>
</measure>
<measure xml:id="measure-L22" n="63">
<staff xml:id="staff-L22F1N1" n="1">
<layer xml:id="layer-L22F1N1" n="1">
<note xml:id="note-L23F1" dur="4" oct="5" pname="f" accid.ges="s" stem.pos="right"/>
<beam xml:id="beam-L24F1-L25F1" >
<note xml:id="note-L24F1" dots="1" dur="8" oct="5" pname="b" accid.ges="n" stem.pos="right" />
<note xml:id="note-L25F1" dur="16" oct="5" pname="b" accid.ges="n" stem.pos="right" />
</beam>
<note xml:id="note-L26F1" dur="4" oct="5" pname="g" accid.ges="s" stem.pos="right"/>
<note xml:id="note-L27F1" dur="4" oct="5" pname="b" accid.ges="n" stem.pos="right"/>
</layer>
</staff>
<tie xml:id="tie-L27F1-L29F1" startid="#note-L27F1" endid="#note-L29F1" />
</measure>
<measure xml:id="measure-L28" n="64">
<staff xml:id="staff-L28F1N1" n="1">
<layer xml:id="layer-L28F1N1" n="1">
<note xml:id="note-L29F1" dur="4" oct="5" pname="b" accid.ges="n" stem.pos="right"/>
<beam xml:id="beam-L30F1-L31F1">
<note xml:id="note-L30F1" dur="8" oct="5" pname="a" accid="s" />
<note xml:id="note-L31F1" dur="8" oct="5" pname="g" accid.ges="s" stem.pos="right"/>
</beam>
<note xml:id="note-L32F1" dur="2" oct="5" pname="a" accid.ges="s" stem.pos="right"/>
</layer>
</staff>
</measure>
<measure xml:id="measure-L33" n="65">
<staff xml:id="staff-L33F1N1" n="1">
<layer xml:id="layer-L33F1N1" n="1">
<beam xml:id="beam-L34F1-L37F1">
<note xml:id="note-L34F1" dur="8" oct="5" pname="b" accid.ges="n" stem.pos="right"/>
<note xml:id="note-L35F1" dur="8" oct="6" pname="c" accid.ges="s" />
<note xml:id="note-L36F1" dur="8" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
<note xml:id="note-L37F1" dur="8" oct="6" pname="e" accid.ges="n" />
</beam>
<note xml:id="note-L38F1" dur="2" oct="6" pname="f" accid.ges="s" stem.pos="right"/>
</layer>
</staff>
<tie xml:id="tie-L38F1-L40F1" startid="#note-L38F1" endid="#note-L40F1" />
</measure>
<measure xml:id="measure-L39" n="66">
<staff xml:id="staff-L39F1N1" n="1">
<layer xml:id="layer-L39F1N1" n="1">
<note xml:id="note-L40F1" dur="4" oct="6" pname="f" accid.ges="s" stem.pos="right"/>
<note xml:id="note-L41F1" dur="2" oct="6" pname="e" accid.ges="n" stem.pos="right"/>
<note xml:id="note-L42F1" dur="4" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
</layer>
</staff>
</measure>
<measure xml:id="measure-L43" n="67">
<staff xml:id="staff-L43F1N1" n="1">
<layer xml:id="layer-L43F1N1" n="1">
<note xml:id="note-L44F1" dur="2" oct="6" pname="e" accid.ges="n" stem.pos="right"/>
<rest xml:id="rest-L45F1" dur="4" />
<beam xml:id="beam-L46F1-L47F1">
<note xml:id="note-L46F1" dots="1" dur="8" oct="6" pname="f" accid.ges="s" stem.pos="right"/>
<note xml:id="note-L47F1" dur="16" oct="6" pname="f" accid.ges="s" stem.pos="right"/>
</beam>
</layer>
</staff>
</measure>
<measure xml:id="measure-L48" n="68">
<staff xml:id="staff-L48F1N1" n="1">
<layer xml:id="layer-L48F1N1" n="1">
<note xml:id="note-L49F1" dur="4" oct="6" pname="e" accid.ges="n" />
<beam xml:id="beam-L50F1-L51F1">
<note xml:id="note-L50F1" dots="1" dur="8" oct="6" pname="e" accid.ges="n" />
<note xml:id="note-L51F1" dur="16" oct="6" pname="e" accid.ges="n" />
</beam>
<note xml:id="note-L52F1" dur="4" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
<beam xml:id="beam-L53F1-L54F1">
<note xml:id="note-L53F1" dots="1" dur="8" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
<note xml:id="note-L54F1" dur="16" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
</beam>
</layer>
</staff>
</measure>
<measure xml:id="measure-L55" n="69">
<staff xml:id="staff-L55F1N1" n="1">
<layer xml:id="layer-L55F1N1" n="1">
<note xml:id="note-L56F1" dur="4" oct="6" pname="c" accid.ges="s" />
<beam xml:id="beam-L57F1-L58F1">
<note xml:id="note-L57F1" dots="1" dur="8" oct="6" pname="c" accid.ges="s" />
<note xml:id="note-L58F1" dur="16" oct="6" pname="c" accid.ges="s" />
</beam>
<note xml:id="note-L59F1" dur="4" oct="5" pname="b" accid.ges="n" stem.pos="right"/>
<beam xml:id="beam-L60F1-L61F1">
<note xml:id="note-L60F1" dots="1" dur="8" oct="5" pname="b" accid.ges="n" stem.pos="right"/>
<note xml:id="note-L61F1" dur="16" oct="5" pname="b" accid.ges="n" stem.pos="right"/>
</beam>
</layer>
</staff>
</measure>
<measure xml:id="measure-L62" n="70">
<staff xml:id="staff-L62F1N1" n="1">
<layer xml:id="layer-L62F1N1" n="1">
<note xml:id="note-L63F1" dur="4" oct="5" pname="a" accid.ges="n" />
<beam xml:id="beam-L64F1-L65F1">
<note xml:id="note-L64F1" dots="1" dur="8" oct="5" pname="a" accid.ges="n" />
<note xml:id="note-L65F1" dur="16" oct="5" pname="a" accid.ges="n" />
</beam>
<note xml:id="note-L66F1" dur="4" oct="5" pname="a" accid.ges="n" />
<beam xml:id="beam-L67F1-L68F1">
<note xml:id="note-L67F1" dots="1" dur="8" oct="5" pname="a" accid.ges="n" />
<note xml:id="note-L68F1" dur="16" oct="5" pname="a" accid.ges="n" />
</beam>
</layer>
</staff>
</measure>
<measure xml:id="measure-L69" n="71">
<staff xml:id="staff-L69F1N1" n="1">
<layer xml:id="layer-L69F1N1" n="1">
<note xml:id="note-L70F1" dur="4" oct="5" pname="g" accid.ges="s" stem.pos="right"/>
<beam xml:id="beam-L71F1-L72F1">
<note xml:id="note-L71F1" dots="1" dur="8" oct="6" pname="e" accid.ges="n" />
<note xml:id="note-L72F1" dur="16" oct="6" pname="e" accid.ges="n" />
</beam>
<note xml:id="note-L73F1" dur="4" oct="5" pname="f" accid.ges="s" stem.pos="right"/>
<beam xml:id="beam-L74F1-L75F1">
<note xml:id="note-L74F1" dots="1" dur="8" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
<note xml:id="note-L75F1" dur="16" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
</beam>
</layer>
</staff>
</measure>
<measure xml:id="measure-L76" n="72">
<staff xml:id="staff-L76F1N1" n="1">
<layer xml:id="layer-L76F1N1" n="1">
<note xml:id="note-L77F1" dur="4" oct="5" pname="g" accid.ges="s" stem.pos="right"/>
<beam xml:id="beam-L78F1-L79F1">
<note xml:id="note-L78F1" dots="1" dur="8" oct="6" pname="e" accid.ges="n" />
<note xml:id="note-L79F1" dur="16" oct="6" pname="e" accid.ges="n" />
</beam>
<note xml:id="note-L80F1" dur="4" oct="5" pname="f" accid.ges="s" stem.pos="right"/>
<beam xml:id="beam-L81F1-L82F1" >
<note xml:id="note-L81F1" dots="1" dur="8" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
<note xml:id="note-L82F1" dur="16" oct="6" pname="d" accid.ges="s" stem.pos="right"/>
</beam>
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei> Current rendering based on modified MEI encoding: Apparently |
See music-encoding/music-encoding#687 for reference to |
In older editions of music, half notes and half-note chords have the stem always on he right side of the note/chord regardless of whether the stem is pointing up or down:
In Humdrum this should be represented by a tandem interpretation such as
*2\right
on the staves that are affected by this style. To cancel this style and revert to the default style, use*2\left
.The text was updated successfully, but these errors were encountered: