X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fstaff.itely;h=c013f4b2f34d141c5b1b91fb149086cf5da80218;hb=da12a3eb8e07ec4e910ead9f39f477920251190a;hp=73ec818f2ecbb3275762c4aac2e9ade731aae9fe;hpb=fefdebeec4bf1965eb1821d89dcf7f74ce717ffa;p=lilypond.git diff --git a/Documentation/user/staff.itely b/Documentation/user/staff.itely index 73ec818f2e..c013f4b2f3 100644 --- a/Documentation/user/staff.itely +++ b/Documentation/user/staff.itely @@ -6,23 +6,21 @@ version that you are working on. See TRANSLATION for details. @end ignore +@c \version "2.11.38" + @node Staff notation @section Staff notation -@lilypondfile[quote,ragged-right,line-width=16\cm,staffsize=16] -{staff-headword.ly} - -Notes, dynamic signs, rests, etc., are grouped with a set of horizontal -lines, called a staff (plural @q{staves}). In LilyPond, these -lines are drawn using a separate layout object called @code{staff -symbol}. +@lilypondfile[quote]{staff-headword.ly} -Two or more staves can be grouped vertically in a @code{GrandStaff}, a -@code{StaffGroup}, or a @code{ChoirStaff}. +This section explains how to influence the staff appearance, +print scores with more than one staff, and +how to apply specific performance marks to single staves. @menu * Displaying staves:: +* Modifying single staves:: * Writing parts:: @end menu @@ -30,35 +28,142 @@ Two or more staves can be grouped vertically in a @code{GrandStaff}, a @node Displaying staves @subsection Displaying staves +This section shows the different possibilities to create and group +staves into groups, which can be marked in the beginning of each +line with either a bracket or a brace. + @menu -* System start delimiters:: -* Staff symbol:: -* Hiding staves:: +* Instantiating new staves:: +* Grouping staves:: +* Deeper nested staff groups:: @end menu -@node System start delimiters -@unnumberedsubsubsec System start delimiters +@node Instantiating new staves +@subsubsection Instantiating new staves + +@cindex new staff +@cindex staff initiation +@cindex staff instantiation +@cindex staff, new +@cindex staff, single +@cindex drum staff +@cindex percussion staff +@cindex Gregorian transcription staff +@cindex rhythmic staff +@cindex tabstaff +@cindex tablature + +Staves (sg. staff) are created with the @code{\new} or +@code{\context} commands. For an explanation on these commands, +see @ref{Creating contexts}. + +There are different predefined staff contexts available in LilyPond: + +@itemize +@item +The default is @code{Staff}: + +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +\new Staff { c d e f } +@end lilypond + +@item +@code{DrumStaff} creates a five line staff set up for a typical drum set. +It uses different names for each instrument. The instrument names have to +be set using the @code{drummode}. See @ref{Percussion staves}. + +@lilypond[verbatim,ragged-right,quote] +\new DrumStaff { + \drummode { cymc hh ss tomh } +} +@end lilypond + +@c FIXME: remove when mentioned in NR 2.8 +@item +@code{GregorianTranscriptionStaff} sets up a staff to notate modern +Gregorian chant. It does not show bar lines. + +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +\new GregorianTranscriptionStaff { c d e f } +@end lilypond + +@item +@code{RhythmicStaff} can be used to show the rhythm of some music. The +notes are printed on one line regardless of their pitch, but the duration +is preserved. See @ref{Showing melody rhythms}. + +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +\new RhythmicStaff { c d e f } +@end lilypond + +@item +@code{TabStaff} creates by default a tablature with six strings in +standard guitar tuning. See @ref{Guitar tablatures}. + +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +\new TabStaff { c d e f } +@end lilypond + +@end itemize + +@noindent +Besides these staves there are two staff contexts specific for the notation +of ancient music: @code{MensuralStaff} and @code{VaticanaStaff}. They are +described in @ref{Pre-defined contexts}. + +Once a staff is instantiated it can be started or stopped at every point +in the score. This is done with the commands @code{\startStaff} and +@code{\stopStaff}. How to use it is explained in @ref{Staff symbol}. + + +@seealso + +Music Glossary: @rglos{staff}, @rglos{staves}. + +Notation Reference: @ref{Percussion staves}, +@ref{Guitar tablatures}, @ref{Gregorian chant contexts}, +@ref{Mensural contexts}. + +Snippets: +@rlsr{Staff notation}. + +Internals Reference: @rinternals{Staff}, @rinternals{DrumStaff}, +@rinternals{GregorianTranscriptionStaff}, @rinternals{RhythmicStaff}, +@rinternals{TabStaff}, @rinternals{MensuralStaff}, +@rinternals{VaticanaStaff}, @rinternals{StaffSymbol}. + + + +@node Grouping staves +@subsubsection Grouping staves @cindex start of system @cindex staff, multiple +@cindex staves, multiple +@cindex system start delimiters @cindex bracket, vertical @cindex brace, vertical @cindex grand staff +@cindex piano staff @cindex staff group @cindex staff, choir +@cindex choir staff @cindex system -Many scores consist of more than one staff. These staves can be -grouped in several different ways: +LilyPond provides different types of contexts to group single staves +together. These contexts influence in the first place the appearance +of the system start delimiter, but they have also influence on the +behavior of the bar lines. @itemize @item -In a @code{GrandStaff}, the group is started with a brace -at the left, and bar lines are connected between the staves. +If no context is specified, the default properties for the score +will be used: the group is started with a vertical line, and the +bar lines are not connected. The name of the beginning bar line +grob is @code{SystemStartBar}. -@lilypond[verbatim,ragged-right,quote] -\new GrandStaff -\relative << +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +<< \new Staff { c1 c } \new Staff { c c } >> @@ -66,144 +171,441 @@ at the left, and bar lines are connected between the staves. @item In a @code{StaffGroup}, the bar lines will be drawn through -all the staves, but the group is started with a bracket. +all the staves, and the group is started with a bracket. -@lilypond[verbatim,ragged-right,quote] -\new StaffGroup -\relative << +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +\new StaffGroup << \new Staff { c1 c } \new Staff { c c } >> @end lilypond @item -In a @code{ChoirStaff}, the group is started with a -bracket, but bar lines are not connected. +In a @code{ChoirStaff}, the group is +started with a bracket, but bar lines are not connected. -@lilypond[verbatim,ragged-right,quote] -\new ChoirStaff -\relative << +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +\new ChoirStaff << \new Staff { c1 c } \new Staff { c c } >> @end lilypond @item -If no context is specified, the default properties for the score -will be used: the group is started with a vertical line, and the -bar lines are not connected. +In a @code{GrandStaff}, the group is started with a brace +at the left, and bar lines are connected between the staves. -@lilypond[verbatim,ragged-right,quote] -\relative << +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +\new GrandStaff << + \new Staff { c1 c } + \new Staff { c c } +>> +@end lilypond + +@item +The @code{PianoStaff} behaves almost as the @code{GrandStaff} but is +optimized for setting piano music. In particular it supports the printing +of an instrument name directly, see @ref{Instrument names}. + +@lilypond[verbatim,ragged-right,quote,fragment,relative=2] +\new PianoStaff << \new Staff { c1 c } \new Staff { c c } >> @end lilypond + @end itemize -@cindex Mensurstriche layout -@cindex Renaissance music +Each staff group context sets the property +@code{systemStartDelimiter} to one of the values +@code{SystemStartBar}, @code{SystemStartBrace}, +and @code{SystemStartBracket}. A fourth delimiter, +@code{systemStartSquare}, is also available, but must be +instantiated manually. The usage of this last delimiter is shown further +down in the snippet section. -In addition to these four staff group types, other groupings can -be produced by changing various properties. E.g., the -@q{Mensurstriche} layout common in Renaissance music, with -bar lines running between but not through the staves, can be -produced from a @code{StaffGroup} or @code{GrandStaff} context if -the bar lines are made transparent in the @code{Staff} itself, with -the command @code{\override Staff.BarLine #'transparent = ##t} +According to classic engraver rules an orchestral score consists of +staves connected only with a single line at the beginning of the system. +In LilyPond this is produced grouping the @code{Staff} contexts with +@code{<< ... >>}. -@cindex staff, nested +Each instrument family is grouped inside of a @code{StaffGroup} with a +starting bracket. A group of same instruments or an instrument using +more than one staff is grouped with braces in a @code{GrandStaff}. -Staff groups can be nested, using the context -@code{InnerStaffGroup} or @code{InnerChoirStaff}; see -@lsr{staff,staff-brackets.ly} -@c snippet 137 +As the context names tell, @code{PianoStaff} is used for notating +piano music and @code{ChoirStaff} for all kind of vocal ensemble music. -@commonprop -More complex nesting can be accomplished using the property -@code{systemStartDelimiterHierarchy}: +@snippets -@lilypond[quote,ragged-right,verbatim] -\new StaffGroup -\relative << - \set StaffGroup.systemStartDelimiterHierarchy - = #'(SystemStartSquare (SystemStartBracket a - (SystemStartSquare b)) d) - \new Staff { c1 } - \new Staff { c1 } - \new Staff { c1 } - \new Staff { c1 } - \new Staff { c1 } ->> +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{use-square-bracket-at-the-start-of-a-staff-group.ly} + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{display-bracket-with-only-one-staff-in-a-system.ly} + +@cindex mensurstriche layout +@cindex renaissance music +@cindex transcription of mensural music +@cindex mensural music, transcription of + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{mensurstriche-layout-bar-lines-between-the-staves.ly} +@c FIXME: move to NR 2.8.x when sectioning is ready + +@seealso + +Music Glossary: @rglos{brace}, +@rglos{bracket}, @rglos{grand staff}. + +Snippets: +@rlsr{Staff notation}. + +Internals Reference: @rinternals{Staff}, @rinternals{ChoirStaff}, +@rinternals{GrandStaff}, @rinternals{PianoStaff}, +@rinternals{StaffGroup}, @rinternals{systemStartDelimiter}, +@rinternals{SystemStartBar}, @rinternals{SystemStartBrace}, +@rinternals{SystemStartBracket}, @rinternals{systemStartSquare}. + + +@node Deeper nested staff groups +@subsubsection Deeper nested staff groups + +There are also two inner staff contexts named @code{InnerStaffGroup} +and @code{InnerChoirStaffGroup} besides the grouping contexts mentioned +in @ref{Grouping staves}. They behave in the same way as their simple +counterparts, except that they are contained in another staff grouping +context, thus producing one more bracket on top of the existing one. +Note that @code{GrandStaff} and @code{PianoStaff} do not have any inner +grouping contexts. They can both be inside any other staff context, +including inner staff groups, though. + +Here is an example of an orchestral score using groupings and nesting +of these groupings. Note that the instrument names are omitted from the +source code, for instructions how to set them see @ref{Instrument names}. + +@cindex staff, nested +@cindex staves, nested +@cindex nesting of staves +@cindex system start delimiters, nested +@cindex nested staff brackets +@cindex brackets, nesting of +@cindex braces, nesting of +@cindex inner staff group +@cindex inner choir staff group + + +@example +\score @{ << + \new StaffGroup %woodwinds + << + \new Staff @{ c'1 d' @} %flute + \new InnerStaffGroup << + \new Staff @{ c' d' @} %sax + \new Staff @{ c' d' @} %oboe + \new Staff @{ c' d' @} %English horn + >> + \new Staff @{ \clef bass c d @} %bassoon + >> + \new StaffGroup %the brass group + << + \new Staff @{ c' d' @} %trumpet + \new Staff @{ \clef bass c d @} %trombone + \new GrandStaff %the horns need a GrandStaff (same instrument) + << + \new Staff @{ c' d' @} + \new Staff @{ \clef bass c d @} + >> + >> + \new ChoirStaff %for setting vocal music + << + \new Staff @{ c' d' @} + \new InnerChoirStaff << + \new Staff @{ c' d' @} + \new Staff @{ c' d' @} + >> + \new Staff @{ c' d' @} + >> + \new PianoStaff %for the piano + << + \new Staff @{ c' d' @} + \new Staff @{\clef bass c d @} + >> +>> @} +@end example + +@c no verbatim so instrument names are only in the music +@lilypond[ragged-right,quote] +\score { << + \new StaffGroup %woodwinds + << + \new Staff {\set Staff.instrumentName = "fl" c'1 d' } %flute + \new InnerStaffGroup << + \new Staff { \set Staff.instrumentName = "sax" c' d' } %sax 1 + \new Staff { \set Staff.instrumentName = "ob" c' d' } %sax 2 + \new Staff { \set Staff.instrumentName = "ca" c' d' } + >> + \new Staff {\set Staff.instrumentName = "bs" \clef bass c d } %bassoon + >> + \new StaffGroup %the brass group + << + \new Staff {\set Staff.instrumentName = "tr" c' d' } %trumpet + \new Staff {\set Staff.instrumentName = "tb" \clef bass c d } %trombone + \new GrandStaff %the horns need a GrandStaff (same instrument) + << + \new Staff {\set Staff.instrumentName = "cor1" c' d' } + \new Staff {\set Staff.instrumentName = "cor2" \clef bass c d } + >> + >> + \new ChoirStaff %for setting vocal music + << + \new Staff {\set Staff.instrumentName = "S" c' d' } + \new InnerChoirStaff << + \new Staff {\set Staff.instrumentName = "A1" c' d' } + \new Staff {\set Staff.instrumentName = "A2" c' d' } + >> + \new Staff {\set Staff.instrumentName = "T" c' d' } + >> + \new PianoStaff %for the piano + << + \new Staff { c' d' } + \new Staff {\clef bass c d } + >> +>> } @end lilypond -Each staff group context sets the property -@code{systemStartDelimiter} to one of the values -@internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, -and @internalsref{SystemStartBracket}. A fourth delimiter, -@code{systemStartSquare}, is also available, but must be -instantiated manually -@c FIXME: Graham will deal with this. -gp -@c snippet 201 -To display a bracket even if there is only one staff, see -@lsr{staff,display-bracket-with-only-one-staff-in-a -system.ly} +@snippets + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{nesting-staves.ly} + @seealso -Music Glossary: @rglos{brace}, @rglos{staff}, @rglos{staves} -@rglos{bracket}. +Snippets: +@rlsr{Staff notation}. + +Internals Reference: @rinternals{InnerChoirStaffGroup}, +@rinternals{InnerStaffGroup}, @rinternals{SystemStartBar}, +@rinternals{SystemStartBrace}, @rinternals{SystemStartBracket}, +@rinternals{systemStartDelimiterHierarchy}. + -Snippets: @lsrdir{staff} -Internals Reference: @internalsref{ChoirStaff}, -@internalsref{GrandStaff}, @internalsref{StaffGroup}, -@internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, -@internalsref{SystemStartBracket}, -@internalsref{systemStartDelimiterHierarchy}. +@node Modifying single staves +@subsection Modifying single staves +This section explains how to change specific attributes of one +staff like the staff lines, starting and stopping of staves, sizing +of staves, and setting ossia sections. + +@menu +* Staff symbol:: +* Ossia staves:: +* Hiding staves:: +@end menu @node Staff symbol -@unnumberedsubsubsec Staff symbol +@subsubsection Staff symbol @cindex adjusting staff symbol +@cindex drawing staff symbol +@cindex staff symbol, setting of +@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 layout object which draws the lines of a staff is called -@code{staff symbol}. The staff symbol may be tuned in the number, -thickness and distance of lines, using properties. This is -demonstrated in the example files -@lsr{staff,changing-the-number-of-lines-in-a-staff.ly} and -@lsr{staff,changing-the-staff-size.ly}. +@code{staff symbol}. The staff symbol may be tuned in number, +thickness and distance of lines, using properties. It may also +be started and stopped at every point in the score. + +@itemize +@item +Changing the number of staff lines is done by overriding +@code{line-count}. You may need to adjust the clef position +and the position of the middle C to fit to the new staff. For +an explanation, see the snippet section in @ref{Displaying pitches}. + +@lilypond[verbatim,ragged-right,quote] +\new Staff { + \override Staff.StaffSymbol #'line-count = #3 + d d d d +} +@end lilypond + +@item +The placement and amount of the staff lines can also set totally +manually by defining their positions explicitly. The middle +of the staff has the value of 0, each half staff space up and down +adds an integer. The default values are 4 2 0 -2 -4. Bar lines +are drawn according to the calculated width of the system, but +they are always centered. As the +example shows, the positions of the notes are not influenced +by the position of the staff lines. + +@lilypond[verbatim,ragged-right,quote] +\new Staff \with { + \override StaffSymbol #' line-positions = #' ( 7 3 0 -4 -6 -7 ) + }{ + a e' f' b' d'' +} +@end lilypond + +@item +The staff line thickness can be set by overriding the @code{thickness} +property. Note that it gets applied also to ledger lines and stems, +since they depend on the staff line thickness. The argument of +@code{thickness} is a factor of @code{line-thickness} which defaults +to the normal staff line thickness. + +@lilypond[verbatim,ragged-right,quote] +\new Staff \with { + \override StaffSymbol #'thickness = #3 + }{ + d d d d +} +@end lilypond + +@item +The thickness of the ledger lines can also be set independent of the +settings for staff lines. The setting is calculated from a pair of +values which will be added for the final thickness. The first value +is the staff line thickness multiplied by a factor, the second is +the staff space multiplied by a factor. In the example the ledger +lines get their thickness from one staff line thickness plus 1/5 +staff space, so they are heavier than a normal staff line. + +@lilypond[verbatim,ragged-right,quote] +\new Staff \with { + \override StaffSymbol #' ledger-line-thickness = #' ( 1 . 0.2 ) } + { + d d d d +} +@end lilypond + +@item +The distance of the stafflines can be changed with the +@code{staff-space} property. Its argument is the amount +of staff spaces that should be inserted between the lines. +The default value is 1. Setting the distance has +influence on the staff lines as well as on ledger lines. + +@lilypond[verbatim,ragged-right,quote] +\new Staff \with { + \override StaffSymbol #' staff-space = #1.5 + }{ + a b c' d' +} +@end lilypond + +@item +The length of the staff line can also be adjusted +manually. The unit is one staff space. Spacing +of the objects inside the staff does not get influenced +by this setting. -In addition, staves may be started and stopped at will. This is -done with @code{\startStaff} and @code{\stopStaff}. +@lilypond[verbatim,ragged-right,quote] +\new Staff \with { + \override StaffSymbol #' width = #23 + }{ + a e' f' b' d'' +} +@end lilypond + +@end itemize + +These properties can only be set before instantiating the staff symbol. +But it is possible to start and stop staves in the middle of a score, +so each new setting will be applied to the newly instantiated staff. @lilypond[verbatim,relative=2,fragment] b4 b +%Set here the overrides for the staff \override Staff.StaffSymbol #'line-count = 2 \stopStaff \startStaff b b +%Revert to the default \revert Staff.StaffSymbol #'line-count \stopStaff \startStaff b b @end lilypond + +@predefined + +@code{\stopStaff}, @code{\startStaff} + +@snippets + +@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +{making-some-staff-lines-thicker-than-the-others.ly} + +@seealso + +Glossary: @rglos{line}, @rglos{ledger line}, @rglos{staff}. + +Internals Reference: @rinternals{StaffSymbol}. + +@knownissues + +When setting staff lines manually, bar lines are +always drawn centered on the position 0, so the +maximum distance of the bar lines in either direction +must be equal. + -@cindex staves, Frenched +@node Ossia staves +@subsubsection Ossia staves + +@cindex staff, Frenched @cindex ossia @cindex Frenched staves +@cindex staff, resizing of +@cindex resizing of staves + +Tweaking the staff object allows to resize the staff: + +@lilypond[verbatim,ragged-right,quote] + \new Staff \with { + fontSize = #-3 + \override StaffSymbol #'staff-space = #(magstep -3) + \override StaffSymbol #'thickness = # (magstep -3) + } + { + \clef bass + c8 c c c c c c c + } +@end lilypond + +@noindent +This involves shrinking the staff spaces, the staff lines and +the font size by the factor 3. You find a more precise explanation +in @ref{Setting the staff size}. -In combination with Frenched staves, this may be used to typeset -@emph{ossia} sections. An example is shown here +The @emph{ossia} section in the next example are just put parallel +to the main staff with @code{<<} and @code{>>} brackets. The @emph{ossia} +staff is stopped and started explicitely and white space is inserted +with the @code{\skip} command. -@lilypond[verbatim,relative=2,quote] +@lilypond[verbatim,quote] << \new Staff \with { + %No time signature in the ossia staff \remove "Time_signature_engraver" - fontSize = #-2 - \override StaffSymbol #'staff-space = #(magstep -2) + fontSize = #-3 + \override StaffSymbol #'staff-space = #(magstep -3) + \override StaffSymbol #'thickness = # (magstep -3) firstClef = ##f } \relative c'' { @@ -220,70 +622,63 @@ In combination with Frenched staves, this may be used to typeset \startStaff f8 d g4 } - \new Staff \relative - { + \new Staff \relative c'' { \time 2/4 c4 c g' g a a g2 } - >> @end lilypond -@cindex staff lines, setting number of -@cindex staff lines, setting thickness of -@cindex thickness of staff lines, setting -@cindex number of staff lines, setting + +@snippets + +@c lilypondfile{Making-some-staff-lines-thicker-than-the-others.ly} +@c snippet 277 @seealso Music Glossary: @rglos{ossia}, @rglos{staff}, @rglos{Frenched staff}. -Snippets: @lsrdir{staff} +Snippets: +@rlsr{Staff notation}. -Internals Reference: @internalsref{StaffSymbol}, -@internalsref{DrumStaff}. +Internals Reference: @rinternals{StaffSymbol}. @node Hiding staves -@unnumberedsubsubsec Hiding staves +@subsubsection Hiding staves @cindex Frenched scores -@cindex staves, hiding -@cindex staves, empty +@cindex staff, hiding +@cindex staff, empty +@cindex hiding of staves +@cindex empty staves +@cindex Frenched staves In orchestral scores, staff lines that only have rests are usually removed; this saves some space. This style is called @q{French -Score}. For @code{Lyrics}, @code{ChordNames} and -@code{FiguredBass}, this is switched on by default. When +Score}. For the @code{Lyrics}, @code{ChordNames}, and +@code{FiguredBass} contexts, this is switched on by default. When the lines of these contexts turn out empty after the line-breaking process, they are removed. -For normal staves, a specialized @code{Staff} context is -available, which does the same: staves containing nothing (or only -multi-measure rests) are removed. The context definition is -stored in @code{\RemoveEmptyStaffContext} variable. Observe how -the second staff in this example disappears in the second line +For normal staves this behaviour is called +with the @code{\RemoveEmptyStaffContext} command. It is set +in the @code{\layout} block. As a result staves containing +nothing or whole mesure rests are removed after a line break. @lilypond[quote,ragged-right,verbatim] \layout { \context { \RemoveEmptyStaffContext } } - -{ - \relative c' << +\relative c'' { + << \new Staff { e4 f g a \break c1 } \new Staff { c4 d e f \break R1 } - >> + >> } @end lilypond -The first system shows all staves in full. If empty staves should -be removed from the first system too, set @code{remove-first} to -true in @code{VerticalAxisGroup}. - -@example -\override Score.VerticalAxisGroup #'remove-first = ##t -@end example To remove other types of contexts, use @code{\AncientRemoveEmptyStaffContext} or @@ -293,8 +688,7 @@ To remove other types of contexts, use Another application of the @code{\RemoveEmptyStaffContext} is to make ossia sections, i.e., alternative melodies on a separate -piece of staff, with help of a Frenched staff. See @ref{Staff -symbol}. +piece of staff, with help of a Frenched staff. See @ref{Ossia staves}. You can make the staff lines invisible by removing the @code{Staff_symbol_engraver} from the @code{Staff} context. @@ -302,7 +696,7 @@ You can make the staff lines invisible by removing the @lilypond[quote,ragged-right,verbatim] \score { - \context Staff \relative c'' { c8 c c16 c c c } + \new Staff \relative c'' { c8 c c16 c c c } \layout{ \context { \Staff @@ -312,15 +706,63 @@ You can make the staff lines invisible by removing the } @end lilypond +@snippets + +The first empty staff can also be removed from the score with a +setting in the @code{VerticalAxisGroup} property. This can be done +globally inside the @code{\layout} block, or locally inside the +specific staff that should be removed. In the latter case, +you have to specify the context (@code{Staff} applies only to the +current staff) in front of the property. + +The lower staff of the second staff group is not removed, +because the setting applies only to the specific staff inside +of which it is written. + +@lilypond[quote,ragged-right,verbatim] +\layout { + \context { + \RemoveEmptyStaffContext + %To use the setting globally, uncomment the following line: + %\override VerticalAxisGroup #'remove-first = ##t + } +} +\new StaffGroup + \relative c'' << + \new Staff { + e4 f g a \break c1 } + \new Staff { + %To use the setting globally, comment this line, uncomment the line above + \override Staff.VerticalAxisGroup #'remove-first = ##t + R1 \break R1 } + >> +\new StaffGroup + << + \new Staff { e4 f g a \break c1 } + \new Staff { R \break R1 } + >> +@end lilypond + +@c FIXME not yet in master +@c lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle] +@c {remove-the-first-empy-line.ly} + +@predefined + +@code{\RemoveEmptyStaffContext}, +@code{\AncientRemoveEmptyStaffContext}, +@code{\RemoveEmptyRhythmicStaffContext}, + @seealso Notation Reference: @ref{Staff symbol}. -Snippets: @lsrdir{staff} +Snippets: +@rlsr{Staff notation}. -Internals Reference: @internalsref{ChordNames}, -@internalsref{FiguredBass}, @internalsref{Lyrics}, -@internalsref{Staff}, @internalsref{VerticalAxisGroup}. +Internals Reference: @rinternals{ChordNames}, +@rinternals{FiguredBass}, @rinternals{Lyrics}, +@rinternals{Staff}, @rinternals{VerticalAxisGroup}. @node Writing parts @subsection Writing parts @@ -333,7 +775,7 @@ Internals Reference: @internalsref{ChordNames}, @end menu @node Metronome marks -@unnumberedsubsubsec Metronome marks +@subsubsection Metronome marks @cindex Tempo @cindex beats per minute @@ -355,7 +797,7 @@ the layout output, a metronome marking is printed @end lilypond -@commonprop +@snippets To change the tempo in the MIDI output without printing anything, make the metronome marking invisible @example \once \override @@ -372,24 +814,24 @@ c4^\markup { @end lilypond @noindent -For more details, see @ref{Text markup}. +For more details, see @ref{Formatting text}. @seealso Music Glossary: @rglos{metronome}, @rglos{metronomic indication}, -@rglos{tempo indication}. -@c FIXME : add @rglos{Mälzels Metronome}, @rglos{M.M.}, @rglos{tempo}? +@rglos{tempo indication}, @rglos{metronome mark}. -Notation Reference: @ref{Text markup}. +Notation Reference: @ref{Formatting text}. -Snippets: @lsrdir{staff}. +Snippets: +@rlsr{Staff notation}. -Internals Reference: @internalsref{MetronomeMark}, @ref{MIDI +Internals Reference: @rinternals{MetronomeMark}, @ref{MIDI output}. -@refbugs +@knownissues Collisions are not checked. If you have notes above the top line of the staff (or notes with articulations, slurs, text, etc), then @@ -405,19 +847,21 @@ place it further away from the staff. @node Instrument names -@unnumberedsubsubsec Instrument names +@subsubsection Instrument names + +@cindex instrument names +@cindex instrument names, short In an orchestral score, instrument names are printed at the left side of the staves. -This can be achieved by setting -@internalsref{Staff}.@code{instrumentName} and -@internalsref{Staff}.@code{shortInstrumentName}, or -@internalsref{PianoStaff}.@code{instrumentName} and -@internalsref{PianoStaff}.@code{shortInstrumentName}. This will -print text before the start of the staff. For the first staff, -@code{instrumentName} is used. If set, @code{shortInstrumentName} -is used for the following staves. +This can be achieved by setting @code{Staff}.@code{instrumentName} and +@code{Staff}.@code{shortInstrumentName}, or +@code{PianoStaff}.@code{instrumentName} and +@code{PianoStaff}.@code{shortInstrumentName}. This will print text +before the start of the staff. For the first staff, +@code{instrumentName} is used. If set, @code{shortInstrumentName} is +used for the following staves. @lilypond[quote,verbatim,ragged-right,relative=1,fragment] \set Staff.instrumentName = "Ploink " @@ -437,20 +881,22 @@ instrument names, for example c''1 @end lilypond -If you wish to center the instrument names, you must center all of -them individually: +@cindex instrument names, centering + +As instrument names are centered by default, multi line names +are better entered using @code{\center-align}: @lilypond[quote,verbatim,ragged-right] { << \new Staff { - \set Staff.instrumentName = \markup { - \center-align { "Clarinetti" - \line { "in B" \smaller \flat } } } + \set Staff.instrumentName = \markup \center-align { + Clarinetti + \line { "in B" \smaller \flat } + } c''1 } \new Staff { - \set Staff.instrumentName = - \markup{ \center-align { Vibraphone }} + \set Staff.instrumentName = "Vibraphone" c''1 } >> @@ -460,23 +906,9 @@ them individually: For longer instrument names, it may be useful to increase the @code{indent} setting in the @code{\layout} block. -To center instrument names while leaving extra space to the right, - -@lilypond[quote,verbatim,ragged-right] -\new StaffGroup \relative -<< - \new Staff { - \set Staff.instrumentName = - \markup { \hcenter-in #10 "blabla" } - c1 c1 - } - \new Staff { - \set Staff.instrumentName = - \markup { \hcenter-in #10 "blo" } - c1 c1 - } ->> -@end lilypond +Short instrument names, printed before the systems following the first +one, are also centered by default, in a space which width is given by +the @code{short-indent} variable of the @code{\layout} block. To add instrument names to other contexts (such as @code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}), the @@ -492,6 +924,8 @@ engraver must be added to that context. More information about adding and removing engravers can be found in @ref{Modifying context plug-ins}. +@cindex instrument names, changing + Instrument names may be changed in the middle of a piece, @lilypond[quote,fragment,verbatim,ragged-right] @@ -508,15 +942,22 @@ c1 c c c \break @seealso -Snippets: @lsrdir{staff} +Notation Reference: @ref{Modifying context plug-ins}. + +Snippets: +@rlsr{Staff notation}. -Internals Reference: @internalsref{InstrumentName}. +Internals Reference: @rinternals{InstrumentName}, +@rinternals{PianoStaff}, @rinternals{Staff}. @node Quoting other voices -@unnumberedsubsubsec Quoting other voices +@subsubsection Quoting other voices @cindex cues +@cindex quoting other voices +@cindex fragments +@cindex cue notes With quotations, fragments of other parts can be inserted into a part directly. Before a part can be quoted, it must be marked @@ -607,10 +1048,10 @@ notes and rests of the quoted voice end up in the will quote notes (but no rests), together with scripts and dynamics. -@refbugs +@knownissues -Only the contents of the first @internalsref{Voice} occurring in -an @code{\addQuote} command will be considered for quotation, so +Only the contents of the first @code{Voice} occurring in an +@code{\addQuote} command will be considered for quotation, so @var{music} can not contain @code{\new} and @code{\context Voice} statements that would switch to a different Voice. @@ -626,14 +1067,20 @@ written entirely in lower-case letters: @code{\addquote}. Notation Reference: @ref{Instrument transpositions}. -Snippets: @lsrdir{staff} +Snippets: +@rlsr{Staff notation}. -Internals Reference: @internalsref{QuoteMusic}. +Internals Reference: @rinternals{QuoteMusic}, @rinternals{Voice}. @node Formatting cue notes -@unnumberedsubsubsec Formatting cue notes +@subsubsection Formatting cue notes +@cindex cues +@cindex cue notes +@cindex cue notes, formatting +@cindex fragments +@cindex quoting other voices @cindex cues, formatting The previous section deals with inserting notes from another @@ -647,7 +1094,7 @@ The syntax is @end example This will insert notes from the part @var{name} into a -@internalsref{Voice} called @code{cue}. This happens +@code{Voice} called @code{cue}. This happens simultaneously with @var{music}, which usually is a rest. When the cue notes start, the staff in effect becomes polyphonic for a moment. The argument @var{updown} determines whether the cue @@ -685,19 +1132,20 @@ smaller = { @end lilypond -Here are a couple of hints for successful cue notes +Here are a couple of hints for successful cue notes: @itemize @item Cue notes have smaller font sizes. @item -the cued part is marked with the instrument playing the cue. +The cued part is marked with the instrument playing the cue. @item -when the original part takes over again, this should be marked +When the original part takes over again, this should be marked with the name of the original instrument. +@item Any other changes introduced by the cued part should also be undone. For example, if the cued instrument plays in a different clef, the original clef should be stated once again. @@ -726,15 +1174,16 @@ cbsn = \relative c, { } << - \context Staff = "picc" \picc - \context Staff = "cbsn" \cbsn + \new Staff = "picc" \picc + \new Staff = "cbsn" \cbsn >> @end lilypond @seealso -Snippets: @lsrdir{staff} - +Snippets: +@rlsr{Staff notation}. +Internals Reference: @rinternals{Voice}.