X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Fstaff.itely;h=d7ed3e6738b55b9cb8ac7bbc3cc496625c8d0eaf;hb=5d84bfad4626892bcffd05adcced53c8a2329047;hp=dca7d4245a982c496a0402501a84d3627971632f;hpb=de0fb7239295233a76b26fbda5b989142653cac7;p=lilypond.git diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index dca7d4245a..d7ed3e6738 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -7,12 +7,14 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.12.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 @@ -35,6 +37,7 @@ grouping staves. * Instantiating new staves:: * Grouping staves:: * Nested staff groups:: +* Separating systems:: @end menu @@ -56,7 +59,6 @@ grouping staves. @cindex tablature @funindex \drummode -@funindex drummode @funindex DrumStaff @funindex RhythmicStaff @funindex TabStaff @@ -66,12 +68,12 @@ grouping staves. @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}: -@lilypond[verbatim,quote,relative=2] -\new Staff { c4 d e f } +@lilypond[verbatim,quote] +\new Staff \relative { c''4 d e f } @end lilypond The @code{DrumStaff} context creates a five-line staff set up for @@ -90,15 +92,15 @@ For details, see @ref{Percussion staves}. displays the rhythmic values of the input. Real durations are preserved. For details, see @ref{Showing melody rhythms}. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new RhythmicStaff { c4 d e f } @end lilypond @code{TabStaff} creates a tablature with six strings in standard guitar tuning. For details, see @ref{Default tablatures}. -@lilypond[verbatim,quote,relative=2] -\new TabStaff { c4 d e f } +@lilypond[verbatim,quote] +\new TabStaff \relative { c''4 d e f } @end lilypond There are two staff contexts specific for the notation of ancient @@ -108,21 +110,20 @@ described in @ref{Pre-defined contexts}. The @code{GregorianTranscriptionStaff} context creates a staff to notate modern Gregorian chant. It does not show bar lines. -@lilypond[verbatim,quote,relative=2] -\new GregorianTranscriptionStaff { c4 d e f e d } +@lilypond[verbatim,quote] +\new GregorianTranscriptionStaff \relative { c''4 d e f e d } @end lilypond 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}, @@ -172,40 +173,40 @@ 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. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] << - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } >> @end lilypond In the @code{StaffGroup} context, the group is started with a bracket and bar lines are drawn through all the staves. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new StaffGroup << - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } >> @end lilypond In a @code{ChoirStaff}, the group starts with a bracket, but bar lines are not connected. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new ChoirStaff << - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } >> @end lilypond In a @code{GrandStaff}, the group begins with a brace, and bar lines are connected between the staves. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new GrandStaff << - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } >> @end lilypond @@ -213,11 +214,11 @@ The @code{PianoStaff} is identical to a @code{GrandStaff}, except that it supports printing the instrument name directly. For details, see @ref{Instrument names}. -@lilypond[verbatim,quote,relative=2] -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" - \new Staff { c1 c } - \new Staff { c1 c } +@lilypond[verbatim,quote] +\new PianoStaff \with { instrumentName = #"Piano" } +<< + \new Staff \relative { c''1 c } + \new Staff \relative { \clef bass c1 c } >> @end lilypond @@ -234,10 +235,10 @@ New staff group contexts may be defined. For details, see @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 @@ -245,10 +246,9 @@ New staff group contexts may be defined. For details, see @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}, @@ -289,17 +289,17 @@ 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. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new StaffGroup << - \new Staff { c2 c | c2 c } + \new Staff \relative { c''2 c | c2 c } \new StaffGroup << - \new Staff { g2 g | g2 g } + \new Staff \relative { g'2 g | g2 g } \new StaffGroup \with { systemStartDelimiter = #'SystemStartSquare } << - \new Staff { e2 e | e2 e } - \new Staff { c2 c | c2 c } + \new Staff \relative { e'2 e | e2 e } + \new Staff \relative { c'2 c | c2 c } >> >> >> @@ -311,10 +311,9 @@ New nested staff group contexts can be defined. For details, see @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {nesting-staves.ly} - @seealso Notation Reference: @ref{Grouping staves}, @@ -333,6 +332,56 @@ Internals Reference: @rinternals{SystemStartSquare}. +@node Separating systems +@unnumberedsubsubsec Separating systems + +@cindex system separator mark + +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 @code{\paper} option. + +@c \book is required here to display the system separator +@c ragged-right is required as there are two systems +@lilypond[verbatim,quote,ragged-right] +\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 + } +} +@end lilypond + +@seealso +Notation Reference: +@ref{Page layout}. + +Snippets: +@rlsr{Staff notation}. + + @node Modifying single staves @subsection Modifying single staves @@ -351,125 +400,158 @@ sections are also described. @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 -@lilypond[verbatim,quote,relative=2] -\new Staff \with { - \override StaffSymbol #'line-count = #3 +@funindex \startStaff +@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 { + \stopStaff f''4 d \startStaff g, e + f'4 d \stopStaff g, e + f'4 d \startStaff g, e } -{ d4 d d d } @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 +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 { + 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 | +} +@end lilypond + +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 { + 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 | } -{ e4 d c b } @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. +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}. -@lilypond[verbatim,quote,relative=1] +Staff line thickness can be altered. Ledger lines and note stems, by +default, are also affected. + +@lilypond[verbatim,quote] \new Staff \with { - \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) + \override StaffSymbol.thickness = #3 +} \relative { + f''4 d g, e } -{ e4 d c b } @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] \new Staff \with { - \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol.thickness = #2 + \override StaffSymbol.ledger-line-thickness = #'(0.5 . 0.4) +} \relative { + f'''4 a, a,, f } -{ a4 b c d } @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 - -Modifications to staff properties in the middle of a score can be -placed between @code{\stopStaff} and @code{\startStaff}: - -@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 +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.ledger-positions = #'(-3 -2 -1 2 5 6) +} \relative { + f'''4 a, a,, 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. - -@lilypond[verbatim,quote,relative=2] -c4 b a2 -\stopStaff -b4 c d2 -\startStaff -e4 d c2 +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] +\new Staff \with { + \override StaffSymbol.ledger-extra = #4 +} \relative { + f'''4 a, d, f, +} @end lilypond +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}. -@predefined -@code{\startStaff}, -@code{\stopStaff}. -@endpredefined +@lilypond[verbatim,quote] +\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 +} +@end lilypond +The distance between staff lines can be altered. This affects ledger +line spacing as well. -@snippets +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.staff-space = #1.5 +} \relative { + f'''4 d, g, e, +} +@end lilypond -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} - @seealso Music Glossary: @rglos{line}, @@ -497,16 +579,14 @@ Internals Reference: @cindex resizing of staves @funindex \startStaff -@funindex startStaff @funindex \stopStaff -@funindex stopStaff @notation{Ossia} staves can be set by creating a new simultaneous 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 } @@ -528,17 +608,15 @@ to align the ossia staff. This method is most appropriate when 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 } @@ -557,20 +635,18 @@ example. @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 } >> @@ -578,7 +654,7 @@ example. c4 b c2 << { g4 a g2 } - \context Staff = ossia { + \context Staff = "ossia" { \startStaff g4 e8 f g2 \stopStaff } >> @@ -588,26 +664,25 @@ example. @end lilypond -Using the @code{\RemoveEmptyStaffContext} command to create ossia +Using the @code{\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 -@code{\RemoveEmptyStaffContext}, see @ref{Hiding staves}. +@code{\RemoveAllEmptyStaves}, see @ref{Hiding staves}. @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 + \RemoveAllEmptyStaves + } \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 @@ -615,22 +690,14 @@ break. For more information about e4 d c2 } >> - -\layout { - \context { - \RemoveEmptyStaffContext - \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}, @@ -659,14 +726,16 @@ Internals Reference: @cindex Frenched staff @cindex staff, hiding @cindex staff, empty -@cindex hiding of staves +@cindex hiding staves +@cindex hiding ancient staves +@cindex hiding rhythmic staves +@cindex hiding vaticana staves @cindex empty staves -@funindex \RemoveEmptyStaffContext -@funindex RemoveEmptyStaffContext +@funindex \RemoveEmptyStaves +@funindex \RemoveAllEmptyStaves @funindex Staff_symbol_engraver @funindex \stopStaff -@funindex stopStaff Staff lines can be hidden by removing the @@ -677,30 +746,34 @@ alternative, @code{\stopStaff} may be used. \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 -Empty staves can be hidden by setting the -@code{\RemoveEmptyStaffContext} command in the @code{\layout} -block. In orchestral scores, this style is known as @q{Frenched -Score}. By default, this command hides and removes all empty -staves in a score except for those in the first system. +Empty staves can be hidden (for a so-called @q{Frenched Score}) +by applying the @code{\RemoveEmptyStaves} command on a context, which +can be done globally (in a @code{\layout} block) as well as for +specific staves only (in a @code{\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 +@code{\RemoveAllEmptyStaves}. Supported contexts are @code{Staff}, +@code{RhythmicStaff} and @code{VaticanaStaff}. @warning{A staff is considered empty when it contains only -multi-measure rests, skips, spacer rests, or a combination of these +multi-measure rests, rests, skips, spacer rests, or a combination of these elements.} @lilypond[verbatim,quote,ragged-right] \layout { \context { - \RemoveEmptyStaffContext + \Staff + \RemoveEmptyStaves } } -\relative c' << +\relative << \new Staff { - e4 f g a \break + e'4 f g a \break b1 \break a4 b c2 } @@ -715,38 +788,15 @@ elements.} @cindex ossia @noindent -@code{\RemoveEmptyStaffContext} can also be used to create ossia +@code{\RemoveAllEmptyStaves} can also be used to create ossia sections for a staff. For details, see @ref{Ossia staves}. -@cindex hiding ancient staves -@cindex hiding rhythmic staves - -@funindex \RemoveEmptyStaffContext -@funindex RemoveEmptyStaffContext -@funindex \AncientRemoveEmptyStaffContext -@funindex AncientRemoveEmptyStaffContext -@funindex \RemoveEmptyRhythmicStaffContext -@funindex RemoveEmptyRhythmicStaffContext - -The @code{\AncientRemoveEmptyStaffContext} command may be used to -hide empty staves in ancient music contexts. Similarly, -@code{\RemoveEmptyRhythmicStaffContext} may be used to hide empty -@code{RhythmicStaff} contexts. - @predefined -@code{\RemoveEmptyStaffContext}, -@code{\AncientRemoveEmptyStaffContext}, -@code{\RemoveEmptyRhythmicStaffContext}. +@code{\RemoveEmptyStaves}, +@code{\RemoveAllEmptyStaves}. @endpredefined - -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{removing-the-first-empty-line.ly} - - @seealso Music Glossary: @rglos{Frenched staff}. @@ -773,22 +823,21 @@ Internals Reference: @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{\RemoveEmptyStaffContext} see @ref{Changing context default -settings}. +@code{\Staff \RemoveEmptyStaves} see +@ref{Changing context default settings}. + @node Writing parts @subsection Writing parts @@ -798,99 +847,11 @@ instrument names into a score. Methods to quote other voices and format cue notes are also described. @menu -* Metronome marks:: * Instrument names:: * Quoting other voices:: * Formatting cue notes:: @end menu - -@node Metronome marks -@unnumberedsubsubsec Metronome marks - -@cindex tempo -@cindex beats per minute -@cindex metronome mark -@cindex metronome marking with text - -@funindex \tempo -@funindex tempo - -A basic metronome mark is simple to write: - -@lilypond[verbatim,quote,relative=1] -\tempo 4 = 120 -c2 d -e4. d8 c2 -@end lilypond - -Tempo indications with text can be used instead: - -@lilypond[verbatim,quote,relative=2] -\tempo "Allegretto" -c4 e d c -b4. a16 b c4 r4 -@end lilypond - -Combining a metronome mark and text will automatically place the -metronome mark within parentheses: - -@lilypond[verbatim,quote,relative=2] -\tempo "Allegro" 4 = 160 -g4 c d e -d4 b g2 -@end lilypond - -In general, the text can be any markup object: - -@lilypond[verbatim,quote,relative=2] -\tempo \markup { \italic Faster } 4 = 132 -a8-. r8 b-. r gis-. r a-. r -@end lilypond - -A parenthesized metronome mark with no textual indication may be -written by including an empty string in the input: - -@lilypond[verbatim,quote,relative=2] -\tempo "" 8 = 96 -d4 g e c -@end lilypond - - -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{printing-metronome-and-rehearsal-marks-below-the-staff.ly} - -@c perhaps also an example of how to move it horizontally? - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{changing-the-tempo-without-a-metronome-mark.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{creating-metronome-marks-in-markup-mode.ly} - -For more details, see @ref{Formatting text}. - - -@seealso -Music Glossary: -@rglos{metronome}, -@rglos{metronomic indication}, -@rglos{tempo indication}, -@rglos{metronome mark}. - -Notation Reference: -@ref{Formatting text}, -@ref{MIDI output}. - -Snippets: -@rlsr{Staff notation}. - -Internals Reference: -@rinternals{MetronomeMark}. - - @node Instrument names @unnumberedsubsubsec Instrument names @@ -898,153 +859,143 @@ Internals Reference: @cindex instrument names, short Instrument names can be printed on the left side of staves in the -@code{Staff} and @code{PianoStaff} contexts. The value of +@code{Staff}, @code{PianoStaff}, @code{StaffGroup}, @code{GrandStaff} +and @code{ChoirStaff} contexts. The value of @code{instrumentName} is used for the first staff, and the value 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 +@lilypond[verbatim,quote,ragged-right] +\new Staff \with { + instrumentName = #"Violin " + shortInstrumentName = #"Vln. " +} \relative { + c'4.. 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 +@lilypond[verbatim,quote] +\new Staff \with { + instrumentName = \markup { + \column { "Clarinetti" + \line { "in B" \smaller \flat } + } + } +} \relative { + c''4 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] +@lilypond[verbatim,quote,indent=1.5\cm] << - \new Staff { - \set Staff.instrumentName = #"Flute" - f2 g4 f - } - \new Staff { - \set Staff.instrumentName = \markup \center-column { - Clarinet - \line { "in B" \smaller \flat } + \new Staff \with { + instrumentName = #"Flute" + } \relative { + f''2 g4 f +} + \new Staff \with { + instrumentName = \markup { + \center-column { "Clarinet" + \line { "in B" \smaller \flat } + } } - c4 b c2 - } + } \relative { c''4 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{Horizontal dimensions}. +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] -\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 +<< + \new Staff \with { + instrumentName = #"Alto Flute in G" + shortInstrumentName = #"Flt." + } \relative { + f''2 g4 f \break g4 f g2 } - \new Staff { - \set Staff.instrumentName = #"Clarinet" - \set Staff.shortInstrumentName = #"Clar." - c,4 b c2 \break + \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 +} @end lilypond @cindex instrument names, adding to other contexts -To add instrument names to other contexts (such as -@code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}), -@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 +@lilypond[verbatim,quote,ragged-right] +prepPiccolo = <>^\markup \italic { muta in Piccolo } -@funindex \addInstrumentDefinition -@funindex addInstrumentDefinition -@funindex \instrumentSwitch -@funindex instrumentSwitch +prepFlute = <>^\markup \italic { muta in Flauto } -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: +setPiccolo = { + <>^\markup \bold { Piccolo } + \transposition c'' +} -@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 = { + <>^\markup \bold { Flute } + \transposition c' +} \new Staff \with { - instrumentName = #"Bassoon" + instrumentName = #"Flute" + shortInstrumentName = #"Flt." } -\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 + \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 } @end lilypond @seealso Notation Reference: -@ref{Horizontal dimensions}, +@ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents}, @ref{Modifying context plug-ins}. Snippets: @@ -1059,217 +1010,332 @@ Internals Reference: @node Quoting other voices @unnumberedsubsubsec Quoting other voices -@cindex cues -@cindex quoting other voices -@cindex fragments +@cindex quote, voices +@cindex voices, quoting +@cindex fragments, quoting @cindex cue notes @funindex \addQuote -@funindex addQuote @funindex \quoteDuring -@funindex quoteDuring @funindex \transposition -@funindex transposition -It is very common for one voice to double some of the music from -another voice. For example, the first and second violins may play the -same notes during a passage of music. In LilyPond this is accomplished -by letting one voice @emph{quote} the other voice without having to -re-enter it. +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 @emph{quote} the other, without having to re-enter the +music all over again for the second voice. -Before a part can be quoted, the @code{\addQuote} command must be used -to initialize the quoted fragment. This command must be used in the -toplevel scope. The first argument is an identifying string, and the -second is a music expression: - -@example -flute = \relative c'' @{ - a4 gis g gis -@} -\addQuote "flute" @{ \flute @} -@end example +The @code{\addQuote} command, used in the top level scope, defines a +stream of music from which fragments can be quoted. The @code{\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 @code{\addQuote}, and a music expression -that indicates the duration of the quote, usually spacer rests or -multi-measure rests. The corresponding music (including all articulations, -dynamics, markup, etc.) from the quoted voice is inserted into the music -expression: +for the duration of the quote. @lilypond[verbatim,quote] -flute = \relative c'' { - a4 gis g->\f gis^\markup{quoted} +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" { \flute } -\relative c' { - c4 cis \quoteDuring #"flute" { s2 } +\addQuote "flute" { \fluteNotes } + +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -If the music expression used for @code{\quoteDuring} contains -anything but a spacer rest or multi-measure rest, a polyphonic -situation is created, which is often not desirable: +If the music expression used in @code{\quoteDuring} contains notes +instead of spacer or multimeasure rests then the quote will appear as +polyphony and may produce unexpected results. @lilypond[verbatim,quote] -flute = \relative c'' { - a4 gis g gis +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" { \flute } -\relative c' { - c4 cis \quoteDuring #"flute" { c4 b } +\addQuote "flute" { \fluteNotes } + +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -Quotations recognize instrument transposition settings for both -the source and target instruments if the @code{\transposition} -command is used. For details about @code{\transposition}, see -@ref{Instrument transpositions}. +If an @code{\unfoldRepeats} command in a music expression is required to +be printed when using @code{\quoteDuring}, then it too must also contain +its own @code{\unfoldRepeats} command; @lilypond[verbatim,quote] -clarinet = \relative c'' { - \transposition bes - a4 gis g gis +fluteNotes = \relative { + \repeat volta 2 { a'4 gis g gis } } -\addQuote "clarinet" { \clarinet } -\relative c' { - c4 cis \quoteDuring #"clarinet" { s2 } +oboeNotesDW = \relative { + \repeat volta 2 \quoteDuring #"incorrect" { s1 } +} + +oboeNotesW = \relative { + \repeat volta 2 \quoteDuring #"correct" { s1 } } -@end lilypond -It is possible to tag quotations with unique names in order to -process them in different ways. For details about this procedure, -see @ref{Using tags}. -It is also possible to adjust which objects from the original voice are quoted -by changing the @code{quotedEventTypes} property. By default, its value is -@code{#'(StreamEvent)}, which means that everything is quoted. Setting it -to e.g. @code{#'(note-event rest-event tie-event)} causes lilypond to quote -only notes, rests and ties, but no articulations, markup or dynamics. +\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 + >> +} +@end lilypond + +The @code{\quoteDuring} command uses the @code{\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. @lilypond[verbatim,quote] -clarinet = \relative c'' { - a4 gis g->\f gis^\markup{quoted} +clarinetNotes = \relative c'' { + \transposition bes + \key d \major + b4 ais a ais | cis4^"quoted" r8 bis\p b4( f) } -\addQuote "clarinet" { \clarinet } -\relative c' { - \set Score.quotedEventTypes = #'(note-event rest-event tie-event) - c4 cis \quoteDuring #"clarinet" { s2 } +oboeNotes = \relative { + c''4 cis c b \quoteDuring #"clarinet" { s1 } } -@end lilypond -@snippets +\addQuote "clarinet" { \clarinetNotes } -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{quoting-another-voice-with-transposition.ly} + +\score { + << + \new Staff \with { instrumentName = "Clarinet" } \clarinetNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> +} +@end lilypond @cindex note-event @cindex articulation-event @cindex dynamic-event @cindex rest-event +@cindex slur-event +@cindex crescendo-event @funindex quotedEventTypes @funindex quotedCueEventTypes -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{quoting-another-voice.ly} +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 +@code{quotedEventTypes} context property. + +@lilypond[verbatim,quote] +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 + >> + } +@end lilypond + +Quotes can also be tagged, see @ref{Using tags}. @seealso Notation Reference: @ref{Instrument transpositions}, @ref{Using tags}. +Installed Files: +@file{scm/define-event-classes.scm}. + Snippets: @rlsr{Staff notation}. Internals Reference: +@rinternals{Music classes}, @rinternals{QuoteMusic}, @rinternals{Voice}. - @knownissues - Only the contents of the first @code{Voice} occurring in an -@code{\addQuote} command will be considered for quotation, so -@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 @unnumberedsubsubsec Formatting cue notes -@cindex cues @cindex cue notes -@cindex cue notes, formatting @cindex fragments -@cindex quoting other voices -@cindex cues, formatting +@cindex cue notes, formatting +@cindex formatting, cue notes +@cindex voices, quoting + @funindex \cueDuring -@funindex cueDuring +@funindex \cueClef +@funindex \cueDuringWithClef @funindex \quoteDuring -@funindex quoteDuring -The previous section explains how to create quotations. The -@code{\cueDuring} command is a more specialized form of -@code{\quoteDuring}, being particularly useful for inserting cue -notes into a part. The syntax is as follows: +@cindex notes, smaller +@cindex smaller notes +@cindex CueVoice + +The simplest way to format cue notes is to explicitly create a +@code{CueVoice} context within the part. + +@lilypond[verbatim] +\relative { + R1 + << + { e'2\rest r4. e8 } + \new CueVoice { + \stemUp d'8^"flute" c d e fis2 + } + >> + d,4 r a r +} +@end lilypond + +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} +command can then be used to switch back to the original clef, again with +an appropriately sized clef. + +@lilypond[verbatim,noragged-right] +\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 +} +@end lilypond + +The @code{\cueClef} and @code{\cueClefUnset} command can also be used +without a @code{CueVoice} if required. + +@lilypond[verbatim,noragged-right] +\relative { + \clef "bass" + R1 + \cueClef "treble" + d''8^"flute" c d e fis2 + \cueClefUnset + d,,4 r a r +} +@end lilypond + +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 +specialized form of @code{\quoteDuring}, see @ref{Quoting other voices} +in the previous section. + +The syntax is: + +@example +\cueDuring #@var{quotename} #@var{direction} #@var{music} +@end example + +and @example -\cueDuring #@var{partname} #@var{voice} @var{music} +\cueDuringWithClef #@var{quotename} #@var{direction} #@var{clef} #@var{music} @end example -This command copies only the notes and rests from the corresponding measures -from @var{partname} into a @code{CueVoice} context. The @code{CueVoice} is -created implicitly, and occurs simultaneously with @var{music}, which -creates a polyphonic situation. The @var{voice} argument -determines whether the cue notes should be notated as a first or -second voice; @code{UP} corresponds to the first voice, and -@code{DOWN} corresponds to the second. +The music from the corresponding measures of the @code{@var{quote name}} +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 the first and second voices respectively, determining how +the cue notes are printed in relation to the other voice. @lilypond[verbatim,quote] -oboe = \relative c'' { - r2 r8 d16(\f f e g f a) - g8 g16 g g2. +fluteNotes = \relative { + r2. c''4 | d8 c d e fis2 | g2 d | } -\addQuote "oboe" { \oboe } -\new Voice \relative c'' { - \cueDuring #"oboe" #UP { R1 } +oboeNotes = \relative c'' { + R1 + <>^\markup \tiny { flute } + \cueDuring #"flute" #UP { R1 } g2 c, } + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \oboeNotes +} @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 tie-event beam-event -tuplet-span-event)}, which means that only notes, rest, ties, beams and -tuplets are quoted, but not articulations, dynamic marks, markup etc. +@code{\cueDuring} by setting the @code{quotedCueEventTypes} +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] -oboe = \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" { \oboe } +\addQuote "oboe" { \oboeNotes } \new Voice \relative c'' { \set Score.quotedCueEventTypes = #'(note-event rest-event tie-event @@ -1280,121 +1346,152 @@ oboe = \relative c'' { } @end lilypond - - -The name of the cued instrument can be printed by setting the -@code{instrumentCueName} property in the @code{CueVoice} context. +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] -oboe = \relative c''' { - g4 r8 e16 f e4 d +fluteNotes = \relative { + r2. c''4 d8 c d e fis2 g2 d2 } -\addQuote "oboe" { \oboe } -\new Staff \relative c'' << - \new CueVoice \with { - instrumentCueName = "ob." - } - \new Voice { - \cueDuring #"oboe" #UP { R1 } - g4. b8 d2 - } ->> -@end lilypond +bassoonNotes = \relative c { + \clef bass + R1 + \clef treble + <>^\markup \tiny { flute } + \cueDuring #"flute" #UP { R1 } + \clef bass + g4. b8 d2 +} -@cindex removing cues -@cindex removing cue notes -@cindex cue notes, removing +\addQuote "flute" { \fluteNotes } -@funindex \killCues -@funindex killCues -@funindex \transposedCueDuring -@funindex transposedCueDuring - -In addition to printing the name of the cued instrument, when cue -notes end, the name of the original instrument should be printed, -and any other changes introduced by the cued part should be -undone. This can be accomplished by using -@code{\addInstrumentDefinition} and @code{\instrumentSwitch}. For -an example and explanation, see @ref{Instrument names}. +\new Staff { + \bassoonNotes +} +@end lilypond -The @code{\killCues} command removes cue notes from a music -expression. This can be useful if cue notes need to be removed -from a part but may be restored at a later time. +Alternatively, the @code{\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. @lilypond[verbatim,quote] -flute = \relative c''' { - r2 cis2 r2 dis2 +fluteNotes = \relative { + r2. c''4 d8 c d e fis2 g2 d2 } -\addQuote "flute" { \flute } -\new Voice \relative c'' { - \killCues { - \cueDuring #"flute" #UP { R1 } - g4. b8 d2 - } +bassoonNotes = \relative c { + \clef bass + R1 + <>^\markup { \tiny "flute" } + \cueDuringWithClef #"flute" #UP #"treble" { R1 } + g4. b8 d2 +} + +\addQuote "flute" { \fluteNotes } + +\new Staff { + \bassoonNotes } @end lilypond -The @code{\transposedCueDuring} command is useful for adding -instrumental cues from a completely different register. The -syntax is similar to @code{\cueDuring}, but it requires one extra -argument to specify the transposition of the cued instrument. For -more information about transposition, see -@ref{Instrument transpositions}. +@funindex \transposedCueDuring + +Like @code{\quoteDuring}, @code{\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 +@code{\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. @lilypond[verbatim,quote] -piccolo = \relative c''' { +piccoloNotes = \relative { \clef "treble^8" R1 - c8 c c e g2 - a4 g g2 + c'''8 c c e g2 + c4 g g2 } -\addQuote "piccolo" { \piccolo } -cbassoon = \relative c, { - \clef "bass_8" - c4 r g r - \transposedCueDuring #"piccolo" #UP c,, { R1 } - c4 r g r +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 = "piccolo" \piccolo - \new Staff = "cbassoon" \cbassoon + \new Staff \piccoloNotes + \new Staff \bassClarinetNotes >> @end lilypond -It is possible to tag cued parts with unique names in order to -process them in different ways. For details about this procedure, -see @ref{Using tags}. +@cindex removing cue notes +@cindex cue notes, removing -@cindex notes, smaller -@cindex smaller notes +@funindex \killCues -A @code{CueVoice} context may be created explicitly if notes of a -smaller size are required, for example to set an alternative -sequence of notes more suitable for a higher or lower voice. +The @code{\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 @code{\killCues} +command removes only the notes and events that were quoted by +@code{\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 @ref{Using tags}. -@lilypond[verbatim,relative=2] -\time 12/8 -\key ees \major -g4 ees8 f4 g8 -\stemDown -<< - { d4. bes4 c8 } - \new CueVoice - { g'4. f4 ees8 } +@lilypond[verbatim,quote] +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 } } + } >> -\stemUp -d2. d2. @end lilypond +Alternatively, Clef changes and instrument labels can be +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}. Snippets: @@ -1404,9 +1501,10 @@ Internals Reference: @rinternals{CueVoice}, @rinternals{Voice}. - @knownissues - Collisions can occur with rests, when using @code{\cueDuring}, -between @code{Voice} and @code{CueVoice} contexts. +between @code{Voice} and @code{CueVoice} contexts. When using +@code{\cueDuringWithClef} or @code{\transposedCueDuring} the extra +argument required for each case must come after the quote and the +direction.