]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/staff.itely
Update from Till.
[lilypond.git] / Documentation / user / staff.itely
index 73ec818f2ecbb3275762c4aac2e9ade731aae9fe..dba6f138fa63d60c357b0eefbf81e3eb39075a4f 100644 (file)
 @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}.
-
-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,96 +27,254 @@ 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::               
+* Initiating new staves::       
+* Grouping staves::             
 @end menu
 
-@node System start delimiters
-@unnumberedsubsubsec System start delimiters
+@node Initiating new staves
+@subsubsection Initiating new staves
+
+@cindex new staff
+@cindex staff initiation
+@cindex staff, new
+
+The lines of a staff (pl. staves) are produced by a @code{staff symbol} 
+layout object.
+LilyPond ensures that all music is printed on staff lines so if you just
+type in some notes, the staff symbol is added automatically to the output.
+This is just a shortcut to make the program usage more easy, but in most
+cases where you want to print more complex music on more than on staff
+it is better to create the staff explicitly at the beginning of your
+music inside of the @code{\score} environment.
+
+With the command @code{\new Staff @{ ... @}} you actually call a new 
+Staff context that has already everything set up to the default 
+engraving rules. @ref{Creating contexts} explains how different contexts
+are called.
+
+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 shown in @ref{Staff symbol}.
+
+Besides the default @code{Staff} context there are also
+specialized staff contexts for setting percussion, Guitar music,
+and ancient music.
+See @ref{Printing chord names}, @ref{Percussion staves}, 
+@ref{Tablatures basic}, @ref{Gregorian Chant contexts}, and
+@ref{Mensural contexts} for an explanation.
+
+@seealso
+
+Music Glossary: @rglos{staff}, @rglos{staves}.
+
+Notation Reference: @ref{Printing chord names}, @ref{Percussion staves}, 
+@ref{Tablatures basic}, @ref{Gregorian Chant contexts}, and
+@ref{Mensural contexts}.
+
+Snippets: @lsrdir{Staff,Staff-notation}.
+
+Internals Reference: @internalsref{Staff}.
+
+
+
+@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
+behaviour 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.  
 
 @lilypond[verbatim,ragged-right,quote]
-\new GrandStaff
-\relative <<
+\relative 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, 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 <<
-  \new Staff { c1 c }
-  \new Staff { c c }
->>
+\new StaffGroup {
+  \relative c'' <<
+    \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 <<
-  \new Staff { c1 c }
-  \new Staff { c c }
->>
+\new ChoirStaff {
+  \relative c'' <<
+    \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 <<
+\new GrandStaff {
+  \relative c'' <<
+    \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.
+
+@lilypond[verbatim,ragged-right,quote]
+\new PianoStaff
+\relative c'' <<
   \new Staff { c1 c }
   \new Staff { c c }
->>
+>> }
 @end lilypond
+
 @end itemize
 
-@cindex Mensurstriche layout
-@cindex Renaissance music
+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{<< ... >>}.
 
-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}
+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.
+
+Here is an example of an orchestral score using groupings. Note that the
+instrument names are omited here, see @ref{Instrument names} how to set 
+them.
+
+@lilypond[verbatim,ragged-right,quote]
+\score{ \relative c' {
+<<
+  \new StaffGroup %the woodwinds group
+  <<
+    \new Staff { c1 c }
+    \new Staff { c c }
+    \new Staff { c c }
+  >>
+  \new StaffGroup %the brass group
+  <<
+    \new Staff { c c }
+    \new Staff { c c }
+    \new GrandStaff %the horns need a GrandStaff (same instrument)
+    <<
+      \new Staff { c c }
+      \new Staff {\clef bass c c }
+    >>
+  >>
+  \new ChoirStaff %for a vocal part
+  <<
+    \new Staff { c c }
+    \new Staff {\clef alto c c }
+    \new Staff {\clef bass c c }
+  >>
+  \new PianoStaff %for the piano
+  <<
+    \new Staff { c c }
+    \new Staff {\clef bass c c }
+  >>
+>>
+} }
+@end lilypond
+
+The different staff contexts are already nested in this example, as
+the @q{horn section} is contained both in a @code{StaffGroup} and a 
+@code{GrandStaff}.
 
 @cindex staff, nested
 
-Staff groups can be nested, using the context
-@code{InnerStaffGroup} or @code{InnerChoirStaff}; see
-@lsr{staff,staff-brackets.ly}
-@c snippet 137
+It is also possible to nest staves of the same type with the contexts
+@code{InnerStaffGroup} and @code{InnerChoirStaffGroup}. These behave like
+the corresponding normal staff groups but can only initiated inside of
+another staff context. Again LilyPond would add a normal @code{StaffGroup}
+to the output, if you would start a score with an @code{InnerStaffGroup}. 
+
+Note that @code{GrandStaff} and @code{PianoStaff} do not have any inner
+grouping contexts. They can both be inside an inner staff context, though.
+
+@c snippet staff-brackets.ly
+@lilypond[verbatim,ragged-right,quote]
+\score { 
+<<
+  \new StaffGroup << 
+  \new Staff {c' d' e' f'}
+  \new InnerStaffGroup <<
+   \new Staff {c' d' e' f'}
+   \new GrandStaff <<
+     \new Staff {c' d' e' f'}
+     \new Staff {c' d' e' f'}
+   >>
+  \new Staff {c' d' e' f'}
+  >>
+  \new ChoirStaff <<
+   \new Staff {c' d' e' f'}
+    \new InnerStaffGroup <<
+     \new Staff {c' d' e' f'}
+    >>
+   \new Staff {c' d' e' f'}
+  >>
+  >>
+  \new ChoirStaff << 
+   \new Staff {c' d' e' f'}
+   \new InnerChoirStaff <<
+    \new Staff {c' d' e' f'}
+    \new Staff {c' d' e' f'}
+   >>
+   \new Staff {c' d' e' f'}
+  >>
+>> }
+@end lilypond
+
+
+@snippets
+
+@c FIXME: not yet in master
+@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@c {nesting-staves.ly}
 
