Guide, node Updating translation committishes..
@end ignore
-@c \version "2.19.2"
+@c \version "2.19.22"
@node Fundamental concepts
@chapter Fundamental concepts
input. LilyPond treats input like this:
@example
-\relative c'' @{
- c4 a d c
+\relative @{
+ c''4 a d c
@}
@end example
\score @{
\new Staff @{
\new Voice @{
- \relative c'' @{
- c4 a b c
+ \relative @{
+ c''4 a b c
@}
@}
@}
shown they will cause LilyPond to produce a printed output and a
MIDI output respectively. They are described fully in the
Notation Reference -- @ruser{Score layout}, and
-@ruser{Creating MIDI files}.
+@ruser{Creating MIDI output}.
@cindex scores, multiple
@cindex book block, implicit
templates use this:
@example
-melody = \relative c' @{
- c4 a b c
+melody = \relative @{
+ c'4 a b c
@}
\score @{
braces next to @code{\new Voice = "vocal"}, we could start writing
@example
-\relative c'' @{
- r4 d8\noBeam g, c4 r
+\relative @{
+ r4 d''8\noBeam g, c4 r
@}
@end example
have a piece of real music:
@lilypond[verbatim,quote,ragged-right]
-melody = \relative c'' { r4 d8\noBeam g, c4 r }
+melody = \relative { r4 d''8\noBeam g, c4 r }
text = \lyricmode { And God said, }
-upper = \relative c'' { <g d g,>2~ <g d g,> }
-lower = \relative c { b2 e }
+upper = \relative { <g' d g,>2~ <g d g,> }
+lower = \relative { b,2 e }
\score {
<<
@lilypond[verbatim,quote,ragged-right]
\new Staff {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
@lilypond[verbatim,quote,ragged-right]
\new Staff = "main" {
- \relative g' {
- r4 g8 g c4 c8 d |
+ \relative {
+ r4 g'8 g c4 c8 d |
e4 r8
<<
{ f8 c c }
of slurs, stems, ties, dynamics etc., is set appropriately.
@lilypond[quote,verbatim]
-\new Staff \relative c' {
+\new Staff \relative {
% Main voice
- c16 d e f
+ c'16 d e f
% Voice "1" Voice "2" Voice "3"
<< { g4 f e } \\ { r8 e4 d c8~ } >> |
<< { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
blue triangle voice.
@lilypond[quote,verbatim]
-\new Staff \relative c' {
+\new Staff \relative {
% Main voice
- c16 d e f
+ c'16 d e f
<< % Bar 1
{
\voiceOneStyle
preceding chord. So in
@example
-\relative c' @{ noteA << < noteB noteC > \\ noteD >> noteE @}
+\relative @{ noteA << < noteB noteC > \\ noteD >> noteE @}
@end example
@noindent
command at the start of each voice:
@example
-\relative c' @{ noteA @dots{} @}
+\relative @{ noteA @dots{} @}
<<
- \relative c'' @{ < noteB noteC > @dots{} @}
+ \relative @{ < noteB noteC > @dots{} @}
\\
- \relative g' @{ noteD @dots{} @}
+ \relative @{ noteD @dots{} @}
>>
-\relative c' @{ noteE @dots{} @}
+\relative @{ noteE @dots{} @}
@end example
Let us finally analyze the voices in a more complex piece of music.
@c The following should appear as music without code
@lilypond[quote,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
<< % Voice one
- { c2 aes4. bes8 }
+ { c''2 aes4. bes8 }
\\ % Voice two
{
% Ignore these for now - they are explained in Ch 4
@c The following should appear as music without code
@c The three voice styles should be defined in -init
@lilypond[quote,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
<<
{ % Voice one
\voiceOneStyle
- c2 aes4. bes8
+ c''2 aes4. bes8
}
\\ % Voice two
{ \voiceTwoStyle
enter the music of the first bar in three voices:
@lilypond[quote,verbatim,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
<<
- { c2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes }
+ { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes }
>> |
<c ees aes c>1 |
}
adding another pair of @code{\\}.
@lilypond[quote,verbatim,ragged-right]
-\new Staff \relative c'' {
+\new Staff \relative {
\key aes \major
<< % Voice one
- { c2 aes4. bes8 }
+ { c''2 aes4. bes8 }
\\ % Voice two
{ <ees, c>2 des }
\\ % Omit Voice three
@example
\new Staff @{
- \relative c' @{
- << @{ e4 f g a @} \\ @{ c,4 d e f @} >>
+ \relative @{
+ << @{ e'4 f g a @} \\ @{ c,4 d e f @} >>
@}
@}
@end example
@example
\new Staff <<
- \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @}
- \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @}
+ \new Voice = "1" @{ \voiceOne \relative @{ e'4 f g a @} @}
+ \new Voice = "2" @{ \voiceTwo \relative @{ c'4 d e f @} @}
>>
@end example
@c The following example should not display the code
@lilypond[ragged-right,quote]
\new Staff <<
- \new Voice = "1" { \voiceOne \relative c' { e4 f g a } }
- \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } }
+ \new Voice = "1" { \voiceOne \relative { e'4 f g a } }
+ \new Voice = "2" { \voiceTwo \relative { c'4 d e f } }
>>
@end lilypond
markup, ties, slurs, and dynamics:
@lilypond[quote,ragged-right,verbatim]
-\relative c' {
+\relative {
% Default behavior or behavior after \oneVoice
- c4 d8~ 8 e4( f | g4 a) b-> c |
+ c'4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c' {
+\relative {
\voiceOne
- c4 d8~ 8 e4( f | g4 a) b-> c |
+ c'4 d8~ 8 e4( f | g4 a) b-> c |
\oneVoice
c,4 d8~ 8 e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c' {
+\relative {
\voiceTwo
- c4 d8~ 8 e4( f | g4 a) b-> c |
+ c'4 d8~ 8 e4( f | g4 a) b-> c |
\oneVoice
c,4 d8~ 8 e4( f | g4 a) b-> c |
}
permitting a phrasing slur to be drawn over them.
@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
+\new Staff \relative {
\voiceOneStyle
% This section is homophonic
- c16^( d e f
+ c'16^( d e f
% Start simultaneous section of three voices
<<
% Continue the main voice in parallel
typeset the music:
@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
- c16^( d e f
+\new Staff \relative {
+ c'16^( d e f
<<
{ g4 f e | d2 e) | }
\new Voice {
as here:
@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' <<
+\new Staff \relative <<
% Initiate first voice
\new Voice {
\voiceOne
- c16^( d e f g4 f e | d2 e) |
+ c'16^( d e f g4 f e | d2 e) |
}
% Initiate second voice
\new Voice {
@lilypond[quote,verbatim]
<<
\new Voice = "one" {
- \relative c'' {
+ \relative {
\autoBeamOff
\time 2/4
- c4 b8. a16 | g4. f8 | e4 d | c2 |
+ c''4 b8. a16 | g4. f8 | e4 d | c2 |
}
}
\new Lyrics \lyricsto "one" {
@lilypond[quote,verbatim]
global = { \key f \major \time 6/8 \partial 8 }
-SopOneMusic = \relative c'' {
- c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
+SopOneMusic = \relative {
+ c''8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
}
SopOneLyrics = \lyricmode {
Let | flee -- cy flocks the | hills a -- dorn, __
}
-SopTwoMusic = \relative c' {
- r8 | r4. r4 c8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
+SopTwoMusic = \relative {
+ r8 | r4. r4 c'8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
}
SopTwoLyrics = \lyricmode {
Let | flee -- cy flocks the | hills a -- dorn,
@lilypond[quote,verbatim]
keyTime = { \key c \major \time 4/4 \partial 4 }
-SopMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
-TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+SopMusic = \relative { c'4 | e4. e8 g4 g | a4 a g }
+AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e }
+TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 }
VerseOne =
\lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
\clef "treble"
\key g \minor
\new Voice { % create voice for RH notes
- \relative c'' { % start of RH notes
- d4 ees16 c8. |
+ \relative { % start of RH notes
+ d''4 ees16 c8. |
d4 ees16 c8. |
} % end of RH notes
} % end of RH voice
\key g \minor
\new Voice { % create LH voice one
\voiceOne
- \relative g { % start of LH voice one notes
+ \relative { % start of LH voice one notes
g8 <bes d> ees, <g c> |
g8 <bes d> ees, <g c> |
} % end of LH voice one notes
} % end of LH voice one
\new Voice { % create LH voice two
\voiceTwo
- \relative g { % start of LH voice two notes
+ \relative { % start of LH voice two notes
g4 ees |
g4 ees |
} % end of LH voice two notes
@lilypond[quote,verbatim,ragged-right]
<<
- \new Staff \relative c'' {
+ \new Staff \relative {
\set Staff.instrumentName = #"Soprano"
- c2 c
+ c''2 c
}
- \new Staff \relative c' {
+ \new Staff \relative {
\set instrumentName = #"Alto" % Wrong!
- d2 d
+ d'2 d
}
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
<<
- \new Staff \relative c'' {
- aeses2 aes
+ \new Staff \relative {
+ aeses'2 aes
}
- \new Staff \relative c'' {
+ \new Staff \relative {
\set Staff.extraNatural = ##f
- aeses2 aes
+ aeses'2 aes
}
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
<<
- \new Staff \relative c'' {
- aeses2 aes
+ \new Staff \relative {
+ aeses'2 aes
}
- \new Staff \relative c'' {
+ \new Staff \relative {
\set Score.extraNatural = ##f
- aeses2 aes
+ aeses'2 aes
}
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff {
- \relative c'' {
- gisis4 gis aeses aes
+ \relative {
+ gisis'4 gis aeses aes
}
}
\new Staff \with { extraNatural = ##f } {
- \relative c'' {
- gisis4 gis aeses aes
+ \relative {
+ gisis'4 gis aeses aes
}
}
>>
@lilypond[verbatim,quote]
\score {
\new Staff {
- \relative c'' {
- cisis4 e d cis
+ \relative {
+ cisis''4 e d cis
}
}
\layout {
\score {
<<
\new Staff {
- \relative c'' {
- gisis4 gis aeses aes
+ \relative {
+ gisis'4 gis aeses aes
}
}
\new Staff {
- \relative c'' {
- gisis4 gis aeses aes
+ \relative {
+ gisis'4 gis aeses aes
}
}
>>
\new Staff \with {
\remove "Staff_symbol_engraver"
}
-\relative c' {
- c4 d
+\relative {
+ c'4 d
\set fontSize = #-4 % make note heads smaller
e4 f |
\set fontSize = #2.5 % make note heads larger
\new Voice \with {
\consists "Ambitus_engraver"
} {
- \relative c'' {
+ \relative {
\voiceOne
- c4 a b g
+ c''4 a b g
}
}
\new Voice {
- \relative c' {
+ \relative {
\voiceTwo
- c4 e d f
+ c'4 e d f
}
}
>>
}
<<
\new Voice {
- \relative c'' {
+ \relative {
\voiceOne
- c4 a b g
+ c''4 a b g
}
}
\new Voice {
- \relative c' {
+ \relative {
\voiceTwo
- c4 e d f
+ c'4 e d f
}
}
>>
\score {
<<
\new Staff {
- \relative c'' {
- c4 a b g
+ \relative {
+ c''4 a b g
}
}
\new Staff {
- \relative c' {
- c4 a b g
+ \relative {
+ c'4 a b g
}
}
\new Staff {
\clef "G_8"
- \relative c' {
- c4 a b g
+ \relative {
+ c'4 a b g
}
}
\new Staff {
\clef "bass"
- \relative c {
+ \relative {
c4 a b g
}
}
@example
\version @w{"@version{}"}
-melody = \relative c' @{
+melody = \relative @{
\clef "treble"
\key c \major
\time 4/4
@example
\version @w{"@version{}"}
-melody = \relative c' @{
+melody = \relative @{
\clef "treble"
\key c \major
\time 4/4
the cello @code{celloMusic}. While we're doing this, let's rename
@code{text} to be @code{sopranoLyrics}. Remember to rename both
instances of all these names -- both the initial definition (the
-@code{melody = \relative c' @{ } part) and the name's use (in the
+@code{melody = \relative @{ } part) and the name's use (in the
@code{\score} section).
While we're doing this, let's change the cello part's staff --
@example
\version @w{"@version{}"}
-sopranoMusic = \relative c' @{
+sopranoMusic = \relative @{
\clef "treble"
\key c \major
\time 4/4
Aaa Bee Cee Dee
@}
-celloMusic = \relative c @{
+celloMusic = \relative @{
\clef "bass"
\key c \major
\time 4/4
easily fixed. Here's the complete soprano and cello template.
@lilypond[quote,verbatim,ragged-right,addversion]
-sopranoMusic = \relative c' {
+sopranoMusic = \relative {
\clef "treble"
\key c \major
\time 4/4
Aaa Bee Cee Dee
}
-celloMusic = \relative c {
+celloMusic = \relative {
\clef "bass"
\key c \major
\time 4/4
@lilypond[quote,ragged-right]
global = { \key d \major \time 4/4 }
-sopranoMusic = \relative c'' {
+sopranoMusic = \relative {
\clef "treble"
- r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
+ r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
Wor -- thy | is the lamb | that was slain |
}
-altoMusic = \relative a' {
+altoMusic = \relative {
\clef "treble"
- r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
+ r4 a'2 a4 | fis4. fis8 a2 | g4 fis e2 |
}
altoWords = \sopranoWords
-tenorMusic = \relative c' {
+tenorMusic = \relative {
\clef "G_8"
- r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
+ r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
-bassMusic = \relative c' {
+bassMusic = \relative {
\clef "bass"
- r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
+ r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
-upper = \relative a' {
+upper = \relative {
\clef "treble"
\global
- r4 <a d fis>2 <a e' a>4 |
+ r4 <a' d fis>2 <a e' a>4 |
<d fis d'>4. <d fis d'>8 <a d a'>2 |
<g cis g'>4 <a d fis> <a cis e>2 |
}
-lower = \relative c, {
+lower = \relative {
\clef "bass"
\global
- <d d'>4 <d d'>2 <cis cis'>4 |
+ <d, d'>4 <d d'>2 <cis cis'>4 |
<b b'>4. <b' b'>8 <fis fis'>2 |
<e e'>4 <d d'> <a' a'>2 |
}
@lilypond[quote,verbatim,ragged-right,addversion]
global = { \key d \major \time 4/4 }
-sopranoMusic = \relative c'' {
+sopranoMusic = \relative {
\clef "treble"
- r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
+ r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
Wor -- thy | is the lamb | that was slain |
}
-altoMusic = \relative a' {
+altoMusic = \relative {
\clef "treble"
- r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 |
+ r4 a'2 a4 | fis4. fis8 a2 | g4 fis fis2 |
}
altoWords = \sopranoWords
-tenorMusic = \relative c' {
+tenorMusic = \relative {
\clef "G_8"
- r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
+ r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
-bassMusic = \relative c' {
+bassMusic = \relative {
\clef "bass"
- r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
+ r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
-upper = \relative a' {
+upper = \relative {
\clef "treble"
\global
- r4 <a d fis>2 <a e' a>4 |
+ r4 <a' d fis>2 <a e' a>4 |
<d fis d'>4. <d fis d'>8 <a d a'>2 |
<g cis g'>4 <a d fis> <a cis e>2 |
}
-lower = \relative c, {
+lower = \relative {
\clef "bass"
\global
- <d d'>4 <d d'>2 <cis cis'>4 |
+ <d, d'>4 <d d'>2 <cis cis'>4 |
<b b'>4. <b' b'>8 <fis fis'>2 |
<e e'>4 <d d'> <a' a'>2 |
}
composer = "J S Bach"
}
keyTime = { \key c \minor \time 4/4 }
-ManualOneVoiceOneMusic = \relative g' {
- g4 g f ees |
+ManualOneVoiceOneMusic = \relative {
+ g'4 g f ees |
d2 c |
}
-ManualOneVoiceTwoMusic = \relative c' {
- ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+ManualOneVoiceTwoMusic = \relative {
+ ees'16 d ees8~ 16 f ees d c8 d~ d c~ |
8 c4 b8 c8. g16 c b c d |
}
-ManualTwoMusic = \relative c' {
- c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+ManualTwoMusic = \relative {
+ c'16 b c8~ 16 b c g a8 g~ 16 g aes ees |
f16 ees f d g aes g f ees d ees8~ 16 f ees d |
}
-PedalOrganMusic = \relative c {
+PedalOrganMusic = \relative {
r8 c16 d ees d ees8~ 16 a, b g c b c8 |
r16 g ees f g f g8 c,2 |
}
By this point, you've seen this kind of thing:
@lilypond[quote,verbatim,ragged-right]
-hornNotes = \relative c'' { c4 b dis c }
+hornNotes = \relative { c''4 b dis c }
\score {
{
You may even realize that this could be useful in minimalist music:
@lilypond[quote,verbatim,ragged-right]
-fragmentA = \relative c'' { a4 a8. b16 }
-fragmentB = \relative c'' { a8. gis16 ees4 }
+fragmentA = \relative { a'4 a8. b16 }
+fragmentB = \relative { a'8. gis16 ees4 }
violin = \new Staff {
\fragmentA \fragmentA |
However, you can also use these variables (also known as
macros, or user-defined commands) for tweaks:
-@c TODO Avoid padtext - not needed with skylining
@lilypond[quote,verbatim,ragged-right]
dolce = \markup { \italic \bold dolce }
-padText = { \once \override TextScript.padding = #5.0 }
+centreText = { \once \override TextScript.self-alignment-X = #CENTER }
+
fthenp =_\markup {
\dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
}
-violin = \relative c'' {
+violin = \relative {
\repeat volta 2 {
- c4._\dolce b8 a8 g a b |
- \padText
- c4.^"hi there!" d8 e' f g d |
- c,4.\fthenp b8 c4 c-. |
+ c''4._\dolce b8 a8 g a b |
+ \centreText
+ c4.^"hi there!" d8 e f g d |
+ c4.\fthenp b8 c4 c-. |
}
}
{
\violin
}
- \layout { ragged-right = ##t }
}
@end lilypond
the last line.
@example
-violin = \relative c'' @{
+violin = \relative @{
\repeat volta 2 @{
- c4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
- \once \override TextScript.padding = #5.0
- c4.^"hi there!" d8 e' f g d |
- c,4.\markup @{
+ c''4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
+ \once \override TextScript.self-alignment-X = #CENTER
+ c4.^"hi there!" d8 e f g d |
+ c4._\markup @{
\dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p
@}
b8 c4 c-. |
@end example
So far we've seen static substitution -- when LilyPond
-sees @code{\padText}, it replaces it with the stuff that
+sees @code{\centreText}, it replaces it with the stuff that
we've defined it to be (ie the stuff to the right of
-@code{padtext=}).
+@code{centreText=}).
LilyPond can handle non-static substitution, too (you
can think of these as functions).
@lilypond[quote,verbatim,ragged-right]
padText =
#(define-music-function
- (parser location padding)
+ (padding)
(number?)
#{
\once \override TextScript.padding = #padding
#})
-\relative c'' {
- c4^"piu mosso" b a b
+\relative {
+ c''4^"piu mosso" b a b
\padText #1.8
c4^"piu mosso" b a b
\padText #2.6
of a horn/@/bassoon duo
@example
-hornNotes = \relative c @{
+hornNotes = \relative @{
\time 2/4
r4 f8 a | cis4 f | e4 d |
@}
in the following output
@lilypond[quote,ragged-right]
-\transpose f c' \relative c {
+\transpose f c' \relative {
\time 2/4
r4 f8 a | cis4 f | e4 d |
}
R2*3
@end example
-When printing the part, multi-rests
-must be condensed. This is done by setting a run-time variable
+When printing the part, multi-measure rests must be compressed. There
+is a music function available to do this:
@example
-\set Score.skipBars = ##t
+\compressMMRests @{ ... @}
@end example
-@noindent
-This command sets the property @code{skipBars} in the
-@code{Score} context to true (@code{##t}). Prepending the rest and
-this option to the music above, leads to the following result
+Applying this to @code{hornNotes} gives:
@lilypond[quote,ragged-right]
-\transpose f c' \relative c {
+\compressMMRests \transpose f c' \relative {
\time 2/4
- \set Score.skipBars = ##t
R2*3 |
r4 f8 a | cis4 f | e4 d |
}
leading to
@lilypond[quote,ragged-right]
-\relative c <<
+\relative <<
\new Staff {
\clef "treble"
\time 2/4
>>
@end lilypond
+@seealso
+Learning Manual:
+@ref{Organizing pieces with variables}.
+Notation Reference:
+@ruser{Transpose},
+@ruser{Writing parts},
+@ruser{Full measure rests},
+@ruser{Including LilyPond files}.