lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Lyrics & Chords sheet


From: Peter Crighton
Subject: Lyrics & Chords sheet
Date: Sun, 16 Nov 2014 18:00:35 +0100

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]