rism-digital / verovio

🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)
https://www.verovio.org
GNU Lesser General Public License v3.0
687 stars 185 forks source link

notes with colored="true" and dur="2" get rendered in without the note head color inversion (CMN) #3605

Open fernandoherreradelasheras opened 9 months ago

fernandoherreradelasheras commented 9 months ago

in CMN colored="true" is reflected by inverting the note head fill / void. This works fine for all note durations but for dur="2" that remains as a normal half note (and it should look like a quarter note).

See the following MEI:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/5.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/5.0/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">
   <meiHead>
   </meiHead>
   <music>
      <body>
         <mdiv>
            <score>
               <scoreDef>
                  <staffGrp symbol="bracket">
                     <staffDef n="1" lines="5">
                        <clef shape="G" line="2" />
                        <meterSig count="2" unit="8" />
                     </staffDef>
                     <staffDef n="2" lines="5">
                        <clef shape="G" line="2" />
                        <meterSig count="2" unit="8" />
                     </staffDef>
                  </staffGrp>
               </scoreDef>
               <section>
                  <measure n="1">
                     <staff n="1">
                        <layer n="1">
                           <note oct="5" pname="e" dur="1" />
                           <note oct="5" pname="e" dur="2" />
                           <note oct="5" pname="e" dur="4" />
                           <note oct="5" pname="e" dur="8" />
                           <note oct="5" pname="e" dur="16" />
                        </layer>
                     </staff>
                     <staff n="2">
                        <layer n="1">
                           <note oct="5" pname="e" dur="1" colored="true" />
                           <note oct="5" pname="e" dur="2" colored="true" />
                           <note oct="5" pname="e" dur="4" colored="true" />
                           <note oct="5" pname="e" dur="8" colored="true" />
                           <note oct="5" pname="e" dur="16" colored="true" />
                        </layer>
                     </staff>
                  </measure>
               </section>
            </score>
         </mdiv>
      </body>
   </music>
</mei>

currently renders to:

note-012

and it should be:

note-012

craigsapp commented 9 months ago

note@colored is intended for mensural music, is that related to why you are using it in CMN?

In white mensural notation, the minim is being colored properly:

