X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fstaff.itely;h=3c4be6a41d7f45b8a37c48d1ef47bfb1860e1f9e;hb=7ffb44d7dbcd7bcf66ab0b0ef64515af416f3709;hp=aef930afd0c33821762c461d29d1a0c098ccf361;hpb=855e680d327f49088fb2f9f3ca4dbf0875c43bc0;p=lilypond.git diff --git a/Documentation/user/staff.itely b/Documentation/user/staff.itely index aef930afd0..3c4be6a41d 100644 --- a/Documentation/user/staff.itely +++ b/Documentation/user/staff.itely @@ -6,40 +6,39 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.38" +@c \version "2.11.51" @node Staff notation @section Staff notation @lilypondfile[quote]{staff-headword.ly} - -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. +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:: +* Displaying staves:: +* Modifying single staves:: +* Writing parts:: @end menu @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. +This section shows the different possibilities of creating and +grouping staves, which are marked at the beginning of each line +with either a bracket or a brace. @menu * Instantiating new staves:: -* Grouping staves:: -* Deeper nested staff groups:: +* Grouping staves:: +* Deeper nested staff groups:: @end menu @node Instantiating new staves -@subsubsection Instantiating new staves +@unnumberedsubsubsec Instantiating new staves @cindex new staff @cindex staff initiation @@ -53,91 +52,91 @@ line with either a bracket or a brace. @cindex tabstaff @cindex tablature -The lines of a staff (pl. staves) are produced by the @code{staff symbol} -layout object. Staves are created with the @code{\new} or -@code{\context} commands. For an explanation on these commands, -see @ref{Creating contexts}. +@notation{Staves} (singular: @notation{staff}) are created with +the @code{\new} or @code{\context} commands. For details, see +@ref{Creating contexts}. -There are different predefined staff contexts available in LilyPond: +The basic staff context is @code{Staff}: -@itemize -@item -The default is @code{Staff}: -@lilypond[verbatim,ragged-right,quote] -\relative c'' { - \new Staff { c d e f } -} +@lilypond[verbatim,quote,relative=2] +\new Staff { c4 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 { +@code{DrumStaff} creates a five-line staff set up for a +typical drum set. It uses different names for each instrument. +The instrument names are set using the @code{\drummode} command. +For details, see @ref{Percussion staves}. + +@lilypond[verbatim,quote] +\new DrumStaff { \drummode { cymc hh ss tomh } } @end lilypond -@item -@code{GregorianTranscriptionStaff} sets up a staff to notate modern -Gregorian chant. It does not show bar lines. -@lilypond[verbatim,ragged-right,quote] -\relative c'' { - \new GregorianTranscriptionStaff { c d e f } -} -@end lilypond +@c FIXME: remove when mentioned in NR 2.8 +@code{GregorianTranscriptionStaff} creates a staff to notate +modern Gregorian chant. It does not show bar lines. -@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] -\relative c'' { - \new RhythmicStaff { c d e f } -} +@lilypond[verbatim,quote,relative=2] +\new GregorianTranscriptionStaff { c4 d e f } @end lilypond -@item -@code{TabStaff} creates by default a tablature with six strings in -standard guitar tuning. See @ref{Tablatures basic}. -@lilypond[verbatim,ragged-right,quote] -\relative c'' { - \new TabStaff { c d e f } -} +@code{RhythmicStaff} creates a single-line staff that only +displays the rhythmic values of the input. Real durations are +preserved. For details, see @ref{Showing melody rhythms}. + +@lilypond[verbatim,quote,relative=2] +\new RhythmicStaff { c4 d e f } @end lilypond -@end itemize +@code{TabStaff} creates a tablature with six strings in standard +guitar tuning. For details, see @ref{Default tablatures}. -@noindent -Besides these staves there are two staff contexts specific for the notation -of ancient music: @code{MensuralStaff} and @code{VaticanaStaff}. They are +@lilypond[verbatim,quote,relative=2] +\new TabStaff { c4 d e f } +@end lilypond + +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}. +Staves can be started or stopped at any point in the score. The +commands @code{\startStaff} and @code{\stopStaff} are used for +this purpose. For details, see @ref{Staff symbol}. @seealso -Music Glossary: @rglos{staff}, @rglos{staves}. - -Notation Reference: @ref{Percussion staves}, -@ref{Tablatures basic}, @ref{Gregorian Chant contexts}, and -@ref{Mensural contexts}. - -Snippets: @lsrdir{Staff,Staff-notation}. - -Internals Reference: @internalsref{Staff}, @internalsref{DrumStaff}, -@internalsref{GregorianTranscriptionStaff}, @internalsref{RhythmicStaff}, -@internalsref{TabStaff}, @internalsref{MensuralStaff}, -@internalsref{VaticanaStaff}. - +Music Glossary: +@rglos{staff}, +@rglos{staves}. + +Notation Reference: +@ref{Creating contexts}, +@ref{Percussion staves}, +@ref{Default tablatures}, +@ref{Gregorian chant contexts}, +@ref{Mensural contexts}, +@ref{Staff symbol}, +@ref{Pre-defined contexts}, +@ref{Showing melody rhythms}. + +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 +@unnumberedsubsubsec Grouping staves @cindex start of system @cindex staff, multiple @@ -145,114 +144,85 @@ Internals Reference: @internalsref{Staff}, @internalsref{DrumStaff}, @cindex system start delimiters @cindex bracket, vertical @cindex brace, vertical +@cindex choir staff @cindex grand staff @cindex piano staff @cindex staff group @cindex staff, choir -@cindex choir staff +@cindex staff, piano @cindex system -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. - -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. +Various contexts exist to group single staves together in order to +form multi-stave systems. Each grouping context sets the style of +the system start delimiter and the behavior of bar lines. +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. -@itemize -@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. - -@lilypond[verbatim,ragged-right,quote] -\relative c'' << +@lilypond[verbatim,quote,relative=2] +<< + \new Staff { c1 c } \new Staff { c1 c } - \new Staff { c c } >> @end lilypond -@item -In a @code{StaffGroup}, the bar lines will be drawn through -all the staves, and the group is started with a bracket. +In the @code{StaffGroup} context, the group is started with a +bracket and bar lines are drawn through all the staves. -@lilypond[verbatim,ragged-right,quote] -\new StaffGroup { - \relative c'' << - \new Staff { c1 c } - \new Staff { c c } - >> -} +@lilypond[verbatim,quote,relative=2] +\new StaffGroup << + \new Staff { c1 c } + \new Staff { c1 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 starts with a bracket, but bar +lines are not connected. -@lilypond[verbatim,ragged-right,quote] -\new ChoirStaff { - \relative c'' << - \new Staff { c1 c } - \new Staff { c c } - >> -} +@lilypond[verbatim,quote,relative=2] +\new ChoirStaff << + \new Staff { c1 c } + \new Staff { c1 c } +>> @end lilypond -@item -In a @code{GrandStaff}, the group is started with a brace -at the left, and bar lines are connected between the staves. +In a @code{GrandStaff}, the group begins with a brace, and bar +lines are connected between the staves. -@lilypond[verbatim,ragged-right,quote] -\new GrandStaff { - \relative c'' << - \new Staff { c1 c } - \new Staff { c c } - >> -} +@lilypond[verbatim,quote,relative=2] +\new GrandStaff << + \new Staff { c1 c } + \new Staff { c1 c } +>> @end lilypond -@item -The @code{PianoStaff} behaves almost as the @code{GrandStaff} but is -optimized for setting piano music. +The @code{PianoStaff} is almost identical to a @code{GrandStaff}, +except that it supports printing the instrument name directly. +For details, see @ref{Instrument names}. -@lilypond[verbatim,ragged-right,quote] -\new PianoStaff { - \relative c'' << - \new Staff { c1 c } - \new Staff { c c } - >> -} +@lilypond[verbatim,quote,relative=2] +\new PianoStaff << + \set PianoStaff.instrumentName = "Piano" + \new Staff { c1 c } + \new Staff { c1 c } +>> @end lilypond -@end itemize - -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{<< ... >>}. - -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}. - -As the context names tell, @code{PianoStaff} is used for notating -piano music and @code{ChoirStaff} for all kind of vocal ensemble music. +Each staff group context sets the property +@code{systemStartDelimiter} to one of the following values: +@code{SystemStartBar}, @code{SystemStartBrace}, or +@code{SystemStartBracket}. A fourth delimiter, +@code{SystemStartSquare}, is also available, but it must be +explicitly specified. @snippets -@c FIXME: not yet in master -@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc] -@c {use-square-bracket-at-the-start-of-a-staff-group.ly} +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{use-square-bracket-at-the-start-of-a-staff-group.ly} -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] {display-bracket-with-only-one-staff-in-a-system.ly} @cindex mensurstriche layout @@ -260,38 +230,38 @@ piano music and @code{ChoirStaff} for all kind of vocal ensemble music. @cindex transcription of mensural music @cindex mensural music, transcription of -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,lilyquote,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}. - -Snippets: @lsrdir{Staff,Staff-notation} +Music Glossary: +@rglos{brace}, +@rglos{bracket}, +@rglos{grand staff}. -Internals Reference: @internalsref{ChoirStaff}, -@internalsref{GrandStaff}, @internalsref{StaffGroup}, -@internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, -@internalsref{SystemStartBracket}, and @internalsref{systemStartSquare}. +Notation Reference: +@ref{Instrument names}. +Snippets: +@rlsr{Staff notation}. -@node Deeper nested staff groups -@subsubsection Deeper nested staff groups +Internals Reference: +@rinternals{Staff}, +@rinternals{ChoirStaff}, +@rinternals{GrandStaff}, +@rinternals{PianoStaff}, +@rinternals{StaffGroup}, +@rinternals{SystemStartBar}, +@rinternals{SystemStartBrace}, +@rinternals{SystemStartBracket}, +@rinternals{SystemStartSquare}. -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, see @ref{Instrument names} how to set them. +@node Deeper nested staff groups +@unnumberedsubsubsec Deeper nested staff groups @cindex staff, nested @cindex staves, nested @@ -303,159 +273,271 @@ source code, see @ref{Instrument names} how to set them. @cindex inner staff group @cindex inner choir staff group +Two additional staff-group contexts are available that can be +nested within a @code{StaffGroup} or @code{ChoirStaff} context: +@code{InnerStaffGroup} and @code{InnerChoirStaff}. These contexts +create an additional bracket next to the original bracket of their +parent 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 +An @code{InnerStaffGroup} is treated similarly to a +@code{StaffGroup}; bar lines are connected between each stave +within the context: -@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 +@lilypond[verbatim,quote,relative=2] +\new StaffGroup << + \new Staff { c2 c } \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 Staff { g2 g } + \new Staff { e2 e } >> - \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 + +Bar lines are @emph{not} connected between staves of an +@code{InnerChoirStaff}, just like a @code{ChoirStaff}: + +@lilypond[verbatim,quote,relative=2] +\new ChoirStaff << + \new Staff { c2 c } + \new InnerChoirStaff << + \new Staff { g2 g } + \new Staff { e2 e } >> ->> } + \new Staff { c1 } +>> @end lilypond @snippets -@lilypondfile[verbatim,lilyquote,ragged-right,texidoc] +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] {nesting-staves.ly} @seealso -Internals Reference: @internalsref{SystemStartBar}, -@internalsref{SystemStartBrace}, @internalsref{SystemStartBracket}, -@internalsref{systemStartDelimiterHierarchy}. +Snippets: +@rlsr{Staff notation}. + +Notation Reference: +@ref{Grouping staves}, +@ref{Instrument names}. +Internals Reference: +@rinternals{InnerStaffGroup}, +@rinternals{StaffGroup}, +@rinternals{InnerChoirStaff}, +@rinternals{ChoirStaff}, +@rinternals{SystemStartBar}, +@rinternals{SystemStartBrace}, +@rinternals{SystemStartBracket}. @node Modifying single staves @subsection Modifying single staves +This section explains how to change specific attributes of one +staff: for example, modifying the number of staff lines or the +staff size. Methods to start and stop staves and set ossia +sections are also described. + @menu -* Staff symbol:: -* Ossia staves:: -* Hiding staves:: +* Staff symbol:: +* Ossia staves:: +* Hiding staves:: @end menu + @node Staff symbol -@subsubsection Staff symbol +@unnumberedsubsubsec 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 grob @code{StaffSymbol} is responsible for drawing the lines +of a staff. Its properties can be altered in order to change the +appearance of a staff, but they must be changed before the staff +is created. A staff may be started or stopped at any point in the +score. + +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}. + +@lilypond[verbatim,quote,relative=2] +\new Staff { + \override Staff.StaffSymbol #'line-count = #3 + d4 d d d +} +@end lilypond + +The vertical position of staff lines and the number of staff lines +can be defined at the same time. As the example shows, the +positions of the notes are not influenced by the position of the +staff lines. Details for modifying this property are found in +@rinternals{staff-symbol-interface}. + +@warning{The @code{'line-positions} property overrides the +@code{'line-count} property. The number of staff lines is +implicitly defined by the number of elements in the list of values +for @code{'line-positions}} + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7) +} +{ a4 e' f b | d1 } +@end lilypond -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 -@c @lsr{staff,changing-the-number-of-lines-in-a-staff.ly} and -@c @lsr{staff,changing-the-staff-size.ly}. - -In addition, staves may be started and stopped at will. This is -done with @code{\startStaff} and @code{\stopStaff}. - -@lilypond[verbatim,relative=2,fragment] -b4 b -\override Staff.StaffSymbol #'line-count = 2 -\stopStaff \startStaff -b b +The staff line thickness can be modified. The thickness of ledger +lines and stems are also affected, since they depend on staff line +thickness. + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'thickness = #3 +} +{ e4 d c b } +@end lilypond + +The thickness of ledger lines can be set independently of staff +line thickness. A description of this property is also found in +@rinternals{staff-symbol-interface}. + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'ledger-line-thickness = #'(1 . 0.2) +} +{ e4 d c b } +@end lilypond + +The distance between staff lines can be changed. The setting has +influence on ledger lines as well. + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'staff-space = #1.5 +} +{ a4 b c d } +@end lilypond + +The width of a staff can be adjusted. The unit is one staff +space. The spacing of objects inside the staff is not influenced +by this setting. + +@lilypond[verbatim,quote,relative=1] +\new Staff \with { + \override StaffSymbol #'width = #23 +} +{ a4 e' f b | d1 } +@end lilypond + +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 -\stopStaff \startStaff -b b +\startStaff +a2 a @end lilypond + +@predefined + +@funindex \startStaff +@code{\startStaff}, +@funindex \stopStaff +@code{\stopStaff}. + + +@snippets + +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{making-some-staff-lines-thicker-than-the-others.ly} + + +@seealso + +Music Glossary: +@rglos{line}, +@rglos{ledger line}, +@rglos{staff}. + +Notation Reference: +@ref{Displaying pitches}. + +Internals Reference: +@rinternals{StaffSymbol}, +@rinternals{staff-symbol-interface}. + + +@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. + + @node Ossia staves -@subsubsection Ossia staves +@unnumberedsubsubsec Ossia staves -@cindex staves, Frenched +@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,quote] +\new Staff \with { + fontSize = #-3 + \override StaffSymbol #'staff-space = #(magstep -3) + \override StaffSymbol #'thickness = #(magstep -3) +} +\relative c { + \clef bass + c8 c c c c c c c +} +@end lilypond + +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'' { @@ -470,96 +552,102 @@ In combination with Frenched staves, this may be used to typeset s2 \startStaff - f8 d g4 + 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 +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{vertically-aligning-ossias-and-lyrics.ly} + @seealso -Music Glossary: @rglos{ossia}, @rglos{staff}, @rglos{Frenched staff}. +Music Glossary: +@rglos{ossia}, +@rglos{staff}, +@rglos{Frenched staff}. + +Learning Manual: +@rlearning{Nesting music expressions}, +@rlearning{Size of objects}, +@rlearning{Length and thickness of objects}. -Snippets: @lsrdir{Staff,Staff-notation} +Notation Reference: +@ref{Setting the staff size}. -Internals Reference: @internalsref{StaffSymbol}, -@internalsref{DrumStaff}. +Snippets: +@rlsr{Staff notation}. + +Internals Reference: +@rinternals{StaffSymbol}. @node Hiding staves -@subsubsection Hiding staves +@unnumberedsubsubsec 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] +@lilypond[verbatim,quote] \layout { - \context { \RemoveEmptyStaffContext } + \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 @code{\RemoveEmptyRhythmicStaffContext}. @cindex ossia +@c FIXME Really? I need to see about this. -pm + 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}. + +@c FIXME Is this in the right section? +@c maybe move to Staff symbol -pm You can make the staff lines invisible by removing the @code{Staff_symbol_engraver} from the @code{Staff} context. - -@lilypond[quote,ragged-right,verbatim] +@lilypond[verbatim,quote] \score { - \context Staff \relative c'' { c8 c c16 c c c } + \new Staff \relative c'' { c8 c c16 c c c } \layout{ \context { \Staff @@ -569,30 +657,90 @@ 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[verbatim,quote] +\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 + +@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +{removing-the-first-empty-line.ly} + + +@predefined + +@funindex \RemoveEmptyStaffContext +@code{\RemoveEmptyStaffContext}, +@funindex \AncientRemoveEmptyStaffContext +@code{\AncientRemoveEmptyStaffContext}, +@funindex \RemoveEmptyRhythmicStaffContext +@code{\RemoveEmptyRhythmicStaffContext}. + + @seealso -Notation Reference: @ref{Staff symbol}. +Notation Reference: +@ref{Staff symbol}, +@ref{Ossia staves}. + +Snippets: +@rlsr{Staff notation}. -Snippets: @lsrdir{Staff,Staff-notation} +Internals Reference: +@rinternals{ChordNames}, +@rinternals{FiguredBass}, +@rinternals{Lyrics}, +@rinternals{Staff}, +@rinternals{VerticalAxisGroup}. -Internals Reference: @internalsref{ChordNames}, -@internalsref{FiguredBass}, @internalsref{Lyrics}, -@internalsref{Staff}, @internalsref{VerticalAxisGroup}. @node Writing parts @subsection Writing parts @menu -* Metronome marks:: -* Instrument names:: -* Quoting other voices:: -* Formatting cue notes:: +* Metronome marks:: +* Instrument names:: +* Quoting other voices:: +* Formatting cue notes:: @end menu + @node Metronome marks -@subsubsection Metronome marks +@unnumberedsubsubsec Metronome marks -@cindex Tempo +@cindex tempo @cindex beats per minute @cindex metronome marking @@ -607,8 +755,9 @@ the layout output, a metronome marking is printed @funindex \tempo -@lilypond[quote,ragged-right,verbatim,fragment] -\tempo 8.=120 c''1 +@lilypond[verbatim,quote,relative=2] +\tempo 8. = 120 +c1 @end lilypond @@ -619,7 +768,7 @@ make the metronome marking invisible @example \once \override Score.MetronomeMark #'transparent = ##t @end example To print other metronome markings, use these markup commands -@lilypond[quote,ragged-right,verbatim,relative,fragment] +@lilypond[verbatim,quote,relative=1] c4^\markup { ( \smaller \general-align #Y #DOWN \note #"16." #1 @@ -628,21 +777,26 @@ c4^\markup { ) } @end lilypond -@noindent For more details, see @ref{Formatting text}. @seealso -Music Glossary: @rglos{metronome}, @rglos{metronomic indication}, -@rglos{tempo indication}, @rglos{metronome mark}. +Music Glossary: +@rglos{metronome}, +@rglos{metronomic indication}, +@rglos{tempo indication}, +@rglos{metronome mark}. -Notation Reference: @ref{Formatting text}. +Notation Reference: +@ref{Formatting text}, +@ref{MIDI output}. -Snippets: @lsrdir{Staff,Staff-notation}. +Snippets: +@rlsr{Staff notation}. -Internals Reference: @internalsref{MetronomeMark}, @ref{MIDI -output}. +Internals Reference: +@rinternals{MetronomeMark}. @knownissues @@ -661,7 +815,7 @@ place it further away from the staff. @node Instrument names -@subsubsection Instrument names +@unnumberedsubsubsec Instrument names @cindex instrument names @cindex instrument names, short @@ -669,60 +823,60 @@ place it further away from the staff. In an orchestral score, instrument names are printed at the left side of the staves. -This can be achieved by setting @code{Staff}.@code{instrumentName} and -@code{Staff}.@code{shortInstrumentName}, or +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. +@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] +@lilypond[verbatim,quote,relative=1] \set Staff.instrumentName = "Ploink " \set Staff.shortInstrumentName = "Plk " c1 \break -c'' +c''1 @end lilypond -You can also use markup texts to construct more complicated -instrument names, for example +Markup mode can be used to create more complicated instrument +names: -@lilypond[quote,fragment,verbatim,ragged-right] +@lilypond[verbatim,quote,relative=2] \set Staff.instrumentName = \markup { \column { "Clarinetti" \line { "in B" \smaller \flat } } } -c''1 +c1 @end lilypond @cindex instrument names, centering -As instrument names are centered by default, multi line names -are better entered using @code{\center-align}: +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 } +@lilypond[verbatim,quote,relative=2] +<< + \new Staff { + \set Staff.instrumentName = \markup \center-align { + Clarinetti + \line { "in B" \smaller \flat } + } + c1 + } + \new Staff { + \set Staff.instrumentName = "Vibraphone" + c1 } - c''1 -} -\new Staff { - \set Staff.instrumentName = "Vibraphone" - c''1 -} >> -} @end lilypond For longer instrument names, it may be useful to increase the @code{indent} setting in the @code{\layout} block. -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. +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 @@ -740,9 +894,9 @@ in @ref{Modifying context plug-ins}. @cindex instrument names, changing -Instrument names may be changed in the middle of a piece, +Instrument names may be changed in the middle of a piece: -@lilypond[quote,fragment,verbatim,ragged-right] +@lilypond[verbatim,quote,relative=1] \set Staff.instrumentName = "First" \set Staff.shortInstrumentName = "one" c1 c c c \break @@ -756,16 +910,20 @@ c1 c c c \break @seealso -Notation Reference: @ref{Modifying context plug-ins}. +Notation Reference: +@ref{Modifying context plug-ins}. -Snippets: @lsrdir{Staff,Staff-notation} +Snippets: +@rlsr{Staff notation}. -Internals Reference: @internalsref{InstrumentName}, -@internalsref{PianoStaff}, @internalsref{Staff}. +Internals Reference: +@rinternals{InstrumentName}, +@rinternals{PianoStaff}, +@rinternals{Staff}. @node Quoting other voices -@subsubsection Quoting other voices +@unnumberedsubsubsec Quoting other voices @cindex cues @cindex quoting other voices @@ -781,7 +939,6 @@ command. \addQuote @var{name} @var{music} @end example - @noindent Here, @var{name} is an identifying string. The @var{music} is any kind of music. Here is an example of @code{\addQuote} @@ -803,7 +960,6 @@ clarinet = \relative c' @{ \addQuote clarinet @{ \clarinet @} @end example - After calling @code{\addQuote}, the quotation may then be done with @code{\quoteDuring} or @code{\cueDuring}, @@ -835,14 +991,15 @@ Quotations take into account the transposition of both source and target instruments, if they are specified using the @code{\transposition} command. -@lilypond[quote,ragged-right,verbatim] -\addQuote clarinet \relative c' { +@lilypond[verbatim,quote,relative=1] +\addQuote clarinet +{ \transposition bes f4 fis g gis } { - e'8 f'8 \quoteDuring #"clarinet" { s2 } + e8 f8 \quoteDuring #"clarinet" { s2 } } @end lilypond @@ -861,6 +1018,20 @@ notes and rests of the quoted voice end up in the will quote notes (but no rests), together with scripts and dynamics. + +@seealso + +Notation Reference: +@ref{Instrument transpositions}. + +Snippets: +@rlsr{Staff notation}. + +Internals Reference: +@rinternals{QuoteMusic}, +@rinternals{Voice}. + + @knownissues Only the contents of the first @code{Voice} occurring in an @@ -876,23 +1047,15 @@ 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}. -@seealso - -Notation Reference: @ref{Instrument transpositions}. - -Snippets: @lsrdir{Staff,Staff-notation} - -Internals Reference: @internalsref{QuoteMusic}, @internalsref{Voice}. - @node Formatting cue notes -@subsubsection Formatting cue notes +@unnumberedsubsubsec Formatting cue notes @cindex cues @cindex cue notes @cindex cue notes, formatting @cindex fragments -@cindex quoting other voices +@cindex quoting other voices @cindex cues, formatting The previous section deals with inserting notes from another @@ -906,14 +1069,13 @@ The syntax is @end example This will insert notes from the part @var{name} into a -@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 -notes should be notated as a first or second voice. - +@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 notes should be notated as +a first or second voice. -@lilypond[verbatim,ragged-right] +@lilypond[verbatim] smaller = { \set fontSize = #-2 \override Stem #'length-fraction = #0.8 @@ -921,12 +1083,13 @@ smaller = { \override Beam #'length-fraction = #0.8 } -\addQuote clarinet \relative { +\addQuote clarinet +\relative c' { R1*20 r2 r8 c' f f } -\new Staff \relative << +\new Staff \relative c' << % setup a context for cue notes. \new Voice = "cue" { \smaller \skip 1*21 } @@ -943,7 +1106,6 @@ smaller = { >> @end lilypond - Here are a couple of hints for successful cue notes: @itemize @@ -969,7 +1131,7 @@ instruments which use a completely different octave range (for example, having a cue of a piccolo flute within a contra bassoon part). -@lilypond[verbatim,ragged-right,quote] +@lilypond[verbatim,quote] picc = \relative c''' { \clef "treble^8" R1 | @@ -986,15 +1148,17 @@ 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,Staff-notation}. +@seealso -Internals Reference: @internalsref{Voice}. +Snippets: +@rlsr{Staff notation}. +Internals Reference: +@rinternals{Voice}.