X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Fstaff.itely;h=2ac12942588040d1c86c482b8be26963a7f7ef95;hb=1b11dc0cb1bec0e353773aac6b8afba9030f88c4;hp=dca7d4245a982c496a0402501a84d3627971632f;hpb=de0fb7239295233a76b26fbda5b989142653cac7;p=lilypond.git diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index dca7d4245a..2ac1294258 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.12.0" +@c \version "2.14.0" @node Staff notation @section Staff notation @@ -35,6 +35,7 @@ grouping staves. * Instantiating new staves:: * Grouping staves:: * Nested staff groups:: +* Separating systems:: @end menu @@ -273,6 +274,9 @@ Internals Reference: @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. +@knownissues +@code{PianoStaff} does not, by default, accept @code{ChordNames}. + @node Nested staff groups @unnumberedsubsubsec Nested staff groups @@ -332,6 +336,55 @@ Internals Reference: @rinternals{SystemStartBracket}, @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'' { + c4 c c c + \break + c4 c c c + } + } + \new Staff { + \relative c'' { + c4 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 @@ -588,11 +641,11 @@ example. @end lilypond -Using the @code{\RemoveEmptyStaffContext} command to create ossia +Using the @code{\Staff \RemoveEmptyStaves} 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{\Staff \RemoveEmptyStaves}, see @ref{Hiding staves}. @lilypond[verbatim,quote,ragged-right] << @@ -618,7 +671,7 @@ break. For more information about \layout { \context { - \RemoveEmptyStaffContext + \Staff \RemoveEmptyStaves \override VerticalAxisGroup #'remove-first = ##t } } @@ -662,8 +715,7 @@ Internals Reference: @cindex hiding of staves @cindex empty staves -@funindex \RemoveEmptyStaffContext -@funindex RemoveEmptyStaffContext +@funindex \RemoveEmptyStaves @funindex Staff_symbol_engraver @funindex \stopStaff @funindex stopStaff @@ -682,19 +734,19 @@ alternative, @code{\stopStaff} may be used. Empty staves can be hidden by setting the -@code{\RemoveEmptyStaffContext} command in the @code{\layout} +@code{\Staff \RemoveEmptyStaves} 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 +multi-measure rests, rests, skips, spacer rests, or a combination of these elements.} @lilypond[verbatim,quote,ragged-right] \layout { \context { - \RemoveEmptyStaffContext + \Staff \RemoveEmptyStaves } } @@ -715,29 +767,24 @@ elements.} @cindex ossia @noindent -@code{\RemoveEmptyStaffContext} can also be used to create ossia +@code{\Staff \RemoveEmptyStaves} 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 +@funindex \RemoveEmptyStaves -The @code{\AncientRemoveEmptyStaffContext} command may be used to +The @code{\VaticanaStaff \RemoveEmptyStaves} command may be used to hide empty staves in ancient music contexts. Similarly, -@code{\RemoveEmptyRhythmicStaffContext} may be used to hide empty +@code{\RhythmicStaff \RemoveEmptyStaves} may be used to hide empty @code{RhythmicStaff} contexts. @predefined -@code{\RemoveEmptyStaffContext}, -@code{\AncientRemoveEmptyStaffContext}, -@code{\RemoveEmptyRhythmicStaffContext}. +@code{\Staff \RemoveEmptyStaves}, +@code{\VaticanaStaff \RemoveEmptyStaves}, +@code{\RhythmicStaff \RemoveEmptyStaves}. @endpredefined @@ -787,8 +834,8 @@ engraver: @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 +845,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,7 +857,8 @@ 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. @@ -949,7 +909,7 @@ default. To center multi-line instrument names, 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}. +these settings, see @ref{\paper variables for shifts and indents}. @lilypond[verbatim,quote,ragged-right] \layout { @@ -976,7 +936,7 @@ these settings, see @ref{Horizontal dimensions}. @cindex instrument names, adding to other contexts To add instrument names to other contexts (such as -@code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}), +@code{ChordNames} or @code{FiguredBass}), @code{Instrument_name_engraver} must be added to that context. For details, see @ref{Modifying context plug-ins}. @@ -1044,7 +1004,7 @@ expression to declare the instrument switch: @seealso Notation Reference: -@ref{Horizontal dimensions}, +@ref{\paper variables for shifts and indents}, @ref{Modifying context plug-ins}. Snippets: @@ -1059,9 +1019,9 @@ 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 @@ -1071,113 +1031,128 @@ Internals Reference: @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 c'' { + a4 gis g gis | b4^"quoted" r8 ais\p a4( f) } -\addQuote "flute" { \flute } -\relative c' { - c4 cis \quoteDuring #"flute" { s2 } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"flute" { s1 } +} + +\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 c'' { + a4 gis g gis | b4^"quoted" r8 ais\p a4( f) } -\addQuote "flute" { \flute } -\relative c' { - c4 cis \quoteDuring #"flute" { c4 b } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a } +} + +\addQuote "flute" { \fluteNotes } + +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @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}. +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'' { +clarinetNotes = \relative c'' { \transposition bes - a4 gis g gis + \key d \major + b4 ais a ais | cis4^"quoted" r8 bis\p b4( f) } -\addQuote "clarinet" { \clarinet } -\relative c' { - c4 cis \quoteDuring #"clarinet" { s2 } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"clarinet" { 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 "clarinet" { \clarinetNotes } -@lilypond[verbatim,quote] -clarinet = \relative c'' { - a4 gis g->\f gis^\markup{quoted} -} -\addQuote "clarinet" { \clarinet } -\relative c' { - \set Score.quotedEventTypes = #'(note-event rest-event tie-event) - c4 cis \quoteDuring #"clarinet" { s2 } +\score { + << + \new Staff \with { instrumentName = "Clarinet" } \clarinetNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{quoting-another-voice-with-transposition.ly} - @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 c'' { + a2 g2 | + b4\<^"quoted" r8 ais a4\f( c->) + } + +oboeNotes = \relative c'' { + c2. 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: @@ -1188,88 +1163,154 @@ Snippets: @rlsr{Staff notation}. Internals Reference: +@rinternals{Music classes}, @rinternals{QuoteMusic}, @rinternals{Voice}. +Installed Files: +@file{scm/define-event-classes.scm}. -@knownissues +@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 cueClef +@funindex \cueDuringWithClef +@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=1] +R1 +<< + { e2\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=1] +\clef "bass" +R1 +<< + { e2\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=1] +\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 c'' { + r2. c4 | d8 c d e fis2 | g2 d | } -\addQuote "oboe" { \oboe } -\new Voice \relative c'' { - \cueDuring #"oboe" #UP { R1 } +oboeNotes = \relative c'' { + R1 + s1*0^\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. + +In this 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'' { +oboeNotes = \relative c'' { r2 r8 d16(\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 +1321,157 @@ 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. Also, +if the cue notes require a change in clef, this can be done manually but +the original clef should also be restored manually at the end of the cue +notes. @lilypond[verbatim,quote] -oboe = \relative c''' { - g4 r8 e16 f e4 d +fluteNotes = \relative c'' { + r2. c4 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 -@cindex removing cues -@cindex removing cue notes -@cindex cue notes, removing +bassoonNotes = \relative c { + \clef bass + R1 + \clef treble + s1*0^\markup { \tiny "flute" } + \cueDuring #"flute" #UP { R1 } + \clef bass + g4. b8 d2 +} -@funindex \killCues -@funindex killCues -@funindex \transposedCueDuring -@funindex transposedCueDuring +\addQuote "flute" { \fluteNotes } -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 c'' { + r2. c4 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 + s1*0^\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 +@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 c''' { \clef "treble^8" R1 c8 c c e g2 - a4 g 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 +@funindex killCues +@funindex \addInstrumentDefinition +@funindex addInstrumentDefinition -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 c'' { + r2. c4 d8 c d e fis2 g2 d2 +} + +bassoonNotes = \relative c { + \clef bass + R1 + \tag #'part { + \clef treble + s1*0^\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: @@ -1408,5 +1485,8 @@ Internals Reference: @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.