Screenshot 2024-02-24 at 06 55 20
Click to view MEI data for above example. ```xml </titleStmt> <pubStmt> <unpub>This MEI file was created by Verovio's Humdrum converter. When published, this unpub element should be removed, and the enclosing pubStmt element should be properly filled out.</unpub> </pubStmt> </fileDesc> <encodingDesc> <appInfo> <application isodate="2024-02-24T06:54:23" version="4.2.0-dev-84f99b0-dirty"> <name>Verovio</name> <p>Transcoded from Humdrum</p> </application> </appInfo> </encodingDesc> </meiHead> <music decls="#work0_encoded"> <body> <mdiv xml:id="m1ta91bw"> <score xml:id="spbotb2"> <scoreDef xml:id="sdhq29z" midi.bpm="280.000000"> <staffGrp xml:id="swq6pga" symbol="bracket"> <staffDef xml:id="staffdef-L1F2" n="1" notationtype="mensural.white" lines="5"> <clef xml:id="clef-L2F2" shape="C" line="3" /> </staffDef> <staffDef xml:id="staffdef-L1F1" n="2" notationtype="mensural.white" lines="5"> <clef xml:id="clef-L2F1" shape="C" line="3" /> </staffDef> </staffGrp> </scoreDef> <section xml:id="section-L1F1"> <staff xml:id="staff-L1F2" n="1"> <layer xml:id="layer-L1F2N1" n="1"> <note xml:id="note-L4F2" dur="brevis" oct="4" pname="c" /> <note xml:id="note-L5F2" dur="semibrevis" oct="4" pname="c" /> <note xml:id="note-L6F2" dur="minima" oct="4" pname="c" /> <note xml:id="note-L7F2" dur="semiminima" oct="4" pname="c" /> </layer> </staff> <staff xml:id="staff-L1F1" n="2"> <layer xml:id="layer-L1F1N1" n="1"> <note xml:id="note-L4F1" dur="brevis" colored="true" oct="4" pname="c" /> <note xml:id="note-L5F1" dur="semibrevis" colored="true" oct="4" pname="c" /> <note xml:id="note-L6F1" dur="minima" colored="true" oct="4" pname="c" /> <note xml:id="note-L7F1" dur="semiminima" colored="true" oct="4" pname="c" /> <barLine xml:id="barline-L8F1" form="single" /> </layer> </staff> </section> </score> </mdiv> </body> </music> </mei> ``` </details> <p>The top staff is normal, and the bottom notes have <code>@filled="true"</code>.</p> <p>There is also <code>note@head.fill="void"</code> and <code>note@head.fill="solid"</code> which should behave similar to <code>@colored</code> but which do not seem to be implemented in verovio.</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/craigsapp"><img src="https://avatars.githubusercontent.com/u/3487289?v=4" />craigsapp</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <p>I notice in black mensural notation, <code>note@colored</code> is not working properly:</p> <img width="305" alt="Screenshot 2024-02-24 at 07 09 46" src="https://github.com/rism-digital/verovio/assets/3487289/91781c7a-9c11-4d54-ba35-385ea37a9912"> <details> <summary> Click to view MEI data for above example. </summary> ```xml <?xml version="1.0" encoding="UTF-8"?> <?xml-model href="https://music-encoding.org/schema/5.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <?xml-model href="https://music-encoding.org/schema/5.0/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"> <meiHead> <fileDesc> <titleStmt> <title /> </titleStmt> <pubStmt> </pubStmt> </fileDesc> <encodingDesc> <appInfo> <application isodate="2024-02-24T06:54:23" version="4.2.0-dev-84f99b0-dirty"> <name>Verovio</name> <p>Transcoded from Humdrum</p> </application> </appInfo> </encodingDesc> </meiHead> <music decls="#work0_encoded"> <body> <mdiv xml:id="m1ta91bw"> <score xml:id="spbotb2"> <scoreDef xml:id="sdhq29z" midi.bpm="280.000000"> <staffGrp xml:id="swq6pga" symbol="bracket"> <staffDef xml:id="staffdef-L1F2" n="1" notationtype="mensural.black" lines="5"> <clef xml:id="clef-L2F2" shape="C" line="3" /> </staffDef> <staffDef xml:id="staffdef-L1F1" n="2" notationtype="mensural.black" lines="5"> <clef xml:id="clef-L2F1" shape="C" line="3" /> </staffDef> </staffGrp> </scoreDef> <section xml:id="section-L1F1"> <staff xml:id="staff-L1F2" n="1"> <layer xml:id="layer-L1F2N1" n="1"> <note xml:id="note-L4F2" dur="brevis" oct="4" pname="c" /> <note xml:id="note-L5F2" dur="semibrevis" oct="4" pname="c" /> <note xml:id="note-L6F2" dur="minima" oct="4" pname="c" /> <note xml:id="note-L7F2" dur="semiminima" oct="4" pname="c" /> </layer> </staff> <staff xml:id="staff-L1F1" n="2"> <layer xml:id="layer-L1F1N1" n="1"> <note xml:id="note-L4F1" dur="brevis" colored="true" oct="4" pname="c" /> <note xml:id="note-L5F1" dur="semibrevis" colored="true" oct="4" pname="c" /> <note xml:id="note-L6F1" dur="minima" colored="true" oct="4" pname="c" /> <note xml:id="note-L7F1" dur="semiminima" colored="true" oct="4" pname="c" /> </layer> </staff> </section> </score> </mdiv> </body> </music> </mei> ``` </details> <p>The notes on the bottom staff should be red when <code>note@colored="true"</code> is used.</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/rettinghaus"><img src="https://avatars.githubusercontent.com/u/7693447?v=4" />rettinghaus</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <p>colored attribute is explicitly also meant for CMN as stated in the guidelines.</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/craigsapp"><img src="https://avatars.githubusercontent.com/u/3487289?v=4" />craigsapp</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <blockquote> <p>colored attribute is explicitly also meant for CMN as stated in the guidelines.</p> </blockquote> <p>How should it be rendered in CMN? Visual display of coloration is different in white and black notation, so the visual rendering in CMN should reflect the mensural source.</p> <p>When citing the guidelines, it would be helpful to provide a link to the relevant section.</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/fernandoherreradelasheras"><img src="https://avatars.githubusercontent.com/u/20201639?v=4" />fernandoherreradelasheras</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <blockquote> <p><code>note@colored</code> is intended for mensural music, is that related to why you are using it in CMN?</p> </blockquote> <p>Colored should be also available on CMN according the the spec:</p> <blockquote> <p><strong>colored</strong> (optional) Indicates this feature is 'colored'; that is, it is a participant in a change in rhythmic values. In mensural notation, coloration is indicated by colored notes (red, black, etc.) where void notes would otherwise occur. <strong>In CMN, coloration is indicated by an inverse color; that is, the note head is void when it would otherwise be filled and vice versa</strong>. Value conforms to [data.BOOLEAN]`</p> </blockquote> <p><a href="https://music-encoding.org/guidelines/v5/elements/note.html">https://music-encoding.org/guidelines/v5/elements/note.html</a></p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/craigsapp"><img src="https://avatars.githubusercontent.com/u/3487289?v=4" />craigsapp</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <p>Thanks!</p> <p>So in CMN, the coloration should be treated as if it were white notation, regardless of if the source were in black notation. I am wondering what you do with CMN rhythm if you are representing mensural music. Specifically a case like this:</p> <img width="330" alt="Screenshot 2024-02-24 at 07 43 20" src="https://github.com/rism-digital/verovio/assets/3487289/c4cc3ad3-a39c-4db7-8929-a32ba7119fa2"> <details> <summary> Click to view MEI data for above example </summary> ``` <?xml version="1.0" encoding="UTF-8"?> <?xml-model href="https://music-encoding.org/schema/5.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <?xml-model href="https://music-encoding.org/schema/5.0/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"> <meiHead> <fileDesc> <titleStmt> <title /> </titleStmt> <pubStmt> </pubStmt> </fileDesc> <encodingDesc> <appInfo> <application isodate="2024-02-24T07:44:12" version="4.2.0-dev-84f99b0-dirty"> <name>Verovio</name> <p>Transcoded from Humdrum</p> </application> </appInfo> </encodingDesc> </meiHead> <music decls="#work0_encoded"> <body> <mdiv xml:id="mrhgtc8"> <score xml:id="slihnj4"> <scoreDef xml:id="s1lg5a9a" midi.bpm="280.000000"> <staffGrp xml:id="s1u4ngx8"> <staffDef xml:id="staffdef-L1F1" n="1" notationtype="mensural.white" lines="5"> <clef xml:id="clef-L2F1" shape="C" line="3" /> </staffDef> </staffGrp> </scoreDef> <section xml:id="section-L1F1"> <staff xml:id="staff-L1F1" n="1"> <layer xml:id="layer-L1F1N1" n="1"> <mensur xml:id="mensur-L4F1" modusmaior="2" modusminor="2" prolatio="2" tempus="3" sign="O" /> <note xml:id="note-L5F1" dur="brevis" oct="4" pname="c" /> <note xml:id="note-L6F1" dur="semibrevis" oct="4" pname="c" /> <note xml:id="note-L7F1" dur="semibrevis" oct="4" pname="c" /> <note xml:id="note-L8F1" dur="semibrevis" oct="4" pname="c" /> <note xml:id="note-L9F1" dur="brevis" oct="4" pname="c" /> </layer> </staff> </section> </score> </mdiv> </body> </music> </mei> ``` </details> <p>I would transcribe in CMN as:</p> <img width="280" alt="Screenshot 2024-02-24 at 07 45 56" src="https://github.com/rism-digital/verovio/assets/3487289/7d6bb201-d5ea-4373-a837-33734cba612b"> <details> <summary> Click to view the MEI data for the above example </summary> ```xml <?xml version="1.0" encoding="UTF-8"?> <?xml-model href="https://music-encoding.org/schema/5.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <?xml-model href="https://music-encoding.org/schema/5.0/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"> <meiHead> <fileDesc> <titleStmt> <title /> </titleStmt> <pubStmt> <unpub>This MEI file was created by Verovio's Humdrum converter. When published, this unpub element should be removed, and the enclosing pubStmt element should be properly filled out.</unpub> </pubStmt> </fileDesc> <encodingDesc> <appInfo> <application isodate="2024-02-24T07:44:12" version="4.2.0-dev-84f99b0-dirty"> <name>Verovio</name> <p>Transcoded from Humdrum</p> </application> </appInfo> </encodingDesc> </meiHead> <music decls="#work0_encoded"> <body> <mdiv xml:id="mrhgtc8"> <score xml:id="slihnj4"> <scoreDef xml:id="s1lg5a9a" midi.bpm="280.000000"> <staffGrp xml:id="s1u4ngx8"> <staffDef xml:id="staffdef-L1F1" n="1" notationtype="mensural.white" lines="5"> <clef xml:id="clef-L2F1" shape="C" line="3" /> </staffDef> </staffGrp> </scoreDef> <section xml:id="section-L1F1"> <staff xml:id="staff-L1F1" n="1"> <layer xml:id="layer-L1F1N1" n="1"> <mensur xml:id="mensur-L4F1" modusmaior="2" modusminor="2" prolatio="2" tempus="3" sign="O" /> <note xml:id="note-L5F1" dur="brevis" oct="4" pname="c" /> <note xml:id="note-L6F1" dur="semibrevis" oct="4" pname="c" /> <note xml:id="note-L7F1" dur="semibrevis" oct="4" pname="c" /> <note xml:id="note-L8F1" dur="semibrevis" oct="4" pname="c" /> <note xml:id="note-L9F1" dur="brevis" oct="4" pname="c" /> </layer> </staff> </section> </score> </mdiv> </body> </music> </mei> ``` </details> <p>Where I add the augmentation dots for the perfection of the breves.</p> <p>Or would you do this:</p> <img width="286" alt="Screenshot 2024-02-24 at 07 51 09" src="https://github.com/rism-digital/verovio/assets/3487289/4bc63a58-63e3-4ba4-bb5d-40d5e57172a7"> <details> <summary> Click to view MEI data for above example. </summary> ```xml <?xml version="1.0" encoding="UTF-8"?> <?xml-model href="https://music-encoding.org/schema/5.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <?xml-model href="https://music-encoding.org/schema/5.0/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"> <meiHead> <fileDesc> <titleStmt> <title /> </titleStmt> <pubStmt> <unpub>This MEI file was created by Verovio's Humdrum converter. When published, this unpub element should be removed, and the enclosing pubStmt element should be properly filled out.</unpub> </pubStmt> </fileDesc> <encodingDesc> <appInfo> <application isodate="2024-02-24T07:52:01" version="4.2.0-dev-84f99b0-dirty"> <name>Verovio</name> <p>Transcoded from Humdrum</p> </application> </appInfo> </encodingDesc> <extMeta> <frames xmlns="http://www.humdrum.org/ns/humxml"> <metaFrame n="15" token="!!!verovio: spacingLinear 0.1" xml:id="L16"> <frameInfo> <startTime float="36" /> <frameType>reference</frameType> <referenceKey>verovio</referenceKey> <referenceValue>spacingLinear 0.1</referenceValue> </frameInfo> </metaFrame> </frames> </extMeta> </meiHead> <music decls="#work0_encoded"> <body> <mdiv xml:id="m1d20qli"> <score xml:id="s6w9du6"> <scoreDef xml:id="swa7f13" midi.bpm="400.000000"> <staffGrp xml:id="s1ewco6o"> <staffDef xml:id="staffdef-L1F1" n="1" lines="5"> <clef xml:id="clef-L2F1" shape="C" line="3" /> <meterSig xml:id="metersig-L3F1" count="3" unit="1" visible="false" /> <mensur xml:id="mensur-L4F1" sign="O" /> </staffDef> </staffGrp> </scoreDef> <section xml:id="section-L1F1"> <measure xml:id="measure-L1"> <staff xml:id="staff-L1F1" n="1"> <layer xml:id="layer-L1F1N1" n="1"> <note xml:id="note-L6F1" dur.ges="breve" dots.ges="1" dur="breve" oct="4" pname="c" accid.ges="n" /> </layer> </staff> </measure> <measure xml:id="measure-L7"> <staff xml:id="staff-L7F1N1" n="1"> <layer xml:id="layer-L7F1N1" n="1"> <note xml:id="note-L8F1" dur="1" oct="4" pname="c" accid.ges="n" /> <note xml:id="note-L9F1" dur="1" oct="4" pname="c" accid.ges="n" /> <note xml:id="note-L10F1" dur="1" oct="4" pname="c" accid.ges="n" /> </layer> </staff> </measure> <measure xml:id="measure-L11"> <staff xml:id="staff-L11F1N1" n="1"> <layer xml:id="layer-L11F1N1" n="1"> <note xml:id="note-L13F1" dur.ges="breve" dots.ges="1" dur="breve" oct="4" pname="c" accid.ges="n" /> </layer> </staff> </measure> </section> </score> </mdiv> </body> </music> </mei> ``` </details> <p>Here, I add <code>@dur.ges="breve"</code> and <code>@dots.ges="1"</code> to the CMN double whole notes to indicate the performance as a dotted double whole note, leaving the visual display as in the mensural source.</p> <p>(In any case <code>note@colored</code> for half notes should be filled in).</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/fernandoherreradelasheras"><img src="https://avatars.githubusercontent.com/u/20201639?v=4" />fernandoherreradelasheras</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <p>Actually I am using the coloration during the first step of a transcription workflow to match the source. The result of this first step is a diplomatic/facsimilar transcription of the source with surfaces/zones mapped to the manuscript. The next step applies semi-automatically some rules to assign proper duration to semibreves and do the measures division.</p> <p>The source is in "iberian white notation" (used during early baroque in Spain and Portugal) that unfortunately doesn't fit on any of the MEI mensural cases. This notation/coloration is used only in the ternary meter known as "compasillo" (and represented with a CZ more or less). By coloring a semibreve that should be perfect (according to some rules) it is forced to be imperfect and last 2 minimas instead of 3.</p> <p><img src="https://github.com/rism-digital/verovio/assets/20201639/8e8f0f16-5549-4056-8dbf-ed4013acfd6c" alt="Screenshot from 2024-02-24 17-12-58" /></p> <p>Notice in the example above that when forcing a semibreve to be imperfect you not only color the semibreve itself but also the surrounding notes. On those, the coloring has no effect at all in terms of duration changes and was intended only as a visual clue for performers about the rythm "alteration"</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/craigsapp"><img src="https://avatars.githubusercontent.com/u/3487289?v=4" />craigsapp</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <p>Thanks, so you are encoding in an intermediate format with performance durations interpreted later, and you use <code>note@colored</code> for analytic information are part of this process. (Good luck telling the difference between a colored minim and a regular semiminim :-)</p> <blockquote> <p>unfortunately doesn't fit on any of the MEI mensural cases. </p> </blockquote> <p>Yes, that makes it difficult to encode diplomatic versions of 17th century music when there was a gradual switch from mensuration to CMN.</p> <p>At the Chopin Institute, we encode such music in CMN:</p> <p><a href="https://polishscores.org/?id=16xx:1489&con=TsTp{80">https://polishscores.org/?id=16xx:1489&con=TsTp{80</a>}</p> <img width="1297" alt="Screenshot 2024-02-24 at 08 52 17" src="https://github.com/rism-digital/verovio/assets/3487289/ba1ba8de-0c67-4f1a-8e08-7e02d7f60e3a"> <p>where It is the human encoders job to figure that out, or they don't get paid :-)</p> <p>Original for this example from 1615:</p> <p><a href="https://cyfrowe.mnk.pl/dlibra/publication/24235/edition/23926/content?ref=desc">https://cyfrowe.mnk.pl/dlibra/publication/24235/edition/23926/content?ref=desc</a> (page 12)</p> <img width="793" alt="Screenshot 2024-02-24 at 09 08 25" src="https://github.com/rism-digital/verovio/assets/3487289/c23848c6-934d-481f-a871-a9c315f35f4c"> <p>This example is uses mensural rhythms (imperfect cut-c is the same as modern notaiton, but 3/2 is a perfect mensuration that needs work converting to CMN), with colored notation with 3/2 being a notation for sesquialtera as well as barlines, ligatures, and ties across barlines (bottom of page 12). Here is a funny deperfecting:</p> <img width="65" alt="Screenshot 2024-02-24 at 09 17 46" src="https://github.com/rism-digital/verovio/assets/3487289/e66a71df-32f7-4a5d-86a3-8c66fbb15b51"> <p>The MIDI playback for this example needs fixing since the 3/2 music needs to be sped up (I will have to fix that :-)</p> <p>And I see that @rettinghaus has already fix the coloring of half notes in PR <a href="https://github.com/rism-digital/verovio/pull/3606">https://github.com/rism-digital/verovio/pull/3606</a> (which will be merged into the <code>develop</code> branch sometime soon).</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/ahankinson"><img src="https://avatars.githubusercontent.com/u/163183?v=4" />ahankinson</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <p>Since your encoding doesn’t need the “semantic” meaning of colored, it would be better to use the filled /void encoding. </p> <p>This is definitely a bug, though, since the note head should be inverted.</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/fernandoherreradelasheras"><img src="https://avatars.githubusercontent.com/u/20201639?v=4" />fernandoherreradelasheras</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <blockquote> <p>Thanks, so you are encoding in an intermediate format with performance durations interpreted later, and you use <code>note@colored</code> for analytic information are part of this process. </p> </blockquote> <p>Exactly. Usually this diplomatic transcription has no real interest for anyone other than the 3 or 4 musicologists working around that music. </p> <p>However on a couple of projects I am working on some parts of the manuscripts are in bad conditions with ink bleed-through, corroded paper and all the usual suspects. So every time I have to go back to the original implies a lot of time spent "deciphering" again the obscure parts. This is why I want to keep around this diplomatic transcription: a clean version of the manuscript to use during the later during the editing process.</p> <blockquote> <p>(Good luck telling the difference between a colored minim and a regular semiminim :-)</p> </blockquote> <p>Oh, no problem with that. Only white notes on CZ, so semiminim are like white quavers :). It's kind of funny when the same piece has a 4/4 or 4/2 section where suddenly black is black :)</p> <p>Thanks for the info and the links. Very nice ui and features!</p> <blockquote> <p>The MIDI playback for this example needs fixing since the 3/2 music needs to be sped up (I will have to fix that :-)</p> </blockquote> <p>Oh yeah, I also have some MIDI work pending... I have a local branch of verovio-app using js-synthesizer + libfluidsynth instead of wildwebmidi that I think it might be interesting for someone else. Let's see if I can find some time this weekend to clean and share it.</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/fernandoherreradelasheras"><img src="https://avatars.githubusercontent.com/u/20201639?v=4" />fernandoherreradelasheras</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <blockquote> <p>Since your encoding doesn’t need the “semantic” meaning of colored, it would be better to use the filled /void encoding.</p> </blockquote> <p>but filled/void is not implemented, is it?</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/craigsapp"><img src="https://avatars.githubusercontent.com/u/3487289?v=4" />craigsapp</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <blockquote> <p>I have a local branch of verovio-app using js-synthesizer + libfluidsynth</p> </blockquote> <p>That will be interesting to study as I have been too lazy to look for an alternate method to wildwestmidi since it works well enough.</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/fernandoherreradelasheras"><img src="https://avatars.githubusercontent.com/u/20201639?v=4" />fernandoherreradelasheras</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <blockquote> <blockquote> <p>I have a local branch of verovio-app using js-synthesizer + libfluidsynth</p> </blockquote> <p>That will be interesting to study as I have been too lazy to look for an alternate method to wildwestmidi since it works well enough.</p> </blockquote> <p>I started it with the hope of getting nicer vocal playbacks. You can listen to it in action here: </p> <p><a href="https://humanoydivino.com/otros/livrodomingosmartins/">https://humanoydivino.com/otros/livrodomingosmartins/</a></p> <p>under folios 66 - 67 click on the button <code>Mostrar borrador de partitura interactiva [EN PRUEBAS]</code> to get the modified verovio-editor using fluidsynth. It is using the sound font KBH_Real_and_Swell_Choir.sf2 (12Mb download!). Anyway not the best musical piece to test a voice bank.</p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/craigsapp"><img src="https://avatars.githubusercontent.com/u/3487289?v=4" />craigsapp</a> commented <strong> 9 months ago</strong> </div> <div class="markdown-body"> <blockquote> <p>Since your encoding doesn’t need the “semantic” meaning of colored, it would be better to use the filled /void encoding.</p> </blockquote> <p>I think in this specific case, using <code>@colored</code> is good. It is used more as an analytic feature rather than a visual feature. And the final CMN notation would remove the coloration, and the mensural view could keep it.</p> <p>Hopefully it will not be shown with coloration in the final CMN, as that would be confusing (which is what I was wondering)...</p> <p>In CMN, coloration is typically show/ecnoded with open brackets:</p> <img width="571" alt="Screenshot 2024-02-24 at 11 55 22" src="https://github.com/rism-digital/verovio/assets/3487289/8231affd-02f0-4971-8d0e-5e704a76352e"> <details> <summary> Click to view MEI data for above example. </summary> ```xml <?xml version="1.0" encoding="UTF-8"?> <?xml-model href="https://music-encoding.org/schema/5.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <?xml-model href="https://music-encoding.org/schema/5.0/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"> <meiHead> <fileDesc> <titleStmt> <title /> </titleStmt> <pubStmt> </pubStmt> </fileDesc> <encodingDesc> <appInfo> <application isodate="2024-02-24T11:56:13" version="4.2.0-dev-84f99b0-dirty"> <name>Verovio</name> <p>Transcoded from Humdrum</p> </application> </appInfo> </encodingDesc> <extMeta> <frames xmlns="http://www.humdrum.org/ns/humxml" /> </extMeta> </meiHead> <music decls="#work0_encoded"> <body> <mdiv xml:id="mlzq5sx"> <score xml:id="so2byn3"> <scoreDef xml:id="s24uz5b" midi.bpm="400.000000"> <staffGrp xml:id="s1nc8f43"> <staffDef xml:id="staffdef-L1F1" n="1" lines="5"> <clef xml:id="c1mmg4xt" shape="G" line="2" /> <meterSig xml:id="metersig-L2F1" count="2" unit="1" /> </staffDef> </staffGrp> </scoreDef> <section xml:id="section-L1F1"> <measure xml:id="measure-L1"> <staff xml:id="staff-L1F1" n="1"> <layer xml:id="layer-L1F1N1" n="1"> <note xml:id="note-L4F1" dur="1" oct="4" pname="c" accid.ges="n" /> <tuplet xml:id="tuplet-L6F1-L8F1" num="3" numbase="2" num.format="count"> <note xml:id="note-L6F1" dur="2" oct="3" pname="b" accid.ges="n" /> <note xml:id="note-L7F1" dur="2" oct="4" pname="c" accid.ges="n" /> <note xml:id="note-L8F1" dur="2" oct="4" pname="d" accid.ges="n" /> </tuplet> </layer> </staff> <bracketSpan xml:id="coloration-L5F1-L9F1" startid="#note-L6F1" endid="#note-L8F1" func="coloration" /> </measure> <measure xml:id="measure-L10"> <staff xml:id="staff-L10F1N1" n="1"> <layer xml:id="layer-L10F1N1" n="1"> <note xml:id="note-L11F1" dur="breve" oct="4" pname="c" accid.ges="n" /> </layer> </staff> </measure> </section> </score> </mdiv> </body> </music> </mei> ``` </details> <p>In this case for major coloration where it is not that interestiong, but also for minor coloration which are not related to triplets.</p> <p>Where the coloration bracket is:</p> <pre><code class="language-xml"> <bracketSpan xml:id="coloration-L5F1-L9F1" startid="#note-L6F1" endid="#note-L8F1" func="coloration" /></code></pre> </div> </div> <div class="page-bar-simple"> </div> <div class="footer"> <ul class="body"> <li>© <script> document.write(new Date().getFullYear()) </script> Githubissues.</li> <li>Githubissues is a development platform for aggregating issues.</li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script> <script src="/githubissues/assets/js.js"></script> <script src="/githubissues/assets/markdown.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/highlight.min.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/go.min.js"></script> <script> hljs.highlightAll(); </script> </body> </html>