+@c -*- coding: latin-1; mode: texinfo; -*-
@node Example templates
@chapter Example templates
already set up for you. Just add notes, run LilyPond, and enjoy
beautiful printed scores!
-Note that all templates contain a @code{\version "x.y.z"} string. We
-highly recommend that you always include the @code{\version}, no matter
-how small your file is. Speaking from personal experience, it's
-quite frustrating to try to remember which version of LilyPond you were
-using a few years ago. @code{convert-ly} requires you to declare
-which version of LilyPond you used.
-
+@c bad node name for ancient notation to avoid confict
@menu
+* Suggestions for writing LilyPond files::
* Single staff::
* Piano templates::
* Small ensembles::
+* Vocal ensembles::
+* Ancient notation templates::
* Jazz combo::
+* Other templates::
+* Lilypond-book templates::
@end menu
-@c more sections to come soon.
-@c make a note about the \score{} stuff? It might make more sense
-@c to note that in the tutorial, and reserve this section purely
-@c for templates. -GP
+@c TODO explain \score{} ? Maybe add a note to the tutorial?
+
+@node Suggestions for writing LilyPond files
+@section Suggestions for writing LilyPond files
+
+Now you're ready to begin writing larger LilyPond files -- not just the
+little examples in the tutorial, but whole pieces. But how should you
+go about doing it?
+
+The best answer is ``however you want to do it.'' As long as LilyPond
+can understand your files and produces the output that you want, it
+doesn't matter what your files look like. That said, sometimes we
+make mistakes when writing files. If LilyPond can't understand your
+files, or produces output that you don't like, how do you fix the
+problem?
+
+Here are a few suggestions that can help you to avoid or fix
+problems:
+
+@itemize @bullet
+@item Include @code{\version} numbers in every file. Note that all
+templates contain a @code{\version "2.4.0"} string. We
+highly recommend that you always include the @code{\version}, no matter
+how small your file is. Speaking from personal experience, it's
+quite frustrating to try to remember which version of LilyPond you were
+using a few years ago. @code{convert-ly} requires you to declare
+which version of LilyPond you used.
+
+@item Include checks: See @ref{Bar check} and @ref{Octave check}. If you
+include checks every so often, then if you make a mistake, you can pinpoint
+it quicker. How often is ``every so often''? It depends on the complexity
+of the music. For very simple music, perhaps just once or twice. For
+very complex music, every bar.
+@item One bar per line. If there is anything complicated, either in the music
+itself or in the output you desire, it's often good to write only one bar
+per line. Saving screen space by cramming eight bars per line just isn't
+worth it if you have to `debug' your files.
+
+@item Comment your files, with either bar numbers (every so often) or
+references to musical themes (``second theme in violins'', ``fourth
+variation''). You may not need it when you're writing the piece for
+the first time, but if you want to go back and change something two
+or three years later, you won't know how your file is structured if you
+don't comment the file.
+
+@end itemize
@node Single staff
@section Single staff
instrument or a melodic fragment. Cut and paste this into a file,
add notes, and you're finished!
-@lilypond[verbatim,raggedright]
-
-\version "2.3.11"
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
melody = \relative c' {
-\clef treble
-\key c \major
-\time 4/4
+ \clef treble
+ \key c \major
+ \time 4/4
- a4 b c d
+ a4 b c d
}
-\score{
- \new Staff \melody
- \paper { }
- \midi { \tempo 4=60 }
+\score {
+ \new Staff \melody
+ \layout { }
+ \midi { \tempo 4=60 }
}
-
@end lilypond
@subsection Notes and lyrics
automatic beaming, you'll have to change or comment out the relevant
line.
-@lilypond[verbatim,raggedright]
-
-\version "2.3.11"
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
melody = \relative c' {
-\clef treble
-\key c \major
-\time 4/4
+ \clef treble
+ \key c \major
+ \time 4/4
- a4 b c d
+ a4 b c d
}
-text = \lyrics {
- Aaa Bee Cee Dee
+text = \lyricmode {
+ Aaa Bee Cee Dee
}
\score{
- <<
- \context Voice = one {
- \autoBeamOff
- \melody
+ <<
+ \context Voice = one {
+ \autoBeamOff
+ \melody
}
- \lyricsto "one" \new Lyrics \text
- >>
- \paper { }
- \midi { \tempo 4=60 }
+ \lyricsto "one" \new Lyrics \text
+ >>
+ \layout { }
+ \midi { \tempo 4=60 }
}
-
@end lilypond
@subsection Notes and chords
-Want to prepare a lead sheet with a melody and chords? Look no farther!
+Want to prepare a lead sheet with a melody and chords? Look no further!
-@lilypond[verbatim,raggedright]
-
-\version "2.3.11"
-melody = \relative c' {
-\clef treble
-\key c \major
-\time 4/4
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
+melody = \relative c' {
+ \clef treble
+ \key c \major
+ \time 4/4
- f4 e8[ c] d4 g |
- a2 ~ a2 |
+ f4 e8[ c] d4 g |
+ a2 ~ a2 |
}
-harmonies = \chords {
- c4:m f:min7 g:maj c:aug d2:dim b:sus
+harmonies = \chordmode {
+ c4:m f:min7 g:maj c:aug d2:dim b:sus
}
\score {
<<
- \context ChordNames {
- \set chordChanges = ##t
- \harmonies
- }
- \context Staff = one \melody
- >>
+ \context ChordNames {
+ \set chordChanges = ##t
+ \harmonies
+ }
+ \context Staff = one \melody
+ >>
- \paper{ }
- \midi { \tempo 4=60}
+ \layout{ }
+ \midi { \tempo 4=60}
}
-
@end lilypond
@subsection Notes, lyrics, and chords.
This template allows you to prepare a song with melody, words, and chords.
-@lilypond[verbatim,raggedright]
-
-\version "2.3.11"
-melody = \relative c' {
-\clef treble
-\key c \major
-\time 4/4
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
+melody = \relative c' {
+ \clef treble
+ \key c \major
+ \time 4/4
- a b c d
+ a b c d
}
-text = \lyrics {
- Aaa Bee Cee Dee
+text = \lyricmode {
+ Aaa Bee Cee Dee
}
-harmonies = \chords {
- a2 c2
+harmonies = \chordmode {
+ a2 c2
}
\score {
- <<
- \context ChordNames {
- \set chordChanges = ##t
- \harmonies
- }
- \context Voice = one {
- \autoBeamOff
- \melody
- }
- \lyricsto "one" \new Lyrics \text
- >>
- \paper { }
- \midi { \tempo 4=60}
+ <<
+ \context ChordNames {
+ \set chordChanges = ##t
+ \harmonies
+ }
+ \context Voice = one {
+ \autoBeamOff
+ \melody
+ }
+ \lyricsto "one" \new Lyrics \text
+ >>
+ \layout { }
+ \midi { \tempo 4=60 }
}
-
@end lilypond
@node Piano templates
@section Piano templates
@subsection Solo piano
-Here's a simple piano staff.
+Here is a simple piano staff.
-@lilypond[verbatim,raggedright]
-
-\version "2.3.11"
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
upper = \relative c'' {
-\clef treble
-\key c \major
-\time 4/4
+ \clef treble
+ \key c \major
+ \time 4/4
- a b c d
+ a b c d
}
lower = \relative c {
-\clef bass
-\key c \major
-\time 4/4
+ \clef bass
+ \key c \major
+ \time 4/4
- a2 c
+ a2 c
}
\score {
- \context PianoStaff <<
- \set PianoStaff.instrument = "Piano "
- \context Staff = upper \upper
- \context Staff = lower \lower
- >>
- \paper { }
- \midi { \tempo 4=60 }
+ \context PianoStaff <<
+ \set PianoStaff.instrument = "Piano "
+ \context Staff = upper \upper
+ \context Staff = lower \lower
+ >>
+ \layout { }
+ \midi { \tempo 4=60 }
}
-
@end lilypond
@subsection Piano and melody with lyrics
-Here's a typical song format: one staff with the melody and lyrics, with
+Here is a typical song format: one staff with the melody and lyrics, with
piano accompaniment underneath.
-@lilypond[verbatim,raggedright]
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
+melody = \relative c'' {
+ \clef treble
+ \key c \major
+ \time 4/4
-\version "2.3.11"
-melody = \relative c'' {
-\clef treble
-\key c \major
-\time 4/4
-
- a b c d
+ a b c d
}
-text = \lyrics {
- Aaa Bee Cee Dee
+text = \lyricmode {
+ Aaa Bee Cee Dee
}
upper = \relative c'' {
-\clef treble
-\key c \major
-\time 4/4
+ \clef treble
+ \key c \major
+ \time 4/4
- a b c d
+ a b c d
}
lower = \relative c {
-\clef bass
-\key c \major
-\time 4/4
+ \clef bass
+ \key c \major
+ \time 4/4
- a2 c
+ a2 c
}
\score {
- <<
+ <<
\context Voice = mel {
- \autoBeamOff
- \melody
+ \autoBeamOff
+ \melody
}
\lyricsto mel \new Lyrics \text
\context PianoStaff <<
- \context Staff = upper \upper
- \context Staff = lower \lower
+ \context Staff = upper \upper
+ \context Staff = lower \lower
>>
- >>
- \paper {
+ >>
+ \layout {
\context { \RemoveEmptyStaffContext }
- }
- \midi { \tempo 4=60}
+ }
+ \midi { \tempo 4=60 }
+}
+@end lilypond
+
+
+@subsection Piano centered lyrics
+
+Instead of having a full staff for the melody and lyrics, you can place
+the lyrics between the piano staff (and omit the separate melody staff).
+
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
+upper = \relative c'' {
+ \clef treble
+ \key c \major
+ \time 4/4
+
+ a b c d
+}
+
+lower = \relative c {
+ \clef bass
+ \key c \major
+ \time 4/4
+
+ a2 c
+}
+
+text = \lyricmode {
+ Aaa Bee Cee Dee
+}
+
+\score {
+ \context GrandStaff <<
+ \context Staff = upper {
+ \context Voice = singer \upper }
+ \lyricsto "singer" \new Lyrics \text
+ \context Staff = lower <<
+ \clef bass
+ \lower
+ >>
+ >>
+ \layout {
+ \context { \GrandStaff \accepts "Lyrics" }
+ \context { \Lyrics \consists "Bar_engraver" }
+ }
+ \midi { \tempo 4=60 }
+}
+@end lilypond
+
+
+@subsection Piano centered dynamics
+
+Many piano scores have the dynamics centered between the two
+staffs. This requires a bit of tweaking to implement, but
+since the template is right here, you don't have to do the
+tweaking yourself.
+
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
+upper = \relative c'' {
+ \clef treble
+ \key c \major
+ \time 4/4
+
+ a b c d
}
+lower = \relative c {
+ \clef bass
+ \key c \major
+ \time 4/4
+
+ a2 c
+}
+
+dynamics = {
+ s2\fff\> s4
+ s\!\pp
+}
+
+pedal = {
+ s2\sustainDown s2\sustainUp
+}
+
+\score {
+ \context PianoStaff <<
+ \context Staff=upper \upper
+ \context Dynamics=dynamics \dynamics
+ \context Staff=lower <<
+ \clef bass
+ \lower
+ >>
+ \context Dynamics=pedal \pedal
+ >>
+ \layout {
+ \context {
+ \type "Engraver_group_engraver"
+ \name Dynamics
+ \alias Voice % So that \cresc works, for example.
+ \consists "Output_property_engraver"
+
+ minimumVerticalExtent = #'(-1 . 1)
+ pedalSustainStrings = #'("Ped." "*Ped." "*")
+ pedalUnaCordaStrings = #'("una corda" "" "tre corde")
+
+ \consists "Piano_pedal_engraver"
+ \consists "Script_engraver"
+ \consists "Dynamic_engraver"
+ \consists "Text_engraver"
+
+ \override TextScript #'font-size = #2
+ \override TextScript #'font-shape = #'italic
+ \override DynamicText #'extra-offset = #'(0 . 2.5)
+ \override Hairpin #'extra-offset = #'(0 . 2.5)
+
+ \consists "Skip_event_swallow_translator"
+
+ \consists "Axis_group_engraver"
+ }
+ \context {
+ \PianoStaff
+ \accepts Dynamics
+ \override VerticalAlignment #'forced-distance = #7
+ }
+ }
+ \midi {
+ \context {
+ \type "Performer_group_performer"
+ \name Dynamics
+ \consists "Piano_pedal_performer"
+ \consists "Span_dynamic_performer"
+ \consists "Dynamic_performer"
+ }
+ \context {
+ \PianoStaff
+ \accepts Dynamics
+ }
+ }
+}
@end lilypond
+
@node Small ensembles
@section Small ensembles
+@subsection String quartet
+
+This template demonstrates a string quartet. It also uses a @code{\global}
+section for time and key signatures.
+
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
+global = {
+ \time 4/4
+ \key c \major
+}
+
+violinOne = \relative c''{
+ \set Staff.instrument = "Violin 1 "
+ c2 d
+ e1
+}
+
+violinTwo = \relative c''{
+ \set Staff.instrument = "Violin 2 "
+ g2 g
+ g1
+}
+
+viola = \relative c'{
+ \set Staff.instrument = "Viola "
+ \clef alto
+ e2 d
+ c1
+}
+
+cello = \relative c'{
+ \set Staff.instrument = "Cello "
+ \clef bass
+ c2 g
+ c,1
+}
+
+\score {
+ \new StaffGroup <<
+ \new Staff << \global \violinOne >>
+ \new Staff << \global \violinTwo >>
+ \new Staff << \global \viola >>
+ \new Staff << \global \cello >>
+ >>
+ \layout { }
+ \midi { \tempo 4=60}
+}
+@end lilypond
+
+
+@node Vocal ensembles
+@section Vocal ensembles
+
@subsection SATB vocal score
-Here's a standard four-part SATB vocal score. With larger ensembles,
+Here is a standard four-part SATB vocal score. With larger ensembles,
it's often useful to include a section which is included in all
parts. For example, the time signature and key signatures are almost
always the same for all parts.
-@lilypond[verbatim,raggedright]
-
-\version "2.3.11"
+@lilypond[quote,verbatim,raggedright]
+\version "2.4.0"
global = {
-\key c \major
-\time 3/4
+ \key c \major
+ \time 4/4
}
sopMusic = \relative c'' {
-c4 c c8[( b)] c4
+ c4 c c8[( b)] c4
+}
+sopWords = \lyricmode {
+ hi hi hi hi
}
-sopWords = \lyrics { hi4 hi hi hi }
altoMusic = \relative c' {
-e4 f d e
+ e4 f d e
+}
+altoWords =\lyricmode {
+ ha ha ha ha
}
-altoWords =\lyrics { ha4 ha ha ha }
tenorMusic = \relative c' {
-g4 a f g
+ g4 a f g
+}
+tenorWords = \lyricmode {
+ hu hu hu hu
}
-tenorWords = \lyrics { hu4 hu hu hu }
bassMusic = \relative c {
-c4 c g c
-}
-bassWords = \lyrics { ho4 ho ho ho }
-
-\score {
- \context StaffGroup <<
- \context Lyrics = sopranos { s1 }
- \context Staff = women <<
- \context Voice = sopranos { \voiceOne << \global \sopMusic >> }
- \context Voice = altos { \voiceTwo << \global \altoMusic >> }
- >>
- \context Lyrics = altos { s1 }
- \context Lyrics = tenors { s1 }
- \context Staff = men <<
- \clef bass
- \context Voice = tenors { \voiceOne <<\global \tenorMusic >> }
- \context Voice = basses { \voiceTwo <<\global \bassMusic >> }
- >>
- \context Lyrics = basses { s1 }
-
-
- \context Lyrics = sopranos \lyricsto sopranos \sopWords
- \context Lyrics = altos \lyricsto altos \altoWords
- \context Lyrics = tenors \lyricsto tenors \tenorWords
- \context Lyrics = basses \lyricsto basses \bassWords
-
- >>
- \paper {
- \context {
+ c4 c g c
+}
+bassWords = \lyricmode {
+ ho ho ho ho
+}
- % a little smaller so lyrics can be closer to the staff.
- \Staff
- minimumVerticalExtent = #'(-3 . 3)
- }
+\score {
+ \context ChoirStaff <<
+ \context Lyrics = sopranos { s1 }
+ \context Staff = women <<
+ \context Voice =
+ sopranos { \voiceOne << \global \sopMusic >> }
+ \context Voice =
+ altos { \voiceTwo << \global \altoMusic >> }
+ >>
+ \context Lyrics = altos { s1 }
+ \context Lyrics = tenors { s1 }
+ \context Staff = men <<
+ \clef bass
+ \context Voice =
+ tenors { \voiceOne <<\global \tenorMusic >> }
+ \context Voice =
+ basses { \voiceTwo <<\global \bassMusic >> }
+ >>
+ \context Lyrics = basses { s1 }
+ \context Lyrics = sopranos \lyricsto sopranos \sopWords
+ \context Lyrics = altos \lyricsto altos \altoWords
+ \context Lyrics = tenors \lyricsto tenors \tenorWords
+ \context Lyrics = basses \lyricsto basses \bassWords
+ >>
+
+ \layout {
+ \context {
+ % a little smaller so lyrics
+ % can be closer to the staff
+ \Staff minimumVerticalExtent = #'(-3 . 3)
+ }
+ }
+}
+@end lilypond
+
+
+@c bad node name to avoid node name confict
+@node Ancient notation templates
+@section Ancient notation templates
+
+@subsection Transcription of mensural music
+
+When transcribing mensural music, an incipit at the beginning of the
+piece is useful to indicate the original key and tempo. While today
+musicians are used to bar lines in order to faster recognize rhythmic
+patterns, bar lines where not yet invented during the period of
+mensural music; in fact, the meter often changed after every few
+notes. As a compromise, bar lines are often printed between the
+staves rather than on the staves.
+
+@lilypond[quote,verbatim,linewidth=11.0\cm]
+\version "2.4.0"
+
+global = {
+ % incipit
+ \once \override Score.SystemStartBracket #'transparent = ##t
+ \key f \major
+ \time 2/2
+ \once \override Staff.TimeSignature #'style = #'neomensural
+ \override Voice.NoteHead #'style = #'neomensural
+ \override Voice.Rest #'style = #'neomensural
+ \set Staff.printKeyCancellation = ##f
+ \cadenzaOn % turn off bar lines
+ \skip 1*10
+ \once \override Staff.BarLine #'transparent = ##f
+ \bar "||"
+ \skip 1*1 % need this extra \skip such that clef change comes
+ % after bar line
+ \bar ""
+
+ % main
+ \cadenzaOff % turn bar lines on again
+ \once \override Staff.Clef #'full-size-change = ##t
+ \set Staff.forceClef = ##t
+ \key g \major
+ \time 4/4
+ \override Voice.NoteHead #'style = #'default
+ \override Voice.Rest #'style = #'default
+
+ % FIXME: setting printKeyCancellation back to #t must not
+ % occur in the first bar after the incipit. Dto. for forceClef.
+ % Therefore, we need an extra \skip.
+ \skip 1*1
+ \set Staff.printKeyCancellation = ##t
+ \set Staff.forceClef = ##f
+
+ \skip 1*5
+
+ % last bar contains a brevis (i.e., spans 2 bars);
+ % therefore do not draw this particular bar
+ \cadenzaOn
+ \skip 1*2
+ \cadenzaOff
+
+ % let finis bar go through all staves
+ \override Staff.BarLine #'transparent = ##f
+
+ % finis bar
+ \bar "|."
+}
+
+discantusNotes = {
+ \transpose c' c'' {
+ \set Staff.instrument = "Discantus "
+
+ % incipit
+ \clef "neomensural-c1"
+ c'1. s2 % two bars
+ \skip 1*8 % eight bars
+ \skip 1*1 % one bar
+
+ % main
+ \clef "treble"
+ d'2. d'4 |
+ b e' d'2 |
+ c'4 e'4.( d'8 c' b |
+ a4) b a2 |
+ b4.( c'8 d'4) c'4 |
+ \once \override NoteHead #'transparent = ##t c'1 |
+ b\breve |
}
}
-@end lilypond
+discantusLyrics = \lyricmode {
+ % incipit
+ IV-
+
+ % main
+ Ju -- bi -- |
+ la -- te De -- |
+ o, om --
+ nis ter -- |
+ ra, __ om- |
+ "..." |
+ -us. |
+}
-@subsection String quartet
+altusNotes = {
+ \transpose c' c'' {
+ \set Staff.instrument = "Altus "
+
+ % incipit
+ \clef "neomensural-c3"
+ r1 % one bar
+ f1. s2 % two bars
+ \skip 1*7 % seven bars
+ \skip 1*1 % one bar
+
+ % main
+ \clef "treble"
+ r2 g2. e4 fis g | % two bars
+ a2 g4 e |
+ fis g4.( fis16 e fis4) |
+ g1 |
+ \once \override NoteHead #'transparent = ##t g1 |
+ g\breve |
+ }
+}
+
+altusLyrics = \lyricmode {
+ % incipit
+ IV-
-TODO
+ % main
+ Ju -- bi -- la -- te | % two bars
+ De -- o, om -- |
+ nis ter -- ra, |
+ "..." |
+ -us. |
+}
+
+tenorNotes = {
+ \transpose c' c' {
+ \set Staff.instrument = "Tenor "
+
+ % incipit
+ \clef "neomensural-c4"
+ r\longa % four bars
+ r\breve % two bars
+ r1 % one bar
+ c'1. s2 % two bars
+ \skip 1*1 % one bar
+ \skip 1*1 % one bar
+
+ % main
+ \clef "treble_8"
+ R1 |
+ R1 |
+ R1 |
+ r2 d'2. d'4 b e' | % two bars
+ \once \override NoteHead #'transparent = ##t e'1 |
+ d'\breve |
+ }
+}
+
+tenorLyrics = \lyricmode {
+ % incipit
+ IV-
+
+ % main
+ Ju -- bi -- la -- te | % two bars
+ "..." |
+ -us. |
+}
+
+bassusNotes = {
+ \transpose c' c' {
+ \set Staff.instrument = "Bassus "
+
+ % incipit
+ \clef "bass"
+ r\maxima % eight bars
+ f1. s2 % two bars
+ \skip 1*1 % one bar
+
+ % main
+ \clef "bass"
+ R1 |
+ R1 |
+ R1 |
+ R1 |
+ g2. e4 |
+ \once \override NoteHead #'transparent = ##t e1 |
+ g\breve |
+ }
+}
+
+bassusLyrics = \lyricmode {
+ % incipit
+ IV-
+
+ % main
+ Ju -- bi- |
+ "..." |
+ -us. |
+}
+
+\score {
+ \context StaffGroup = choirStaff <<
+ \context Voice =
+ discantusNotes << \global \discantusNotes >>
+ \context Lyrics =
+ discantusLyrics \lyricsto discantusNotes { \discantusLyrics }
+ \context Voice =
+ altusNotes << \global \altusNotes >>
+ \context Lyrics =
+ altusLyrics \lyricsto altusNotes { \altusLyrics }
+ \context Voice =
+ tenorNotes << \global \tenorNotes >>
+ \context Lyrics =
+ tenorLyrics \lyricsto tenorNotes { \tenorLyrics }
+ \context Voice =
+ bassusNotes << \global \bassusNotes >>
+ \context Lyrics =
+ bassusLyrics \lyricsto bassusNotes { \bassusLyrics }
+ >>
+ \layout {
+ \context {
+ \Score
+ \override BarLine #'transparent = ##t
+ \remove "System_start_delimiter_engraver"
+ }
+ \context {
+ \Voice
+ \override Slur #'transparent = ##t
+ }
+ }
+}
+@end lilypond
-@c @lilypond[verbatim,raggedright]
-@c @end lilypond
@node Jazz combo
@section Jazz combo
This is a much more complicated template, for a jazz ensemble. Note that all
-instruments are notated @code{\key c \major}. This refers to the key in
+instruments are notated in @code{\key c \major}. This refers to the key in
concert pitch; LilyPond will automatically transpose the key if the music
is within a @code{\transpose} section.
-@c TODO must clean up this example.
+@c TODO must clean up this jazz combo example
@c - transpositions stated in names (ie "trumpet in Bb" or whatever)
@c - one global section, instead of "global" (time) and "key"
@c - does it need those wierd macros? sl, nsl, etc.
@c - maybe ask Amelie Zapf to clean it up, or whether I should just
@c make whatever changes I feel like.
-@lilypond[verbatim,raggedright]
+@c FIXME: produces a warning ; key change merge.
+@c The `linewidth' argument is for the \header.
-\version "2.3.11"
+@lilypond[quote,verbatim,raggedright,linewidth]
+\version "2.4.0"
\header {
- title = "Song"
- subtitle = "(tune)"
- composer = "Me"
- meter = "moderato"
- piece = "Swing"
- tagline = "LilyPond example file by Amelie Zapf, Berlin 07/07/2003"
- texidoc = "Jazz tune for combo (horns, guitar, piano, bass, drums)."
+ title = "Song"
+ subtitle = "(tune)"
+ composer = "Me"
+ meter = "moderato"
+ piece = "Swing"
+ tagline = "LilyPond example file by Amelie Zapf,
+ Berlin 07/07/2003"
+ texidoc = "Jazz tune for combo
+ (horns, guitar, piano, bass, drums)."
}
#(set-global-staff-size 16)
%%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%%
sl = {
- \override NoteHead #'style = #'slash
- \override Stem #'transparent = ##t
+ \override NoteHead #'style = #'slash
+ \override Stem #'transparent = ##t
}
nsl = {
- \revert NoteHead #'style
- \revert Stem #'transparent
+ \revert NoteHead #'style
+ \revert Stem #'transparent
}
-cr = \override NoteHead #'style = #'cross
+cr = \override NoteHead #'style = #'cross
ncr = \revert NoteHead #'style
%% insert chord name style stuff here.
-jzchords = { }
+jzchords = { }
%%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%%
-global = {
- \time 4/4
+global = {
+ \time 4/4
}
-Key = { \key c \major }
+Key = { \key c \major }
% ############ Horns ############
+
% ------ Trumpet ------
-trpt = \transpose c d \relative c'' {
- \Key
- c1 c c
+trpt = \transpose c d \relative c'' {
+ \Key
+ c1 c c
+}
+trpharmony = \transpose c' d {
+ \jzchords
}
-
-trpharmony = \transpose c' d { \jzchords }
trumpet = {
- \global
- \set Staff.instrument = #"Trumpet"
- \clef treble
- \context Staff <<
- \trpt
- >>
+ \global
+ \set Staff.instrument = #"Trumpet"
+ \clef treble
+ \context Staff <<
+ \trpt
+ >>
}
% ------ Alto Saxophone ------
alto = \transpose c a \relative c' {
- \Key
- c1 c c
+ \Key
+ c1 c c
+}
+altoharmony = \transpose c' a {
+ \jzchords
}
-
-altoharmony = \transpose c' a { \jzchords }
altosax = {
- \global
- \set Staff.instrument = #"Alto Sax"
- \clef treble
- \context Staff <<
- \alto
- >>
+ \global
+ \set Staff.instrument = #"Alto Sax"
+ \clef treble
+ \context Staff <<
+ \alto
+ >>
}
% ------ Baritone Saxophone ------
bari = \transpose c a' \relative c {
- \Key
- c1 c \sl d4^"Solo" d d d \nsl
+ \Key
+ c1 c \sl d4^"Solo" d d d \nsl
+}
+bariharmony = \transpose c' a \chordmode {
+ \jzchords s1 s d2:maj e:m7
}
-
-bariharmony = \transpose c' a \chords { \jzchords s1 s d2:maj e:m7 }
barisax = {
- \global
- \set Staff.instrument = #"Bari Sax"
- \clef treble
- \context Staff <<
- \bari
- >>
+ \global
+ \set Staff.instrument = #"Bari Sax"
+ \clef treble
+ \context Staff <<
+ \bari
+ >>
}
+
% ------ Trombone ------
-tbone = \relative c {
- \Key
- c1 c c
+tbone = \relative c {
+ \Key
+ c1 c c
+}
+tboneharmony = \chordmode {
+ \jzchords
}
-
-tboneharmony = \chords { \jzchords }
trombone = {
- \global
- \set Staff.instrument = #"Trombone"
- \clef bass
- \context Staff <<
- \tbone
- >>
+ \global
+ \set Staff.instrument = #"Trombone"
+ \clef bass
+ \context Staff <<
+ \tbone
+ >>
}
+
% ############ Rhythm Section #############
+
% ------ Guitar ------
-gtr = \relative c'' {
- \Key
- c1 \sl b4 b b b \nsl c1
+gtr = \relative c'' {
+ \Key
+ c1 \sl b4 b b b \nsl c1
}
-
-gtrharmony = \chords { \jzchords
- s1 c2:min7+ d2:maj9
+gtrharmony = \chordmode {
+ \jzchords
+ s1 c2:min7+ d2:maj9
}
-
guitar = {
- \global
- \set Staff.instrument = #"Guitar"
- \clef treble
- \context Staff <<
- \gtr
- >>
+ \global
+ \set Staff.instrument = #"Guitar"
+ \clef treble
+ \context Staff <<
+ \gtr
+ >>
}
%% ------ Piano ------
-rhUpper = \relative c'' {
- \voiceOne
- \Key
- c1 c c
+rhUpper = \relative c'' {
+ \voiceOne
+ \Key
+ c1 c c
}
-
-rhLower = \relative c' {
- \voiceTwo
- \Key
- e1 e e
+rhLower = \relative c' {
+ \voiceTwo
+ \Key
+ e1 e e
}
-lhUpper = \relative c' {
- \voiceOne
- \Key
- g1 g g
+lhUpper = \relative c' {
+ \voiceOne
+ \Key
+ g1 g g
}
-
-lhLower = \relative c {
- \voiceTwo
- \Key
- c1 c c
+lhLower = \relative c {
+ \voiceTwo
+ \Key
+ c1 c c
}
PianoRH = {
- \clef treble
- \global
- \set Staff.midiInstrument = "acoustic grand"
- \context Staff <<
- \context Voice = one \rhUpper
- \context Voice = two \rhLower
- >>
+ \clef treble
+ \global
+ \set Staff.midiInstrument = "acoustic grand"
+ \context Staff <<
+ \context Voice = one \rhUpper
+ \context Voice = two \rhLower
+ >>
}
-
PianoLH = {
- \clef bass
- \global
- \set Staff.midiInstrument = "acoustic grand"
- \context Staff <<
- \context Voice = one \lhUpper
- \context Voice = two \lhLower
- >>
+ \clef bass
+ \global
+ \set Staff.midiInstrument = "acoustic grand"
+ \context Staff <<
+ \context Voice = one \lhUpper
+ \context Voice = two \lhLower
+ >>
}
piano = {
- \context PianoStaff <<
- \set PianoStaff.instrument = #"Piano"
- \context Staff = upper \PianoRH
- \context Staff = lower \PianoLH
- >>
+ \context PianoStaff <<
+ \set PianoStaff.instrument = #"Piano"
+ \context Staff = upper \PianoRH
+ \context Staff = lower \PianoLH
+ >>
}
% ------ Bass Guitar ------
-bass = \relative c {
- \Key
- c1 c c
+Bass = \relative c {
+ \Key
+ c1 c c
}
-
bass = {
- \global
- \set Staff.instrument = #"Bass"
- \clef bass
- \context Staff <<
- \bass
- >>
+ \global
+ \set Staff.instrument = #"Bass"
+ \clef bass
+ \context Staff <<
+ \Bass
+ >>
}
- % ------ Drums ------
-
-up = \drums {
- hh4 <hh sn>4 hh <hh sn> hh <hh sn>4
- hh4 <hh sn>4
- hh4 <hh sn>4
- hh4 <hh sn>4
+% ------ Drums ------
+up = \drummode {
+ hh4 <hh sn>4 hh <hh sn> hh <hh sn>4
+ hh4 <hh sn>4
+ hh4 <hh sn>4
+ hh4 <hh sn>4
}
-down = \drums {
- bd4 s bd s bd s bd s bd s bd s
+down = \drummode {
+ bd4 s bd s bd s bd s bd s bd s
}
drumContents = {
- \global
- <<
- \set DrumStaff.instrument = #"Drums"
- \new DrumVoice { \voiceOne \up }
- \new DrumVoice { \voiceTwo \down }
- >>
+ \global
+ <<
+ \set DrumStaff.instrument = #"Drums"
+ \new DrumVoice { \voiceOne \up }
+ \new DrumVoice { \voiceTwo \down }
+ >>
}
%%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%
\score {
-<<
- \context StaffGroup = horns <<
- \context Staff = trumpet \trumpet
-
- \context Staff = altosax \altosax
-
- \context ChordNames = barichords \bariharmony
-
- \context Staff = barisax \barisax
-
- \context Staff = trombone \trombone
- >>
-
- \context StaffGroup = rhythm <<
- \context ChordNames = chords \gtrharmony
- \context Staff = guitar \guitar
- \context PianoStaff = piano \piano
-
- \context Staff = bass \bass
-
- \new DrumStaff { \drumContents }
- >>
->>
- \paper {
- \context { \RemoveEmptyStaffContext }
- \context {
- \Score
- \override BarNumber #'padding = #3
- \override RehearsalMark #'padding = #2
- skipBars = ##t
- }
- }
- \midi { \tempo 4 = 75 }
+ <<
+ \context StaffGroup = horns <<
+ \context Staff = trumpet \trumpet
+ \context Staff = altosax \altosax
+ \context ChordNames = barichords \bariharmony
+ \context Staff = barisax \barisax
+ \context Staff = trombone \trombone
+ >>
+
+ \context StaffGroup = rhythm <<
+ \context ChordNames = chords \gtrharmony
+ \context Staff = guitar \guitar
+ \context PianoStaff = piano \piano
+ \context Staff = bass \bass
+ \new DrumStaff { \drumContents }
+ >>
+ >>
+
+ \layout {
+ \context { \RemoveEmptyStaffContext }
+ \context {
+ \Score
+ \override BarNumber #'padding = #3
+ \override RehearsalMark #'padding = #2
+ skipBars = ##t
+ }
+ }
+
+ \midi { \tempo 4 = 75 }
+}
+@end lilypond
+
+@node Other templates
+@section Other templates
+@subsection All headers
+
+This template displays all available headers. Some of them are only
+used in the Mutopia project; they don't affect the printed output at
+all. They are used if you want the piece to be listed with different
+information in the Mutopia database than you wish to have printed on the
+music. For example, Mutopia lists the composer of the famous D major
+violin concerto as TchaikovskyPI, whereas perhaps you wish to print
+"Petr Tchaikowski" on your music.
+
+@ The `linewidth' is for \header.
+@lilypond[quote,verbatim,raggedright,linewidth]
+\version "2.4.0"
+\header {
+ dedication = "dedication"
+ title = "Title"
+ subtitle = "Subtitle"
+ subsubtitle = "Subsubtitle"
+ composer = "Composer (xxxx-yyyy)"
+ opus = "Opus 0"
+ piece = "Piece I"
+ instrument = "Instrument"
+ arranger = "Arranger"
+ poet = "Poet"
+ texttranslator = "Translator"
+ copyright = "public domain"
+
+ % These are headers used by the Mutopia Project
+ % http://www.mutopiaproject.org/
+ mutopiatitle = ""
+ mutopiacomposer = ""
+ mutopiapoet = ""
+ mutopiainstrument = ""
+ date = "composer's dates"
+ source = "urtext "
+ maintainer = "your name here"
+ maintainerEmail = "your email here"
+ maintainerWeb = "your home page"
+ lastupdated = "2004/Aug/26"
+}
+
+\score {
+ \header {
+ piece = "piece1"
+ opus = "opus1"
+ }
+ { c'4 }
+}
+
+\score {
+ \header {
+ piece = "piece2"
+ opus = "opus2"
+ }
+ { c'4 }
+}
+@end lilypond
+
+@subsection Gregorian template
+
+This example demonstrates how to do modern transcriptions of Gregorian
+music. Gregorian music has no measure, no stems; it uses only half and
+quarter notes, and two types of barlines, a short one indicating a rest,
+and a second one indicating a breath mark.
+
+@lilypond[quote,verbatim,raggedright]
+barOne = { \once \override Staff.BarLine #'bar-size = #2
+ \bar "|" }
+barTwo = { \once \override Staff.BarLine #'extra-offset = #'(0 . 2)
+ \once \override Staff.BarLine #'bar-size = #2
+ \bar "|" }
+chant = \relative c' {
+ \set Score.timing = ##f
+ \override Staff.Stem #'transparent = ##t
+
+ f4 a2 \barTwo
+ g4 a2 f2 \barOne
+ g4( f) f( g) a2
+}
+\score {
+ \chant
+ \layout{ }
+ \midi { \tempo 4=60 }
}
+@end lilypond
+@subsection Bagpipe music
+
+Here is an example of bagpipe music. It demonstrates a big strength of
+LilyPond, compared to graphical score editors: in LilyPond, you can
+very easily reuse small segments of music without writing them out
+completely. This template defines a large number of small segments
+(@code{taor}, @code{grip}, @code{thrd}, etc), which can be reused easily.
+
+@c TODO - replace Bagpipe template with Andrew McNabb's work?
+
+@lilypond[quote,verbatim]
+taor = { \grace { g32[ d' g e'] } }
+grip = { \grace { g32[ b g ] } }
+thrd = { \grace { g32[ d' c'] } }
+birl = { \grace { g32[ a g] } }
+gstd = { \grace { g'32[ d' g] } }
+fgg = { \grace { f32[ g'32] } }
+dblb = { \grace { g'32[ b d'] } }
+dblc = { \grace { g'32[ c' d'] } }
+dble = { \grace { g'32[ e' f'] } }
+dblf = { \grace { g'32[ f' g'] } }
+dblg = { \grace { g'32[ f'] } }
+dbla = { \grace { a'32[ g'] } }
+lgg = { \grace { g32 } }
+lag = { \grace { a32 } }
+cg = { \grace { c'32 } }
+eg = { \grace { e'32 } }
+gg = { \grace { g'32 } }
+dg = { \grace { d'32 } }
+hag = { \grace { a'32 } }
+gefg = { \grace { g'32[ e' f'] } }
+efg = { \grace { e'32[ f'] } }
+gdcg = { \grace { g'32[ d' c'] } }
+gcdg = { \grace { g'32[ c' d'] } }
+
+\transpose a a' {
+ #(add-grace-property 'Voice 'Stem 'length 6)
+ \time 6/8 \partial 4
+ \tieUp
+ \slurUp
+
+ f'4 |
+ \gg f'4 e'8 \thrd d'4. |
+ \eg a4.(a4) d'8 |
+ \gg d'4 f'8 \dble e'4. ( | \noBreak
+ e'8) d'4 \gg d'4 e'8 |
+
+ \break
+ \time 9/8
+ \dblf f'2.( f'4) d'8 |
+ \time 6/8
+ \dblg g'4 a'8 \gg a'4. |
+ \thrd d'4.( d'4) \eg a8 |
+ \time 9/8
+ \dble e'4 \lag e'8 \gg e'16[ d'8. e'8] \gg f'4 g'8 |
+
+ \break
+ \time 6/8
+ \gg f'4 e'8 \thrd d'4. |
+ \eg a4.( a4) d'8 |
+ \dblg g'4 a'8 \gg a'4. |
+ \thrd d'4.( d'4) f'8 |
+
+ \break
+ \dblg g'4 e'8( e'8) \dblf f'8.[ e'16] |
+ \thrd d'4.( d'4) \cg d'8 |
+ \gg c'4 e'8 \thrd d'4.( |
+ d'4.) \gdcg d'4.
+}
@end lilypond
+@node Lilypond-book templates
+@section Lilypond-book templates
+
+These templates are for use with @code{lilypond-book}. If you're not familiar
+with this program, please refer to @ref{LilyPond-book}.
+
+@subsection LaTeX
+
+You can include LilyPond fragments in a LaTeX document.
+
+@example
+\documentclass[]@{article@}
+\begin@{document@}
+
+Normal LaTeX text.
+
+\begin@{lilypond@}
+\relative c'' @{
+a4 b c d
+@}
+\end@{lilypond@}
+
+More LaTeX text.
+
+\begin@{lilypond@}
+\relative c'' @{
+d4 c b a
+@}
+\end@{lilypond@}
+\end@{document@}
+@end example
+
+@subsection Texinfo
+
+You can include LilyPond fragments in Texinfo; in fact, this entire manual
+is written in Texinfo.
+
+@example
+\input texinfo
+@@node Top
+
+Texinfo text
+
+@@lilypond[verbatim,fragment,raggedright]
+a4 b c d
+@@end lilypond
+
+More Texinfo text
+
+@@lilypond[verbatim,fragment,raggedright]
+d4 c b a
+@@end lilypond
+@@bye
+@end example