Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.19.21"
@node Staff notation
@section Staff notation
-@lilypondfile[quote]{staff-headword.ly}
+@c The line width is a bit of a hack to allow space for the
+@c instrument names.
+@lilypondfile[quote,ragged-right,line-width=14.5\cm,staffsize=16]{staff-headword.ly}
This section explains how to influence the appearance of staves,
how to print scores with more than one staff, and how to add tempo
@notation{Staves} (singular: @notation{staff}) are created with
the @code{\new} or @code{\context} commands. For details, see
-@ref{Creating contexts}.
+@ref{Creating and referencing contexts}.
The basic staff context is @code{Staff}:
New single staff contexts may be defined. For details, see
@ref{Defining new contexts}.
-
@seealso
Music Glossary:
@rglos{staff},
@rglos{staves}.
Notation Reference:
-@ref{Creating contexts},
+@ref{Creating and referencing contexts},
@ref{Percussion staves},
@ref{Showing melody rhythms},
@ref{Default tablatures},
@snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
{use-square-bracket-at-the-start-of-a-staff-group.ly}
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
{display-bracket-with-only-one-staff-in-a-system.ly}
@cindex mensurstriche layout
@cindex transcription of mensural music
@cindex mensural music, transcription of
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
{mensurstriche-layout-bar-lines-between-the-staves.ly}
-
@seealso
Music Glossary:
@rglos{brace},
@rinternals{SystemStartBracket},
@rinternals{SystemStartSquare}.
-@knownissues
-@code{PianoStaff} does not, by default, accept @code{ChordNames}.
-
@node Nested staff groups
@unnumberedsubsubsec Nested staff groups
@snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
{nesting-staves.ly}
-
@seealso
Notation Reference:
@ref{Grouping staves},
@rinternals{SystemStartBracket},
@rinternals{SystemStartSquare}.
+
@node Separating systems
@unnumberedsubsubsec Separating systems
\score {
\new StaffGroup <<
\new Staff {
- \relative c'' {
- c4 c c c
+ \relative {
+ c''4 c c c
\break
c4 c c c
}
}
\new Staff {
- \relative c'' {
- c4 c c c
+ \relative {
+ c''4 c c c
\break
c4 c c c
}
@node Staff symbol
@unnumberedsubsubsec Staff symbol
-@cindex adjusting staff symbol
-@cindex drawing staff symbol
-@cindex staff symbol, setting of
-@cindex staff symbol, drawing
-@cindex stop staff lines
-@cindex start staff lines
-@cindex staff lines, amount of
-@cindex staff lines, number of
-@cindex staff line, thickness of
-@cindex amount of staff lines
-@cindex thickness of staff lines
-@cindex ledger lines, setting
-@cindex setting of ledger lines
-@cindex spacing of ledger lines
-@cindex number of staff lines
-
-The lines of a staff belong to the @code{StaffSymbol} grob.
-@code{StaffSymbol} properties can be modified to change the
-appearance of a staff, but they must be modified before the staff
-is created.
-
-The number of staff lines may be changed. The clef position and
-the position of middle C may need to be modified to fit the new
-staff. For an explanation, refer to the snippet section in
-@ref{Clef}.
+@cindex staff symbol
+@cindex staff lines, stopping and starting
+@cindex staff lines, modifying
+@cindex ledger lines
+@cindex ledger lines, internal
+@cindex ledger lines, modifying
+
+@funindex \startStaff
+@funindex startStaff
+@funindex \stopStaff
+@funindex stopStaff
+
+The @code{\stopStaff} and @code{\startStaff} commands can be used to
+stop or (re)start the staff lines respectively, from being printed at
+any point witin a score.
@lilypond[verbatim,quote,relative=2]
-\new Staff \with {
- \override StaffSymbol #'line-count = #3
-}
-{ d4 d d d }
+\stopStaff f4 d \startStaff g, e
+f'4 d \stopStaff g, e
+f'4 d \startStaff g, e
@end lilypond
-Staff line thickness can be modified. The thickness of ledger
-lines and stems are also affected, since they depend on staff line
-thickness.
+@predefined
+@code{\startStaff},
+@code{\stopStaff}.
+@endpredefined
-@lilypond[verbatim,quote,relative=1]
-\new Staff \with {
- \override StaffSymbol #'thickness = #3
-}
-{ e4 d c b }
+The lines of a staff belong to the @code{StaffSymbol} grob (including
+ledger lines) and can be modified using @code{StaffSymbol} properties, but
+these modifications must be made before the staff is (re)started.
+
+The number of staff lines can be altered:
+
+@lilypond[verbatim,quote,relative=2]
+f4 d \stopStaff
+\override Staff.StaffSymbol.line-count = #2
+\startStaff g, e |
+
+f'4 d \stopStaff
+\revert Staff.StaffSymbol.line-count
+\startStaff g, e |
@end lilypond
-Ledger line thickness can be set independently of staff line
-thickness. In the example the two numbers are factors multiplying
-the staff line thickness and the staff line spacing. The two
-contributions are added to give the ledger line thickness.
+The position of each staff line can also be altered. A list of
+numbers sets each line's position. @code{0}@tie{}corresponds to the normal
+center line, and the normal line positions are
+@code{(-4@tie{}-2@tie{}0@tie{}2@tie{}4)}. A single staff line is
+printed for every value entered so that the number of staff lines, as
+well as their position, can be changed with a single override.
-@lilypond[verbatim,quote,relative=1]
+@lilypond[verbatim,quote,relative=2]
+f4 d \stopStaff
+\override Staff.StaffSymbol.line-positions = #'(1 3 5 -1 -3)
+\startStaff g, e |
+f'4 d \stopStaff
+\override Staff.StaffSymbol.line-positions = #'(8 6.5 -6 -8 -0.5)
+\startStaff g, e
+@end lilypond
+
+To preserve typical stem directions (in the bottom half of the staff
+stems point up, in the top half they point down), align the center
+line (or space) of the customized staff with the position of the
+normal center line (0). The clef position and the position of
+middle@tie{}C may need to be adjusted accordingly to fit the new
+lines. See @ref{Clef}.
+
+Staff line thickness can be altered. Ledger lines and note stems, by
+default, are also affected.
+
+@lilypond[verbatim,quote,relative=2]
\new Staff \with {
- \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2)
+ \override StaffSymbol.thickness = #3
}
-{ e4 d c b }
+{ f4 d g, e }
@end lilypond
-The distance between staff lines can be changed. This setting
-affects the spacing of ledger lines as well.
+It is also possible to set ledger line thickness independently of staff
+lines.
-@lilypond[verbatim,quote,relative=1]
+@lilypond[verbatim,quote,relative=2]
\new Staff \with {
- \override StaffSymbol #'staff-space = #1.5
+ \override StaffSymbol.thickness = #2
+ \override StaffSymbol.ledger-line-thickness = #'(0.5 . 0.4)
}
-{ a4 b c d }
+{ f'4 a, a,, f }
@end lilypond
-Further details about the properties of @code{StaffSymbol} can be
-found in @rinternals{staff-symbol-interface}.
+@noindent
+The first value is multiplied by the staff line thickness, the second by
+the staff space and then the two values are added together to give the
+new thickness of the ledger line.
-@cindex stopping a staff
-@cindex starting a staff
-@cindex staff, starting
-@cindex staff, stopping
+The vertical positions of ledger lines can be altered,
-@funindex \startStaff
-@funindex startStaff
-@funindex \stopStaff
-@funindex stopStaff
+@lilypond[verbatim,quote,relative=2]
+\new Staff \with {
+ \override StaffSymbol.ledger-positions = #'(-3 -2 -1 2 5 6)
+}
+{ f'4 a, a,, f }
+@end lilypond
-Modifications to staff properties in the middle of a score can be
-placed between @code{\stopStaff} and @code{\startStaff}:
+Additional ledger lines can be made to appear above or below note heads
+depending on the current position relative to other note heads that
+also have their own ledger lines.
@lilypond[verbatim,quote,relative=2]
-c2 c
-\stopStaff
-\override Staff.StaffSymbol #'line-count = #2
-\startStaff
-b2 b
-\stopStaff
-\revert Staff.StaffSymbol #'line-count
-\startStaff
-a2 a
+\new Staff \with {
+ \override StaffSymbol.ledger-extra = #4
+}
+{ f'4 a, d, f, }
@end lilypond
-@noindent
-In general, @code{\startStaff} and @code{\stopStaff} can be used
-to stop or start a staff in the middle of a score.
+Ledger lines can also be made to appear inside the staff where custom
+staff lines are required. The example shows the default position of
+ledger lines when the explicit @code{ledger-position} is and is not set.
+The @code{\stopStaff} is needed in the example to revert the
+@code{\override} for the whole @code{StaffSymbol}.
-@lilypond[verbatim,quote,relative=2]
-c4 b a2
+@lilypond[verbatim,quote,relative=1]
+\override Staff.StaffSymbol.line-positions = #'(-8 0 2 4)
+d4 e f g
\stopStaff
-b4 c d2
\startStaff
-e4 d c2
+\override Staff.StaffSymbol.ledger-positions = #'(-8 -6 (-4 -2) 0)
+d4 e f g
@end lilypond
+The distance between staff lines can be altered. This affects ledger
+line spacing as well.
-@predefined
-@code{\startStaff},
-@code{\stopStaff}.
-@endpredefined
-
+@lilypond[verbatim,quote,relative=2]
+\new Staff \with {
+ \override StaffSymbol.staff-space = #1.5
+}
+{ f'4 d, g, e, }
+@end lilypond
@snippets
-
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
{making-some-staff-lines-thicker-than-the-others.ly}
-
@seealso
Music Glossary:
@rglos{line},
staff in the appropriate location:
@lilypond[verbatim,quote]
-\new Staff \relative c'' {
- c4 b d c
+\new Staff \relative {
+ c''4 b d c
<<
{ c4 b d c }
\new Staff { e4 d f e }
only a few ossia staves are needed.
@lilypond[verbatim,quote]
-\new Staff = main \relative c'' {
- c4 b d c
+\new Staff = "main" \relative {
+ c''4 b d c
<<
{ c4 b d c }
\new Staff \with {
\remove "Time_signature_engraver"
alignAboveContext = #"main"
- fontSize = #-3
- \override StaffSymbol #'staff-space = #(magstep -3)
- \override StaffSymbol #'thickness = #(magstep -3)
+ \magnifyStaff #2/3
firstClef = ##f
}
{ e4 d f e }
@lilypond[verbatim,quote,ragged-right]
<<
- \new Staff = ossia \with {
+ \new Staff = "ossia" \with {
\remove "Time_signature_engraver"
- \override Clef #'transparent = ##t
- fontSize = #-3
- \override StaffSymbol #'staff-space = #(magstep -3)
- \override StaffSymbol #'thickness = #(magstep -3)
+ \hide Clef
+ \magnifyStaff #2/3
}
{ \stopStaff s1*6 }
- \new Staff \relative c' {
- c4 b c2
+ \new Staff \relative {
+ c'4 b c2
<<
{ e4 f e2 }
- \context Staff = ossia {
+ \context Staff = "ossia" {
\startStaff e4 g8 f e2 \stopStaff
}
>>
c4 b c2
<<
{ g4 a g2 }
- \context Staff = ossia {
+ \context Staff = "ossia" {
\startStaff g4 e8 f g2 \stopStaff
}
>>
@lilypond[verbatim,quote,ragged-right]
<<
- \new Staff = ossia \with {
+ \new Staff = "ossia" \with {
\remove "Time_signature_engraver"
- \override Clef #'transparent = ##t
- fontSize = #-3
- \override StaffSymbol #'staff-space = #(magstep -3)
- \override StaffSymbol #'thickness = #(magstep -3)
- } \relative c'' {
+ \hide Clef
+ \magnifyStaff #2/3
+ } \relative {
R1*3
- c4 e8 d c2
+ c''4 e8 d c2
}
- \new Staff \relative c' {
- c4 b c2
+ \new Staff \relative {
+ c'4 b c2
e4 f e2
g4 a g2 \break
c4 b c2
\layout {
\context {
\Staff \RemoveEmptyStaves
- \override VerticalAxisGroup #'remove-first = ##t
+ \override VerticalAxisGroup.remove-first = ##t
}
}
@end lilypond
@snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
{vertically-aligning-ossias-and-lyrics.ly}
-
@seealso
Music Glossary:
@rglos{ossia},
\new Staff \with {
\remove "Staff_symbol_engraver"
}
-\relative c''' { a8 f e16 d c b a2 }
+\relative { a''8 f e16 d c b a2 }
@end lilypond
}
}
-\relative c' <<
+\relative <<
\new Staff {
- e4 f g a \break
+ e'4 f g a \break
b1 \break
a4 b c2
}
@snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
{removing-the-first-empty-line.ly}
-
@seealso
Music Glossary:
@rglos{Frenched staff}.
@rinternals{VerticalAxisGroup},
@rinternals{Staff_symbol_engraver}.
-
@knownissues
-
Removing @code{Staff_symbol_engraver} also hides bar lines. If
bar line visibility is forced, formatting errors may occur. In
this case, use the following overrides instead of removing the
engraver:
@example
-\override StaffSymbol #'stencil = ##f
-\override NoteHead #'no-ledgers = ##t
+\omit StaffSymbol
+\override NoteHead.no-ledgers = ##t
@end example
For the Known issues and warnings associated with
@code{\Staff \RemoveEmptyStaves} see
@ref{Changing context default settings}.
+
@node Writing parts
@subsection Writing parts
of @code{shortInstrumentName} is used for all succeeding staves.
@lilypond[verbatim,quote,ragged-right,relative=1]
-\set Staff.instrumentName = #"Violin "
-\set Staff.shortInstrumentName = #"Vln "
-c4.. g'16 c4.. g'16
-\break
-c1
+\new Staff \with {
+ instrumentName = #"Violin "
+ shortInstrumentName = #"Vln. "
+}
+{ c4.. g'16 c4.. g'16 \break | c1 }
@end lilypond
-Markup mode can be used to create more complicated instrument
-names:
+@cindex instrument names, complex
+
+@code{\markup} can be used to create more complex instrument names:
@lilypond[verbatim,quote,relative=2]
-\set Staff.instrumentName = \markup {
- \column { "Clarinetti"
- \line { "in B" \smaller \flat } } }
-c4 c,16 d e f g2
+\new Staff \with {
+ instrumentName = \markup {
+ \column { "Clarinetti"
+ \line { "in B" \smaller \flat }
+ }
+ }
+}
+{ c4 c,16 d e f g2 }
@end lilypond
@cindex instrument names, centering
-When two or more staff contexts are grouped together, the
-instrument names and short instrument names are centered by
-default. To center multi-line instrument names,
-@code{\center-column} must be used:
+When two or more staff contexts are grouped together, the instrument
+names and short instrument names are centered by default. To center
+multi-line instrument names, @code{\center-column} must be used:
@lilypond[verbatim,quote,indent=1.5\cm,relative=2]
<<
- \new Staff {
- \set Staff.instrumentName = #"Flute"
- f2 g4 f
+ \new Staff \with {
+ instrumentName = #"Flute"
}
- \new Staff {
- \set Staff.instrumentName = \markup \center-column {
- Clarinet
- \line { "in B" \smaller \flat }
+ { f2 g4 f }
+ \new Staff \with {
+ instrumentName = \markup {
+ \center-column { "Clarinet"
+ \line { "in B" \smaller \flat }
+ }
}
- c4 b c2
}
+ { c4 b c2 }
>>
@end lilypond
@funindex indent
@funindex short-indent
-However, if the instrument names are longer, the instrument names
-in a staff group may not be centered unless the @code{indent} and
-@code{short-indent} settings are increased. For details about
-these settings, see @ref{\paper variables for shifts and indents}.
+However, if the instrument names are longer, the instrument names in a
+staff group may not be centered unless the @code{indent} and
+@code{short-indent} settings are increased. For details about these
+settings, see @ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents}.
@lilypond[verbatim,quote,ragged-right]
+\relative c'' {
+ <<
+ \new Staff \with {
+ instrumentName = #"Alto Flute in G"
+ shortInstrumentName = #"Flt."
+ }
+ {
+ f2 g4 f \break
+ g4 f g2
+ }
+ \new Staff \with {
+ instrumentName = #"Clarinet"
+ shortInstrumentName = #"Clar."
+ }
+ {
+ c,4 b c2 \break
+ c2 b4 c
+ }
+ >>
+}
+
\layout {
indent = 3.0\cm
short-indent = 1.5\cm
}
-
-\relative c'' <<
- \new Staff {
- \set Staff.instrumentName = #"Alto Flute in G"
- \set Staff.shortInstrumentName = #"Fl."
- f2 g4 f \break
- g4 f g2
- }
- \new Staff {
- \set Staff.instrumentName = #"Clarinet"
- \set Staff.shortInstrumentName = #"Clar."
- c,4 b c2 \break
- c2 b4 c
- }
->>
@end lilypond
@cindex instrument names, adding to other contexts
-To add instrument names to other contexts (such as
-@code{ChordNames} or @code{FiguredBass}),
-@code{Instrument_name_engraver} must be added to that context.
-For details, see @ref{Modifying context plug-ins}.
+To add instrument names to other contexts (such as @code{ChordNames} or
+@code{FiguredBass}), @code{Instrument_name_engraver} must be added to
+that context. For details, see @ref{Modifying context plug-ins}.
@cindex instrument names, changing
@cindex changing instrument names
-Instrument names may be changed in the middle of a piece.
-However, remember that @code{instrumentName} will not be
-displayed in the middle of the piece, as it only appears
-on the first staff:
-
-@lilypond[verbatim,quote,ragged-right,relative=1]
-\set Staff.instrumentName = #"First"
-\set Staff.shortInstrumentName = #"one"
-c1 c c c \break
-c1 c c c \break
-\set Staff.instrumentName = #"Second"
-\set Staff.shortInstrumentName = #"two"
-c1 c c c \break
-c1 c c c \break
-@end lilypond
+The @code{shortInstrumentName} may be changed in the middle of a piece,
+along with other settings as needed for the new instrument.
+However, only the first instance of @code{instrumentName} will be
+printed and subsequent changes will be ignored:
-@cindex instrument switch
-@cindex switching instruments
-
-@funindex \addInstrumentDefinition
-@funindex addInstrumentDefinition
-@funindex \instrumentSwitch
-@funindex instrumentSwitch
+@lilypond[verbatim,quote,ragged-right]
+prepPiccolo = <>^\markup \italic { muta in Piccolo }
+
+setPiccolo = {
+ \set Staff.instrumentName = #"Piccolo"
+ \set Staff.shortInstrumentName = #"Picc."
+ \set Staff.midiInstrument = #"piccolo"
+ <>^\markup \bold { Piccolo }
+ \transposition c''
+}
-If an instrument @emph{switch} is needed,
-@code{\addInstrumentDefinition} may be used in combination with
-@code{\instrumentSwitch} to create a detailed list of the
-necessary changes for the switch. The
-@code{\addInstrumentDefinition} command has two arguments: an
-identifying string, and an association list of context properties
-and values to be used for the instrument. It must be placed in
-the toplevel scope. @code{\instrumentSwitch} is used in the music
-expression to declare the instrument switch:
+prepFlute = <>^\markup \italic { muta in Flauto }
-@lilypond[verbatim,quote,ragged-right]
-\addInstrumentDefinition #"contrabassoon"
- #`((instrumentTransposition . ,(ly:make-pitch -1 0 0))
- (shortInstrumentName . "Cbsn.")
- (clefGlyph . "clefs.F")
- (middleCPosition . 6)
- (clefPosition . 2)
- (instrumentCueName . ,(make-bold-markup "cbsn."))
- (midiInstrument . "bassoon"))
+setFlute = {
+ \set Staff.instrumentName = #"Flute"
+ \set Staff.shortInstrumentName = #"Flt."
+ \set Staff.midiInstrument = #"flute"
+ <>^\markup \bold { Flute }
+ \transposition c'
+}
\new Staff \with {
- instrumentName = #"Bassoon"
+ instrumentName = #"Flute"
+ shortInstrumentName = #"Flt."
+ midiInstrument = #"flute"
}
-\relative c' {
- \clef tenor
- \compressFullBarRests
- c2 g'
- R1*16
- \instrumentSwitch "contrabassoon"
- c,,2 g \break
- c,1 ~ | c1
+\relative {
+ g'1 g g g \break
+ g1 g \prepPiccolo R R \break
+ \setPiccolo
+ g1 g g g \break
+ g1 g \prepFlute R R \break
+ \setFlute
+ g1 g g g
}
@end lilypond
@seealso
Notation Reference:
-@ref{\paper variables for shifts and indents},
+@ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents},
@ref{Modifying context plug-ins}.
Snippets:
for the duration of the quote.
@lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
- a4 gis g gis | b4^"quoted" r8 ais\p a4( f)
+fluteNotes = \relative {
+ a'4 gis g gis | b4^"quoted" r8 ais\p a4( f)
}
-oboeNotes = \relative c'' {
- c4 cis c b \quoteDuring #"flute" { s1 }
+oboeNotes = \relative {
+ c''4 cis c b \quoteDuring #"flute" { s1 }
}
\addQuote "flute" { \fluteNotes }
polyphony and may produce unexpected results.
@lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
- a4 gis g gis | b4^"quoted" r8 ais\p a4( f)
+fluteNotes = \relative {
+ a'4 gis g gis | b4^"quoted" r8 ais\p a4( f)
}
-oboeNotes = \relative c'' {
- c4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a }
+oboeNotes = \relative {
+ c''4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a }
}
\addQuote "flute" { \fluteNotes }
b4 ais a ais | cis4^"quoted" r8 bis\p b4( f)
}
-oboeNotes = \relative c'' {
- c4 cis c b \quoteDuring #"clarinet" { s1 }
+oboeNotes = \relative {
+ c''4 cis c b \quoteDuring #"clarinet" { s1 }
}
\addQuote "clarinet" { \clarinetNotes }
@code{quotedEventTypes} context property.
@lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
- a2 g2 |
+fluteNotes = \relative {
+ a'2 g2 |
b4\<^"quoted" r8 ais a4\f( c->)
}
-oboeNotes = \relative c'' {
- c2. b4 |
+oboeNotes = \relative {
+ c''2. b4 |
\quoteDuring #"flute" { s1 }
}
@ref{Instrument transpositions},
@ref{Using tags}.
+Installed Files:
+@file{scm/define-event-classes.scm}.
+
Snippets:
@rlsr{Staff notation}.
@rinternals{QuoteMusic},
@rinternals{Voice}.
-Installed Files:
-@file{scm/define-event-classes.scm}.
-
-
@knownissues
-
Only the contents of the first @code{Voice} occurring in an
-@code{\addQuote} command will be considered for quotation, so
-@code{@var{music}} cannot contain @code{\new} and
-@code{\context Voice} statements that would switch to a different
-Voice.
-
-Quoting grace notes is broken and can even cause LilyPond to
-crash.
-
-Quoting nested triplets may result in poor notation.
-
-In earlier versions of LilyPond (pre 2.11), @code{addQuote} was
-written entirely in lower-case letters: @code{\addquote}.
+@code{\addQuote} command will be considered for quotation, so if the music
+expression contains @code{\new} or @code{\context Voice}
+statements, their contents will not be quoted. Quoting grace notes
+is unsupported and may cause LilyPond to crash whereas quoting nested
+triplets may result in poor notation.
@node Formatting cue notes
The @code{\cueClef} command can also be used with an explict
@code{CueVoice} context if a change of clef is required and will print
-an appropriately sized clef for the cue notes. The @code{\cueClefUnset}
+an appropriately sized clef for the cue notes. The @code{\cueClefUnset}
command can then be used to switch back to the original clef, again with
an appropriately sized clef.
For more complex cue note placement, e.g including transposition, or
inserting cue notes from multiple music sources the @code{\cueDuring} or
-@code{\cueDuringWithClef} commands can be used. These are more
+@code{\cueDuringWithClef} commands can be used. These are more
specialized form of @code{\quoteDuring}, see @ref{Quoting other voices}
in the previous section.
@end example
The music from the corresponding measures of the @code{@var{quote name}}
-is added as @code{CueVoice} context and occurs simultaneously with the
-@code{@var{music}}, which creates a polyphonic situation. The
+is added as a @code{CueVoice} context and occurs simultaneously with the
+@code{@var{music}}, which then creates a polyphonic situation. The
@code{@var{direction}} takes the argument @code{UP} or @code{DOWN}, and
-corresponds to first and second voices respectively determining how
+corresponds to the first and second voices respectively, determining how
the cue notes are printed in relation to the other voice.
@lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
- r2. c4 | d8 c d e fis2 | g2 d |
+fluteNotes = \relative {
+ r2. c''4 | d8 c d e fis2 | g2 d |
}
oboeNotes = \relative c'' {
R1
- s1*0^\markup { \tiny "flute" }
+ <>^\markup \tiny { flute }
\cueDuring #"flute" #UP { R1 }
g2 c,
}
@end lilypond
@noindent
-In the above example, the @code{Voice} context had to be
-explicitly declared, or else the entire music expression would
-belong to the @code{CueVoice} context.
+
It is possible to adjust which aspects of the music are quoted with
@code{\cueDuring} by setting the @code{quotedCueEventTypes}
-property. Its default value is @code{#'(note-event rest-event
+property. Its default value is @code{'(note-event rest-event
tie-event beam-event tuplet-span-event)}, which means that only
notes, rests, ties, beams and tuplets are quoted, but not
articulations, dynamic marks, markup etc.
+@warning{When a @code{Voice} starts with @code{\cueDuring}, as in the
+following example, the @code{Voice} context must be explicitly declared,
+or else the entire music expression would belong to the @code{CueVoice}
+context.}
+
@lilypond[verbatim,quote]
-oboeNotes = \relative c'' {
- r2 r8 d16(\f f e g f a)
+oboeNotes = \relative {
+ r2 r8 d''16(\f f e g f a)
g8 g16 g g2.
}
\addQuote "oboe" { \oboeNotes }
}
@end lilypond
-Markup can be used to show the name of the quoted instrument. Also,
-if the cue notes require a change in clef, this can be done manually but
-the original clef should also be restored manually at the end of the cue
-notes.
+Markup can be used to show the name of the quoted instrument.
+If the cue notes require a change in clef,
+this can be done manually but the original clef should also be
+restored manually at the end of the cue notes.
@lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
- r2. c4 d8 c d e fis2 g2 d2
+fluteNotes = \relative {
+ r2. c''4 d8 c d e fis2 g2 d2
}
bassoonNotes = \relative c {
\clef bass
R1
\clef treble
- s1*0^\markup { \tiny "flute" }
+ <>^\markup \tiny { flute }
\cueDuring #"flute" #UP { R1 }
\clef bass
g4. b8 d2
print the original clef once the cue notes have finished.
@lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
- r2. c4 d8 c d e fis2 g2 d2
+fluteNotes = \relative {
+ r2. c''4 d8 c d e fis2 g2 d2
}
bassoonNotes = \relative c {
\clef bass
R1
- s1*0^\markup { \tiny "flute" }
+ <>^\markup { \tiny "flute" }
\cueDuringWithClef #"flute" #UP #"treble" { R1 }
g4. b8 d2
}
taking cues from an instrument in a completely different register.
@lilypond[verbatim,quote]
-piccoloNotes = \relative c''' {
+piccoloNotes = \relative {
\clef "treble^8"
R1
- c8 c c e g2
+ c'''8 c c e g2
c4 g g2
}
@funindex \killCues
@funindex killCues
-@funindex \addInstrumentDefinition
-@funindex addInstrumentDefinition
The @code{\killCues} command removes cue notes from a music
expression, so the same music expression can be used to produce
tagged for selective inclusion in the score; see @ref{Using tags}.
@lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
- r2. c4 d8 c d e fis2 g2 d2
+fluteNotes = \relative {
+ r2. c''4 d8 c d e fis2 g2 d2
}
bassoonNotes = \relative c {
R1
\tag #'part {
\clef treble
- s1*0^\markup { \tiny "flute" }
+ <>^\markup \tiny { flute }
}
\cueDuring #"flute" #UP { R1 }
\tag #'part \clef bass
collected into an instrument definition for repeated use, using
@code{\addInstrumentDefinition} described in @ref{Instrument names}.
-
@seealso
Notation Reference:
@ref{Quoting other voices},
@ref{Instrument transpositions},
@ref{Instrument names},
+@ref{Clef},
@ref{Musical cues},
@ref{Using tags}.
@rinternals{CueVoice},
@rinternals{Voice}.
-
@knownissues
-
Collisions can occur with rests, when using @code{\cueDuring},
between @code{Voice} and @code{CueVoice} contexts. When using
@code{\cueDuringWithClef} or @code{\transposedCueDuring} the extra