-@commonprop
 
 More complex nesting can be accomplished using the property
 @code{systemStartDelimiterHierarchy}: 
@@ -145,28 +300,72 @@ and @internalsref{SystemStartBracket}.  A fourth delimiter,
 @code{systemStartSquare}, is also available, but must be
 instantiated manually
 
+
+
+@cindex mensurstriche layout
+@cindex renaissance music
+@cindex transcription of mensural music
+@cindex mensural music, transcription of
+
+
+@c FIXME: not yet in master
+@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@c {mensurstriche-layout.ly}
+
+Other groupings may be achieved 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:
+
+@lilypond[verbatim,ragged-right,quote]
+global = {\override Staff.BarLine #'transparent = ##t
+          s1 s
+          %the final bar line is not interupted
+          \once \override Staff.BarLine #'transparent = ##f
+          \bar "|."}
+\new StaffGroup
+\relative c'' <<
+  \new Staff {<< \global { c1 c } >>}
+  \new Staff {<< \global { c c } >>}
+>>
+@end lilypond
+
+
+
 @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}
+@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@c {staff,display-bracket-with-only-one-staff-in-a system.ly}
 
 @seealso
 
-Music Glossary: @rglos{brace}, @rglos{staff}, @rglos{staves}
+Music Glossary: @rglos{brace}, 
 @rglos{bracket}.
 
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
 
 Internals Reference: @internalsref{ChoirStaff},
-@internalsref{GrandStaff}, @internalsref{StaffGroup},
+@internalsref{GrandStaff}, @internalsref{PianoStaff}, 
+@internalsref{StaffGroup},
 @internalsref{SystemStartBar}, @internalsref{SystemStartBrace},
-@internalsref{SystemStartBracket},
-@internalsref{systemStartDelimiterHierarchy}.
+@internalsref{SystemStartBracket}, @internalsref{SystemStartSquare}.
+
+
 
+@node Modifying single staves
+@subsection Modifying single staves
+
+@menu
+* Staff symbol::                
+* Ossia staves::                
+* Hiding staves::               
+@end menu
 
 @node Staff symbol
-@unnumberedsubsubsec Staff symbol
+@subsubsection Staff symbol
 
 @cindex adjusting staff symbol
 
@@ -174,8 +373,8 @@ 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}.
+@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}.
@@ -190,6 +389,9 @@ b b
 b b
 @end lilypond
 
+@node Ossia staves
+@subsubsection Ossia staves
+
 @cindex staves, Frenched
 @cindex ossia
 @cindex Frenched staves
@@ -238,14 +440,14 @@ In combination with Frenched staves, this may be used to typeset
 
 Music Glossary: @rglos{ossia}, @rglos{staff}, @rglos{Frenched staff}.
 
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
 
 Internals Reference: @internalsref{StaffSymbol},
 @internalsref{DrumStaff}.
 
 
 @node Hiding staves
-@unnumberedsubsubsec Hiding staves
+@subsubsection Hiding staves
 
 @cindex Frenched scores
 @cindex staves, hiding
@@ -316,7 +518,7 @@ You can make the staff lines invisible by removing the
 
 Notation Reference: @ref{Staff symbol}.
 
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
 
 Internals Reference: @internalsref{ChordNames},
 @internalsref{FiguredBass}, @internalsref{Lyrics},
@@ -333,7 +535,7 @@ Internals Reference: @internalsref{ChordNames},
 @end menu
 
 @node Metronome marks
-@unnumberedsubsubsec Metronome marks
+@subsubsection Metronome marks
 
 @cindex Tempo
 @cindex beats per minute
@@ -355,7 +557,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
@@ -378,18 +580,17 @@ For more details, see @ref{Text markup}.
 @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}.
 
-Snippets: @lsrdir{staff}.
+Snippets: @lsrdir{Staff,Staff-notation}.
 
 Internals Reference: @internalsref{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 +606,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 +640,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 +665,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 +683,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 +701,21 @@ c1 c c c \break
 
 @seealso
 
-Snippets: @lsrdir{staff}
+Notation Reference: @ref{Modifying context plug-ins}.
+
+Snippets: @lsrdir{Staff,Staff-notation}
 
-Internals Reference: @internalsref{InstrumentName}.
+Internals Reference: @internalsref{InstrumentName},
+@internalsref{PianoStaff}, @internalsref{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 +806,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 +825,19 @@ written entirely in lower-case letters: @code{\addquote}.
 
 Notation Reference: @ref{Instrument transpositions}.
 
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
 
-Internals Reference: @internalsref{QuoteMusic}.
+Internals Reference: @internalsref{QuoteMusic}, @internalsref{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 +851,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 +889,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.
@@ -733,8 +938,8 @@ cbsn = \relative c, {
 
 @seealso
 
-Snippets: @lsrdir{staff}
-
+Snippets: @lsrdir{Staff,Staff-notation}.
 
+Internals Reference: @internalsref{Voice}.