Hello all,

I’m in the process of creating sheets that only contain lyrics
and correctly aligned chords. (This belongs to other sheets with music in
them, otherwise LilyPond probably wouldn’t be the ideal choice for this.
But I want to do these all together in LilyPond.)
I have two approaches so far, and none of them are ideal …


#1:

\version "2.19.13"

% Thanks to Thomas Morley for this function!
addMarkup =
#(define-music-function (parser location mrkp)(markup?)
   #{
     \once \override ChordName.before-line-breaking =
     #(lambda (grob)
        (ly:grob-set-property! grob 'text
          #{
            \markup
            \override #'(direction . -1)
            \dir-column { $(ly:grob-property grob 'text) #mrkp }
          #}))
   #})

\new ChordNames \chordmode {
  \override ChordName.extra-spacing-width = #'(0 . -0.1)

  \addMarkup \markup {
    \hspace #5
    \override #'(font-family . serif)
    "Wir stecken doch al"
  }
  d
  \addMarkup \markup {
    \override #'(font-family . serif)
    "le in einem K"
  }
  fis:m/cis
  \addMarkup \markup {
    \override #'(font-family . serif)
    "artenhaus,"
  }
  b:m
  d:/a \break

  \addMarkup \markup {
    \hspace #5
    \override #'(font-family . serif)
    "das sich Leben nen"
  }
  g
  \addMarkup \markup {
    \override #'(font-family . serif)
    "nt und schau’n zum F"
  }
  b:7/fis
  \addMarkup \markup {
    \override #'(font-family . serif)
    "enster raus."
  }
  e:m
}

\paper {
  indent = 0
  ragged-right = ##t
}

\layout {
  \context {
    \Score
    \remove "Bar_number_engraver"
  }
}


#2:

\version "2.19.13"

\markup {
  \column \fontsize #1.5 {
    \line {
      \score {
        \chords {
          d
          \override ChordName.extra-offset = #'(25 . 0)
          fis:m/cis
          \override ChordName.extra-offset = #'(31 . 0)
          b:m
          \override ChordName.extra-offset = #'(40 . 0)
          d:/a
        }
        \layout {}
      }
    }
    \line {
      \hspace #5
      "Wir stecken doch alle in einem Kartenhaus,"
    }
    \vspace #1

    \line {
      \score {
        \chords {
          g
          \override ChordName.extra-offset = #'(24 . 0)
          b:7/fis
          \override ChordName.extra-offset = #'(44 . 0)
          e:m
        }
      }
    }
    \line {
      \hspace #5
      "das sich Leben nennt, und schau’n zum Fenster raus."
    }
  }
}

\paper {
  indent = 0
}


With #1 I like that a new chord gets aligned perfectly with the respective
syllable. But if there is not a new syllable on a chord change (happens
with a tied note), I only can align the chord to a letter, not anywhere in
between letters. Is there a way to offset the chord independently of the
markup?
The other drawback with #1 is that it is a lot to write. Can I override the
font-family generally only for the markup, but not for the chord name?
(Probably with the same method as solving question one.)

#2 gives me more precision in positioning the chords and it allows me to
not split up a line of lyrics, but it obviously involves a lot of trial and
error, so it’s not perfect either.

Anyway, both versions are quite inelegant. If somebody has an idea how to
approach this better, I’d be very grateful!
Ideally I could completely separate chords and lyrics at the input stage
and then put them together line by line in a score. But I have no idea how
to even begin with such an approach.

Cheers,
Peter

--
Peter Crighton | Musician & Music Engraver based in Mainz, Germany
http://www.petercrighton.de
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to