X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Fstaff.itely;h=00809e093b27dfc1a422604e2f26597062853b70;hb=ff7d82711b47d3d31f26e1e6fc012c4055a20059;hp=4c626feb9003a3a2e40f247fbf9eef2dc3ee1ecc;hpb=a066a93ee74edebb9d238a1bac93c3bc7e8e6e4a;p=lilypond.git diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index 4c626feb90..00809e093b 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.17.6" @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,7 +69,7 @@ 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}: @@ -116,14 +118,13 @@ notate modern Gregorian chant. It does not show bar lines. 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}, @@ -235,10 +236,10 @@ New staff group contexts may be defined. For details, see @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {use-square-bracket-at-the-start-of-a-staff-group.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {display-bracket-with-only-one-staff-in-a-system.ly} @cindex mensurstriche layout @@ -246,10 +247,9 @@ New staff group contexts may be defined. For details, see @cindex transcription of mensural music @cindex mensural music, transcription of -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {mensurstriche-layout-bar-lines-between-the-staves.ly} - @seealso Music Glossary: @rglos{brace}, @@ -315,10 +315,9 @@ New nested staff group contexts can be defined. For details, see @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {nesting-staves.ly} - @seealso Notation Reference: @ref{Grouping staves}, @@ -336,6 +335,7 @@ Internals Reference: @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. + @node Separating systems @unnumberedsubsubsec Separating systems @@ -404,125 +404,144 @@ 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 + +@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=2] -\new Staff \with { - \override StaffSymbol #'line-count = #3 -} -{ d4 d d d } +\stopStaff f4 d \startStaff g, e +f'4 d \stopStaff g, e +f'4 d \startStaff g, e @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 -} -{ e4 d c b } +The number of staff lines can be altered: + +@lilypond[verbatim,quote,relative=2] +f4 d \stopStaff +\override Staff.StaffSymbol.line-count = #2 +\startStaff g, e | + +f'4 d \stopStaff +\revert Staff.StaffSymbol.line-count +\startStaff g, e | @end lilypond -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] +@lilypond[verbatim,quote,relative=2] +f4 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 +@end lilypond + +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=2] \new Staff \with { - \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) + \override StaffSymbol.thickness = #3 } -{ e4 d c b } +{ f4 d g, e } @end lilypond -The distance between staff lines can be changed. This setting -affects the spacing of ledger lines as well. +However, it is possible to set ledger line thickness independently of +staff lines. The two values required multiply the staff line thickness +with the staff line spacing and are then added together to give the +ledger line thickness. -@lilypond[verbatim,quote,relative=1] +@lilypond[verbatim,quote,relative=2] \new Staff \with { - \override StaffSymbol #'staff-space = #1.5 + \override StaffSymbol.thickness = #2 + \override StaffSymbol.ledger-line-thickness = #'(0.5 . 0.4) } -{ a4 b c d } +{ f'4 a, a,, f } @end lilypond -Further details about the properties of @code{StaffSymbol} can be -found in @rinternals{staff-symbol-interface}. - -@cindex stopping a staff -@cindex starting a staff -@cindex staff, starting -@cindex staff, stopping +The vertical positions of ledger lines can be altered, -@funindex \startStaff -@funindex startStaff -@funindex \stopStaff -@funindex stopStaff +@lilypond[verbatim,quote,relative=2] +\new Staff \with { + \override StaffSymbol.ledger-positions = #'(-3 -2 -1 2 5 6) +} +{ f'4 a, a,, f } +@end lilypond -Modifications to staff properties in the middle of a score can be -placed between @code{\stopStaff} and @code{\startStaff}: +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,relative=2] -c2 c -\stopStaff -\override Staff.StaffSymbol #'line-count = #2 -\startStaff -b2 b -\stopStaff -\revert Staff.StaffSymbol #'line-count -\startStaff -a2 a +\new Staff \with { + \override StaffSymbol.ledger-extra = #4 +} +{ f'4 a, d, 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. +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}. -@lilypond[verbatim,quote,relative=2] -c4 b a2 +@lilypond[verbatim,quote,relative=1] +\override Staff.StaffSymbol.line-positions = #'(-8 0 2 4) +d4 e f g \stopStaff -b4 c d2 \startStaff -e4 d c2 +\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. -@predefined -@code{\startStaff}, -@code{\stopStaff}. -@endpredefined - +@lilypond[verbatim,quote,relative=2] +\new Staff \with { + \override StaffSymbol.staff-space = #1.5 +} +{ f'4 d, g, e, } +@end lilypond @snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {making-some-staff-lines-thicker-than-the-others.ly} - @seealso Music Glossary: @rglos{line}, @@ -581,7 +600,7 @@ 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'' { +\new Staff = "main" \relative c'' { c4 b d c << { c4 b d c } @@ -590,8 +609,8 @@ only a few ossia staves are needed. \remove "Time_signature_engraver" alignAboveContext = #"main" fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) + \override StaffSymbol.staff-space = #(magstep -3) + \override StaffSymbol.thickness = #(magstep -3) firstClef = ##f } { e4 d f e } @@ -610,12 +629,12 @@ example. @lilypond[verbatim,quote,ragged-right] << - \new Staff = ossia \with { + \new Staff = "ossia" \with { \remove "Time_signature_engraver" - \override Clef #'transparent = ##t + \override Clef.transparent = ##t fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) + \override StaffSymbol.staff-space = #(magstep -3) + \override StaffSymbol.thickness = #(magstep -3) } { \stopStaff s1*6 } @@ -623,7 +642,7 @@ example. c4 b c2 << { e4 f e2 } - \context Staff = ossia { + \context Staff = "ossia" { \startStaff e4 g8 f e2 \stopStaff } >> @@ -631,7 +650,7 @@ example. c4 b c2 << { g4 a g2 } - \context Staff = ossia { + \context Staff = "ossia" { \startStaff g4 e8 f g2 \stopStaff } >> @@ -649,12 +668,12 @@ 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 + \override Clef.transparent = ##t fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) + \override StaffSymbol.staff-space = #(magstep -3) + \override StaffSymbol.thickness = #(magstep -3) } \relative c'' { R1*3 c4 e8 d c2 @@ -672,7 +691,7 @@ break. For more information about \layout { \context { \Staff \RemoveEmptyStaves - \override VerticalAxisGroup #'remove-first = ##t + \override VerticalAxisGroup.remove-first = ##t } } @end lilypond @@ -680,10 +699,9 @@ break. For more information about @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {vertically-aligning-ossias-and-lyrics.ly} - @seealso Music Glossary: @rglos{ossia}, @@ -790,10 +808,9 @@ hide empty staves in ancient music contexts. Similarly, @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {removing-the-first-empty-line.ly} - @seealso Music Glossary: @rglos{Frenched staff}. @@ -820,23 +837,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 +\override StaffSymbol.stencil = ##f +\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 @@ -863,100 +879,113 @@ and @code{ChoirStaff} contexts. The value of of @code{shortInstrumentName} is used for all succeeding staves. @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"Violin " -\set Staff.shortInstrumentName = #"Vln " -c4.. g'16 c4.. g'16 -\break -c1 +\new Staff \with { + instrumentName = #"Violin " + shortInstrumentName = #"Vln. " +} +{ c4.. g'16 c4.. g'16 \break | c1 } @end lilypond -Markup mode can be used to create more complicated instrument -names: +@cindex instrument names, complex + +@code{\markup} can be used to create more complex instrument names: @lilypond[verbatim,quote,relative=2] -\set Staff.instrumentName = \markup { - \column { "Clarinetti" - \line { "in B" \smaller \flat } } } -c4 c,16 d e f g2 +\new Staff \with { + instrumentName = \markup { + \column { "Clarinetti" + \line { "in B" \smaller \flat } + } + } +} +{ c4 c,16 d e f g2 } @end lilypond @cindex instrument names, centering -When two or more staff contexts are grouped together, the -instrument names and short instrument names are centered by -default. To center multi-line instrument names, -@code{\center-column} must be used: +When two or more staff contexts are grouped together, the instrument +names and short instrument names are centered by default. To center +multi-line instrument names, @code{\center-column} must be used: @lilypond[verbatim,quote,indent=1.5\cm,relative=2] << - \new Staff { - \set Staff.instrumentName = #"Flute" - f2 g4 f + \new Staff \with { + instrumentName = #"Flute" } - \new Staff { - \set Staff.instrumentName = \markup \center-column { - Clarinet - \line { "in B" \smaller \flat } + { f2 g4 f } + \new Staff \with { + instrumentName = \markup { + \center-column { "Clarinet" + \line { "in B" \smaller \flat } + } } - c4 b c2 } + { c4 b c2 } >> @end lilypond @funindex indent @funindex short-indent -However, if the instrument names are longer, the instrument names -in a staff group may not be centered unless the @code{indent} and -@code{short-indent} settings are increased. For details about -these settings, see @ref{\paper variables for shifts and indents}. +However, if the instrument names are longer, the instrument names in a +staff group may not be centered unless the @code{indent} and +@code{short-indent} settings are increased. For details about these +settings, see @ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents}. @lilypond[verbatim,quote,ragged-right] +\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 + } + >> +} + \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 - } - \new Staff { - \set Staff.instrumentName = #"Clarinet" - \set Staff.shortInstrumentName = #"Clar." - c,4 b c2 \break - c2 b4 c - } ->> @end lilypond @cindex instrument names, adding to other contexts -To add instrument names to other contexts (such as -@code{ChordNames} or @code{FiguredBass}), -@code{Instrument_name_engraver} must be added to that context. -For details, see @ref{Modifying context plug-ins}. +To add instrument names to other contexts (such as @code{ChordNames} or +@code{FiguredBass}), @code{Instrument_name_engraver} must be added to +that context. For details, see @ref{Modifying context plug-ins}. @cindex instrument names, changing @cindex changing instrument names -Instrument names may be changed in the middle of a piece. -However, remember that @code{instrumentName} will not be -displayed in the middle of the piece, as it only appears -on the first staff: +The @code{shortInstrumentName} may be changed in the middle of a piece. +However, only the first instance of @code{instrumentName} will be +printed and subsequent changes will be ignored: @lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = #"First" -\set Staff.shortInstrumentName = #"one" -c1 c c c \break -c1 c c c \break -\set Staff.instrumentName = #"Second" -\set Staff.shortInstrumentName = #"two" -c1 c c c \break -c1 c c c \break +\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 +} @end lilypond @cindex instrument switch @@ -1001,10 +1030,9 @@ expression to declare the instrument switch: } @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: @@ -1159,6 +1187,9 @@ Notation Reference: @ref{Instrument transpositions}, @ref{Using tags}. +Installed Files: +@file{scm/define-event-classes.scm}. + Snippets: @rlsr{Staff notation}. @@ -1167,10 +1198,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 @@ -1279,7 +1306,7 @@ fluteNotes = \relative c'' { oboeNotes = \relative c'' { R1 - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuring #"flute" #UP { R1 } g2 c, } @@ -1322,10 +1349,13 @@ 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. +The name of the instrument playing the cue can be printed by setting +the @code{instrumentCueName} property in a temporary @code{CueVoice} +context. The placement and style of the @code{instrumentCueName} is +controlled by the @code{\instrumentSwitch} object, see +@ref{Instrument names}. 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'' { @@ -1336,7 +1366,7 @@ bassoonNotes = \relative c { \clef bass R1 \clef treble - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuring #"flute" #UP { R1 } \clef bass g4. b8 d2 @@ -1362,7 +1392,7 @@ fluteNotes = \relative c'' { bassoonNotes = \relative c { \clef bass R1 - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuringWithClef #"flute" #UP #"treble" { R1 } g4. b8 d2 } @@ -1438,7 +1468,7 @@ bassoonNotes = \relative c { R1 \tag #'part { \clef treble - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } } \cueDuring #"flute" #UP { R1 } \tag #'part \clef bass @@ -1465,7 +1495,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}, @@ -1482,9 +1511,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