Skip to content
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

Lyrics line height option #3640

Open
domialbrecht opened this issue Mar 28, 2024 · 1 comment
Open

Lyrics line height option #3640

domialbrecht opened this issue Mar 28, 2024 · 1 comment

Comments

@domialbrecht
Copy link

At the moment I can set --lyric-top-min-margin to achieve a gap at the start of the first lyrics line. For songs with multiple verses i would like to create more space between the verses. See here for example:
Screenshot 2024-03-28 at 19 34 09

There is ©lineheight on syl nodes in MEI but I think thats not the right place to control the genereal layout. Musescore for example does only export MEI5.0+basic and does not encode stylistic properties.

A new option --lyric-line-height or such could be introduced.

@craigsapp
Copy link
Contributor

A similar feature request is to be able to control the line height for <f> within <fb>:

Screenshot 2024-04-07 at 7 08 28 PM
Click to view MEI data for above example
<?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>
  </fileDesc>
  <encodingDesc>
   <appInfo>
    <application isodate="2024-04-07T19:08:20" 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="#work1_encoded">
  <body>
   <mdiv xml:id="miha9f2">
    <score xml:id="s1p0itoa">
     <scoreDef xml:id="slmjfj6">
      <staffGrp xml:id="swxrlo0">
       <staffDef xml:id="staffdef-L1F1" n="1" lines="5">
        <label xml:id="label-L4F1">Basso continuo</label>
        <clef xml:id="clef-L5F1" shape="F" line="4" />
        <keySig xml:id="keysig-L6F1" mode="minor" sig="1f" pname="g" />
        <meterSig xml:id="metersig-L8F1" count="4" sym="common" unit="4" />
       </staffDef>
      </staffGrp>
     </scoreDef>
     <section xml:id="section-L1F1">
      <measure xml:id="measure-L1">
       <harm xml:id="harm-L14F2" staff="1" tstamp="4.000000">
        <fb xml:id="fb-L14F2">
         <f xml:id="f-L14F2"></f>
        </fb>
       </harm>
       <staff xml:id="staff-L1F1" n="1">
        <layer xml:id="layer-L1F1N1" n="1">
         <note xml:id="note-L11F1" type="placed" dots="1" dur="4" oct="3" pname="g" stem.dir="down" accid.ges="n" />
         <note xml:id="note-L12F1" type="placed" dur="8" oct="3" pname="a" stem.dir="down" accid.ges="n" />
         <note xml:id="note-L13F1" type="placed" dur="4" oct="3" pname="b" stem.dir="down" accid.ges="f" />
         <note xml:id="note-L14F1" type="placed" dur="4" oct="3" pname="b" stem.dir="down" accid="n" />
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L15" n="2">
       <harm xml:id="harm-L16F2" staff="1" tstamp="1.000000">
        <fb xml:id="fb-L16F2">
         <f xml:id="f-L16F2N1"></f>
         <f xml:id="f-L16F2N2"></f>
         <f xml:id="f-L16F2N3"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L18F2" staff="1" tstamp="3.000000">
        <fb xml:id="fb-L18F2">
         <f xml:id="f-L18F2N1"></f>
         <f xml:id="f-L18F2N2"></f>
        </fb>
       </harm>
       <staff xml:id="staff-L15F1N1" n="1">
        <layer xml:id="layer-L15F1N1" n="1">
         <note xml:id="note-L16F1" type="placed" dots="1" dur="4" oct="4" pname="c" stem.dir="down" accid.ges="n" />
         <note xml:id="note-L17F1" type="placed" dur="8" oct="3" pname="b" stem.dir="down">
          <accid xml:id="accid-L17F1" accid="f" func="caution" />
         </note>
         <note xml:id="note-L18F1" type="placed" dur="4" oct="3" pname="a" stem.dir="down" accid.ges="n" />
         <note xml:id="note-L19F1" type="placed" dur="4" oct="3" pname="b" stem.dir="down" accid.ges="f" />
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L20" n="3">
       <harm xml:id="harm-L21F2" staff="1" tstamp="1.000000">
        <fb xml:id="fb-L21F2">
         <f xml:id="f-L21F2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L22F2" staff="1" tstamp="2.000000">
        <fb xml:id="fb-L22F2">
         <f xml:id="f-L22F2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L23F2" staff="1" tstamp="3.000000">
        <fb xml:id="fb-L23F2">
         <f xml:id="f-L23F2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L24F2" staff="1" tstamp="4.000000">
        <fb xml:id="fb-L24F2">
         <f xml:id="f-L24F2N1"></f>
         <f xml:id="f-L24F2N2"></f>
        </fb>
       </harm>
       <staff xml:id="staff-L20F1N1" n="1">
        <layer xml:id="layer-L20F1N1" n="1">
         <note xml:id="note-L21F1" type="placed" dur="2" oct="3" pname="g" stem.dir="down" accid.ges="n" />
         <note xml:id="note-L23F1" type="placed" dur="2" oct="3" pname="f" stem.dir="down" accid="s" />
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L25" n="4">
       <harm xml:id="harm-L26F2" staff="1" tstamp="1.000000">
        <fb xml:id="fb-L26F2">
         <f xml:id="f-L26F2N1"></f>
         <f xml:id="f-L26F2N2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L27F2" staff="1" tstamp="2.000000">
        <fb xml:id="fb-L27F2">
         <f xml:id="f-L27F2N1"></f>
         <f xml:id="f-L27F2N2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L28F2" staff="1" tstamp="3.000000">
        <fb xml:id="fb-L28F2">
         <f xml:id="f-L28F2N1"></f>
         <f xml:id="f-L28F2N2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L29F2" staff="1" tstamp="4.000000">
        <fb xml:id="fb-L29F2">
         <f xml:id="f-L29F2"></f>
        </fb>
       </harm>
       <staff xml:id="staff-L25F1N1" n="1">
        <layer xml:id="layer-L25F1N1" n="1">
         <note xml:id="note-L26F1" type="placed" dur="2" oct="3" pname="g" stem.dir="down" accid.ges="n" />
         <note xml:id="note-L28F1" type="placed" dur="2" oct="3" pname="c" stem.dir="up" accid.ges="n" />
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L30" n="5">
       <harm xml:id="harm-L31F2" staff="1" tstamp="1.000000">
        <fb xml:id="fb-L31F2">
         <f xml:id="f-L31F2N1"></f>
         <f xml:id="f-L31F2N2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L32F2" staff="1" tstamp="2.000000">
        <fb xml:id="fb-L32F2">
         <f xml:id="f-L32F2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L33F2" staff="1" tstamp="2.500000">
        <fb xml:id="fb-L33F2">
         <f xml:id="f-L33F2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L34F2" staff="1" tstamp="3.000000">
        <fb xml:id="fb-L34F2">
         <f xml:id="f-L34F2N1"></f>
         <f xml:id="f-L34F2N2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L35F2" staff="1" tstamp="4.000000">
        <fb xml:id="fb-L35F2">
         <f xml:id="f-L35F2"></f>
        </fb>
       </harm>
       <staff xml:id="staff-L30F1N1" n="1">
        <layer xml:id="layer-L30F1N1" n="1">
         <note xml:id="note-L31F1" type="placed" dur="4" oct="3" pname="d" stem.dir="down" accid.ges="n" />
         <beam xml:id="beam-L32F1-L33F1">
          <note xml:id="note-L32F1" type="placed" dur="8" oct="3" pname="e" stem.dir="up" accid="f" />
          <note xml:id="note-L33F1" type="placed" dur="8" oct="2" pname="b" stem.dir="up" accid.ges="f" />
         </beam>
         <note xml:id="note-L34F1" type="placed" dur="4" oct="3" pname="c" stem.dir="up" accid.ges="n" />
         <note xml:id="note-L35F1" type="placed" dur="4" oct="3" pname="d" stem.dir="down" accid.ges="n" />
        </layer>
       </staff>
      </measure>
      <measure xml:id="measure-L36" n="6">
       <harm xml:id="harm-L38F2" staff="1" tstamp="2.000000">
        <fb xml:id="fb-L38F2">
         <f xml:id="f-L38F2N1"></f>
         <f xml:id="f-L38F2N2"></f>
        </fb>
       </harm>
       <harm xml:id="harm-L40F2" staff="1" tstamp="4.000000">
        <fb xml:id="fb-L40F2">
         <f xml:id="f-L40F2N1"></f>
         <f xml:id="f-L40F2N2"></f>
        </fb>
       </harm>
       <staff xml:id="staff-L36F1N1" n="1">
        <layer xml:id="layer-L36F1N1" n="1">
         <note xml:id="note-L37F1" type="placed" dur="4" oct="3" pname="g" stem.dir="down" accid.ges="n" />
         <note xml:id="note-L38F1" type="placed" dur="4" oct="3" pname="f" stem.dir="down" accid="s" />
         <note xml:id="note-L39F1" type="placed" dur="4" oct="3" pname="g" stem.dir="down" accid.ges="n" />
         <note xml:id="note-L40F1" type="placed" dur="4" oct="2" pname="b" stem.dir="up" accid="n" />
        </layer>
       </staff>
      </measure>
     </section>
    </score>
   </mdiv>
  </body>
 </music>
</mei>

Adjusting the default <f> line spacing would be useful since the above spacing is too high. Perhaps here some assumed plain text height is being used, but I am using SMUFL figures (needed for slash characters).

Here is a target rendering:

Screenshot 2024-04-07 at 7 20 02 PM

Size control of <f> in a similar manner to <syl> would also be useful, similar to the --lyric-size option. 😉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants