X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Fstaff.itely;h=db5d5ebab8fe0508986554f4d553e4af4bdb0818;hb=45c9b27033acc2890f44e7eb08c29c737ca9111f;hp=cf66b39f642bdd35b5e5dff6452d3bd86ca3177b;hpb=692c8fc63214ea5aa541b5610f4b63d740a1e665;p=lilypond.git diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index cf66b39f64..db5d5ebab8 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -7,12 +7,14 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.14.0" +@c \version "2.19.21" @node Staff notation @section Staff notation -@lilypondfile[quote]{staff-headword.ly} +@c The line width is a bit of a hack to allow space for the +@c instrument names. +@lilypondfile[quote,ragged-right,line-width=14.5\cm,staffsize=16]{staff-headword.ly} This section explains how to influence the appearance of staves, how to print scores with more than one staff, and how to add tempo @@ -67,12 +69,12 @@ grouping staves. @notation{Staves} (singular: @notation{staff}) are created with the @code{\new} or @code{\context} commands. For details, see -@ref{Creating contexts}. +@ref{Creating and referencing contexts}. The basic staff context is @code{Staff}: -@lilypond[verbatim,quote,relative=2] -\new Staff { c4 d e f } +@lilypond[verbatim,quote] +\new Staff \relative { c''4 d e f } @end lilypond The @code{DrumStaff} context creates a five-line staff set up for @@ -91,15 +93,15 @@ For details, see @ref{Percussion staves}. displays the rhythmic values of the input. Real durations are preserved. For details, see @ref{Showing melody rhythms}. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new RhythmicStaff { c4 d e f } @end lilypond @code{TabStaff} creates a tablature with six strings in standard guitar tuning. For details, see @ref{Default tablatures}. -@lilypond[verbatim,quote,relative=2] -\new TabStaff { c4 d e f } +@lilypond[verbatim,quote] +\new TabStaff \relative { c''4 d e f } @end lilypond There are two staff contexts specific for the notation of ancient @@ -109,21 +111,20 @@ described in @ref{Pre-defined contexts}. The @code{GregorianTranscriptionStaff} context creates a staff to notate modern Gregorian chant. It does not show bar lines. -@lilypond[verbatim,quote,relative=2] -\new GregorianTranscriptionStaff { c4 d e f e d } +@lilypond[verbatim,quote] +\new GregorianTranscriptionStaff \relative { c''4 d e f e d } @end lilypond New single staff contexts may be defined. For details, see @ref{Defining new contexts}. - @seealso Music Glossary: @rglos{staff}, @rglos{staves}. Notation Reference: -@ref{Creating contexts}, +@ref{Creating and referencing contexts}, @ref{Percussion staves}, @ref{Showing melody rhythms}, @ref{Default tablatures}, @@ -173,40 +174,40 @@ If no context is specified, the default properties will be used: the group is started with a vertical line, and the bar lines are not connected. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] << - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } >> @end lilypond In the @code{StaffGroup} context, the group is started with a bracket and bar lines are drawn through all the staves. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new StaffGroup << - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } >> @end lilypond In a @code{ChoirStaff}, the group starts with a bracket, but bar lines are not connected. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new ChoirStaff << - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } >> @end lilypond In a @code{GrandStaff}, the group begins with a brace, and bar lines are connected between the staves. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new GrandStaff << - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { c''1 c } >> @end lilypond @@ -214,11 +215,11 @@ The @code{PianoStaff} is identical to a @code{GrandStaff}, except that it supports printing the instrument name directly. For details, see @ref{Instrument names}. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new PianoStaff << \set PianoStaff.instrumentName = #"Piano" - \new Staff { c1 c } - \new Staff { c1 c } + \new Staff \relative { c''1 c } + \new Staff \relative { \clef bass c1 c } >> @end lilypond @@ -249,7 +250,6 @@ New staff group contexts may be defined. For details, see @lilypondfile[verbatim,quote,texidoc,doctitle] {mensurstriche-layout-bar-lines-between-the-staves.ly} - @seealso Music Glossary: @rglos{brace}, @@ -274,9 +274,6 @@ Internals Reference: @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. -@knownissues -@code{PianoStaff} does not, by default, accept @code{ChordNames}. - @node Nested staff groups @unnumberedsubsubsec Nested staff groups @@ -293,17 +290,17 @@ Staff-group contexts can be nested to arbitrary depths. In this case, each child context creates a new bracket adjacent to the bracket of its parent group. -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new StaffGroup << - \new Staff { c2 c | c2 c } + \new Staff \relative { c''2 c | c2 c } \new StaffGroup << - \new Staff { g2 g | g2 g } + \new Staff \relative { g'2 g | g2 g } \new StaffGroup \with { systemStartDelimiter = #'SystemStartSquare } << - \new Staff { e2 e | e2 e } - \new Staff { c2 c | c2 c } + \new Staff \relative { e'2 e | e2 e } + \new Staff \relative { c'2 c | c2 c } >> >> >> @@ -318,7 +315,6 @@ New nested staff group contexts can be defined. For details, see @lilypondfile[verbatim,quote,texidoc,doctitle] {nesting-staves.ly} - @seealso Notation Reference: @ref{Grouping staves}, @@ -336,6 +332,7 @@ Internals Reference: @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. + @node Separating systems @unnumberedsubsubsec Separating systems @@ -353,15 +350,15 @@ turned on with a @code{\paper} option. \score { \new StaffGroup << \new Staff { - \relative c'' { - c4 c c c + \relative { + c''4 c c c \break c4 c c c } } \new Staff { - \relative c'' { - c4 c c c + \relative { + c''4 c c c \break c4 c c c } @@ -404,125 +401,160 @@ sections are also described. @node Staff symbol @unnumberedsubsubsec Staff symbol -@cindex adjusting staff symbol -@cindex drawing staff symbol -@cindex staff symbol, setting of -@cindex staff symbol, drawing -@cindex stop staff lines -@cindex start staff lines -@cindex staff lines, amount of -@cindex staff lines, number of -@cindex staff line, thickness of -@cindex amount of staff lines -@cindex thickness of staff lines -@cindex ledger lines, setting -@cindex setting of ledger lines -@cindex spacing of ledger lines -@cindex number of staff lines - -The lines of a staff belong to the @code{StaffSymbol} grob. -@code{StaffSymbol} properties can be modified to change the -appearance of a staff, but they must be modified before the staff -is created. - -The number of staff lines may be changed. The clef position and -the position of middle C may need to be modified to fit the new -staff. For an explanation, refer to the snippet section in -@ref{Clef}. +@cindex staff symbol +@cindex staff lines, stopping and starting +@cindex staff lines, modifying +@cindex ledger lines +@cindex ledger lines, internal +@cindex ledger lines, modifying -@lilypond[verbatim,quote,relative=2] -\new Staff \with { - \override StaffSymbol #'line-count = #3 +@funindex \startStaff +@funindex startStaff +@funindex \stopStaff +@funindex stopStaff + +The @code{\stopStaff} and @code{\startStaff} commands can be used to +stop or (re)start the staff lines respectively, from being printed at +any point witin a score. + +@lilypond[verbatim,quote] +\relative { + \stopStaff f''4 d \startStaff g, e + f'4 d \stopStaff g, e + f'4 d \startStaff g, e } -{ d4 d d d } @end lilypond -Staff line thickness can be modified. The thickness of ledger -lines and stems are also affected, since they depend on staff line -thickness. +@predefined +@code{\startStaff}, +@code{\stopStaff}. +@endpredefined + +The lines of a staff belong to the @code{StaffSymbol} grob (including +ledger lines) and can be modified using @code{StaffSymbol} properties, but +these modifications must be made before the staff is (re)started. -@lilypond[verbatim,quote,relative=1] -\new Staff \with { - \override StaffSymbol #'thickness = #3 +The number of staff lines can be altered: + +@lilypond[verbatim,quote] +\relative { + f''4 d \stopStaff + \override Staff.StaffSymbol.line-count = #2 + \startStaff g, e | + + f'4 d \stopStaff + \revert Staff.StaffSymbol.line-count + \startStaff g, e | } -{ e4 d c b } @end lilypond -Ledger line thickness can be set independently of staff line -thickness. In the example the two numbers are factors multiplying -the staff line thickness and the staff line spacing. The two -contributions are added to give the ledger line thickness. +The position of each staff line can also be altered. A list of +numbers sets each line's position. @code{0}@tie{}corresponds to the normal +center line, and the normal line positions are +@code{(-4@tie{}-2@tie{}0@tie{}2@tie{}4)}. A single staff line is +printed for every value entered so that the number of staff lines, as +well as their position, can be changed with a single override. -@lilypond[verbatim,quote,relative=1] -\new Staff \with { - \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) +@lilypond[verbatim,quote] +\relative { + f''4 d \stopStaff + \override Staff.StaffSymbol.line-positions = #'(1 3 5 -1 -3) + \startStaff g, e | + f'4 d \stopStaff + \override Staff.StaffSymbol.line-positions = #'(8 6.5 -6 -8 -0.5) + \startStaff g, e | } -{ e4 d c b } @end lilypond -The distance between staff lines can be changed. This setting -affects the spacing of ledger lines as well. +To preserve typical stem directions (in the bottom half of the staff +stems point up, in the top half they point down), align the center +line (or space) of the customized staff with the position of the +normal center line (0). The clef position and the position of +middle@tie{}C may need to be adjusted accordingly to fit the new +lines. See @ref{Clef}. + +Staff line thickness can be altered. Ledger lines and note stems, by +default, are also affected. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote] \new Staff \with { - \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol.thickness = #3 +} \relative { + f''4 d g, e } -{ a4 b c d } @end lilypond -Further details about the properties of @code{StaffSymbol} can be -found in @rinternals{staff-symbol-interface}. +It is also possible to set ledger line thickness independently of staff +lines. + +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.thickness = #2 + \override StaffSymbol.ledger-line-thickness = #'(0.5 . 0.4) +} \relative { + f'''4 a, a,, f +} +@end lilypond -@cindex stopping a staff -@cindex starting a staff -@cindex staff, starting -@cindex staff, stopping +@noindent +The first value is multiplied by the staff line thickness, the second by +the staff space and then the two values are added together to give the +new thickness of the ledger line. -@funindex \startStaff -@funindex startStaff -@funindex \stopStaff -@funindex stopStaff +The vertical positions of ledger lines can be altered, -Modifications to staff properties in the middle of a score can be -placed between @code{\stopStaff} and @code{\startStaff}: - -@lilypond[verbatim,quote,relative=2] -c2 c -\stopStaff -\override Staff.StaffSymbol #'line-count = #2 -\startStaff -b2 b -\stopStaff -\revert Staff.StaffSymbol #'line-count -\startStaff -a2 a +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.ledger-positions = #'(-3 -2 -1 2 5 6) +} \relative { + f'''4 a, a,, f +} @end lilypond -@noindent -In general, @code{\startStaff} and @code{\stopStaff} can be used -to stop or start a staff in the middle of a score. - -@lilypond[verbatim,quote,relative=2] -c4 b a2 -\stopStaff -b4 c d2 -\startStaff -e4 d c2 +Additional ledger lines can be made to appear above or below note heads +depending on the current position relative to other note heads that +also have their own ledger lines. + +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.ledger-extra = #4 +} \relative { + f'''4 a, d, f, +} @end lilypond +Ledger lines can also be made to appear inside the staff where custom +staff lines are required. The example shows the default position of +ledger lines when the explicit @code{ledger-position} is and is not set. +The @code{\stopStaff} is needed in the example to revert the +@code{\override} for the whole @code{StaffSymbol}. -@predefined -@code{\startStaff}, -@code{\stopStaff}. -@endpredefined +@lilypond[verbatim,quote] +\relative d' { + \override Staff.StaffSymbol.line-positions = #'(-8 0 2 4) + d4 e f g + \stopStaff + \startStaff + \override Staff.StaffSymbol.ledger-positions = #'(-8 -6 (-4 -2) 0) + d4 e f g +} +@end lilypond +The distance between staff lines can be altered. This affects ledger +line spacing as well. -@snippets +@lilypond[verbatim,quote] +\new Staff \with { + \override StaffSymbol.staff-space = #1.5 +} \relative { + f'''4 d, g, e, +} +@end lilypond +@snippets @lilypondfile[verbatim,quote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} - @seealso Music Glossary: @rglos{line}, @@ -558,8 +590,8 @@ Internals Reference: staff in the appropriate location: @lilypond[verbatim,quote] -\new Staff \relative c'' { - c4 b d c +\new Staff \relative { + c''4 b d c << { c4 b d c } \new Staff { e4 d f e } @@ -581,17 +613,15 @@ to align the ossia staff. This method is most appropriate when only a few ossia staves are needed. @lilypond[verbatim,quote] -\new Staff = main \relative c'' { - c4 b d c +\new Staff = "main" \relative { + c''4 b d c << { c4 b d c } \new Staff \with { \remove "Time_signature_engraver" alignAboveContext = #"main" - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) + \magnifyStaff #2/3 firstClef = ##f } { e4 d f e } @@ -610,20 +640,18 @@ example. @lilypond[verbatim,quote,ragged-right] << - \new Staff = ossia \with { + \new Staff = "ossia" \with { \remove "Time_signature_engraver" - \override Clef #'transparent = ##t - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) + \hide Clef + \magnifyStaff #2/3 } { \stopStaff s1*6 } - \new Staff \relative c' { - c4 b c2 + \new Staff \relative { + c'4 b c2 << { e4 f e2 } - \context Staff = ossia { + \context Staff = "ossia" { \startStaff e4 g8 f e2 \stopStaff } >> @@ -631,7 +659,7 @@ example. c4 b c2 << { g4 a g2 } - \context Staff = ossia { + \context Staff = "ossia" { \startStaff g4 e8 f g2 \stopStaff } >> @@ -649,18 +677,16 @@ break. For more information about @lilypond[verbatim,quote,ragged-right] << - \new Staff = ossia \with { + \new Staff = "ossia" \with { \remove "Time_signature_engraver" - \override Clef #'transparent = ##t - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) - } \relative c'' { + \hide Clef + \magnifyStaff #2/3 + } \relative { R1*3 - c4 e8 d c2 + c''4 e8 d c2 } - \new Staff \relative c' { - c4 b c2 + \new Staff \relative { + c'4 b c2 e4 f e2 g4 a g2 \break c4 b c2 @@ -672,7 +698,7 @@ break. For more information about \layout { \context { \Staff \RemoveEmptyStaves - \override VerticalAxisGroup #'remove-first = ##t + \override VerticalAxisGroup.remove-first = ##t } } @end lilypond @@ -683,7 +709,6 @@ break. For more information about @lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligning-ossias-and-lyrics.ly} - @seealso Music Glossary: @rglos{ossia}, @@ -729,7 +754,7 @@ alternative, @code{\stopStaff} may be used. \new Staff \with { \remove "Staff_symbol_engraver" } -\relative c''' { a8 f e16 d c b a2 } +\relative { a''8 f e16 d c b a2 } @end lilypond @@ -750,9 +775,9 @@ elements.} } } -\relative c' << +\relative << \new Staff { - e4 f g a \break + e'4 f g a \break b1 \break a4 b c2 } @@ -793,7 +818,6 @@ hide empty staves in ancient music contexts. Similarly, @lilypondfile[verbatim,quote,texidoc,doctitle] {removing-the-first-empty-line.ly} - @seealso Music Glossary: @rglos{Frenched staff}. @@ -820,23 +844,22 @@ Internals Reference: @rinternals{VerticalAxisGroup}, @rinternals{Staff_symbol_engraver}. - @knownissues - Removing @code{Staff_symbol_engraver} also hides bar lines. If bar line visibility is forced, formatting errors may occur. In this case, use the following overrides instead of removing the engraver: @example -\override StaffSymbol #'stencil = ##f -\override NoteHead #'no-ledgers = ##t +\omit StaffSymbol +\override NoteHead.no-ledgers = ##t @end example For the Known issues and warnings associated with @code{\Staff \RemoveEmptyStaves} see @ref{Changing context default settings}. + @node Writing parts @subsection Writing parts @@ -862,27 +885,29 @@ and @code{ChoirStaff} contexts. The value of @code{instrumentName} is used for the first staff, and the value of @code{shortInstrumentName} is used for all succeeding staves. -@lilypond[verbatim,quote,ragged-right,relative=1] +@lilypond[verbatim,quote,ragged-right] \new Staff \with { instrumentName = #"Violin " shortInstrumentName = #"Vln. " +} \relative { + c'4.. g'16 c4.. g'16 \break | c1 | } -{ c4.. g'16 c4.. g'16 \break | c1 } @end lilypond @cindex instrument names, complex @code{\markup} can be used to create more complex instrument names: -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote] \new Staff \with { instrumentName = \markup { \column { "Clarinetti" \line { "in B" \smaller \flat } } } +} \relative { + c''4 c,16 d e f g2 } -{ c4 c,16 d e f g2 } @end lilypond @cindex instrument names, centering @@ -891,19 +916,20 @@ When two or more staff contexts are grouped together, the instrument names and short instrument names are centered by default. To center multi-line instrument names, @code{\center-column} must be used: -@lilypond[verbatim,quote,indent=1.5\cm,relative=2] +@lilypond[verbatim,quote,indent=1.5\cm] << \new Staff \with { instrumentName = #"Flute" - } - { f2 g4 f } + } \relative { + f''2 g4 f +} \new Staff \with { instrumentName = \markup { - \center-column { "Clarinet" } - \line { "in B" \smaller \flat } + \center-column { "Clarinet" + \line { "in B" \smaller \flat } + } } - } - { c4 b c2 } + } \relative { c''4 b c2 } >> @end lilypond @@ -913,29 +939,25 @@ multi-line instrument names, @code{\center-column} must be used: However, if the instrument names are longer, the instrument names in a staff group may not be centered unless the @code{indent} and @code{short-indent} settings are increased. For details about these -settings, see @ref{\paper variables for shifts and indents}. +settings, see @ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents}. @lilypond[verbatim,quote,ragged-right] -\relative c'' { - << - \new Staff \with { - instrumentName = #"Alto Flute in G" - shortInstrumentName = #"Flt." - } - { - f2 g4 f \break - g4 f g2 - } - \new Staff \with { - instrumentName = #"Clarinet" - shortInstrumentName = #"Clar." - } - { - c,4 b c2 \break - c2 b4 c - } - >> -} +<< + \new Staff \with { + instrumentName = #"Alto Flute in G" + shortInstrumentName = #"Flt." + } \relative { + f''2 g4 f \break + g4 f g2 + } + \new Staff \with { + instrumentName = #"Clarinet" + shortInstrumentName = #"Clar." + } \relative { + c''4 b c2 \break + c2 b4 c + } +>> \layout { indent = 3.0\cm @@ -952,71 +974,52 @@ that context. For details, see @ref{Modifying context plug-ins}. @cindex instrument names, changing @cindex changing instrument names -The @code{shortInstrumentName} may be changed in the middle of a piece. +The @code{shortInstrumentName} may be changed in the middle of a piece, +along with other settings as needed for the new instrument. However, only the first instance of @code{instrumentName} will be printed and subsequent changes will be ignored: -@lilypond[verbatim,quote,ragged-right,relative=1] -\new Staff \with { - instrumentName = #"Flute" - shortInstrumentName = #"Flt." -} -{ - c1 c c c \break - c1 c c c \break - \set Staff.instrumentName = #"Clarinet" - \set Staff.shortInstrumentName = #"Clt." - c1 c c c \break - c1 c c c \break +@lilypond[verbatim,quote,ragged-right] +prepPiccolo = <>^\markup \italic { muta in Piccolo } + +setPiccolo = { + \set Staff.instrumentName = #"Piccolo" + \set Staff.shortInstrumentName = #"Picc." + \set Staff.midiInstrument = #"piccolo" + <>^\markup \bold { Piccolo } + \transposition c'' } -@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: +prepFlute = <>^\markup \italic { muta in Flauto } -@lilypond[verbatim,quote,ragged-right] -\addInstrumentDefinition #"contrabassoon" - #`((instrumentTransposition . ,(ly:make-pitch -1 0 0)) - (shortInstrumentName . "Cbsn.") - (clefGlyph . "clefs.F") - (middleCPosition . 6) - (clefPosition . 2) - (instrumentCueName . ,(make-bold-markup "cbsn.")) - (midiInstrument . "bassoon")) +setFlute = { + \set Staff.instrumentName = #"Flute" + \set Staff.shortInstrumentName = #"Flt." + \set Staff.midiInstrument = #"flute" + <>^\markup \bold { Flute } + \transposition c' +} \new Staff \with { - instrumentName = #"Bassoon" + instrumentName = #"Flute" + shortInstrumentName = #"Flt." + midiInstrument = #"flute" } -\relative c' { - \clef tenor - \compressFullBarRests - c2 g' - R1*16 - \instrumentSwitch "contrabassoon" - c,,2 g \break - c,1 ~ | c1 +\relative { + g'1 g g g \break + g1 g \prepPiccolo R R \break + \setPiccolo + g1 g g g \break + g1 g \prepFlute R R \break + \setFlute + g1 g g g } @end lilypond @seealso Notation Reference: -@ref{\paper variables for shifts and indents}, +@ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents}, @ref{Modifying context plug-ins}. Snippets: @@ -1058,12 +1061,12 @@ quoted voice, as defined with @code{\addQuote}, and a music expression for the duration of the quote. @lilypond[verbatim,quote] -fluteNotes = \relative c'' { - a4 gis g gis | b4^"quoted" r8 ais\p a4( f) +fluteNotes = \relative { + a'4 gis g gis | b4^"quoted" r8 ais\p a4( f) } -oboeNotes = \relative c'' { - c4 cis c b \quoteDuring #"flute" { s1 } +oboeNotes = \relative { + c''4 cis c b \quoteDuring #"flute" { s1 } } \addQuote "flute" { \fluteNotes } @@ -1081,12 +1084,12 @@ instead of spacer or multimeasure rests then the quote will appear as polyphony and may produce unexpected results. @lilypond[verbatim,quote] -fluteNotes = \relative c'' { - a4 gis g gis | b4^"quoted" r8 ais\p a4( f) +fluteNotes = \relative { + a'4 gis g gis | b4^"quoted" r8 ais\p a4( f) } -oboeNotes = \relative c'' { - c4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a } +oboeNotes = \relative { + c''4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a } } \addQuote "flute" { \fluteNotes } @@ -1099,6 +1102,41 @@ oboeNotes = \relative c'' { } @end lilypond +If an @code{\unfoldRepeat} command in a music expression is required to +be printed when using @code{\quoteDuring}, then it too must also contain +its own @code{\unfoldRepeat} command; + +@lilypond[verbatim,quote] +fluteNotes = \relative { + \repeat volta 2 { a'4 gis g gis } +} + +oboeNotesDW = \relative { + \repeat volta 2 \quoteDuring #"incorrect" { s1 } +} + +oboeNotesW = \relative { + \repeat volta 2 \quoteDuring #"correct" { s1 } +} + + +\addQuote "incorrect" { \fluteNotes } + +\addQuote "correct" { \unfoldRepeats \fluteNotes } + +\score { + \unfoldRepeats + << + \new Staff \with { instrumentName = "Flute" } + \fluteNotes + \new Staff \with { instrumentName = "Oboe (incorrect)" } + \oboeNotesDW + \new Staff \with { instrumentName = "Oboe (correct)" } + \oboeNotesW + >> +} +@end lilypond + The @code{\quoteDuring} command uses the @code{\transposition} settings of both quoted and quoting parts to produce notes for the quoting part that have the same sounding pitch as those in the quoted part. @@ -1110,8 +1148,8 @@ clarinetNotes = \relative c'' { b4 ais a ais | cis4^"quoted" r8 bis\p b4( f) } -oboeNotes = \relative c'' { - c4 cis c b \quoteDuring #"clarinet" { s1 } +oboeNotes = \relative { + c''4 cis c b \quoteDuring #"clarinet" { s1 } } \addQuote "clarinet" { \clarinetNotes } @@ -1141,13 +1179,13 @@ of these objects from the quoted music are displayed by using the @code{quotedEventTypes} context property. @lilypond[verbatim,quote] -fluteNotes = \relative c'' { - a2 g2 | +fluteNotes = \relative { + a'2 g2 | b4\<^"quoted" r8 ais a4\f( c->) } -oboeNotes = \relative c'' { - c2. b4 | +oboeNotes = \relative { + c''2. b4 | \quoteDuring #"flute" { s1 } } @@ -1171,6 +1209,9 @@ Notation Reference: @ref{Instrument transpositions}, @ref{Using tags}. +Installed Files: +@file{scm/define-event-classes.scm}. + Snippets: @rlsr{Staff notation}. @@ -1179,10 +1220,6 @@ Internals Reference: @rinternals{QuoteMusic}, @rinternals{Voice}. -Installed Files: -@file{scm/define-event-classes.scm}. - - @knownissues Only the contents of the first @code{Voice} occurring in an @code{\addQuote} command will be considered for quotation, so if the music @@ -1218,15 +1255,17 @@ triplets may result in poor notation. 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 +@lilypond[verbatim] +\relative { + R1 + << + { e'2\rest r4. e8 } + \new CueVoice { + \stemUp d'8^"flute" c d e fis2 + } + >> + d,4 r a r +} @end lilypond The @code{\cueClef} command can also be used with an explict @@ -1235,28 +1274,32 @@ 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 +@lilypond[verbatim,noragged-right] +\relative { + \clef "bass" + R1 + << + { e'2\rest r4. \cueClefUnset e,8 } + \new CueVoice { + \cueClef "treble" \stemUp d''8^"flute" c d e fis2 + } + >> + d,,4 r a r +} @end lilypond The @code{\cueClef} and @code{\cueClefUnset} command can also be used without a @code{CueVoice} if required. -@lilypond[verbatim,noragged-right,relative=1] -\clef "bass" -R1 -\cueClef "treble" -d'8^"flute" c d e fis2 -\cueClefUnset -d,,4 r a r +@lilypond[verbatim,noragged-right] +\relative { + \clef "bass" + R1 + \cueClef "treble" + d''8^"flute" c d e fis2 + \cueClefUnset + d,,4 r a r +} @end lilypond For more complex cue note placement, e.g including transposition, or @@ -1285,13 +1328,13 @@ corresponds to the first and second voices respectively, determining how the cue notes are printed in relation to the other voice. @lilypond[verbatim,quote] -fluteNotes = \relative c'' { - r2. c4 | d8 c d e fis2 | g2 d | +fluteNotes = \relative { + r2. c''4 | d8 c d e fis2 | g2 d | } oboeNotes = \relative c'' { R1 - s1*0^\markup { \tiny "flute" } + <>^\markup \tiny { flute } \cueDuring #"flute" #UP { R1 } g2 c, } @@ -1319,8 +1362,8 @@ or else the entire music expression would belong to the @code{CueVoice} context.} @lilypond[verbatim,quote] -oboeNotes = \relative c'' { - r2 r8 d16(\f f e g f a) +oboeNotes = \relative { + r2 r8 d''16(\f f e g f a) g8 g16 g g2. } \addQuote "oboe" { \oboeNotes } @@ -1334,21 +1377,21 @@ oboeNotes = \relative c'' { } @end lilypond -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. +Markup can be used to show the name of the quoted instrument. +If the cue notes require a change in clef, +this can be done manually but the original clef should also be +restored manually at the end of the cue notes. @lilypond[verbatim,quote] -fluteNotes = \relative c'' { - r2. c4 d8 c d e fis2 g2 d2 +fluteNotes = \relative { + r2. c''4 d8 c d e fis2 g2 d2 } bassoonNotes = \relative c { \clef bass R1 \clef treble - s1*0^\markup { \tiny "flute" } + <>^\markup \tiny { flute } \cueDuring #"flute" #UP { R1 } \clef bass g4. b8 d2 @@ -1367,14 +1410,14 @@ 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] -fluteNotes = \relative c'' { - r2. c4 d8 c d e fis2 g2 d2 +fluteNotes = \relative { + r2. c''4 d8 c d e fis2 g2 d2 } bassoonNotes = \relative c { \clef bass R1 - s1*0^\markup { \tiny "flute" } + <>^\markup { \tiny "flute" } \cueDuringWithClef #"flute" #UP #"treble" { R1 } g4. b8 d2 } @@ -1401,10 +1444,10 @@ 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] -piccoloNotes = \relative c''' { +piccoloNotes = \relative { \clef "treble^8" R1 - c8 c c e g2 + c'''8 c c e g2 c4 g g2 } @@ -1429,8 +1472,6 @@ bassClarinetNotes = \relative c' { @funindex \killCues @funindex killCues -@funindex \addInstrumentDefinition -@funindex addInstrumentDefinition The @code{\killCues} command removes cue notes from a music expression, so the same music expression can be used to produce @@ -1441,8 +1482,8 @@ changes and a label identifying the source instrument, can be tagged for selective inclusion in the score; see @ref{Using tags}. @lilypond[verbatim,quote] -fluteNotes = \relative c'' { - r2. c4 d8 c d e fis2 g2 d2 +fluteNotes = \relative { + r2. c''4 d8 c d e fis2 g2 d2 } bassoonNotes = \relative c { @@ -1450,7 +1491,7 @@ bassoonNotes = \relative c { R1 \tag #'part { \clef treble - s1*0^\markup { \tiny "flute" } + <>^\markup \tiny { flute } } \cueDuring #"flute" #UP { R1 } \tag #'part \clef bass @@ -1477,7 +1518,6 @@ 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}, @@ -1494,9 +1534,7 @@ Internals Reference: @rinternals{CueVoice}, @rinternals{Voice}. - @knownissues - Collisions can occur with rests, when using @code{\cueDuring}, between @code{Voice} and @code{CueVoice} contexts. When using @code{\cueDuringWithClef} or @code{\transposedCueDuring} the extra