example serves as a useful starting place.
@funindex \book
-@funindex book
@funindex \score
-@funindex score
@cindex book
@cindex score
@end example
@funindex \header
-@funindex header
@funindex \layout
-@funindex layout
@funindex \midi
-@funindex midi
@cindex header
@cindex layout
@cindex midi
@cindex book block, implicit
@cindex implicit book block
@funindex \book
-@funindex book
You may code multiple @code{\score} blocks. Each will be
treated as a separate score, but they will be all combined into
@subsection Score is a (single) compound musical expression
@funindex \score
-@funindex score
@cindex score
@cindex contents of a score block
@cindex score block, contents of
@lilypond[quote,verbatim,ragged-right]
\relative {
\key g \major
- % Voice "1" Voice "2"
+ % Voice = "1" Voice = "2"
<< { g'4 fis8( g) a4 g } \\ { d4 d d d } >>
}
@end lilypond
@lilypond[quote,verbatim,ragged-right]
\relative {
\key d \minor
- % Voice "1" Voice "2"
+ % Voice = "1" Voice = "2"
<< { r4 g' g4. a8 } \\ { d,2 d4 g } >> |
<< { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> |
<< { a2. r4 } \\ { fis2. s4 } >> |
@lilypond[quote,verbatim,ragged-right]
<<
\key d \minor
- \relative { % Voice "1"
+ \relative { % Voice = "1"
r4 g' g4. a8 |
bes4 bes c bes |
a2. r4 |
} \\
- \relative { % Voice "2"
+ \relative { % Voice = "2"
d'2 d4 g |
g4 g g8( a) g4 |
fis2. s4 |
\new Staff \relative {
% Main voice
c'16 d e f
- % Voice "1" Voice "2" Voice "3"
+ % Voice = "1" Voice = "2" Voice = "3"
<< { g4 f e } \\ { r8 e4 d c8~ } >> |
<< { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
}
@subsection Explicitly instantiating voices
@funindex \voiceOne
-@funindex voiceOne
@funindex \voiceTwo
-@funindex voiceTwo
@funindex \voiceThree
-@funindex voiceThree
@funindex \voiceFour
-@funindex voiceFour
@funindex \oneVoice
-@funindex oneVoice
@funindex \new Voice
@cindex voice contexts, creating
@cindex collisions, notes
@cindex shift commands
@funindex \shiftOff
-@funindex shiftOff
@funindex \shiftOn
-@funindex shiftOn
@funindex \shiftOnn
-@funindex shiftOnn
@funindex \shiftOnnn
-@funindex shiftOnnn
Closely spaced notes in a chord, or notes occurring at the same
time in different voices, are arranged in two, occasionally more,
@funindex \new Lyrics
@funindex \lyricsto
-@funindex lyricsto
@funindex Lyrics
@cindex Lyrics context, creating
@cindex lyrics, linking to voice
@cindex lyrics and beaming
@cindex beaming and lyrics
@funindex \autoBeamOff
-@funindex autoBeamOff
The automatic beaming which LilyPond uses by default works well
for instrumental music, but not so well for music with lyrics,
@funindex \new ChoirStaff
@funindex ChoirStaff
@funindex \lyricmode
-@funindex lyricmode
@cindex vocal score structure
@cindex choir staff
@subsection Creating contexts
@funindex \new
-@funindex new
@cindex new contexts
@cindex creating contexts
@cindex contexts, creating
@cindex context properties, modifying
@cindex modifying context properties
@funindex \set
-@funindex set
@funindex \unset
-@funindex unset
Contexts are responsible for holding the values of a number of
context @emph{properties}. Many of them can be changed to
but occasionally it can be tricky. If the wrong context
is specified, no error message is produced, but the expected
action will not take place. For example, the
-@code{instrumentName} clearly lives in the @code{Staff} context, since
-it is the staff that is to be named.
-In this example the first staff is labeled, but not the second,
-because we omitted the context name.
+@code{clefGlyph} clearly lives in the @code{Staff} context, since
+it is the staff's clef glyph that is to be changed.
+In this example the first staff's clef is printed correctly, but not the
+second -- which prints the default treble clef instead of the
+expected bass (or F) clef -- because we omitted the context name.
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff \relative {
- \set Staff.instrumentName = #"Soprano"
+ \set Staff.clefGlyph = "clefs.C"
c''2 c
}
\new Staff \relative {
- \set instrumentName = #"Alto" % Wrong!
+ \set clefGlyph = "clefs.F" % Wrong!
d'2 d
}
>>
@end lilypond
Remember the default context name is @code{Voice}, so the second
-@code{\set} command set the property @code{instrumentName} in the
-@code{Voice} context to @qq{Alto}, but as LilyPond does not look
+@code{\set} command set the property @code{clefGlyph} in the
+@code{Voice} context to @code{clefs.F}, but as LilyPond does not look
for any such property in the @code{Voice} context, no
further action took place. This is not an error, and no error
message is logged in the log file.
Internals Reference: see @rinternals{Tunable context properties}, or
@rinternals{Contexts}.
-The @code{instrumentName} property will take effect only
+The @code{clefGlyph} property will take effect only
if it is set in the @code{Staff} context, but
some properties can be set in more than one context.
For example, the property @code{extraNatural} is by
@subsubheading Setting context properties with @code{\with}
@funindex \with
-@funindex with
@cindex context properties, setting with \with
The default value of context properties may be set at the time the
@cindex context properties, setting with \context
@funindex \context
-@funindex context
The values of context properties may be set in @emph{all} contexts
of a particular type, such as all @code{Staff} contexts, with a single
@cindex removing engravers
@funindex \consists
-@funindex consists
@funindex \remove
-@funindex remove
We have seen that contexts each contain several engravers, each
of which is responsible for producing a particular part of the
@subsubheading Changing all contexts of the same type
@funindex \layout
-@funindex layout
The examples above show how to remove or add engravers to
individual contexts. It is also possible to remove or add
\score {
<< % combine ChoirStaff and PianoStaff in parallel
\new ChoirStaff <<
- \new Staff = "sopranos" <<
- \set Staff.instrumentName = #"Soprano"
+ \new Staff = "sopranos"
+ \with { instrumentName = #"Soprano" }
+ <<
\new Voice = "sopranos" {
\global
\sopranoMusic
\new Lyrics \lyricsto "sopranos" {
\sopranoWords
}
- \new Staff = "altos" <<
- \set Staff.instrumentName = #"Alto"
+ \new Staff = "altos"
+ \with { instrumentName = #"Alto" }
+ <<
\new Voice = "altos" {
\global
\altoMusic
}
>>
- \new Lyrics \lyricsto "altos" { \altoWords }
- \new Staff = "tenors" <<
- \set Staff.instrumentName = #"Tenor"
+ \new Lyrics \lyricsto "altos" {
+ \altoWords
+ }
+ \new Staff = "tenors"
+ \with { instrumentName = #"Tenor" }
+ <<
\new Voice = "tenors" {
\global
\tenorMusic
}
>>
- \new Lyrics \lyricsto "tenors" { \tenorWords }
- \new Staff = "basses" <<
- \set Staff.instrumentName = #"Bass"
+ \new Lyrics \lyricsto "tenors" {
+ \tenorWords
+ }
+ \new Staff = "basses"
+ \with { instrumentName = #"Bass" }
+ <<
\new Voice = "basses" {
\global
\bassMusic
\bassWords
}
>> % end ChoirStaff
- \new PianoStaff <<
- \set PianoStaff.instrumentName = #"Piano"
+ \new PianoStaff \with { instrumentName = #"Piano" }
+ <<
\new Staff = "upper" \upper
\new Staff = "lower" \lower
>>
@example
\new ChoirStaff <<
- \new Staff = "sopranos" <<
- \set Staff.instrumentName = #"Soprano"
+ \new Staff = "sopranos"
+ \with @{ instrumentName = #"Soprano" @}
+ <<
\new Voice = "sopranos" @{
\global
\sopranoMusic
\new Lyrics \lyricsto "sopranos" @{
\sopranoWords
@}
- \new Staff = "altos" <<
- \set Staff.instrumentName = #"Alto"
+ \new Staff = "altos"
+ \with @{ instrumentName = #"Alto" @}
+ <<
\new Voice = "altos" @{
\global
\altoMusic
\new Lyrics \lyricsto "altos" @{
\altoWords
@}
- \new Staff = "tenors" <<
- \set Staff.instrumentName = #"Tenor"
+ \new Staff = "tenors"
+ \with @{ instrumentName = #"Tenor" @}
+ <<
\new Voice = "tenors" @{
\global
\tenorMusic
\new Lyrics \lyricsto "tenors" @{
\tenorWords
@}
- \new Staff = "basses" <<
- \set Staff.instrumentName = #"Bass"
+ \new Staff = "basses"
+ \with @{ instrumentName = #"Bass" @}
+ <<
\new Voice = "basses" @{
\global
\bassMusic
@q{Solo piano} template:
@example
-\new PianoStaff <<
- \set PianoStaff.instrumentName = #"Piano "
+\new PianoStaff \with @{ instrumentName = #"Piano " @}
+<<
\new Staff = "upper" \upper
\new Staff = "lower" \lower
>>
@}
>> % end ChoirStaff
- \new PianoStaff <<
- \set PianoStaff.instrumentName = #"Piano"
+ \new PianoStaff \with @{ instrumentName = #"Piano" @}
+ <<
\new Staff = "upper" \upper
\new Staff = "lower" \lower
>>
\score {
<< % combine ChoirStaff and PianoStaff in parallel
\new ChoirStaff <<
- \new Staff = "sopranos" <<
- \set Staff.instrumentName = #"Soprano"
+ \new Staff = "sopranos"
+ \with { instrumentName = #"Soprano" }
+ <<
\new Voice = "sopranos" {
\global
\sopranoMusic
\new Lyrics \lyricsto "sopranos" {
\sopranoWords
}
- \new Staff = "altos" <<
- \set Staff.instrumentName = #"Alto"
+ \new Staff = "altos"
+ \with { instrumentName = #"Alto" }
+ <<
\new Voice = "altos" {
\global
\altoMusic
\new Lyrics \lyricsto "altos" {
\altoWords
}
- \new Staff = "tenors" <<
- \set Staff.instrumentName = #"Tenor"
+ \new Staff = "tenors"
+ \with { instrumentName = #"Tenor" }
+ <<
\new Voice = "tenors" {
\global
\tenorMusic
\new Lyrics \lyricsto "tenors" {
\tenorWords
}
- \new Staff = "basses" <<
- \set Staff.instrumentName = #"Bass"
+ \new Staff = "basses"
+ \with { instrumentName = #"Bass" }
+ <<
\new Voice = "basses" {
\global
\bassMusic
}
>> % end ChoirStaff
- \new PianoStaff <<
- \set PianoStaff.instrumentName = #"Piano "
+ \new PianoStaff
+ \with { instrumentName = #"Piano " }
+ <<
\new Staff = "upper" \upper
\new Staff = "lower" \lower
>>