-
Notifications
You must be signed in to change notification settings - Fork 6
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
Non lazy beaming #10
Comments
The Here is an example of the second flag on the third note is incorrectly positioned to the left ( Somewhat related explanations: MEI (and by extension verovio) only does lazy beaming, which is another reason why beaming information might not change. To control the visual aspect of the beams (such as how many beam lines), Here are examples of how to control the beaming in MEI from Humdrum (where the beaming is always interpreted as lazy): There are two methods: (1) Use an (2) Use a note layout parameter Humdrum data for example:
MEI conversion <?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="4.0.0">
<meiHead>
<fileDesc>
<titleStmt>
<title />
</titleStmt>
<pubStmt />
</fileDesc>
<encodingDesc>
<appInfo>
<application isodate="2020-04-25T11:30:10" version="2.7.0-dev-9b84e3d">
<name>Verovio</name>
<p>Transcoded from Humdrum</p>
</application>
</appInfo>
</encodingDesc>
<workList>
<work>
<title />
</work>
</workList>
</meiHead>
<music>
<body>
<mdiv xml:id="mdiv-0000000340418143">
<score xml:id="score-0000001581373570">
<scoreDef xml:id="scoredef-0000001825449832">
<staffGrp xml:id="staffgrp-0000000684956137">
<staffDef xml:id="staffdef-0000000033103376" n="1" lines="5">
<clef xml:id="clef-0000000136949060" shape="G" line="2" />
</staffDef>
</staffGrp>
</scoreDef>
<section xml:id="section-L1F1">
<measure xml:id="measure-L1" right="invis" n="1">
<staff xml:id="staff-0000002137158120" n="1">
<layer xml:id="layer-L1F1N1" n="1">
<beam xml:id="beam-L3F1-L6F1">
<note xml:id="note-L3F1" dur="16" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L4F1" dur="16" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L5F1" dur="16" oct="4" pname="e" accid.ges="n" />
<note xml:id="note-L6F1" dur="16" oct="4" pname="f" accid.ges="n" />
</beam>
<beam xml:id="beam-L8F1-L11F1">
<note xml:id="note-L8F1" dur.ges="16" dur="8" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L9F1" dur.ges="16" dur="8" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L10F1" dur.ges="16" dur="8" oct="4" pname="e" accid.ges="n" />
<note xml:id="note-L11F1" dur.ges="16" dur="8" oct="4" pname="f" accid.ges="n" />
</beam>
<beam xml:id="beam-L13F1-L16F1">
<note xml:id="note-L13F1" dur="16" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L14F1" dur="16" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L15F1" dur="16" oct="4" pname="e" accid.ges="n" />
<note xml:id="note-L16F1" dur="16" oct="4" pname="f" accid.ges="n" />
</beam>
<beam xml:id="beam-L18F1-L24F1">
<note xml:id="note-L18F1" dur.ges="16" dur="8" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L20F1" dur.ges="16" dur="8" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L22F1" dur.ges="16" dur="8" oct="4" pname="e" accid.ges="n" />
<note xml:id="note-L24F1" dur.ges="16" dur="8" oct="4" pname="f" accid.ges="n" />
</beam>
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei> |
For the second example:
You had a typo in the example: there is a missing The converter from Humdrum to MEI will refuse to convert any beam on a staff in a measure if the 'L' and 'J' counts do not match (this is true of both lazy and non-lazy beaming where they always have to match). This is mostly for visually identifying unbalanced beaming in the notation. When cross-beaming is allowed, I will have to think how to deal with this rule (such as allow the sum of two adjacent measures to have balanced 'L' and 'J', or mark somehow that a beam is allowed to cross the staff. The exact beaming is needed in this case if you want to capture the beam depth of "1" over the clef. By default verovio will choose two beamlets in this case. And to break the beamlet to the primary beam, MEI conversion: <?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="4.0.0">
<meiHead>
<fileDesc>
<titleStmt>
<title />
</titleStmt>
<pubStmt />
</fileDesc>
<encodingDesc>
<appInfo>
<application isodate="2020-04-25T12:15:54" version="2.7.0-dev-9b84e3d">
<name>Verovio</name>
<p>Transcoded from Humdrum</p>
</application>
</appInfo>
</encodingDesc>
<workList>
<work>
<title />
</work>
</workList>
</meiHead>
<music>
<body>
<mdiv xml:id="mdiv-0000000023058483">
<score xml:id="score-0000000431115248">
<scoreDef xml:id="scoredef-0000000586266704">
<staffGrp xml:id="staffgrp-0000001700744968">
<staffDef xml:id="staffdef-0000001406253599" n="1" lines="5">
<clef xml:id="clef-0000000315455034" shape="G" line="2" />
</staffDef>
</staffGrp>
</scoreDef>
<section xml:id="section-L1F1">
<measure xml:id="measure-L1">
<staff xml:id="staff-0000000109353177" n="1">
<layer xml:id="layer-L1F1N1" n="1">
<beam xml:id="beam-L3F1-L6F1">
<note xml:id="note-L3F1" dur="32" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L4F1" dur="32" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L5F1" dur="32" oct="4" pname="e" accid.ges="n" />
<note xml:id="note-L6F1" dur="32" oct="4" pname="f" accid.ges="n" />
</beam>
<beam xml:id="beam-L7F1-L10F1">
<note xml:id="note-L7F1" dur="32" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L8F1" breaksec="2" dur="32" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L9F1" dur="32" oct="4" pname="e" accid.ges="n" />
<note xml:id="note-L10F1" dur="32" oct="4" pname="f" accid.ges="n" />
</beam>
<beam xml:id="beam-L11F1-L14F1">
<note xml:id="note-L11F1" dur="32" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L12F1" breaksec="1" dur="32" oct="4" pname="d" accid.ges="n" />
<note xml:id="note-L13F1" dur="32" oct="4" pname="e" accid.ges="n" />
<note xml:id="note-L14F1" dur="32" oct="4" pname="f" accid.ges="n" />
</beam>
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei> This can also be done by lazy beaming, by placing For the second beam, lazy beaming will work. The first note of the beam should have a Starting the beam on the rests is causing a bug in verovio. Verovio beaming was recently redone, and the bug probably happened at that time. The problem is that the rest has no stem, so some very low default value is being used. |
The example in the documentation of non lazy beaming contains a
![image](https://user-images.githubusercontent.com/10772049/80285259-e98a9500-8723-11ea-8a25-8cdfa6ab7939.png)
k
signifier that is not explained (I'm sorry if I'm missing something). In fact, if removed the result is the sameI wonder if it's necessary to encode the first beam group in this weird unit test (don't look at the cross-measure beam that's not supported in VHV or the rest starting a beam):
![image](https://user-images.githubusercontent.com/10772049/80285340-746b8f80-8724-11ea-9927-ceb922566e7a.png)
If encoded using lazy beaming with:
we get
![image](https://user-images.githubusercontent.com/10772049/80285404-fc519980-8724-11ea-8485-5e117b205676.png)
If we want to encode the same number of beams of the example we need to use a non-lazy approach, we get no note beamed. Is my encoding wrong, should I add some
k
or is it VHV?Thanks !!
The text was updated successfully, but these errors were encountered: