X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fstaff.itely;h=3791eacb71b6954ad5237a783ae82c64de57db8c;hb=17e898abae3983e28021b0988d2fdf88365261f8;hp=f26c2c58039ad5e129057c5eb0dce1846901dac8;hpb=ce49c007e453c5575cc82fc0c26f2d1e8ff11803;p=lilypond.git diff --git a/Documentation/user/staff.itely b/Documentation/user/staff.itely index f26c2c5803..3791eacb71 100644 --- a/Documentation/user/staff.itely +++ b/Documentation/user/staff.itely @@ -6,16 +6,16 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.57" +@c \version "2.11.64" @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:: @@ -27,16 +27,16 @@ performance marks to single staves. @node Displaying staves @subsection Displaying staves -This section shows the different possibilities of creating and -grouping staves, which are marked at 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:: +* Nested staff groups:: @end menu + @node Instantiating new staves @unnumberedsubsubsec Instantiating new staves @@ -62,9 +62,10 @@ The basic staff context is @code{Staff}: \new Staff { c4 d e f } @end lilypond -@code{DrumStaff} creates a five-line staff set up for a -typical drum set. It uses different names for each instrument. -The instrument names are set using the @code{\drummode} command. +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] @@ -73,14 +74,6 @@ For details, see @ref{Percussion staves}. } @end lilypond -@c FIXME: remove when mentioned in NR 2.8 -@code{GregorianTranscriptionStaff} 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 } -@end lilypond - @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}. @@ -100,13 +93,18 @@ 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}. -Staves can be started or stopped at any point in the score. The -commands @code{\startStaff} and @code{\stopStaff} are used for -this purpose. For details, see @ref{Staff symbol}. +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 } +@end lilypond + +New single staff contexts may be defined. For details, see +@ref{Defining new contexts}. -@seealso +@seealso Music Glossary: @rglos{staff}, @rglos{staves}. @@ -114,12 +112,13 @@ Music Glossary: Notation Reference: @ref{Creating contexts}, @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}. @@ -197,9 +196,9 @@ lines are connected between the staves. >> @end lilypond -The @code{PianoStaff} is almost identical to a @code{GrandStaff}, -except that it supports printing the instrument name directly. -For details, 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 << @@ -216,6 +215,9 @@ Each staff group context sets the property @code{SystemStartSquare}, is also available, but it must be explicitly specified. +New staff group contexts may be defined. For details, see +@ref{Defining new contexts}. + @snippets @@ -232,36 +234,35 @@ explicitly specified. @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{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{SystemStartBar}, @rinternals{SystemStartBrace}, @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. -@node Deeper nested staff groups -@unnumberedsubsubsec Deeper nested staff groups +@node Nested staff groups +@unnumberedsubsubsec Nested staff groups @cindex staff, nested @cindex staves, nested @@ -270,42 +271,29 @@ Internals Reference: @cindex nested staff brackets @cindex brackets, nesting of @cindex braces, nesting of -@cindex inner staff group -@cindex inner choir staff group - -Two additional staff-group contexts are available that can be -nested within a @code{StaffGroup} or @code{ChoirStaff} context: -@code{InnerStaffGroup} and @code{InnerChoirStaff}. These contexts -create an additional bracket next to the original bracket of their -parent staff group. -An @code{InnerStaffGroup} is treated similarly to a -@code{StaffGroup}; bar lines are connected between each stave -within the context: +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] \new StaffGroup << - \new Staff { c2 c } - \new InnerStaffGroup << - \new Staff { g2 g } - \new Staff { e2 e } + \new Staff { c2 c | c2 c } + \new StaffGroup << + \new Staff { g2 g | g2 g } + \new StaffGroup \with { + systemStartDelimiter = #'SystemStartSquare + } + << + \new Staff { e2 e | e2 e } + \new Staff { c2 c | c2 c } + >> >> >> @end lilypond -Bar lines are @emph{not} connected between staves of an -@code{InnerChoirStaff}, just like a @code{ChoirStaff}: - -@lilypond[verbatim,quote,relative=2] -\new ChoirStaff << - \new Staff { c2 c } - \new InnerChoirStaff << - \new Staff { g2 g } - \new Staff { e2 e } - >> - \new Staff { c1 } ->> -@end lilypond +New nested staff group contexts can be defined. For details, see +@ref{Defining new contexts}. @snippets @@ -315,22 +303,21 @@ Bar lines are @emph{not} connected between staves of an @seealso - Notation Reference: @ref{Grouping staves}, -@ref{Instrument names}. +@ref{Instrument names}, +@ref{Defining new contexts}. Snippets: @rlsr{Staff notation}. Internals Reference: -@rinternals{InnerStaffGroup}, @rinternals{StaffGroup}, -@rinternals{InnerChoirStaff}, @rinternals{ChoirStaff}, @rinternals{SystemStartBar}, @rinternals{SystemStartBrace}, -@rinternals{SystemStartBracket}. +@rinternals{SystemStartBracket}, +@rinternals{SystemStartSquare}. @node Modifying single staves @@ -366,11 +353,10 @@ sections are also described. @cindex spacing of ledger lines @cindex number of staff lines -The grob @code{StaffSymbol} is responsible for drawing the lines -of a staff. Its properties can be altered in order to change the -appearance of a staff, but they must be changed before the staff -is created. A staff may be started or stopped at any 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. 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 @@ -378,31 +364,13 @@ 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 - -The vertical position of staff lines and the number of staff lines -can be defined at the same time. As the example shows, the -positions of the notes are not influenced by the position of the -staff lines. Details for modifying this property are found in -@rinternals{staff-symbol-interface}. - -@warning{The @code{'line-positions} property overrides the -@code{'line-count} property. The number of staff lines is -implicitly defined by the number of elements in the list of values -for @code{'line-positions}} - -@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 -The staff line thickness can be modified. The thickness of ledger +Staff line thickness can be modified. The thickness of ledger lines and stems are also affected, since they depend on staff line thickness. @@ -413,9 +381,10 @@ thickness. { e4 d c b } @end lilypond -The thickness of ledger lines can be set independently of staff -line thickness. A description of this property is also found in -@rinternals{staff-symbol-interface}. +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 { @@ -424,8 +393,8 @@ line thickness. A description of this property is also found in { e4 d c b } @end lilypond -The distance between staff lines can be changed. The setting has -influence on ledger lines as well. +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 { @@ -434,16 +403,11 @@ influence on ledger lines as well. { a4 b c d } @end lilypond -The width of a staff can be adjusted. The unit is one staff -space. The spacing of objects inside the staff is not 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 +@funindex \startStaff +@funindex \stopStaff Modifications to staff properties in the middle of a score can be placed between @code{\stopStaff} and @code{\startStaff}: @@ -460,13 +424,25 @@ b2 b a2 a @end lilypond +@cindex stopping a staff -@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 @@ -476,14 +452,13 @@ a2 a @seealso - Music Glossary: @rglos{line}, @rglos{ledger line}, @rglos{staff}. Notation Reference: -@ref{Displaying pitches}. +@ref{Clef}. Snippets: @rlsr{Staff notation}. @@ -495,9 +470,9 @@ Internals Reference: @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 @@ -523,7 +498,8 @@ staff in the appropriate location: } @end lilypond -However, the above example is usually not the desired result. To +@noindent +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 @@ -566,7 +542,7 @@ example. << \new Staff = ossia \with { \remove "Time_signature_engraver" - \remove "Clef_engraver" + \override Clef #'transparent = ##t fontSize = #-3 \override StaffSymbol #'staff-space = #(magstep -3) \override StaffSymbol #'thickness = #(magstep -3) @@ -594,47 +570,6 @@ example. >> @end lilypond -@c The following is the legacy "ossia.ly" example -@c -@c I don't think this method is very efficient. -@c I'm commenting it out for now. -pm - -@ignore - -@ lilypond[verbatim,quote] -<< - \new Staff \with - { - %No time signature in the ossia staff - \remove "Time_signature_engraver" - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) - firstClef = ##f - } - \relative c'' { - \stopStaff - \skip 2 - - \startStaff - \clef treble - bes8[^"ossia" g bes g] - \stopStaff - - s2 - - \startStaff - f8 d g4 - } - \new Staff \relative c'' { - \time 2/4 - c4 c g' g a a g2 - } ->> -@ end lilypond - -@end ignore - 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 @@ -647,7 +582,7 @@ more information about @code{\RemoveEmptyStaffContext}, see << \new Staff = ossia \with { \remove "Time_signature_engraver" - \remove "Clef_engraver" + \override Clef #'transparent = ##t fontSize = #-3 \override StaffSymbol #'staff-space = #(magstep -3) \override StaffSymbol #'thickness = #(magstep -3) @@ -683,7 +618,6 @@ more information about @code{\RemoveEmptyStaffContext}, see @seealso - Music Glossary: @rglos{ossia}, @rglos{staff}, @@ -695,7 +629,7 @@ Learning Manual: @rlearning{Length and thickness of objects}. Notation Reference: -@ref{Setting the staff size}. +@ref{Hiding staves}. Snippets: @rlsr{Staff notation}. @@ -707,22 +641,35 @@ Internals Reference: @node Hiding staves @unnumberedsubsubsec Hiding staves -@cindex Frenched scores +@cindex Frenched score +@cindex Frenched staff @cindex staff, hiding @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 in order to save 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. +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. -For other staff contexts, this behavior is set with the -@code{\RemoveEmptyStaffContext} command. It is set in the -@code{\layout} block. As a result, empty staves or staves -containing multi-measure rests are removed after a line break. +@lilypond[verbatim,quote] +\new Staff \with { + \remove "Staff_symbol_engraver" +} +\relative c''' { a8 f e16 d c b a2 } +@end lilypond + +@funindex \RemoveEmptyStaffContext + +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. + +@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,ragged-right] \layout { @@ -730,53 +677,54 @@ containing multi-measure rests are removed after a line break. \RemoveEmptyStaffContext } } -\relative c'' { - << - \new Staff { e4 f g a \break c1 } - \new Staff { c4 d e f \break R1 } - >> -} -@end lilypond -To remove other types of contexts, use -@code{\AncientRemoveEmptyStaffContext} or -@code{\RemoveEmptyRhythmicStaffContext}. +\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 @cindex ossia -Another application of @code{\RemoveEmptyStaffContext} is to make -ossia sections, i.e., alternative melodies on a separate piece of -staff, with help of a Frenched staff. For details, see -@ref{Ossia staves}. - -Staff lines can be made invisible by removing the -@code{Staff_symbol_engraver} from the @code{Staff} context: +@noindent +@code{\RemoveEmptyStaffContext} can also be used to create ossia +sections for a staff. For details, see @ref{Ossia staves}. -@lilypond[verbatim,quote] -\new Staff \with { - \remove "Staff_symbol_engraver" -} -\relative c'' { c8 c c16 c c c c2 } -@end lilypond - - -@snippets +@cindex hiding ancient staves +@cindex hiding rhythmic staves +@funindex \AncientRemoveEmptyStaffContext +@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}, @@ -790,7 +738,21 @@ 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 @@ -817,30 +779,40 @@ format cue notes are also described. @cindex metronome marking with text @funindex \tempo -Basic metronome markings can be entered as follows: +A basic metronome mark is simple to write: -@lilypond[verbatim,quote,relative=2] -\tempo 2 = 120 -c1 +@lilypond[verbatim,quote,relative=1] +\tempo 4 = 120 +c2 d +e4. d8 c2 @end lilypond -Textual tempo indications can be used instead: +Tempo indications with text can be used instead: @lilypond[verbatim,quote,relative=2] \tempo "Allegretto" -d2 c +c4 e d c +b4. a16 b c4 r4 @end lilypond -The combination of a metronome marking and textual description -will automatically place the metronome marking within parentheses: +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 -To write a metronome marking in parentheses without the text, -include an empty string in the input: +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 @@ -855,31 +827,16 @@ d4 g e c @c perhaps also an example of how to move it horizontally? -@c TODO add snippet to LSR -pm -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 - -@c TODO add snippet to LSR -pm -To print other metronome markings, use these markup commands +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{changing-the-tempo-without-a-metronome-mark.ly} -@lilypond[verbatim,quote,relative=1] -c4^\markup { - ( - \smaller \general-align #Y #DOWN \note #"16." #1 - = - \smaller \general-align #Y #DOWN \note #"8" #1 - ) } -@end lilypond +@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}, @@ -903,7 +860,7 @@ Internals Reference: @cindex instrument names @cindex instrument names, short -Instrument names can be printed on the left side of staves for the +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. @@ -911,9 +868,9 @@ of @code{shortInstrumentName} is used for all succeeding staves. @lilypond[verbatim,quote,ragged-right,relative=1] \set Staff.instrumentName = "Violin " \set Staff.shortInstrumentName = "Vln " -c1 +c4.. g'16 c4.. g'16 \break -c''1 +c1 @end lilypond Markup mode can be used to create more complicated instrument @@ -923,7 +880,7 @@ names: \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 @@ -933,18 +890,18 @@ 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 = "Flute" + f2 g4 f + } \new Staff { \set Staff.instrumentName = \markup \center-column { - Clarinetti + Clarinet \line { "in B" \smaller \flat } } - c1 - } - \new Staff { - \set Staff.instrumentName = "Vibraphone" - c1 + c4 b c2 } >> @end lilypond @@ -952,28 +909,31 @@ default. To center multi-line instrument names, @cindex indent @cindex short-indent -The @code{indent} and @code{short-indent} settings specify the -level of indentation for the first system and all succeeding -systems, respectively. They can be modified in the @code{\layout} -block. For longer instrument names or short instrument names, it -may be useful to increase the @code{indent} and -@code{short-indent} settings: +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}. -@lilypond[verbatim,quote] -\relative c' << - \new Staff \with { - instrumentName = "Oboe" +@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 + g4 f g2 } - { c2 d } - \new Staff \with { - instrumentName = "Glockenspiel" + \new Staff { + \set Staff.instrumentName = "Clarinet" + \set Staff.shortInstrumentName = "Clar." + c,4 b c2 \break + c2 b4 c } - { c'2 d } >> - -\layout { - indent = 2.5\cm -} @end lilypond To add instrument names to other contexts (such as @@ -996,16 +956,47 @@ c1 c c c \break c1 c c c \break @end lilypond +@cindex instrument switch +@cindex switching instruments -@snippets +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: -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{aligning-and-centering-instrument-names.ly} +@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")) + +\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: @@ -1025,28 +1016,34 @@ Internals Reference: @cindex fragments @cindex cue notes -Quotations allow fragments of other parts to be inserted directly -into a music expression. 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: +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. + +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' @{ - f4 fis g gis +flute = \relative c'' @{ + a4 gis g gis @} \addQuote "flute" @{ \flute @} @end example -The @code{\quoteDuring} command may then be used to indicate when -the quotation should take place. The corresponding measures from -the quotation are inserted into the music expression. The syntax -is similar to @code{\addQuote}: +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: @lilypond[verbatim,quote] -flute = \relative c' { - f4 fis g gis +flute = \relative c'' { + a4 gis g gis } \addQuote "flute" { \flute } @@ -1060,8 +1057,8 @@ anything but a spacer rest or multi-measure rest, a polyphonic situation is created, which is often not desirable: @lilypond[verbatim,quote] -flute = \relative c' { - f4 fis g gis +flute = \relative c'' { + a4 gis g gis } \addQuote "flute" { \flute } @@ -1071,13 +1068,14 @@ flute = \relative c' { @end lilypond Quotations recognize instrument transposition settings for both -the source and target instruments if they are specified using the -@code{\transposition} command: +the source and target instruments if the @code{\transposition} +command is used. For details about @code{\transposition}, see +@ref{Instrument transpositions}. @lilypond[verbatim,quote] -clarinet = \relative c' { +clarinet = \relative c'' { \transposition bes - f4 fis g gis + a4 gis g gis } \addQuote "clarinet" { \clarinet } @@ -1086,22 +1084,9 @@ clarinet = \relative c' { } @end lilypond -@c add to snippets, possibly. It might already be there. -pm -@c -@c The type of events that are present in the quoted music can be -@c trimmed with the @code{quotedEventTypes} property. The default -@c value is @code{(note-event rest-event)}, which means that only -@c notes and rests of the quoted voice end up in the -@c @code{\quoteDuring}. Setting -@c -@c @example -@c \set Staff.quotedEventTypes = -@c #'(note-event articulation-event dynamic-event) -@c @end example -@c -@c @noindent -@c will quote notes (but no rests), together with scripts and -@c dynamics. +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}. @snippets @@ -1109,14 +1094,20 @@ clarinet = \relative c' { @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {quoting-another-voice-with-transposition.ly} +@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}. @@ -1152,13 +1143,13 @@ written entirely in lower-case letters: @code{\addquote}. @cindex quoting other voices @cindex cues, formatting -The previous section explains how to quote other voices. The +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{partname} #@var{voice} @var{music} +\cueDuring #@var{partname} #@var{voice} @var{music} @end example This command copies the corresponding measures from @var{partname} @@ -1166,8 +1157,8 @@ 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{DOWN} corresponds to the first voice, and -@code{UP} corresponds to the second. +second voice; @code{UP} corresponds to the first voice, and +@code{DOWN} corresponds to the second. @lilypond[verbatim,quote] oboe = \relative c'' { @@ -1182,34 +1173,62 @@ oboe = \relative c'' { } @end lilypond +@noindent In the above example, the @code{Voice} context had to be explicitly declared, or else the entire music expression would belong to the @code{CueVoice} context. -@c TODO document \killCues -@c TODO document instrumentCueName context property +The name of the cued instrument can be printed by setting the +@code{instrumentCueName} property in the @code{CueVoice} context. -When typesetting cue notes, some guidelines should be followed: +@lilypond[verbatim,quote] +oboe = \relative c''' { + g4 r8 e16 f e4 d +} +\addQuote "oboe" { \oboe } -@itemize -@item -The instrument playing the cue should be clearly marked on the -score. +\new Staff \relative c'' << + \new CueVoice \with { + instrumentCueName = "ob." + } + \new Voice { + \cueDuring #"oboe" #UP { R1 } + g4. b8 d2 + } +>> +@end lilypond + +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 cue notes end, the name of the original instrument should -be indicated. +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 @code{\transposedCueDuring} command is useful to add cues for -instruments in a completely different register. Having piccolo -cues within a contrabassoon part is a good example. +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] piccolo = \relative c''' { @@ -1233,17 +1252,26 @@ cbassoon = \relative c, { >> @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 are not checked between @code{Voice} and -@code{CueVoice} contexts. +Collisions can occur with rests, when using @code{\cueDuring}, +between @code{Voice} and @code{CueVoice} contexts.