X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Fstaff.itely;h=6c7753e719715a3f980d43a36932915b0fe50c4e;hb=d409c67cbbdebe840220c17f796544a8a9dd193e;hp=32b7a0a52983008b3b16ac0e13566adf1df47507;hpb=2f320e9722ec20d6f13ec567d007763cc912c5da;p=lilypond.git diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index 32b7a0a529..6c7753e719 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,139 @@ 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 + +@predefined +@code{\startStaff}, +@code{\stopStaff}. +@endpredefined + +The lines of a staff belong to the @code{StaffSymbol} grob (including +ledger lines) can be modified using @code{StaffSymbol} properties, but +these modifications must be made before the staff is (re)started. + +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 -Staff line thickness can be modified. The thickness of ledger -lines and stems are also affected, since they depend on staff line -thickness. +The position of each the staff lines can also be altered. The values +used are @emph{half} staff line spaces and the new position is relative +to the normal center line. A single staff line is printed for every +value entered so that the number of staff lines, as well as their +position in the staff, can be changed with a single override. -@lilypond[verbatim,quote,relative=1] -\new Staff \with { - \override StaffSymbol #'thickness = #3 -} -{ e4 d c b } +@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 -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 clef position and the position of middle 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,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}. +The vertical positions of ledger lines can be altered, -@cindex stopping a staff -@cindex starting a staff -@cindex staff, starting -@cindex staff, stopping - -@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. +Legder 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{legder-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[fragment,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}, @@ -590,8 +604,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 } @@ -612,10 +626,10 @@ example. << \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 } @@ -651,10 +665,10 @@ break. For more information about << \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 +686,7 @@ break. For more information about \layout { \context { \Staff \RemoveEmptyStaves - \override VerticalAxisGroup #'remove-first = ##t + \override VerticalAxisGroup.remove-first = ##t } } @end lilypond @@ -680,10 +694,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 +803,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 +832,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 +874,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}. @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,7 +1025,6 @@ expression to declare the instrument switch: } @end lilypond - @seealso Notation Reference: @ref{\paper variables for shifts and indents}, @@ -1159,6 +1182,9 @@ Notation Reference: @ref{Instrument transpositions}, @ref{Using tags}. +Installed Files: +@file{scm/define-event-classes.scm}. + Snippets: @rlsr{Staff notation}. @@ -1167,25 +1193,13 @@ 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 -@code{@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 @@ -1274,10 +1288,10 @@ and @end example The music from the corresponding measures of the @code{@var{quote name}} -is added as @code{CueVoice} context and occurs simultaneously with the -@code{@var{music}}, which creates a polyphonic situation. The +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 first and second voices respectively determining how +corresponds to the first and second voices respectively, determining how the cue notes are printed in relation to the other voice. @lilypond[verbatim,quote] @@ -1287,7 +1301,7 @@ fluteNotes = \relative c'' { oboeNotes = \relative c'' { R1 - s1*0^\markup { \tiny "flute" } + \new CueVoice { \set instrumentCueName = "flute" } \cueDuring #"flute" #UP { R1 } g2 c, } @@ -1300,17 +1314,20 @@ oboeNotes = \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. + 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 +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. +@warning{When a @code{Voice} starts with @code{\cueDuring}, as in the +following 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] oboeNotes = \relative c'' { r2 r8 d16(\f f e g f a) @@ -1327,10 +1344,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'' { @@ -1341,7 +1361,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 @@ -1367,7 +1387,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 } @@ -1443,7 +1463,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 @@ -1470,7 +1490,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}, @@ -1487,9 +1506,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