X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fstaff.itely;h=34f90a32e76c326920c8ccb94829e4d10843f93f;hb=38d7d319eabc906e82fb42002678c6d42a23b6f7;hp=d025bda0d8effb471df2d760d117f9067c8c9715;hpb=85c88bf2574dd95e77a2468580833b9e493430b0;p=lilypond.git diff --git a/Documentation/user/staff.itely b/Documentation/user/staff.itely index d025bda0d8..34f90a32e7 100644 --- a/Documentation/user/staff.itely +++ b/Documentation/user/staff.itely @@ -6,37 +6,37 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.51" +@c \version "2.12.0" @node Staff notation @section Staff notation @lilypondfile[quote]{staff-headword.ly} -This section explains how to influence the staff appearance, print -scores with more than one staff, and how to apply specific -performance marks to single staves. +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. @menu -* Displaying staves:: -* Modifying single staves:: -* Writing parts:: +* Displaying staves:: +* Modifying single staves:: +* Writing parts:: @end menu @node Displaying staves @subsection Displaying staves -This section shows the different possibilities to create and group -staves into groups, which can be marked in the beginning of each -line with either a bracket or a brace. +This section describes the different methods of creating and +grouping staves. @menu * Instantiating new staves:: -* Grouping staves:: -* Deeper nested staff groups:: +* Grouping staves:: +* Nested staff groups:: @end menu + @node Instantiating new staves @unnumberedsubsubsec Instantiating new staves @@ -45,6 +45,8 @@ line with either a bracket or a brace. @cindex staff instantiation @cindex staff, new @cindex staff, single +@cindex staff, drum +@cindex staff, percussion @cindex drum staff @cindex percussion staff @cindex Gregorian transcription staff @@ -52,88 +54,76 @@ line with either a bracket or a brace. @cindex tabstaff @cindex tablature -Staves (sg. staff) are created with the @code{\new} or -@code{\context} commands. For an explanation on these commands, -see @ref{Creating contexts}. +@funindex \drummode +@funindex drummode -There are different predefined staff contexts available in -LilyPond: +@notation{Staves} (singular: @notation{staff}) are created with +the @code{\new} or @code{\context} commands. For details, see +@ref{Creating contexts}. -@itemize -@item -The default is @code{Staff}: +The basic staff context is @code{Staff}: @lilypond[verbatim,quote,relative=2] \new Staff { c4 d e f } @end lilypond -@item -@code{DrumStaff} creates a five line staff set up for a typical -drum set. It uses different names for each instrument. The -instrument names have to be set using the @code{drummode}. See -@ref{Percussion staves}. +The @code{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 +@code{\drummode} command, with each instrument specified by name. +For details, see @ref{Percussion staves}. @lilypond[verbatim,quote] -\new DrumStaff { +\new DrumStaff { \drummode { cymc hh ss tomh } } @end lilypond -@c FIXME: remove when mentioned in NR 2.8 -@item -@code{GregorianTranscriptionStaff} sets up a staff to notate -modern Gregorian chant. It does not show bar lines. - -@lilypond[verbatim,quote,relative=2] -\new GregorianTranscriptionStaff { c4 d e f } -@end lilypond - -@item -@code{RhythmicStaff} can be used to show the rhythm of some music. -The notes are printed on one line regardless of their pitch, but -the duration is preserved. See @ref{Showing melody rhythms}. +@code{RhythmicStaff} creates a single-line staff that only +displays the rhythmic values of the input. Real durations are +preserved. For details, see @ref{Showing melody rhythms}. @lilypond[verbatim,quote,relative=2] \new RhythmicStaff { c4 d e f } @end lilypond -@item -@code{TabStaff} creates by default a tablature with six strings in -standard guitar tuning. See @ref{Default tablatures}. +@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 } @end lilypond -@end itemize +There are two staff contexts specific for the notation of ancient +music: @code{MensuralStaff} and @code{VaticanaStaff}. They are +described in @ref{Pre-defined contexts}. -@noindent -Besides these staves there are two staff contexts specific for the -notation of ancient music: @code{MensuralStaff} and -@code{VaticanaStaff}. They are described in @ref{Pre-defined -contexts}. +The @code{GregorianTranscriptionStaff} context creates a staff to +notate modern Gregorian chant. It does not show bar lines. -Once a staff is instantiated it can be started or stopped at every -point in the score. This is done with the commands -@code{\startStaff} and @code{\stopStaff}. How to use it is -explained in @ref{Staff symbol}. +@lilypond[verbatim,quote,relative=2] +\new GregorianTranscriptionStaff { c4 d e f e d } +@end lilypond +New single staff contexts may be defined. For details, see +@ref{Defining new contexts}. -@seealso +@seealso Music Glossary: @rglos{staff}, @rglos{staves}. Notation Reference: @ref{Creating contexts}, -@ref{Percussion staves}, +@ref{Percussion staves}, +@ref{Showing melody rhythms}, @ref{Default tablatures}, +@ref{Pre-defined contexts}, +@ref{Staff symbol}, @ref{Gregorian chant contexts}, @ref{Mensural contexts}, -@ref{Staff symbol}, -@ref{Pre-defined contexts}, -@ref{Showing melody rhythms}. +@ref{Defining new contexts}. Snippets: @rlsr{Staff notation}. @@ -158,24 +148,22 @@ Internals Reference: @cindex system start delimiters @cindex bracket, vertical @cindex brace, vertical +@cindex choir staff @cindex grand staff @cindex piano staff @cindex staff group @cindex staff, choir -@cindex choir staff +@cindex staff, piano +@cindex staff, grand @cindex system -LilyPond provides different types of contexts to group single -staves together. These contexts influence in the first place the -appearance of the system start delimiter, but they have also -influence on the behavior of the bar lines. +Various contexts exist to group single staves together in order to +form multi-stave systems. Each grouping context sets the style of +the system start delimiter and the behavior of bar lines. -@itemize -@item -If no context is specified, the default properties for the score -will be used: the group is started with a vertical line, and the -bar lines are not connected. The name of the beginning bar line -grob is @code{SystemStartBar}. +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] << @@ -184,9 +172,8 @@ grob is @code{SystemStartBar}. >> @end lilypond -@item -In a @code{StaffGroup}, the bar lines will be drawn through all -the staves, and the group is started with a bracket. +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] \new StaffGroup << @@ -195,9 +182,8 @@ the staves, and the group is started with a bracket. >> @end lilypond -@item -In a @code{ChoirStaff}, the group is started with a bracket, but -bar lines are not connected. +In a @code{ChoirStaff}, the group starts with a bracket, but bar +lines are not connected. @lilypond[verbatim,quote,relative=2] \new ChoirStaff << @@ -206,9 +192,8 @@ bar lines are not connected. >> @end lilypond -@item -In a @code{GrandStaff}, the group is started with a brace at the -left, and bar lines are connected between the staves. +In a @code{GrandStaff}, the group begins with a brace, and bar +lines are connected between the staves. @lilypond[verbatim,quote,relative=2] \new GrandStaff << @@ -217,42 +202,27 @@ left, and bar lines are connected between the staves. >> @end lilypond -@item -The @code{PianoStaff} behaves almost as the @code{GrandStaff} but -is optimized for setting piano music. In particular it supports -the printing of an instrument name directly, see @ref{Instrument -names}. +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 } >> @end lilypond -@end itemize - Each staff group context sets the property -@code{systemStartDelimiter} to one of the values -@code{SystemStartBar}, @code{SystemStartBrace}, and +@code{systemStartDelimiter} to one of the following values: +@code{SystemStartBar}, @code{SystemStartBrace}, or @code{SystemStartBracket}. A fourth delimiter, -@code{systemStartSquare}, is also available, but must be -instantiated manually. The usage of this last delimiter is shown -further down in the snippet section. - -According to classic engraver rules an orchestral score consists -of staves connected only with a single line at the beginning of -the system. In LilyPond this is produced grouping the -@code{Staff} contexts with @code{<< ... >>}. - -Each instrument family is grouped inside of a @code{StaffGroup} -with a starting bracket. A group of same instruments or an -instrument using more than one staff is grouped with braces in a -@code{GrandStaff}. +@code{SystemStartSquare}, is also available, but it must be +explicitly specified. -As the context names tell, @code{PianoStaff} is used for notating -piano music and @code{ChoirStaff} for all kind of vocal ensemble -music. +New staff group contexts may be defined. For details, see +@ref{Defining new contexts}. @snippets @@ -270,52 +240,35 @@ music. @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {mensurstriche-layout-bar-lines-between-the-staves.ly} -@c FIXME: move to NR 2.8.x when sectioning is ready @seealso - Music Glossary: -@rglos{brace}, +@rglos{brace}, @rglos{bracket}, @rglos{grand staff}. Notation Reference: -@ref{Instrument names}. +@ref{Instrument names}, +@ref{Defining new contexts}. Snippets: @rlsr{Staff notation}. Internals Reference: @rinternals{Staff}, +@rinternals{StaffGroup}, @rinternals{ChoirStaff}, @rinternals{GrandStaff}, -@rinternals{PianoStaff}, -@rinternals{StaffGroup}, -@rinternals{systemStartDelimiter}, +@rinternals{PianoStaff}, @rinternals{SystemStartBar}, @rinternals{SystemStartBrace}, @rinternals{SystemStartBracket}, -@rinternals{systemStartSquare}. - +@rinternals{SystemStartSquare}. -@node Deeper nested staff groups -@unnumberedsubsubsec Deeper nested staff groups -There are also two inner staff contexts named -@code{InnerStaffGroup} and @code{InnerChoirStaffGroup} besides the -grouping contexts mentioned in @ref{Grouping staves}. They behave -in the same way as their simple counterparts, except that they are -contained in another staff grouping context, thus producing one -more bracket on top of the existing one. Note that -@code{GrandStaff} and @code{PianoStaff} do not have any inner -grouping contexts. They can both be inside any other staff -context, including inner staff groups, though. - -Here is an example of an orchestral score using groupings and -nesting of these groupings. Note that the instrument names are -omitted from the source code, for instructions how to set them see -@ref{Instrument names}. +@node Nested staff groups +@unnumberedsubsubsec Nested staff groups @cindex staff, nested @cindex staves, nested @@ -324,90 +277,30 @@ omitted from the source code, for instructions how to set them see @cindex nested staff brackets @cindex brackets, nesting of @cindex braces, nesting of -@cindex inner staff group -@cindex inner choir staff group -@example -\score @{ -\relative c' << - \new StaffGroup %woodwinds - << - \new Staff @{ c1 d @} %flute - \new InnerStaffGroup << - \new Staff @{ c1 d @} %sax - \new Staff @{ c1 d @} %oboe - \new Staff @{ c1 d @} %English horn - >> - \new Staff @{ \clef bass c,1 d @} %bassoon - >> - \new StaffGroup %the brass group - << - \new Staff @{ c'1 d @} %trumpet - \new Staff @{ \clef bass c,1 d @} %trombone - \new GrandStaff %the horns need a GrandStaff (same instrument) - << - \new Staff @{ c'1 d @} - \new Staff @{ \clef bass c,1 d @} - >> - >> - \new ChoirStaff %for setting vocal music - << - \new Staff @{ c'1 d @} - \new InnerChoirStaff << - \new Staff @{ c1 d @} - \new Staff @{ c1 d @} - >> - \new Staff @{ c1 d @} - >> - \new PianoStaff %for the piano - << - \new Staff @{ c1 d @} - \new Staff @{ \clef bass c,1 d @} - >> ->> @} -@end example +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. -@c no verbatim so instrument names are only in the music -@lilypond[quote] -\score { -\relative c' << - \new StaffGroup %woodwinds - << - \new Staff { \set Staff.instrumentName = "fl" c1 d } %flute - \new InnerStaffGroup << - \new Staff { \set Staff.instrumentName = "sax" c1 d } %sax 1 - \new Staff { \set Staff.instrumentName = "ob" c1 d } %sax 2 - \new Staff { \set Staff.instrumentName = "ca" c1 d } - >> - \new Staff { \set Staff.instrumentName = "bs" \clef bass c,1 d } %bassoon - >> - \new StaffGroup %the brass group - << - \new Staff { \set Staff.instrumentName = "tr" c'1 d } %trumpet - \new Staff { \set Staff.instrumentName = "tb" \clef bass c,1 d } %trombone - \new GrandStaff %the horns need a GrandStaff (same instrument) +@lilypond[verbatim,quote,relative=2] +\new StaffGroup << + \new Staff { c2 c | c2 c } + \new StaffGroup << + \new Staff { g2 g | g2 g } + \new StaffGroup \with { + systemStartDelimiter = #'SystemStartSquare + } << - \new Staff { \set Staff.instrumentName = "cor1" c'1 d } - \new Staff { \set Staff.instrumentName = "cor2" \clef bass c,1 d } + \new Staff { e2 e | e2 e } + \new Staff { c2 c | c2 c } >> >> - \new ChoirStaff %for setting vocal music - << - \new Staff { \set Staff.instrumentName = "S" c'1 d } - \new InnerChoirStaff << - \new Staff { \set Staff.instrumentName = "A1" c1 d } - \new Staff { \set Staff.instrumentName = "A2" c1 d } - >> - \new Staff { \set Staff.instrumentName = "T" c1 d } - >> - \new PianoStaff %for the piano - << - \new Staff { c1 d } - \new Staff { \clef bass c,1 d } - >> ->> } +>> @end lilypond +New nested staff group contexts can be defined. For details, see +@ref{Defining new contexts}. + @snippets @@ -416,42 +309,45 @@ omitted from the source code, for instructions how to set them see @seealso +Notation Reference: +@ref{Grouping staves}, +@ref{Instrument names}, +@ref{Defining new contexts}. Snippets: @rlsr{Staff notation}. -Notation Reference: -@ref{Grouping staves}, -@ref{Instrument names}. - Internals Reference: -@rinternals{InnerChoirStaffGroup}, -@rinternals{InnerStaffGroup}, -@rinternals{SystemStartBar}, +@rinternals{StaffGroup}, +@rinternals{ChoirStaff}, +@rinternals{SystemStartBar}, @rinternals{SystemStartBrace}, @rinternals{SystemStartBracket}, -@rinternals{systemStartDelimiterHierarchy}. +@rinternals{SystemStartSquare}. @node Modifying single staves @subsection Modifying single staves This section explains how to change specific attributes of one -staff like the staff lines, starting and stopping of staves, -sizing of staves, and setting ossia sections. +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. @menu -* Staff symbol:: -* Ossia staves:: -* Hiding staves:: +* Staff symbol:: +* Ossia staves:: +* Hiding staves:: @end menu + @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 @@ -464,79 +360,48 @@ sizing of staves, and setting ossia sections. @cindex spacing of ledger lines @cindex number of staff lines -The layout object which draws the lines of a staff is called -@code{staff symbol}. The staff symbol may be tuned in number, -thickness and distance of lines, using properties. It may also be -started and stopped at every point in the score. +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. -@itemize -@item -Changing the number of staff lines is done by overriding -@code{line-count}. You may need to adjust the clef position and -the position of the middle C to fit to the new staff. For an -explanation, see the snippet section in @ref{Displaying pitches}. +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}. @lilypond[verbatim,quote,relative=2] -\new Staff { - \override Staff.StaffSymbol #'line-count = #3 - d4 d d d -} -@end lilypond - -@item -The placement and amount of the staff lines can also set totally -manually by defining their positions explicitly. The middle of -the staff has the value of 0, each half staff space up and down -adds an integer. The default values are 4 2 0 -2 -4. Bar lines -are drawn according to the calculated width of the system, but -they are always centered. As the example shows, the positions of -the notes are not influenced by the position of the staff lines. - -@lilypond[verbatim,quote,relative=1] \new Staff \with { - \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7) + \override StaffSymbol #'line-count = #3 } -{ a4 e' f b | d1 } +{ d4 d d d } @end lilypond -@item -The staff line thickness can be set by overriding the -@code{thickness} property. Note that it gets applied also to -ledger lines and stems, since they depend on the staff line -thickness. The argument of @code{thickness} is a factor of -@code{line-thickness} which defaults to the normal staff line +Staff line thickness can be modified. The thickness of ledger +lines and stems are also affected, since they depend on staff line thickness. @lilypond[verbatim,quote,relative=1] \new Staff \with { \override StaffSymbol #'thickness = #3 } -{ d4 d d d } +{ e4 d c b } @end lilypond -@item -The thickness of the ledger lines can also be set independent of -the settings for staff lines. The setting is calculated from a -pair of values which will be added for the final thickness. The -first value is the staff line thickness multiplied by a factor, -the second is the staff space multiplied by a factor. In the -example the ledger lines get their thickness from one staff line -thickness plus 1/5 staff space, so they are heavier than a normal -staff line. +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. @lilypond[verbatim,quote,relative=1] \new Staff \with { \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) } -{ d4 d d d } +{ e4 d c b } @end lilypond -@item -The distance of the stafflines can be changed with the -@code{staff-space} property. Its argument is the amount of staff -spaces that should be inserted between the lines. The default -value is 1. Setting the distance has influence on the staff lines -as well as on ledger lines. +The distance between staff lines can be changed. This setting +affects the spacing of ledger lines as well. @lilypond[verbatim,quote,relative=1] \new Staff \with { @@ -545,44 +410,51 @@ as well as on ledger lines. { a4 b c d } @end lilypond -@item -The length of the staff line can also be adjusted manually. The -unit is one staff space. Spacing of the objects inside the staff -does not get influenced by this setting. +Further details about the properties of @code{StaffSymbol} can be +found in @rinternals{staff-symbol-interface}. -@lilypond[verbatim,quote,relative=1] -\new Staff \with { - \override StaffSymbol #'width = #23 -} -{ a4 e' f b | d1 } -@end lilypond +@cindex stopping a staff +@cindex starting a staff +@cindex staff, starting +@cindex staff, stopping -@end itemize +@funindex \startStaff +@funindex startStaff +@funindex \stopStaff +@funindex stopStaff -These properties can only be set before instantiating the staff -symbol. But it is possible to start and stop staves in the middle -of a score, so each new setting will be applied to the newly -instantiated staff. +Modifications to staff properties in the middle of a score can be +placed between @code{\stopStaff} and @code{\startStaff}: @lilypond[verbatim,quote,relative=2] -b4 b -%Set here the overrides for the staff -\override Staff.StaffSymbol #'line-count = 2 -\stopStaff \startStaff -b b -%Revert to the default +c2 c +\stopStaff +\override Staff.StaffSymbol #'line-count = #2 +\startStaff +b2 b +\stopStaff \revert Staff.StaffSymbol #'line-count -\stopStaff \startStaff -b b +\startStaff +a2 a @end lilypond - -@predefined +@noindent +In general, @code{\startStaff} and @code{\stopStaff} can be used +to stop or start a staff in the middle of a score. -@funindex \startStaff +@lilypond[verbatim,quote,relative=2] +c4 b a2 +\stopStaff +b4 c d2 +\startStaff +e4 d c2 +@end lilypond + + +@predefined @code{\startStaff}, -@funindex \stopStaff @code{\stopStaff}. +@endpredefined @snippets @@ -590,24 +462,29 @@ b b @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} -@seealso +@seealso Music Glossary: @rglos{line}, @rglos{ledger line}, @rglos{staff}. Notation Reference: -@ref{Displaying pitches}. +@ref{Clef}. + +Snippets: +@rlsr{Staff notation}. Internals Reference: -@rinternals{StaffSymbol}. +@rinternals{StaffSymbol}, +@rinternals{staff-symbol-interface}. + @knownissues -When setting staff lines manually, bar lines are always drawn -centered on the position 0, so the maximum distance of the bar -lines in either direction must be equal. +When setting vertical staff line positions manually, bar lines are +always centered on position 0, so the maximum distance between the +outermost bar lines in either direction must be equal. @node Ossia staves @@ -619,79 +496,157 @@ lines in either direction must be equal. @cindex staff, resizing of @cindex resizing of staves -Tweaking the staff object allows to resize the staff: +@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 \with { - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) -} -\relative c { - \clef bass - c8 c c c c c c c +\new Staff \relative c'' { + c4 b d c + << + { c4 b d c } + \new Staff { e4 d f e } + >> + c4 b c2 } @end lilypond @noindent -This involves shrinking the staff spaces, the staff lines and the -font size by the factor 3. You find a more precise explanation in -@ref{Setting the staff size}. +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 +@rlearning{Nesting music expressions}. -The @emph{ossia} section in the next example are just put parallel -to the main staff with @code{<<} and @code{>>} brackets. The -@emph{ossia} staff is stopped and started explicitely and white -space is inserted with the @code{\skip} command. +The following example uses the @code{alignAboveContext} property +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 + << + { 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) + firstClef = ##f + } + { e4 d f e } + >> + c4 b c2 +} +@end lilypond + +If many isolated ossia staves are needed, creating an empty +@code{Staff} context with a specific @emph{context id} may be more +appropriate; the ossia staves may then be created by +@emph{calling} this context and using @code{\startStaff} and +@code{\stopStaff} at the desired locations. The benefits of this +method are more apparent if the piece is longer than the following +example. + +@lilypond[verbatim,quote,ragged-right] << - \new Staff \with - { - %No time signature in the ossia staff + \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) - firstClef = ##f } - \relative c'' { - \stopStaff - \skip 2 + { \stopStaff s1*6 } - \startStaff - \clef treble - bes8[^"ossia" g bes g] - \stopStaff + \new Staff \relative c' { + c4 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 + } +>> +@end lilypond - s2 +Using the @code{\RemoveEmptyStaffContext} 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. In this case, spacer rests do not need to be used at all; +only @code{\startStaff} and @code{\stopStaff} are necessary. For +more information about @code{\RemoveEmptyStaffContext}, see +@ref{Hiding staves}. - \startStaff - f8 d g4 +@lilypond[verbatim,quote,ragged-right] +<< + \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) } - \new Staff \relative c'' { - \time 2/4 - c4 c g' g a a g2 + \new Staff \relative c' { + c4 b c2 + e4 f e2 + g4 a g2 \break + << + { c4 b c2 } + \context Staff = ossia { + c4 e8 d c2 \stopStaff + } + >> + g4 a g2 + e4 d c2 } >> + +\layout { + \context { + \RemoveEmptyStaffContext + \override VerticalAxisGroup #'remove-first = ##t + } +} @end lilypond @snippets -@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle] -@c {making-some-staff-lines-thicker-than-the-others.ly} -@c snippet 277 +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{vertically-aligning-ossias-and-lyrics.ly} @seealso - Music Glossary: @rglos{ossia}, @rglos{staff}, @rglos{Frenched staff}. +Learning Manual: +@rlearning{Nesting music expressions}, +@rlearning{Size of objects}, +@rlearning{Length and thickness of objects}. + Notation Reference: -@ref{Setting the staff size}. +@ref{Hiding staves}. Snippets: @rlsr{Staff notation}. @@ -703,118 +658,98 @@ Internals Reference: @node Hiding staves @unnumberedsubsubsec Hiding staves -@cindex Frenched scores +@cindex Frenched score +@cindex Frenched staff @cindex staff, hiding -@cindex staff, empty +@cindex staff, empty @cindex hiding of staves @cindex empty staves -@cindex Frenched staves -In orchestral scores, staff lines that only have rests are usually -removed; this saves some space. This style is called @q{French -Score}. For the @code{Lyrics}, @code{ChordNames}, and -@code{FiguredBass} contexts, this is switched on by default. When -the lines of these contexts turn out empty after the line-breaking -process, they are removed. +@funindex \RemoveEmptyStaffContext +@funindex RemoveEmptyStaffContext + -For normal staves this behaviour is called with the -@code{\RemoveEmptyStaffContext} command. It is set in the -@code{\layout} block. As a result staves containing nothing or -whole mesure rests are removed after a line break. +Staff lines can be hidden by removing the +@code{Staff_symbol_engraver} from the @code{Staff} context. As an +alternative, @code{\stopStaff} may be used. @lilypond[verbatim,quote] -\layout { - \context { - \RemoveEmptyStaffContext - } -} -\relative c'' { - << - \new Staff { e4 f g a \break c1 } - \new Staff { c4 d e f \break R1 } - >> +\new Staff \with { + \remove "Staff_symbol_engraver" } +\relative c''' { a8 f e16 d c b a2 } @end lilypond -To remove other types of contexts, use -@code{\AncientRemoveEmptyStaffContext} or -@code{\RemoveEmptyRhythmicStaffContext}. - -@cindex ossia -Another application of the @code{\RemoveEmptyStaffContext} is to -make ossia sections, i.e., alternative melodies on a separate -piece of staff, with help of a Frenched staff. See -@ref{Ossia staves}. +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. -You can make the staff lines invisible by removing the -@code{Staff_symbol_engraver} from the @code{Staff} context. +@warning{A staff is considered empty when it contains only +multi-measure rests, skips, spacer rests, or a combination of these +elements.} -@lilypond[verbatim,quote] -\score { - \new Staff \relative c'' { c8 c c16 c c c } - \layout{ - \context { - \Staff - \remove Staff_symbol_engraver - } +@lilypond[verbatim,quote,ragged-right] +\layout { + \context { + \RemoveEmptyStaffContext } } -@end lilypond +\relative c' << + \new Staff { + e4 f g a \break + b1 \break + a4 b c2 + } + \new Staff { + c,4 d e f \break + R1 \break + f4 g c,2 + } +>> +@end lilypond -@snippets +@cindex ossia -The first empty staff can also be removed from the score with a -setting in the @code{VerticalAxisGroup} property. This can be -done globally inside the @code{\layout} block, or locally inside -the specific staff that should be removed. In the latter case, you -have to specify the context (@code{Staff} applies only to the -current staff) in front of the property. +@noindent +@code{\RemoveEmptyStaffContext} can also be used to create ossia +sections for a staff. For details, see @ref{Ossia staves}. -The lower staff of the second staff group is not removed, because -the setting applies only to the specific staff inside of which it -is written. +@cindex hiding ancient staves +@cindex hiding rhythmic staves -@lilypond[verbatim,quote] -\layout { - \context { - \RemoveEmptyStaffContext - %To use the setting globally, uncomment the following line: - %\override VerticalAxisGroup #'remove-first = ##t - } -} -\new StaffGroup - \relative c'' << - \new Staff { - e4 f g a \break c1 } - \new Staff { - %To use the setting globally, comment this line, uncomment the line above - \override Staff.VerticalAxisGroup #'remove-first = ##t - R1 \break R1 } - >> -\new StaffGroup - << - \new Staff { e4 f g a \break c1 } - \new Staff { R \break R1 } - >> -@end lilypond +@funindex \RemoveEmptyStaffContext +@funindex RemoveEmptyStaffContext +@funindex \AncientRemoveEmptyStaffContext +@funindex AncientRemoveEmptyStaffContext +@funindex \RemoveEmptyRhythmicStaffContext +@funindex RemoveEmptyRhythmicStaffContext -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{removing-the-first-empty-line.ly} +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 - -@funindex \RemoveEmptyStaffContext @code{\RemoveEmptyStaffContext}, -@funindex \AncientRemoveEmptyStaffContext @code{\AncientRemoveEmptyStaffContext}, -@funindex \RemoveEmptyRhythmicStaffContext @code{\RemoveEmptyRhythmicStaffContext}. +@endpredefined + + +@snippets + +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{removing-the-first-empty-line.ly} @seealso +Music Glossary: +@rglos{Frenched staff}. Notation Reference: @ref{Staff symbol}, @@ -828,66 +763,107 @@ Internals Reference: @rinternals{FiguredBass}, @rinternals{Lyrics}, @rinternals{Staff}, -@rinternals{VerticalAxisGroup}. +@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 +@end example @node Writing parts @subsection Writing parts +This section explains how to insert tempo indications and +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:: +* Metronome marks:: +* Instrument names:: +* Quoting other voices:: +* Formatting cue notes:: @end menu @node Metronome marks @unnumberedsubsubsec Metronome marks -@cindex Tempo +@cindex tempo @cindex beats per minute @cindex metronome marking +@cindex metronome marking with text -Metronome settings can be entered as follows +@funindex \tempo +@funindex tempo -@example -\tempo @var{duration} = @var{per-minute} -@end example +A basic metronome mark is simple to write: -In the MIDI output, they are interpreted as a tempo change. In -the layout output, a metronome marking is printed +@lilypond[verbatim,quote,relative=1] +\tempo 4 = 120 +c2 d +e4. d8 c2 +@end lilypond -@funindex \tempo +Tempo indications with text can be used instead: @lilypond[verbatim,quote,relative=2] -\tempo 8. = 120 -c1 +\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: -@snippets +@lilypond[verbatim,quote,relative=2] +\tempo "Allegro" 4 = 160 +g4 c d e +d4 b g2 +@end lilypond -To change the tempo in the MIDI output without printing anything, -make the metronome marking invisible @example \once \override -Score.MetronomeMark #'transparent = ##t @end example +In general, the text can be any markup object: -To print other metronome markings, use these markup commands -@lilypond[verbatim,quote,relative=1] -c4^\markup { - ( - \smaller \general-align #Y #DOWN \note #"16." #1 - = - \smaller \general-align #Y #DOWN \note #"8" #1 - ) } +@lilypond[verbatim,quote,relative=2] +\tempo \markup { \italic Faster } 4 = 132 +a8-. r8 b-. r gis-. r a-. r @end lilypond -@noindent +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}, @@ -895,29 +871,14 @@ Music Glossary: @rglos{metronome mark}. Notation Reference: -@ref{Formatting text}. +@ref{Formatting text}, +@ref{MIDI output}. Snippets: @rlsr{Staff notation}. Internals Reference: -@rinternals{MetronomeMark}, -@ref{MIDI output}. - - -@knownissues - -Collisions are not checked. If you have notes above the top line -of the staff (or notes with articulations, slurs, text, etc), then -the metronome marking may be printed on top of musical symbols. -If this occurs, increase the padding of the metronome mark to -place it further away from the staff. - -@example -\override Score.MetronomeMark #'padding = #2.5 -@end example - -@c perhaps also an example of how to move it horizontally? +@rinternals{MetronomeMark}. @node Instrument names @@ -926,97 +887,149 @@ place it further away from the staff. @cindex instrument names @cindex instrument names, short -In an orchestral score, instrument names are printed at the left -side of the staves. +Instrument names can be printed on the left side of staves in the +@code{Staff} and @code{PianoStaff} contexts. The value of +@code{instrumentName} is used for the first staff, and the value +of @code{shortInstrumentName} is used for all succeeding staves. -This can be achieved by setting @code{Staff}.@code{instrumentName} -and @code{Staff}.@code{shortInstrumentName}, or -@code{PianoStaff}.@code{instrumentName} and -@code{PianoStaff}.@code{shortInstrumentName}. This will print -text before the start of the staff. For the first staff, -@code{instrumentName} is used. If set, @code{shortInstrumentName} -is used for the following staves. - -@lilypond[verbatim,quote,relative=1] -\set Staff.instrumentName = "Ploink " -\set Staff.shortInstrumentName = "Plk " -c1 +@lilypond[verbatim,quote,ragged-right,relative=1] +\set Staff.instrumentName = #"Violin " +\set Staff.shortInstrumentName = #"Vln " +c4.. g'16 c4.. g'16 \break -c''1 +c1 @end lilypond -You can also use markup texts to construct more complicated -instrument names, for example +Markup mode can be used to create more complicated instrument +names: @lilypond[verbatim,quote,relative=2] \set Staff.instrumentName = \markup { \column { "Clarinetti" \line { "in B" \smaller \flat } } } -c1 +c4 c,16 d e f g2 @end lilypond @cindex instrument names, centering -As instrument names are centered by default, multi line names are -better entered using @code{\center-align}: +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,relative=2] +@lilypond[verbatim,quote,indent=1.5\cm,relative=2] << \new Staff { - \set Staff.instrumentName = \markup \center-align { - Clarinetti - \line { "in B" \smaller \flat } - } - c1 + \set Staff.instrumentName = #"Flute" + f2 g4 f } \new Staff { - \set Staff.instrumentName = "Vibraphone" - c1 + \set Staff.instrumentName = \markup \center-column { + Clarinet + \line { "in B" \smaller \flat } + } + c4 b c2 } >> @end lilypond -For longer instrument names, it may be useful to increase the -@code{indent} setting in the @code{\layout} block. +@funindex indent +@funindex short-indent -Short instrument names, printed before the systems following the -first one, are also centered by default, in a space which width is -given by the @code{short-indent} variable of the @code{\layout} -block. +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}. -To add instrument names to other contexts (such as -@code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}), the -engraver must be added to that context. +@lilypond[verbatim,quote,ragged-right] +\layout { + indent = 3.0\cm + short-indent = 1.5\cm +} -@example -\layout@{ - \context @{\GrandStaff \consists "Instrument_name_engraver"@} -@} -@end example +\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 -@noindent -More information about adding and removing engravers can be found -in @ref{Modifying context plug-ins}. +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}. @cindex instrument names, changing +@cindex changing instrument names -Instrument names may be changed in the middle of a piece, +Instrument names may be changed in the middle of a piece: -@lilypond[verbatim,quote,relative=1] -\set Staff.instrumentName = "First" -\set Staff.shortInstrumentName = "one" +@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" +\set Staff.instrumentName = #"Second" +\set Staff.shortInstrumentName = #"two" c1 c c c \break c1 c c c \break @end lilypond +@cindex instrument switch +@cindex switching instruments + +@funindex \addInstrumentDefinition +@funindex addInstrumentDefinition +@funindex \instrumentSwitch +@funindex instrumentSwitch + +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: + +@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")) -@seealso +\new Staff \with { + instrumentName = #"Bassoon" +} +\relative c' { + \clef tenor + \compressFullBarRests + c2 g' + R1*16 + \instrumentSwitch "contrabassoon" + c,,2 g \break + c,1 ~ | c1 +} +@end lilypond + +@seealso Notation Reference: +@ref{Horizontal dimensions}, @ref{Modifying context plug-ins}. Snippets: @@ -1036,99 +1049,105 @@ Internals Reference: @cindex fragments @cindex cue notes -With quotations, fragments of other parts can be inserted into a -part directly. Before a part can be quoted, it must be marked -especially as quotable. This is done with the @code{\addQuote} -command. +@funindex \addQuote +@funindex addQuote +@funindex \quoteDuring +@funindex quoteDuring +@funindex \transposition +@funindex transposition -@example -\addQuote @var{name} @var{music} -@end example - -@noindent -Here, @var{name} is an identifying string. The @var{music} is any -kind of music. Here is an example of @code{\addQuote} - -@example -\addQuote clarinet \relative c' @{ - f4 fis g gis -@} -@end example +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. -This command must be entered at toplevel, i.e., outside any music -blocks. Typically, one would use an already defined music event -as the @var{music}: +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 -clarinet = \relative c' @{ - f4 fis g gis +flute = \relative c'' @{ + a4 gis g gis @} -\addQuote clarinet @{ \clarinet @} +\addQuote "flute" @{ \flute @} @end example -After calling @code{\addQuote}, the quotation may then be done -with @code{\quoteDuring} or @code{\cueDuring}, - -@example -\quoteDuring #@var{name} @var{music} -@end example +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 from the quoted voice is +inserted into the music expression: -During a part, a piece of music can be quoted with the -@code{\quoteDuring} command. +@lilypond[verbatim,quote] +flute = \relative c'' { + a4 gis g gis +} +\addQuote "flute" { \flute } -@example -\quoteDuring #"clarinet" @{ s2. @} -@end example +\relative c' { + c4 cis \quoteDuring #"flute" { s2 } +} +@end lilypond -This would cite three quarter notes (the duration of @code{s2.}) -of the previously added @code{clarinet} voice. +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: -More precisely, it takes the current time-step of the part being -printed, and extracts the notes at the corresponding point of the -@code{\addQuote}d voice. Therefore, the argument to -@code{\addQuote} should be the entire part of the voice to be -quoted, including any rests at the beginning. +@lilypond[verbatim,quote] +flute = \relative c'' { + a4 gis g gis +} +\addQuote "flute" { \flute } -It is possible to use another music expression instead of -@code{s}, thus creating a polyphonic section, but this may not -always give the desired result. +\relative c' { + c4 cis \quoteDuring #"flute" { c4 b } +} +@end lilypond -Quotations take into account the transposition of both source and -target instruments, if they are specified using the -@code{\transposition} command. +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}. -@lilypond[verbatim,quote,relative=1] -\addQuote clarinet -{ +@lilypond[verbatim,quote] +clarinet = \relative c'' { \transposition bes - f4 fis g gis + a4 gis g gis } +\addQuote "clarinet" { \clarinet } -{ - e8 f8 \quoteDuring #"clarinet" { s2 } +\relative c' { + c4 cis \quoteDuring #"clarinet" { s2 } } @end lilypond -The type of events that are present in the quoted music can be -trimmed with the @code{quotedEventTypes} property. The default -value is @code{(note-event rest-event)}, which means that only -notes and rests of the quoted voice end up in the -@code{\quoteDuring}. Setting +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}. -@example -\set Staff.quotedEventTypes = - #'(note-event articulation-event dynamic-event) -@end example -@noindent -will quote notes (but no rests), together with scripts and -dynamics. +@snippets +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{quoting-another-voice-with-transposition.ly} -@seealso +@cindex note-event +@cindex articulation-event +@cindex dynamic-event +@cindex rest-event +@funindex quotedEventTypes + +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{quoting-another-voice.ly} + +@seealso Notation Reference: -@ref{Instrument transpositions}. +@ref{Instrument transpositions}, +@ref{Using tags}. Snippets: @rlsr{Staff notation}. @@ -1142,7 +1161,7 @@ Internals Reference: Only the contents of the first @code{Voice} occurring in an @code{\addQuote} command will be considered for quotation, so -@var{music} can not contain @code{\new} and @code{\context Voice} +@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 @@ -1161,110 +1180,150 @@ written entirely in lower-case letters: @code{\addquote}. @cindex cue notes @cindex cue notes, formatting @cindex fragments -@cindex quoting other voices +@cindex quoting other voices @cindex cues, formatting -The previous section deals with inserting notes from another -voice. There is a more advanced music function called -@code{\cueDuring}, which makes formatting cue notes easier. +@funindex \cueDuring +@funindex cueDuring -The syntax is +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: @example - \cueDuring #@var{name} #@var{updown} @var{music} +\cueDuring #@var{partname} #@var{voice} @var{music} @end example -This will insert notes from the part @var{name} into a -@code{Voice} called @code{cue}. This happens simultaneously with -@var{music}, which usually is a rest. When the cue notes start, -the staff in effect becomes polyphonic for a moment. The argument -@var{updown} determines whether the cue notes should be notated as -a first or second voice. - -@lilypond[verbatim] -smaller = { - \set fontSize = #-2 - \override Stem #'length-fraction = #0.8 - \override Beam #'thickness = #0.384 - \override Beam #'length-fraction = #0.8 +This command copies 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. + +@lilypond[verbatim,quote] +oboe = \relative c'' { + r2 r8 d16 f e g f a + g8 g16 g g2. } +\addQuote "oboe" { \oboe } -\addQuote clarinet -\relative c' { - R1*20 - r2 r8 c' f f +\new Voice \relative c'' { + \cueDuring #"oboe" #UP { R1 } + g2 c, } +@end lilypond -\new Staff \relative c' << +@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. - % setup a context for cue notes. - \new Voice = "cue" { \smaller \skip 1*21 } +The name of the cued instrument can be printed by setting the +@code{instrumentCueName} property in the @code{CueVoice} context. - \set Score.skipBars = ##t +@lilypond[verbatim,quote] +oboe = \relative c''' { + g4 r8 e16 f e4 d +} +\addQuote "oboe" { \oboe } +\new Staff \relative c'' << + \new CueVoice \with { + instrumentCueName = "ob." + } \new Voice { - R1*20 - \cueDuring #"clarinet" #UP { - R1 - } - g4 g2. + \cueDuring #"oboe" #UP { R1 } + g4. b8 d2 } >> @end lilypond -Here are a couple of hints for successful cue notes: +@cindex removing cues +@cindex removing cue notes +@cindex cue notes, removing -@itemize -@item -Cue notes have smaller font sizes. +@funindex \killCues +@funindex killCues +@funindex \transposedCueDuring +@funindex transposedCueDuring -@item -The cued part is marked with the instrument playing the cue. +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}. -@item -When the original part takes over again, this should be marked -with the name of the original instrument. +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. -@item -Any other changes introduced by the cued part should also be -undone. For example, if the cued instrument plays in a different -clef, the original clef should be stated once again. +@lilypond[verbatim,quote] +flute = \relative c''' { + r2 cis2 r2 dis2 +} +\addQuote "flute" { \flute } -@end itemize +\new Voice \relative c'' { + \killCues { + \cueDuring #"flute" #UP { R1 } + g4. b8 d2 + } +} +@end lilypond -The macro @code{\transposedCueDuring} is useful to add cues to -instruments which use a completely different octave range (for -example, having a cue of a piccolo flute within a contra bassoon -part). +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}. @lilypond[verbatim,quote] -picc = \relative c''' { +piccolo = \relative c''' { \clef "treble^8" - R1 | - c8 c c e g2 | - a4 g g2 | + R1 + c8 c c e g2 + a4 g g2 } -\addQuote "picc" { \picc } +\addQuote "piccolo" { \piccolo } -cbsn = \relative c, { +cbassoon = \relative c, { \clef "bass_8" c4 r g r - \transposedCueDuring #"picc" #UP c,, { R1 } | - c4 r g r | + \transposedCueDuring #"piccolo" #UP c,, { R1 } + c4 r g r } << - \new Staff = "picc" \picc - \new Staff = "cbsn" \cbsn + \new Staff = "piccolo" \piccolo + \new Staff = "cbassoon" \cbassoon >> @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}. + @seealso +Notation Reference: +@ref{Instrument transpositions}, +@ref{Instrument names}, +@ref{Using tags}. Snippets: @rlsr{Staff notation}. Internals Reference: +@rinternals{CueVoice}, @rinternals{Voice}. + +@knownissues + +Collisions can occur with rests, when using @code{\cueDuring}, +between @code{Voice} and @code{CueVoice} contexts.