Chords
Chord notation
Adding a figured bass above or below the notes
When writing a figured bass, you can place the figures above or below
the bass notes, by defining the
BassFigureAlignmentPositioning.direction
property (exclusively
in a Staff
context). Choices are #UP
(or #1
),
#CENTER
(or #0
) and #DOWN
(or #-1
).
This property can be changed as many times as you wish. Use
\once \override
if you don’t want the override to apply to the
whole score.
| bass = {
\clef bass
g4 b, c d
e d8 c d2
}
continuo = \figuremode {
<_>4 <6>4 <5/>4
\override Staff.BassFigureAlignmentPositioning.direction = #UP
%\bassFigureStaffAlignmentUp
< _+ >4 <6>
\set Staff.useBassFigureExtenders = ##t
\override Staff.BassFigureAlignmentPositioning.direction = #DOWN
%\bassFigureStaffAlignmentDown
<4>4. <4>8 <_+>4
}
\score {
<<
\new Staff = bassStaff \bass
\context Staff = bassStaff \continuo
>>
}
|
Adding bar lines to ChordNames context
To add bar line indications in the ChordNames
context, add the
Bar_engraver
.
| \new ChordNames \with {
\override BarLine.bar-extent = #'(-2 . 2)
\consists "Bar_engraver"
}
\chordmode {
f1:maj7 f:7 bes:7
}
|
Avoiding collisions with chord fingerings
Fingerings and string numbers applied to individual notes will
automatically avoid beams and stems, but this is not true by default
for fingerings and string numbers applied to the individual notes of
chords. The following example shows how this default behavior can be
overridden.
| \relative c' {
\set fingeringOrientations = #'(up)
\set stringNumberOrientations = #'(up)
\set strokeFingerOrientations = #'(up)
% Default behavior
r8
<f c'-5>8
<f c'\5>8
<f c'-\rightHandFinger #2 >8
% No tweak needed
r8
<f c'-5>8
<f c'\5>8
% Corrected to avoid collisions
\override StrokeFinger.add-stem-support = ##t
<f c'-\rightHandFinger #2 >8
}
|
Bar chords notation for Guitar (with Text Spanner)
Here is how to print bar chords (or barre chords) or half-bar chords
(just uncomment the appropriate line for to select either one). The
syntax is : \bbarre #'fret_number' note(s)
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%%%%%% Cut here ----- Start 'bbarred.ly'
%% C with slash -------------------------------
cWithSlash = \markup {
\combine \roman C \translate #'(0.6 . -0.4) \draw-line #'(0 . 2.0)
}
%% Span -----------------------------------
%% Syntax: \bbarre #"text" { notes } - text = any number of box
bbarre =
#(define-music-function (barre location str music) (string? ly:music?)
(let ((elts (extract-named-music music '(NoteEvent EventChord))))
(if (pair? elts)
(let ((first-element (first elts))
(last-element (last elts)))
(set! (ly:music-property first-element 'articulations)
(cons (make-music 'TextSpanEvent 'span-direction -1)
(ly:music-property first-element 'articulations)))
(set! (ly:music-property last-element 'articulations)
(cons (make-music 'TextSpanEvent 'span-direction 1)
(ly:music-property last-element 'articulations))))))
#{
\once \override TextSpanner.font-size = #-2
\once \override TextSpanner.font-shape = #'upright
\once \override TextSpanner.staff-padding = #3
\once \override TextSpanner.style = #'line
\once \override TextSpanner.to-barline = ##f
\once \override TextSpanner.bound-details =
#`((left
(text . ,#{ \markup { \draw-line #'( 0 . -.5) } #})
(Y . 0)
(padding . 0.25)
(attach-dir . -2))
(right
(text . ,#{ \markup { \cWithSlash #str } #})
(Y . 0)
(padding . 0.25)
(attach-dir . 2)))
%% uncomment this line for make full barred
% \once \override TextSpanner.bound-details.left.text = \markup{"B" #str}
$music
#})
%% %%%%%%% Cut here ----- End 'bbarred.ly'
%% Copy and change the last line for full barred. Rename in 'fbarred.ly'
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Syntaxe: \bbarre #"text" { notes } - text = any number of box
\relative c'{ \clef "G_8" \stemUp \bbarre #"III" { <f a'>16[ c' d c d8] } }
|
Changing chord separator
The separator between different parts of a chord name can be set to any
markup.
| \chords {
c:7sus4
\set chordNameSeparator
= \markup { \typewriter | }
c:7sus4
}
|
Changing the chord names to German or semi-German notation
The english naming of chords (default) can be changed to german
(\germanChords
replaces B and Bes with H and B) or semi-german
(\semiGermanChords
replaces B and Bes with H and Bb).
| scm = \chordmode {
c1/c | cis/cis
b1/b | bis/bis | bes/bes
}
\layout {
ragged-right = ##t
\context {
\ChordNames
\consists "Instrument_name_engraver"
}
}
<<
\new ChordNames {
\set instrumentName = #"default"
\scm
}
\new ChordNames {
\set instrumentName = #"german"
\germanChords \scm
}
\new ChordNames {
\set instrumentName = #"semi-german"
\semiGermanChords \scm
}
\new ChordNames {
\set instrumentName = #"italian"
\italianChords \scm
}
\new ChordNames {
\set instrumentName = #"french"
\frenchChords \scm
}
\context Voice { \scm }
>>
|
Changing the positions of figured bass alterations
Accidentals and plus signs can appear before or after the numbers,
depending on the figuredBassAlterationDirection
and
figuredBassPlusDirection
properties.
| \figures {
<6\+> <5+> <6 4-> r
\set figuredBassAlterationDirection = #RIGHT
<6\+> <5+> <6 4-> r
\set figuredBassPlusDirection = #RIGHT
<6\+> <5+> <6 4-> r
\set figuredBassAlterationDirection = #LEFT
<6\+> <5+> <6 4-> r
}
|
Chord name exceptions
The property chordNameExceptions
can be used to store a list of
special notations for specific chords.
| % modify maj9 and 6(add9)
% Exception music is chords with markups
chExceptionMusic = {
<c e g b d'>1-\markup { \super "maj9" }
<c e g a d'>1-\markup { \super "6(add9)" }
}
% Convert music to list and prepend to existing exceptions.
chExceptions = #( append
( sequential-music-to-chord-exceptions chExceptionMusic #t)
ignatzekExceptions)
theMusic = \chordmode {
g1:maj9 g1:6.9
\set chordNameExceptions = #chExceptions
g1:maj9 g1:6.9
}
\layout {
ragged-right = ##t
}
<< \context ChordNames \theMusic
\context Voice \theMusic
>>
|
chord name major7
The layout of the major 7 can be tuned with majorSevenSymbol
.
| \chords {
c:7+
\set majorSevenSymbol = \markup { j7 }
c:7+
}
|
Clusters
Clusters are a device to denote that a complete range of notes is to be
played.
| fragment = \relative c' {
c4 f <e d'>4
<g a>8 <e a> a4 c2 <d b>4
e2 c
}
<<
\new Staff \fragment
\new Staff \makeClusters \fragment
>>
|
Controlling the placement of chord fingerings
The placement of fingering numbers can be controlled precisely. For
fingering orientation to apply, you must use a chord construct <> even
if it is a single note.
| \relative c' {
\set fingeringOrientations = #'(left)
<c-1 e-3 a-5>4
\set fingeringOrientations = #'(down)
<c-1 e-3 a-5>4
\set fingeringOrientations = #'(down right up)
<c-1 e-3 a-5>4
\set fingeringOrientations = #'(up)
<c-1 e-3 a-5>4
\set fingeringOrientations = #'(left)
<c-1>2
\set fingeringOrientations = #'(down)
<e-3>2
}
|
Cross-staff chords - beaming problems workaround
Sometimes it is better to use stems from the upper staff for creating
cross-staff chords, because no problems with automatic beam collision
avoidance then arise. If the stems from the lower staff were used in
the following example, it would be necessary to change the automatic
beam collision avoidance settings so that it doesn’t detect collisions
between staves using \override Staff.Beam.collision-voice-only =
##t
| \new PianoStaff <<
\new Staff = up
\relative c' {
<<
{ r4
\override Stem.cross-staff = ##t
\override Stem.length = #19 % this is in half-spaces,
% so it makes stems 9.5 staffspaces long
\override Stem.Y-offset = #-6 % stems are normally lengthened
% upwards, so here we must lower the stem by the amount
% equal to the lengthening - in this case (19 - 7) / 2
% (7 is default stem length)
e e e }
{ s4
\change Staff = "bottom"
\override NoteColumn.ignore-collision = ##t
c, c c
}
>>
}
\new Staff = bottom
\relative c' {
\clef bass
\voiceOne
g8 a g a g a g a
}
>>
|
Displaying complex chords
Here is a way to display a chord where the same note is played twice
with different accidentals.
| fixA = {
\once \override Stem.length = #11
}
fixB = {
\once \override NoteHead.X-offset = #1.7
\once \override Stem.length = #7
\once \override Stem.rotation = #'(45 0 0)
\once \override Stem.extra-offset = #'(-0.1 . -0.2)
\once \override Flag.style = #'no-flag
\once \override Accidental.extra-offset = #'(4 . -.1)
}
\relative c' {
<< { \fixA <b d!>8 } \\ { \voiceThree \fixB dis } >> s
}
|
Manually break figured bass extenders for only some numbers
Figured bass often uses extenders to indicate continuation of the
corresponding step. However, in this case lilypond is in greedy-mode
and uses extenders whenever possible. To break individual extenders,
one can simply use a modifier \! to a number, which breaks any
extender attributed to that number right before the number.
| bassfigures = \figuremode {
\set useBassFigureExtenders = ##t
<6 4>4 <6 4\!> <6 4\!> <6 4\!> | <6\! 4\!> <6 4> <6 4\!> <6 4>
}
<<
\new Staff \relative c'' { c1 c1 }
\new FiguredBass \bassfigures
>>
|
Showing chords at changes
Chord names can be displayed only at the start of lines and when the
chord changes.
| harmonies = \chordmode {
c1:m c:m \break c:m c:m d
}
<<
\new ChordNames {
\set chordChanges = ##t
\harmonies
}
\new Staff {
\relative c' { \harmonies }
}
>>
|
Simple lead sheet
When put together, chord names, a melody, and lyrics form a lead sheet:
| <<
\chords { c2 g:sus4 f e }
\relative c'' {
a4 e c8 e r4
b2 c4( d)
}
\addlyrics { One day this shall be free __ }
>>
|
Single staff template with notes lyrics and chords
This template allows the preparation of a song with melody, words, and
chords.
| melody = \relative c' {
\clef treble
\key c \major
\time 4/4
a4 b c d
}
text = \lyricmode {
Aaa Bee Cee Dee
}
harmonies = \chordmode {
a2 c
}
\score {
<<
\new ChordNames {
\set chordChanges = ##t
\harmonies
}
\new Voice = "one" { \autoBeamOff \melody }
\new Lyrics \lyricsto "one" \text
>>
\layout { }
\midi { }
}
|
Single staff template with notes lyrics chords and frets
Here is a simple lead sheet template with melody, lyrics, chords and
fret diagrams.
| verseI = \lyricmode {
\set stanza = #"1."
This is the first verse
}
verseII = \lyricmode {
\set stanza = #"2."
This is the second verse.
}
theChords = \chordmode {
% insert chords for chordnames and fretboards here
c2 g4 c
}
staffMelody = \relative c' {
\key c \major
\clef treble
% Type notes for melody here
c4 d8 e f4 g
\bar "|."
}
\score {
<<
\context ChordNames { \theChords }
\context FretBoards { \theChords }
\new Staff {
\context Voice = "voiceMelody" { \staffMelody }
}
\new Lyrics = "lyricsI" {
\lyricsto "voiceMelody" \verseI
}
\new Lyrics = "lyricsII" {
\lyricsto "voiceMelody" \verseII
}
>>
\layout { }
\midi { }
}
|
Single staff template with notes and chords
Want to prepare a lead sheet with a melody and chords? Look no further!
| melody = \relative c' {
\clef treble
\key c \major
\time 4/4
f4 e8[ c] d4 g
a2 ~ a
}
harmonies = \chordmode {
c4:m f:min7 g:maj c:aug
d2:dim b4:5 e:sus
}
\score {
<<
\new ChordNames {
\set chordChanges = ##t
\harmonies
}
\new Staff \melody
>>
\layout{ }
\midi { }
}
|
Vertically centering paired figured bass extenders
Where figured bass extender lines are being used by setting
useBassFigureExtenders
to true, pairs of congruent figured bass
extender lines are vertically centered if
figuredBassCenterContinuations
is set to true.
| <<
\relative c' {
c8 c b b a a c16 c b b
c8 c b b a a c16 c b b
c8 c b b a a c c b b
}
\figures {
\set useBassFigureExtenders = ##t
<6+ 4 3>4 <6 4 3>8 r
<6+ 4 3>4 <6 4 3>8 <4 3+>16 r
\set figuredBassCenterContinuations = ##t
<6+ 4 3>4 <6 4 3>8 r
<6+ 4 3>4 <6 4 3>8 <4 3+>16 r
\set figuredBassCenterContinuations = ##f
<6+ 4 3>4 <6 4 3>8 r
<6+ 4 3>4 <6 4 3>8 <4 3+>8
}
>>
|
Volta below chords
By adding the Volta_engraver
to the relevant staff, volte can be
put under chords.
| \score {
<<
\chords {
c1
c1
}
\new Staff \with {
\consists "Volta_engraver"
}
{
\repeat volta 2 { c'1 }
\alternative { c' }
}
>>
\layout {
\context {
\Score
\remove "Volta_engraver"
}
}
}
|