-@c -*- coding: latin-1; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; -*-
@node Example templates
@chapter Example templates
@c bad node name for ancient notation to avoid confict
@menu
-* Suggestions for writing LilyPond files::
-* Single staff::
-* Piano templates::
-* String quartet::
-* Vocal ensembles::
-* Ancient notation templates::
-* Jazz combo::
-* Other templates::
-* Lilypond-book templates::
+* Single staff::
+* Piano templates::
+* String quartet::
+* Vocal ensembles::
+* Ancient notation templates::
+* Jazz combo::
+* Other templates::
+* Lilypond-book templates::
@end menu
-@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
add notes, and you're finished!
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
melody = \relative c' {
\clef treble
\key c \major
line.
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
melody = \relative c' {
\clef treble
\key c \major
Want to prepare a lead sheet with a melody and chords? Look no further!
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
melody = \relative c' {
\clef treble
\key c \major
This template allows you to prepare a song with melody, words, and chords.
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
melody = \relative c' {
\clef treble
\key c \major
Here is a simple piano staff.
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
upper = \relative c'' {
\clef treble
\key c \major
piano accompaniment underneath.
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
melody = \relative c'' {
\clef treble
\key c \major
the lyrics between the piano staff (and omit the separate melody staff).
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
upper = \relative c'' {
\clef treble
\key c \major
tweaking yourself.
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
upper = \relative c'' {
\clef treble
\key c \major
>>
\layout {
\context {
- \type "Engraver_group_engraver"
+ \type "Engraver_group"
\name Dynamics
\alias Voice % So that \cresc works, for example.
\consists "Output_property_engraver"
\override VerticalAlignment #'forced-distance = #7
}
}
+}
+\score {
+ \context PianoStaff <<
+ \context Staff=upper << \upper \dynamics >>
+ \context Staff=lower << \lower \dynamics >>
+ \context Dynamics=pedal \pedal
+ >>
\midi {
\context {
- \type "Performer_group_performer"
+ \type "Performer_group"
\name Dynamics
\consists "Piano_pedal_performer"
- \consists "Span_dynamic_performer"
- \consists "Dynamic_performer"
}
\context {
\PianoStaff
section for time and key signatures.
@lilypond[quote,verbatim,raggedright]
-version "2.4.0"
+\version "2.6.0"
global= {
\time 4/4
\key c \major
}
-Violinone = \new Voice { \relative c''{
+violinOne = \new Voice { \relative c''{
\set Staff.instrument = "Violin 1 "
c2 d e1
\bar "|." }}
-Violintwo = \new Voice { \relative c''{
+violinTwo = \new Voice { \relative c''{
\set Staff.instrument = "Violin 2 "
g2 f e1
\bar "|." }}
-Viola = \new Voice { \relative c' {
+viola = \new Voice { \relative c' {
\set Staff.instrument = "Viola "
\clef alto
e2 d c1
\bar "|." }}
-Cello = \new Voice { \relative c' {
+cello = \new Voice { \relative c' {
\set Staff.instrument = "Cello "
\clef bass
c2 b a1
-\bar "|."}} %**********************************
+\bar "|."}}
\score {
\new StaffGroup <<
}
@end lilypond
-
@subsection String quartet parts
The previous example produces a nice string quartet, but what if you
@verbatim
%%%%% piece.ly
-\version "2.4.0"
+\version "2.6.0"
global= {
\time 4/4
%%%%% score.ly
-\version "2.4.0"
+\version "2.6.0"
\include "piece.ly"
#(set-global-staff-size 14)
\score {
%%%%% vn1.ly
-\version "2.4.0"
+\version "2.6.0"
\include "piece.ly"
\score {
\keepWithTag #'vn1 \music
%%%%% vn2.ly
-\version "2.4.0"
+\version "2.6.0"
\include "piece.ly"
\score {
\keepWithTag #'vn2 \music
%%%%% vla.ly
-\version "2.4.0"
+\version "2.6.0"
\include "piece.ly"
\score {
\keepWithTag #'vla \music
%%%%% vlc.ly
-\version "2.4.0"
+\version "2.6.0"
\include "piece.ly"
\score {
\keepWithTag #'vlc \music
always the same for all parts.
@lilypond[quote,verbatim,raggedright]
-\version "2.4.0"
+\version "2.6.0"
global = {
\key c \major
\time 4/4
@end lilypond
+@subsection SATB vocal score and automatic piano reduction
+
+This template adds an automatic piano reduction to the SATB vocal
+score. This demonstrates one of the strengths of LilyPond -- you
+can use a music definition more than once. If you make any changes
+to the vocal notes (say, tenorMusic), then the changes will also
+apply to the piano reduction.
+
+@lilypond[quote,verbatim,raggedright]
+\version "2.6.0"
+global = {
+ \key c \major
+ \time 4/4
+}
+
+sopMusic = \relative c'' {
+ c4 c c8[( b)] c4
+}
+sopWords = \lyricmode {
+ hi hi hi hi
+}
+
+altoMusic = \relative c' {
+ e4 f d e
+}
+altoWords =\lyricmode {
+ ha ha ha ha
+}
+
+tenorMusic = \relative c' {
+ g4 a f g
+}
+tenorWords = \lyricmode {
+ hu hu hu hu
+}
+bassMusic = \relative c {
+ c4 c g c
+}
+bassWords = \lyricmode {
+ ho ho ho ho
+}
+
+\layout {
+ \context {
+ % a little smaller so lyrics
+ % can be closer to the staff
+ \Staff
+ minimumVerticalExtent = #'(-3 . 3)
+ }
+}
+
+<<
+ \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
+ >>
+ \new PianoStaff
+ <<
+ \new Staff <<
+ \set Staff.printPartCombineTexts = ##f
+ \partcombine
+ << \global \sopMusic >>
+ << \global \altoMusic >>
+ >>
+ \new Staff <<
+ \clef bass
+ \set Staff.printPartCombineTexts = ##f
+ \partcombine
+ << \global \tenorMusic >>
+ << \global \bassMusic >>
+ >>
+ >>
+>>
+@end lilypond
+
+
@c bad node name to avoid node name confict
@node Ancient notation templates
@section Ancient notation templates
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
+patterns, bar lines were 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"
+\version "2.6.0"
global = {
+ \set Score.skipBars = ##t
+
% incipit
\once \override Score.SystemStartBracket #'transparent = ##t
+ \override Score.SpacingSpanner #'spacing-increment = #1.0 % tight spacing
\key f \major
\time 2/2
\once \override Staff.TimeSignature #'style = #'neomensural
\bar ""
% main
+ \revert Score.SpacingSpanner #'spacing-increment % CHECK: no effect?
\cadenzaOff % turn bar lines on again
\once \override Staff.Clef #'full-size-change = ##t
\set Staff.forceClef = ##t
\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
+ \skip 1*7 % the actual music
% let finis bar go through all staves
\override Staff.BarLine #'transparent = ##f
@c The `linewidth' argument is for the \header.
@lilypond[quote,verbatim,raggedright,linewidth]
-\version "2.4.0"
+\version "2.6.0"
\header {
title = "Song"
subtitle = "(tune)"
@ The `linewidth' is for \header.
@lilypond[quote,verbatim,raggedright,linewidth]
-\version "2.4.0"
+\version "2.6.0"
\header {
dedication = "dedication"
title = "Title"
composer = "Composer (xxxx-yyyy)"
opus = "Opus 0"
piece = "Piece I"
+ meter = "meter"
instrument = "Instrument"
arranger = "Arranger"
poet = "Poet"
}
\score {
+ { c'4 }
\header {
piece = "piece1"
opus = "opus1"
}
- { c'4 }
}
\score {
+ { c'4 }
\header {
piece = "piece2"
opus = "opus2"
}
- { c'4 }
}
@end lilypond
}
@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?
-@c http://www.mcnabbs.org/andrew/linux/lilypond-ghb/
-
-@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
@example
\documentclass[]@{article@}
+
\begin@{document@}
Normal LaTeX text.