verovio icon indicating copy to clipboard operation
verovio copied to clipboard

Cross-staff stem + dynam interaction

Open craigsapp opened this issue 3 years ago • 0 comments

In this example:

Screenshot 2023-03-12 at 3 26 56 PM

The dynamic markings rfz should not overlap the cross-staff stem. Here is the target rendering:

Screenshot 2023-03-12 at 3 27 05 PM
Click to view MEI data for above example
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="5.0.0-dev">
 <meiHead>
  <fileDesc>
   <titleStmt>
    <title />
   </titleStmt>
   <pubStmt />
  </fileDesc>
  <encodingDesc>
   <appInfo>
    <application isodate="2023-03-12T15:27:10" version="3.16.0-dev-a4f5d00">
     <name>Verovio</name>
     <p>Transcoded from Humdrum</p>
    </application>
   </appInfo>
  </encodingDesc>
  <workList>
   <work>
    <title />
   </work>
  </workList>
  <extMeta>
   <frames xmlns="http://www.humdrum.org/ns/humxml">
    <metaFrame n="24" token="!!!RDF**kern: &lt; = below" xml:id="L25">
     <frameInfo>
      <startTime float="8" />
      <frameType>reference</frameType>
      <referenceKey>RDF**kern</referenceKey>
      <referenceValue>&lt; = below</referenceValue>
     </frameInfo>
    </metaFrame>
    <metaFrame n="25" token="!!!RDF**kern: > = above" xml:id="L26">
     <frameInfo>
      <startTime float="8" />
      <frameType>reference</frameType>
      <referenceKey>RDF**kern</referenceKey>
      <referenceValue>&gt; = above</referenceValue>
     </frameInfo>
    </metaFrame>
   </frames>
  </extMeta>
 </meiHead>
 <music>
  <body>
   <mdiv xml:id="mcgdpq6">
    <score xml:id="s9n7vkq">
     <scoreDef xml:id="s1iaa92h" midi.bpm="112.000000">
      <staffGrp xml:id="s1wr8al2" bar.thru="true" symbol="brace">
       <staffDef xml:id="staffdef-L2F2" n="1" lines="5">
        <clef xml:id="clef-L3F2" shape="G" line="2" />
        <keySig xml:id="keysig-L4F2" pname="c" mode="major" sig="0" />
        <meterSig xml:id="metersig-L6F2" count="4" unit="4" />
       </staffDef>
       <staffDef xml:id="staffdef-L2F1" n="2" lines="5">
        <clef xml:id="clef-L3F1" shape="F" line="4" />
        <keySig xml:id="keysig-L4F1" pname="c" mode="major" sig="0" />
        <meterSig xml:id="metersig-L6F1" count="4" unit="4" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L2F1">
      <measure xml:id="measure-L2" n="17">
       <staff xml:id="staff-L2F2" n="1">
        <layer xml:id="layer-L2F2N1" n="1">
         <chord xml:id="chord-L9F2" dur="8" stem.dir="up">
          <note xml:id="note-L9F2S1" oct="3" pname="b" accid.ges="n" />
          <note xml:id="note-L9F2S2" dur="4" staff="2" oct="3" pname="d" accid.ges="n" />
          <note xml:id="note-L9F2S3" dur="4" staff="2" oct="3" pname="f" accid.ges="n" />
          <artic xml:id="artic-L9F2" artic="stacc" place="above" />
         </chord>
         <rest xml:id="rest-L10F2" dur="8" />
         <chord xml:id="chord-L11F2" dur="8" stem.dir="up">
          <note xml:id="note-L11F2S1" oct="4" pname="c" accid.ges="n" />
          <note xml:id="note-L11F2S2" dur="4" staff="2" oct="3" pname="e" accid.ges="n" />
          <note xml:id="note-L11F2S3" dur="4" staff="2" oct="3" pname="g" accid.ges="n" />
          <artic xml:id="artic-L11F2" artic="stacc" place="above" />
         </chord>
         <rest xml:id="rest-L12F2" dur="8" />
         <chord xml:id="chord-L13F2" dur="8" stem.dir="up">
          <note xml:id="note-L13F2S1" oct="4" pname="c" accid="s" />
          <note xml:id="note-L13F2S2" dur="4" staff="2" oct="3" pname="e" accid.ges="n" />
          <note xml:id="note-L13F2S3" dur="4" staff="2" oct="3" pname="g" accid.ges="n" />
          <artic xml:id="artic-L13F2" artic="stacc" place="above" />
         </chord>
         <rest xml:id="rest-L14F2" dur="8" />
         <chord xml:id="chord-L15F2" dur="8" stem.dir="up">
          <note xml:id="note-L15F2S1" oct="4" pname="d" accid.ges="n" />
          <note xml:id="note-L15F2S2" dur="4" staff="2" oct="3" pname="f" accid.ges="n" />
          <note xml:id="note-L15F2S3" dur="4" staff="2" oct="3" pname="a" accid.ges="n" />
          <artic xml:id="artic-L15F2" artic="stacc" place="above" />
         </chord>
         <rest xml:id="rest-L16F2" dur="8" />
        </layer>
       </staff>
       <staff xml:id="staff-L2F1" n="2">
        <layer xml:id="layer-L2F1N1" n="1">
         <note xml:id="note-L9F1" dur="8" oct="2" pname="g" stem.dir="down" accid.ges="n">
          <artic xml:id="artic-L9F1" artic="stacc" place="below" />
         </note>
         <rest xml:id="rest-L10F1" dur="8" ploc="e" oloc="2" />
         <note xml:id="note-L11F1" dur="8" oct="2" pname="c" stem.dir="down" accid.ges="n">
          <artic xml:id="artic-L11F1" artic="stacc" place="below" />
         </note>
         <rest xml:id="rest-L12F1" dur="8" ploc="e" oloc="2" />
         <note xml:id="note-L13F1" dur="8" oct="2" pname="a" stem.dir="down" accid.ges="n">
          <artic xml:id="artic-L13F1" artic="stacc" place="below" />
         </note>
         <rest xml:id="rest-L14F1" dur="8" ploc="e" oloc="2" />
         <note xml:id="note-L15F1" dur="8" oct="2" pname="d" stem.dir="down" accid.ges="n">
          <artic xml:id="artic-L15F1" artic="stacc" place="below" />
         </note>
         <rest xml:id="rest-L16F1" dur="8" ploc="e" oloc="2" />
        </layer>
       </staff>
       <dynam xml:id="dynam-L11F3" staff="1" tstamp="2.000000" vgrp="100">rfz</dynam>
       <dynam xml:id="dynam-L15F3" staff="1" tstamp="4.000000" vgrp="100">rfz</dynam>
      </measure>
      <measure xml:id="measure-L17" n="18">
       <staff xml:id="staff-L17F2N1" n="1">
        <layer xml:id="layer-L17F2N1" n="1">
         <chord xml:id="chord-L18F2" dur="8" stem.dir="up">
          <note xml:id="note-L18F2S1" staff="2" oct="3" pname="f" accid="s" />
          <note xml:id="note-L18F2S2" staff="2" oct="3" pname="a" accid.ges="n" />
          <note xml:id="note-L18F2S3" oct="4" pname="d" accid="s" />
          <artic xml:id="artic-L18F2" artic="stacc" place="above" />
         </chord>
         <rest xml:id="rest-L19F2" dur="8" />
         <chord xml:id="chord-L20F2" dur="8">
          <note xml:id="note-L20F2S1" oct="3" pname="g" accid.ges="n" />
          <note xml:id="note-L20F2S2" oct="3" pname="b" accid.ges="n" />
          <note xml:id="note-L20F2S3" oct="4" pname="e" accid.ges="n" />
          <artic xml:id="artic-L20F2" artic="stacc" place="above" />
         </chord>
         <rest xml:id="rest-L21F2" dur="8" />
         <chord xml:id="chord-L22F2" dur="2">
          <note xml:id="note-L22F2S1" oct="3" pname="g" accid.ges="n" />
          <note xml:id="note-L22F2S2" oct="3" pname="b" accid.ges="n" />
          <note xml:id="note-L22F2S3" oct="4" pname="f">
           <accid xml:id="accid-L22F2S3" accid="n" func="caution" />
          </note>
         </chord>
        </layer>
       </staff>
       <staff xml:id="staff-L17F1N1" n="2">
        <layer xml:id="layer-L17F1N1" n="1">
         <note xml:id="note-L18F1" dur="8" oct="2" pname="b" stem.dir="down" accid.ges="n">
          <artic xml:id="artic-L18F1" artic="stacc" place="below" />
         </note>
         <rest xml:id="rest-L19F1" dur="8" ploc="g" oloc="2" />
         <note xml:id="note-L20F1" dur="8" oct="2" pname="e" accid.ges="n">
          <artic xml:id="artic-L20F1" artic="stacc" />
         </note>
         <rest xml:id="rest-L21F1" dur="8" />
         <chord xml:id="chord-L22F1" dur="2">
          <note xml:id="note-L22F1S1" oct="2" pname="d" accid.ges="n" />
          <note xml:id="note-L22F1S2" oct="3" pname="d" accid.ges="n" />
         </chord>
        </layer>
       </staff>
       <dynam xml:id="dynam-L20F3" staff="1" tstamp="2.000000" vgrp="100">rfz</dynam>
       <dynam xml:id="dynam-L22F3" staff="1" tstamp="3.000000" vgrp="100">rfz</dynam>
       <tie xml:id="tie-L22F2S1-L23F2" type="hanging-terminal" staff="1" startid="#note-L22F2S1" tstamp2="0m+5.0000" />
       <tie xml:id="tie-L22F2S2-L23F2" type="hanging-terminal" staff="1" startid="#note-L22F2S2" tstamp2="0m+5.0000" />
       <tie xml:id="tie-L22F2S3-L23F2" type="hanging-terminal" staff="1" startid="#note-L22F2S3" tstamp2="0m+5.0000" />
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

Also note that once implemented, the rfz should not collide with the previous cross-staff stem (probably will not for this example, but that is something to think about).

craigsapp avatar Mar 12 '23 22:03 craigsapp