@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
\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"
\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
@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
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
@example
\documentclass[]@{article@}
+\usepackage@{graphics@}
\begin@{document@}
Normal LaTeX text.