| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section explains how to influence the appearance of staves, how to print scores with more than one staff, and how to add tempo indications and cue notes to staves.
| 1.6.1 Displaying staves | ||
| 1.6.2 Modifying single staves | ||
| 1.6.3 Writing parts |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section describes the different methods of creating and grouping staves.
| Instantiating new staves | ||
| Grouping staves | ||
| Nested staff groups | ||
| Separating systems |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Staves (singular: staff) are created with
the \new or \context commands. For details, see
Creating and referencing contexts.
The basic staff context is Staff:
\new Staff \relative { c''4 d e f }
The DrumStaff context creates a five-line staff set up for
a typical drum set. Each instrument is shown with a different
symbol. The instruments are entered in drum mode following a
\drummode command, with each instrument specified by name.
For details, see Percussion staves.
\new DrumStaff { \drummode { cymc hh ss tomh } }
RhythmicStaff creates a single-line staff that only
displays the rhythmic values of the input. Real durations are
preserved. For details, see Showing melody rhythms.
\new RhythmicStaff { c4 d e f }
TabStaff creates a tablature with six strings in standard
guitar tuning. For details, see Default tablatures.
\new TabStaff \relative { c''4 d e f }
There are two staff contexts specific for the notation of ancient
music: MensuralStaff and VaticanaStaff. They are
described in Pre-defined contexts.
The GregorianTranscriptionStaff context creates a staff to
notate modern Gregorian chant. It does not show bar lines.
\new GregorianTranscriptionStaff \relative { c''4 d e f e d }
New single staff contexts may be defined. For details, see Defining new contexts.
Music Glossary: (music-glossary)staff section ‘staff’ in Music Glossary, (music-glossary)staves section ‘staves’ in Music Glossary.
Notation Reference: Creating and referencing contexts, Percussion staves, Showing melody rhythms, Default tablatures, Pre-defined contexts, Staff symbol, Gregorian chant contexts, Mensural contexts, Defining new contexts.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)Staff section ‘Staff’ in Internals Reference, (internals)DrumStaff section ‘DrumStaff’ in Internals Reference, (internals)GregorianTranscriptionStaff section ‘GregorianTranscriptionStaff’ in Internals Reference, (internals)RhythmicStaff section ‘RhythmicStaff’ in Internals Reference, (internals)TabStaff section ‘TabStaff’ in Internals Reference, (internals)MensuralStaff section ‘MensuralStaff’ in Internals Reference, (internals)VaticanaStaff section ‘VaticanaStaff’ in Internals Reference, (internals)StaffSymbol section ‘StaffSymbol’ in Internals Reference.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Various contexts exist to group single staves together in order to form multi-staff systems. Each grouping context sets the style of the system start delimiter and the behavior of bar lines.
If no context is specified, the default properties will be used: the group is started with a vertical line, and the bar lines are not connected.
<< \new Staff \relative { c''1 c } \new Staff \relative { c''1 c } >>
In the StaffGroup context, the group is started with a
bracket and bar lines are drawn through all the staves.
\new StaffGroup << \new Staff \relative { c''1 c } \new Staff \relative { c''1 c } >>
In a ChoirStaff, the group starts with a bracket, but bar
lines are not connected.
\new ChoirStaff << \new Staff \relative { c''1 c } \new Staff \relative { c''1 c } >>
In a GrandStaff, the group begins with a brace, and bar
lines are connected between the staves.
\new GrandStaff << \new Staff \relative { c''1 c } \new Staff \relative { c''1 c } >>
The PianoStaff is identical to a GrandStaff, except
that it supports printing the instrument name directly. For
details, see Instrument names.
\new PianoStaff \with { instrumentName = "Piano" } << \new Staff \relative { c''1 c } \new Staff \relative { \clef bass c1 c } >>
Each staff group context sets the property
systemStartDelimiter to one of the following values:
SystemStartBar, SystemStartBrace, or
SystemStartBracket. A fourth delimiter,
SystemStartSquare, is also available, but it must be
explicitly specified.
New staff group contexts may be defined. For details, see Defining new contexts.
Use square bracket at the start of a staff group
The system start delimiter SystemStartSquare can be used by
setting it explicitly in a StaffGroup or ChoirStaff
context.
\score { \new StaffGroup { << \set StaffGroup.systemStartDelimiter = #'SystemStartSquare \new Staff { c'4 d' e' f' } \new Staff { c'4 d' e' f' } >> } }
Display bracket with only one staff in a system
If there is only one staff in one of the staff types ChoirStaff
or StaffGroup, by default the bracket and the starting bar line
will not be displayed. This can be changed by overriding
collapse-height to set its value to be less than the number of
staff lines in the staff.
Note that in contexts such as PianoStaff and GrandStaff
where the systems begin with a brace instead of a bracket, another
property has to be set, as shown on the second system in the example.
\score { \new StaffGroup << % Must be lower than the actual number of staff lines \override StaffGroup.SystemStartBracket.collapse-height = #4 \override Score.SystemStartBar.collapse-height = #4 \new Staff { c'1 } >> } \score { \new PianoStaff << \override PianoStaff.SystemStartBrace.collapse-height = #4 \override Score.SystemStartBar.collapse-height = #4 \new Staff { c'1 } >> }
Mensurstriche layout (bar lines between the staves)
The mensurstriche-layout where the bar lines do not show on the staves
but between staves can be achieved with a StaffGroup instead of
a ChoirStaff. The bar line on staves is blanked out using
\hide.
global = { \hide Staff.BarLine s1 s % the final bar line is not interrupted \undo \hide Staff.BarLine \bar "|." } \new StaffGroup \relative c'' { << \new Staff { << \global { c1 c } >> } \new Staff { << \global { c c } >> } >> }
Music Glossary: (music-glossary)brace section ‘brace’ in Music Glossary, (music-glossary)bracket section ‘bracket’ in Music Glossary, (music-glossary)grand staff section ‘grand staff’ in Music Glossary.
Notation Reference: Instrument names, Defining new contexts.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)Staff section ‘Staff’ in Internals Reference, (internals)StaffGroup section ‘StaffGroup’ in Internals Reference, (internals)ChoirStaff section ‘ChoirStaff’ in Internals Reference, (internals)GrandStaff section ‘GrandStaff’ in Internals Reference, (internals)PianoStaff section ‘PianoStaff’ in Internals Reference, (internals)SystemStartBar section ‘SystemStartBar’ in Internals Reference, (internals)SystemStartBrace section ‘SystemStartBrace’ in Internals Reference, (internals)SystemStartBracket section ‘SystemStartBracket’ in Internals Reference, (internals)SystemStartSquare section ‘SystemStartSquare’ in Internals Reference.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Staff-group contexts can be nested to arbitrary depths. In this case, each child context creates a new bracket adjacent to the bracket of its parent group.
\new StaffGroup << \new Staff \relative { c''2 c | c2 c } \new StaffGroup << \new Staff \relative { g'2 g | g2 g } \new StaffGroup \with { systemStartDelimiter = #'SystemStartSquare } << \new Staff \relative { e'2 e | e2 e } \new Staff \relative { c'2 c | c2 c } >> >> >>
New nested staff group contexts can be defined. For details, see Defining new contexts.
Nesting staves
The property systemStartDelimiterHierarchy can be used to make
more complex nested staff groups. The command \set
StaffGroup.systemStartDelimiterHierarchy takes an alphabetical list of
the number of staves produced. Before each staff a system start
delimiter can be given. It has to be enclosed in brackets and takes as
much staves as the brackets enclose. Elements in the list can be
omitted, but the first bracket takes always the complete number of
staves. The possibilities are SystemStartBar,
SystemStartBracket, SystemStartBrace, and
SystemStartSquare.
\new StaffGroup \relative c'' << \override StaffGroup.SystemStartSquare.collapse-height = #4 \set StaffGroup.systemStartDelimiterHierarchy = #'(SystemStartSquare (SystemStartBrace (SystemStartBracket a (SystemStartSquare b) ) c ) d) \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } >>
Notation Reference: Grouping staves, Instrument names, Defining new contexts.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)StaffGroup section ‘StaffGroup’ in Internals Reference, (internals)ChoirStaff section ‘ChoirStaff’ in Internals Reference, (internals)SystemStartBar section ‘SystemStartBar’ in Internals Reference, (internals)SystemStartBrace section ‘SystemStartBrace’ in Internals Reference, (internals)SystemStartBracket section ‘SystemStartBracket’ in Internals Reference, (internals)SystemStartSquare section ‘SystemStartSquare’ in Internals Reference.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If the number of systems per page changes from page to page it is
customary to separate the systems by placing a system separator mark
between them. By default the system separator is blank, but can be
turned on with a \paper option.
\book { \score { \new StaffGroup << \new Staff { \relative { c''4 c c c \break c4 c c c } } \new Staff { \relative { c''4 c c c \break c4 c c c } } >> } \paper { system-separator-markup = \slashSeparator % following commands are needed only to format this documentation paper-width = 100\mm paper-height = 100\mm tagline = ##f } }
Notation Reference: Page layout.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section explains how to change specific attributes of one staff: for example, modifying the number of staff lines or the staff size. Methods to start and stop staves and set ossia sections are also described.
| Staff symbol | ||
| Ossia staves | ||
| Hiding staves |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The \stopStaff and \startStaff commands can be used to
stop or (re)start the staff lines respectively, from being printed at
any point witin a score.
\relative { \stopStaff f''4 d \startStaff g, e f'4 d \stopStaff g, e f'4 d \startStaff g, e }
\startStaff,
\stopStaff.
The lines of a staff belong to the StaffSymbol grob (including
ledger lines) and can be modified using StaffSymbol properties, but
these modifications must be made before the staff is (re)started.
The number of staff lines can be altered:
\relative { f''4 d \stopStaff \override Staff.StaffSymbol.line-count = #2 \startStaff g, e | f'4 d \stopStaff \revert Staff.StaffSymbol.line-count \startStaff g, e | }
The position of each staff line can also be altered. A list of
numbers sets each line’s position. 0 corresponds to the normal
center line, and the normal line positions are
(-4 -2 0 2 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.
\relative { f''4 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 | }
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 C may need to be adjusted accordingly to fit the new lines. See Clef.
Staff line thickness can be altered. Ledger lines and note stems, by default, are also affected.
\new Staff \with { \override StaffSymbol.thickness = #3 } \relative { f''4 d g, e }
It is also possible to set ledger line thickness independently of staff lines.
\new Staff \with { \override StaffSymbol.thickness = #2 \override StaffSymbol.ledger-line-thickness = #'(0.5 . 0.4) } \relative { f'''4 a, a,, f }
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.
The vertical positions of ledger lines can be altered,
\new Staff \with { \override StaffSymbol.ledger-positions = #'(-3 -2 -1 2 5 6) } \relative { f'''4 a, a,, f }
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.
\new Staff \with { \override StaffSymbol.ledger-extra = #4 } \relative { f'''4 a, d, f, }
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 ledger-position is and is not set.
The \stopStaff is needed in the example to revert the
\override for the whole StaffSymbol.
\relative d' { \override Staff.StaffSymbol.line-positions = #'(-8 0 2 4) d4 e f g \stopStaff \startStaff \override Staff.StaffSymbol.ledger-positions = #'(-8 -6 (-4 -2) 0) d4 e f g }
The distance between staff lines can be altered. This affects ledger line spacing as well.
\new Staff \with { \override StaffSymbol.staff-space = #1.5 } \relative { f'''4 d, g, e, }
Making some staff lines thicker than the others
For educational purposes, a staff line can be thickened (e.g., the
middle line, or to emphasize the line of the G clef). This can be
achieved by adding extra lines very close to the line that should be
emphasized, using the line-positions property of the
StaffSymbol object.
{ \override Staff.StaffSymbol.line-positions = #'(-4 -2 -0.2 0 0.2 2 4) d'4 e' f' g' }
Music Glossary: (music-glossary)line section ‘line’ in Music Glossary, (music-glossary)ledger line section ‘ledger line’ in Music Glossary, (music-glossary)staff section ‘staff’ in Music Glossary.
Notation Reference: Clef.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)StaffSymbol section ‘StaffSymbol’ in Internals Reference, (internals)staff-symbol-interface section ‘staff-symbol-interface’ in Internals Reference.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ossia staves can be set by creating a new simultaneous staff in the appropriate location:
\new Staff \relative { c''4 b d c << { c4 b d c } \new Staff { e4 d f e } >> c4 b c2 }
However, the above example is not what is usually desired. To create ossia staves that are above the original staff, have no time signature or clef, and have a smaller font size, tweaks must be used. The Learning Manual describes a specific technique to achieve this goal, beginning with (learning)Nesting music expressions section ‘Nesting music expressions’ in Learning Manual.
The following example uses the alignAboveContext property
to align the ossia staff. This method is most appropriate when
only a few ossia staves are needed.
\new Staff = "main" \relative { c''4 b d c << { c4 b d c } \new Staff \with { \remove "Time_signature_engraver" alignAboveContext = "main" \magnifyStaff #2/3 firstClef = ##f } { e4 d f e } >> c4 b c2 }
If many isolated ossia staves are needed, creating an empty
Staff context with a specific context id may be more
appropriate; the ossia staves may then be created by
calling this context and using \startStaff and
\stopStaff at the desired locations. The benefits of this
method are more apparent if the piece is longer than the following
example.
<< \new Staff = "ossia" \with { \remove "Time_signature_engraver" \hide Clef \magnifyStaff #2/3 } { \stopStaff s1*6 } \new Staff \relative { c'4 b c2 << { e4 f e2 } \context Staff = "ossia" { \startStaff e4 g8 f e2 \stopStaff } >> g4 a g2 \break c4 b c2 << { g4 a g2 } \context Staff = "ossia" { \startStaff g4 e8 f g2 \stopStaff } >> e4 d c2 } >>
Using the \RemoveAllEmptyStaves command to create ossia
staves may be used as an alternative. This method is most
convenient when ossia staves occur immediately following a line
break. For more information about
\RemoveAllEmptyStaves, see Hiding staves.
<< \new Staff = "ossia" \with { \remove "Time_signature_engraver" \hide Clef \magnifyStaff #2/3 \RemoveAllEmptyStaves } \relative { R1*3 c''4 e8 d c2 } \new Staff \relative { c'4 b c2 e4 f e2 g4 a g2 \break c4 b c2 g4 a g2 e4 d c2 } >>
Vertically aligning ossias and lyrics
This snippet demonstrates the use of the context properties
alignBelowContext and alignAboveContext to control the
positioning of lyrics and ossias.
\paper { ragged-right = ##t } \relative c' << \new Staff = "1" { c4 c s2 } \new Staff = "2" { c4 c s2 } \new Staff = "3" { c4 c s2 } { \skip 2 << \lyrics { \set alignBelowContext = #"1" lyrics4 below } \new Staff \with { alignAboveContext = #"3" fontSize = #-2 \override StaffSymbol.staff-space = #(magstep -2) \remove "Time_signature_engraver" } { \tuplet 6/4 { \override TextScript.padding = #3 c8[^"ossia above" d e d e f] } } >> } >>
Music Glossary: (music-glossary)ossia section ‘ossia’ in Music Glossary, (music-glossary)staff section ‘staff’ in Music Glossary, (music-glossary)Frenched staff section ‘Frenched staff’ in Music Glossary.
Learning Manual: (learning)Nesting music expressions section ‘Nesting music expressions’ in Learning Manual, (learning)Size of objects section ‘Size of objects’ in Learning Manual, (learning)Length and thickness of objects section ‘Length and thickness of objects’ in Learning Manual.
Notation Reference: Hiding staves.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)StaffSymbol section ‘StaffSymbol’ in Internals Reference.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Staff lines can be hidden by removing the
Staff_symbol_engraver from the Staff context. As an
alternative, \stopStaff may be used.
\new Staff \with { \remove "Staff_symbol_engraver" } \relative { a''8 f e16 d c b a2 }
Empty staves can be hidden (for a so-called ‘Frenched Score’)
by applying the \RemoveEmptyStaves command on a context, which
can be done globally (in a \layout block) as well as for
specific staves only (in a \with block). This command removes
all empty staves in a score except for those in the first system. If
you want those in the first system to be hidden also, use
\RemoveAllEmptyStaves.
\layout { \context { \Staff \RemoveEmptyStaves } } \relative << \new Staff { e'4 f g a \break b1 \break a4 b c2 } \new Staff { c,4 d e f \break R1 \break f4 g c,2 } >>
A staff is considered empty when it contains only multi-measure rests,
rests, skips, or a combination of these elements. All other musical
objects (that cause a staff not to be considered as empty) are listed in the
keepAliveInterfaces context property, as initially set in the
‘ly/engraver-init.ly’ file.
\RemoveEmptyStaves and \RemoveAllEmptyStaves are
both predefined shortcuts that set such properties as
remove-empty and remove-first for the
VerticalAxisGroup object, as explained in
Context modification identifiers.
The Keep_alive_together_engraver allows groups of staves
to only be removed together and not individually. By default,
it is part of the PianoStaff context: a piano part will
only be hidden when both of its staves are empty.
Similarly, a common engraving practice in orchestral
scores is to remove empty groups of staves rather than individual
staves; that can be achieved by adding the
Keep_alive_together_engraver to the relevant staff-grouping
context, as explained Modifying context plug-ins (see
Grouping staves for the context names).
\layout {
\context {
\StaffGroup
\RemoveEmptyStaves
\consists "Keep_alive_together_engraver"
}
}
|
In the following example, staves devoted to wind instruments are removed in the second system; however, the double bass is not, because it is part of the larger group of fretted strings, which is playing.
The Keep_alive_together_engraver internally uses the
remove-layer property of a staff’s VerticalAxisGroup
to decide whether to print it or not when it is considered empty.
That property may also be set directly, in which case it acts as
a priority index: values closest to zero take precedence over
higher numbers, and thus staves whose remove-layer is
higher will be masked in favor of staves of a lower number.
This is particularly useful for ‘divisi’ staves, where some individual parts (see Writing parts) occasionally need to be expanded to more than one staff. In the following example, two parts are routed to three staves; however, all three staves are never printed at the same time:
keepAliveInterfaces property has been set to an empty list – therefore
the other two staves are considered empty and thus hidden, regardless of what
they may contain;
remove-layer setting is lower than
the single staff’s, these two staves are now printed in its place.
Such substitutions are applied not just to notes, chords and other musical events that occur immediately after the new setting, but to the whole system where it takes place.
\layout {
short-indent = 2\cm
indent = 3\cm
\context {
\Staff
keepAliveInterfaces = #'()
}
}
violI = {
\repeat unfold 24 { d'4 }
\once \unset Staff.keepAliveInterfaces
<d' g''>2
\repeat unfold 14 { d'4 }
\bar "|."
}
violII = {
\repeat unfold 24 { g4 }
<g d'>2
\repeat unfold 14 { g4 }
\bar "|."
}
\new StaffGroup \with { \consists "Keep_alive_together_engraver" } <<
\new Staff \with {
instrumentName = "Violins"
shortInstrumentName = "V I & II"
\override VerticalAxisGroup.remove-layer = 2
} << \violI \\ \violII >>
\new Staff \with {
instrumentName = "Violin I"
shortInstrumentName = "V I"
\RemoveAllEmptyStaves
\override VerticalAxisGroup.remove-layer = 1
} \violI
\new Staff \with {
instrumentName = "Violin II"
shortInstrumentName = "V II"
\RemoveAllEmptyStaves
\override VerticalAxisGroup.remove-layer = 1
} \violII
>>
|
\RemoveAllEmptyStaves can also be used to create ossia
sections for a staff. For details, see Ossia staves.
\RemoveEmptyStaves,
\RemoveAllEmptyStaves.
Music Glossary: (music-glossary)Frenched staff section ‘Frenched staff’ in Music Glossary.
Learning Manual: (learning)Visibility and color of objects section ‘Visibility and color of objects’ in Learning Manual.
Notation Reference: Changing context default settings, Staff symbol, Ossia staves, Hidden notes, Invisible rests, Visibility of objects, Context modification identifiers, Grouping staves, Modifying context plug-ins.
Installed Files: ‘ly/engraver-init.ly’.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)ChordNames section ‘ChordNames’ in Internals Reference, (internals)FiguredBass section ‘FiguredBass’ in Internals Reference, (internals)Lyrics section ‘Lyrics’ in Internals Reference, (internals)Staff section ‘Staff’ in Internals Reference, (internals)VerticalAxisGroup section ‘VerticalAxisGroup’ in Internals Reference, (internals)Staff_symbol_engraver section ‘Staff_symbol_engraver’ in Internals Reference, (internals)Axis_group_engraver section ‘Axis_group_engraver’ in Internals Reference, (internals)Keep_alive_together_engraver section ‘Keep_alive_together_engraver’ in Internals Reference.
Removing 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:
\omit StaffSymbol \override NoteHead.no-ledgers = ##t |
For the Known issues and warnings associated with
\RemoveEmptyStaves see
Changing context default settings.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section explains how to prepare parts for orchestral or ensemble music, which often requires to insert instrument names into the score. Methods to quote other voices and to format cue notes are also described, as well as a way to contract multiple consecutive empty measures in individual parts.
Aditionally, a method for printing divisi staves, sometimes used in individual or desk parts, can be found in Hiding staves.
| Instrument names | ||
| Quoting other voices | ||
| Formatting cue notes | ||
| Compressing empty measures |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Instrument names can be printed on the left side of staves in the
Staff, PianoStaff, StaffGroup, GrandStaff
and ChoirStaff contexts. The value of
instrumentName is used for the first staff, and the value
of shortInstrumentName is used for all succeeding staves.
\new Staff \with { instrumentName = "Violin " shortInstrumentName = "Vln. " } \relative { c'4.. g'16 c4.. g'16 \break | c1 | }
\markup can be used to create more complex instrument names:
\new Staff \with { instrumentName = \markup { \column { "Clarinetti" \line { "in B" \smaller \flat } } } } \relative { c''4 c,16 d e f g2 }
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, \center-column must be used:
<< \new Staff \with { instrumentName = "Flute" } \relative { f''2 g4 f } \new Staff \with { instrumentName = \markup { \center-column { "Clarinet" \line { "in B" \smaller \flat } } } } \relative { c''4 b c2 } >>
However, if the instrument names are longer, the instrument names in a
staff group may not be centered unless the indent and
short-indent settings are increased. For details about these
settings, see \paper variables for shifts and indents.
<< \new Staff \with { instrumentName = "Alto Flute in G" shortInstrumentName = "Flt." } \relative { f''2 g4 f \break g4 f g2 } \new Staff \with { instrumentName = "Clarinet" shortInstrumentName = "Clar." } \relative { c''4 b c2 \break c2 b4 c } >> \layout { indent = 3.0\cm short-indent = 1.5\cm }
To add instrument names to other contexts (such as ChordNames or
FiguredBass), Instrument_name_engraver must be added to
that context. For details, see Modifying context plug-ins.
The 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 instrumentName will be
printed and subsequent changes will be ignored:
prepPiccolo = <>^\markup \italic { muta in Piccolo } prepFlute = <>^\markup \italic { muta in Flauto } setPiccolo = { <>^\markup \bold { Piccolo } \transposition c'' } setFlute = { <>^\markup \bold { Flute } \transposition c' } \new Staff \with { instrumentName = "Flute" shortInstrumentName = "Flt." } \relative { g'1 g g g \break g1 g \prepPiccolo R R \break \set Staff.instrumentName = "Piccolo" \set Staff.shortInstrumentName = "Picc." \setPiccolo g1 g g g \break g1 g \prepFlute R R \break \set Staff.instrumentName = "Flute" \set Staff.shortInstrumentName = "Flt." \setFlute g1 g g g }
Notation Reference:
\paper variables for shifts and indents,
Modifying context plug-ins.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)InstrumentName section ‘InstrumentName’ in Internals Reference, (internals)PianoStaff section ‘PianoStaff’ in Internals Reference, (internals)Staff section ‘Staff’ in Internals Reference.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
It is very common for one voice to use the same notes as those from another voice. For example, first and second violins playing the same phrase during a particular passage of the music. This is done by letting one voice quote the other, without having to re-enter the music all over again for the second voice.
The \addQuote command, used in the top level scope, defines a
stream of music from which fragments can be quoted.
The \quoteDuring command is used to indicate the point where the
quotation begins. It is followed by two arguments: the name of the
quoted voice, as defined with \addQuote, and a music expression
for the duration of the quote.
fluteNotes = \relative { a'4 gis g gis | b4^"quoted" r8 ais\p a4( f) } oboeNotes = \relative { c''4 cis c b \quoteDuring "flute" { s1 } } \addQuote "flute" { \fluteNotes } \score { << \new Staff \with { instrumentName = "Flute" } \fluteNotes \new Staff \with { instrumentName = "Oboe" } \oboeNotes >> }
If the music expression used in \quoteDuring contains notes
instead of spacer or multimeasure rests then the quote will appear as
polyphony and may produce unexpected results.
fluteNotes = \relative { a'4 gis g gis | b4^"quoted" r8 ais\p a4( f) } oboeNotes = \relative { c''4 cis c b \quoteDuring "flute" { e4 r8 ais b4 a } } \addQuote "flute" { \fluteNotes } \score { << \new Staff \with { instrumentName = "Flute" } \fluteNotes \new Staff \with { instrumentName = "Oboe" } \oboeNotes >> }
If an \unfoldRepeats command in a music expression is required to
be printed when using \quoteDuring, then it too must also contain
its own \unfoldRepeats command;
fluteNotes = \relative { \repeat volta 2 { a'4 gis g gis } } oboeNotesDW = \relative { \repeat volta 2 \quoteDuring "incorrect" { s1 } } oboeNotesW = \relative { \repeat volta 2 \quoteDuring "correct" { s1 } } \addQuote "incorrect" { \fluteNotes } \addQuote "correct" { \unfoldRepeats \fluteNotes } \score { \unfoldRepeats << \new Staff \with { instrumentName = "Flute" } \fluteNotes \new Staff \with { instrumentName = "Oboe (incorrect)" } \oboeNotesDW \new Staff \with { instrumentName = "Oboe (correct)" } \oboeNotesW >> }
The \quoteDuring command uses the \transposition settings
of both quoted and quoting parts to produce notes for the quoting part
that have the same sounding pitch as those in the quoted part.
clarinetNotes = \relative c'' { \transposition bes \key d \major b4 ais a ais | cis4^"quoted" r8 bis\p b4( f) } oboeNotes = \relative { c''4 cis c b \quoteDuring "clarinet" { s1 } } \addQuote "clarinet" { \clarinetNotes } \score { << \new Staff \with { instrumentName = "Clarinet" } \clarinetNotes \new Staff \with { instrumentName = "Oboe" } \oboeNotes >> }
By default quoted music will include all articulations, dynamics,
markups, etc., in the quoted expression. It is possible to choose which
of these objects from the quoted music are displayed by using the
quotedEventTypes context property.
fluteNotes = \relative { a'2 g2 | b4\<^"quoted" r8 ais a4\f( c->) } oboeNotes = \relative { c''2. b4 | \quoteDuring "flute" { s1 } } \addQuote "flute" { \fluteNotes } \score { << \set Score.quotedEventTypes = #'(note-event articulation-event crescendo-event rest-event slur-event dynamic-event) \new Staff \with { instrumentName = "Flute" } \fluteNotes \new Staff \with { instrumentName = "Oboe" } \oboeNotes >> }
Quotes can also be tagged, see Using tags.
Notation Reference: Instrument transpositions, Using tags.
Installed Files: ‘scm/define-event-classes.scm’.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)Music classes section ‘Music classes’ in Internals Reference, (internals)QuoteMusic section ‘QuoteMusic’ in Internals Reference, (internals)Voice section ‘Voice’ in Internals Reference.
Only the contents of the first Voice occurring in an
\addQuote command will be considered for quotation, so if the music
expression contains \new or \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.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The simplest way to format cue notes is to explicitly create a
CueVoice context within the part.
\relative {
R1
<<
{ e'2\rest r4. e8 }
\new CueVoice {
\stemUp d'8^"flute" c d e fis2
}
>>
d,4 r a r
}
|
The \cueClef command can also be used with an explict
CueVoice context if a change of clef is required and will print
an appropriately sized clef for the cue notes. The \cueClefUnset
command can then be used to switch back to the original clef, again with
an appropriately sized clef.
\relative {
\clef "bass"
R1
<<
{ e'2\rest r4. \cueClefUnset e,8 }
\new CueVoice {
\cueClef "treble" \stemUp d''8^"flute" c d e fis2
}
>>
d,,4 r a r
}
|
The \cueClef and \cueClefUnset command can also be used
without a CueVoice if required.
\relative {
\clef "bass"
R1
\cueClef "treble"
d''8^"flute" c d e fis2
\cueClefUnset
d,,4 r a r
}
|
For more complex cue note placement, e.g including transposition, or
inserting cue notes from multiple music sources the \cueDuring or
\cueDuringWithClef commands can be used. These are more
specialized form of \quoteDuring, see Quoting other voices
in the previous section.
The syntax is:
\cueDuring quotename #direction music |
and
\cueDuringWithClef quotename #direction #clef music |
The music from the corresponding measures of the quote name
is added as a CueVoice context and occurs simultaneously with the
music, which then creates a polyphonic situation. The
direction takes the argument UP or DOWN, and
corresponds to the first and second voices respectively, determining how
the cue notes are printed in relation to the other voice.
fluteNotes = \relative { r2. c''4 | d8 c d e fis2 | g2 d | } oboeNotes = \relative c'' { R1 <>^\markup \tiny { flute } \cueDuring "flute" #UP { R1 } g2 c, } \addQuote "flute" { \fluteNotes } \new Staff { \oboeNotes }
It is possible to adjust which aspects of the music are quoted with
\cueDuring by setting the quotedCueEventTypes
property. Its default value is '(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.
Note: When a Voice starts with cueDuring, as in the
following example, the Voice context must be explicitly declared,
or else the entire music expression would belong to the CueVoice
context.
oboeNotes = \relative { r2 r8 d''16(\f f e g f a) g8 g16 g g2. } \addQuote "oboe" { \oboeNotes } \new Voice \relative c'' { \set Score.quotedCueEventTypes = #'(note-event rest-event tie-event beam-event tuplet-span-event dynamic-event slur-event) \cueDuring "oboe" #UP { R1 } g2 c, }
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.
fluteNotes = \relative { r2. c''4 d8 c d e fis2 g2 d2 } bassoonNotes = \relative c { \clef bass R1 \clef treble <>^\markup \tiny { flute } \cueDuring "flute" #UP { R1 } \clef bass g4. b8 d2 } \addQuote "flute" { \fluteNotes } \new Staff { \bassoonNotes }
Alternatively, the \cueDuringWithClef function can be used
instead. This command takes an extra argument to specify the change of
clef that needs to be printed for the cue notes but will automatically
print the original clef once the cue notes have finished.
fluteNotes = \relative { r2. c''4 d8 c d e fis2 g2 d2 } bassoonNotes = \relative c { \clef bass R1 <>^\markup { \tiny "flute" } \cueDuringWithClef "flute" #UP "treble" { R1 } g4. b8 d2 } \addQuote "flute" { \fluteNotes } \new Staff { \bassoonNotes }
Like \quoteDuring, \cueDuring takes instrument
transpositions into account. Cue notes are produced at the
pitches that would be written for the instrument receiving the cue
to produce the sounding pitches of the source instrument.
To transpose cue notes differently, use
\transposedCueDuring. This command takes an extra argument
to specify (in absolute mode) the printed pitch that you want to
represent the sound of a concert middle C. This is useful for
taking cues from an instrument in a completely different register.
piccoloNotes = \relative { \clef "treble^8" R1 c'''8 c c e g2 c4 g g2 } bassClarinetNotes = \relative c' { \key d \major \transposition bes, d4 r a r \transposedCueDuring "piccolo" #UP d { R1 } d4 r a r } \addQuote "piccolo" { \piccoloNotes } << \new Staff \piccoloNotes \new Staff \bassClarinetNotes >>
The \killCues command removes cue notes from a music
expression, so the same music expression can be used to produce
the instrument part with cues and the score. The \killCues
command removes only the notes and events that were quoted by
\cueDuring. Other markup associated with cues, such as clef
changes and a label identifying the source instrument, can be
tagged for selective inclusion in the score; see Using tags.
fluteNotes = \relative { r2. c''4 d8 c d e fis2 g2 d2 } bassoonNotes = \relative c { \clef bass R1 \tag #'part { \clef treble <>^\markup \tiny { flute } } \cueDuring "flute" #UP { R1 } \tag #'part \clef bass g4. b8 d2 } \addQuote "flute" { \fluteNotes } \new Staff { \bassoonNotes } \new StaffGroup << \new Staff { \fluteNotes } \new Staff { \removeWithTag #'part { \killCues { \bassoonNotes } } } >>
Notation Reference: Quoting other voices, Instrument transpositions, Instrument names, Clef, Musical cues, Using tags.
Snippets: (snippets)Staff notation section ‘Staff notation’ in Snippets.
Internals Reference: (internals)CueVoice section ‘CueVoice’ in Internals Reference, (internals)Voice section ‘Voice’ in Internals Reference.
Collisions can occur with rests, when using \cueDuring,
between Voice and CueVoice contexts. When using
\cueDuringWithClef or \transposedCueDuring the extra
argument required for each case must come after the quote and the
direction.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
By default, all measures are printed even if they are empty – which can happen if a rhythmic event (such as notes, rests or invisible rests) is so long as to span several measures. This behaviour can be changed by contracting all empty measures into a single one, as illustrated here (the second part of this example, with expanded measures, actually reverts back to the default behavior):
\override Score.BarNumber.break-visibility = ##(#f #t #t) \time 2/4 \compressEmptyMeasures c'1 d'1. e'\breve \bar "||" \expandEmptyMeasures c'1 d'1. e'\breve
Although that notation is syntactically correct, it may be confusing from a musical point of view, as illustrated in the previous example; hence the need for measure numbers to be explicitly printed, using the syntax described in Using break-visibility.
Where such a notation may become more useful is when applied to Full measure rests. A multi-measure rest will then be shown as a single measure containing a multi-measure rest symbol, with the number of measures of rest printed above the measure:
% Default behavior \time 3/4 r2. | R2.*2 | \time 2/4 R2 | \time 4/4 % Rest measures contracted to single measure \compressEmptyMeasures r1 | R1*17 | R1*4 | \expandEmptyMeasures % Rest measures expanded again \time 3/4 R2.*2 |
Unlike \compressEmptyMeasures, the music function
\compressMMRests will only apply to rests, leaving
any other events uncompressed. As a function rather than
a property setting, its syntax differs slightly in that
it must be followed by a music expression:
\compressMMRests { % Rests are compressed… R1*7 % … but notes can still span multiple measures. g'1 a'1*2 d'1 R1*2 }
All of the commands described in this section actually
rely on the skipBars internal property, which is
set in the Score context as explained in
The \set command.
\compressEmptyMeasures,
\expandEmptyMeasures,
\compressMMRests.
Numbering single measure rests
Multi measure rests show their length by a number except for single
measures. This can be changed by setting restNumberThreshold.
{ \compressEmptyMeasures R1 R1*10 R1*11 \bar "||" \set restNumberThreshold = 0 R1 R1*10 R1*11 \bar "||" \set restNumberThreshold = 10 R1 R1*10 R1*11 }
Changing form of multi-measure rests
If there are ten or fewer measures of rests, a series of longa and
breve rests (called in German “Kirchenpausen” - church rests) is
printed within the staff; otherwise a simple line is shown. This
default number of ten may be changed by overriding the
expand-limit property.
\relative c'' { \compressMMRests { R1*2 | R1*5 | R1*9 \override MultiMeasureRest.expand-limit = #3 R1*2 | R1*5 | R1*9 } }
Notation Reference:
Using break-visibility,
Full measure rests,
The \set command.
Internals Reference: (internals)MultiMeasureRest section ‘MultiMeasureRest’ in Internals Reference, (internals)MultiMeasureRestNumber section ‘MultiMeasureRestNumber’ in Internals Reference, (internals)MultiMeasureRestScript section ‘MultiMeasureRestScript’ in Internals Reference, (internals)MultiMeasureRestText section ‘MultiMeasureRestText’ in Internals Reference.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by gub on July 13, 2020 using texi2html 1.82.
Andere talen: català, deutsch, español, français, italiano, 日本語.
Gebruik van automatische taalkeuze.