X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fstaff.itely;h=cef1fafc8aa47984248f01cfb85a8745682f5c4f;hb=e75a8ff277c43e9668d34a0435d592138c5bea6a;hp=e5ae60afc22671ff2660adf55407ec129c352447;hpb=c7624021f74e8930484a0a732bb5800a2d58cbbd;p=lilypond.git diff --git a/Documentation/user/staff.itely b/Documentation/user/staff.itely index e5ae60afc2..cef1fafc8a 100644 --- a/Documentation/user/staff.itely +++ b/Documentation/user/staff.itely @@ -6,7 +6,7 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.57" +@c \version "2.11.61" @node Staff notation @section Staff notation @@ -27,14 +27,14 @@ performance marks to single staves. @node Displaying staves @subsection Displaying staves -This section shows the different possibilities of creating and +This section describes the different methods 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:: +* Nested staff groups:: @end menu @@ -101,9 +101,8 @@ 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}. -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}. +New single staff contexts may be defined. For details, see +@ref{Defining new contexts}. @seealso @@ -120,7 +119,8 @@ Notation Reference: @ref{Pre-defined contexts}, @ref{Staff symbol}, @ref{Gregorian chant contexts}, -@ref{Mensural contexts}. +@ref{Mensural contexts}, +@ref{Defining new contexts}. Snippets: @rlsr{Staff notation}. @@ -217,6 +217,9 @@ Each staff group context sets the property @code{SystemStartSquare}, is also available, but it must be explicitly specified. +New staff group contexts may be defined. For details, see +@ref{Defining new contexts}. + @snippets @@ -244,7 +247,8 @@ Music Glossary: @rglos{grand staff}. Notation Reference: -@ref{Instrument names}. +@ref{Instrument names}, +@ref{Defining new contexts}. Snippets: @rlsr{Staff notation}. @@ -261,8 +265,8 @@ Internals Reference: @rinternals{SystemStartSquare}. -@node Deeper nested staff groups -@unnumberedsubsubsec Deeper nested staff groups +@node Nested staff groups +@unnumberedsubsubsec Nested staff groups @cindex staff, nested @cindex staves, nested @@ -277,11 +281,11 @@ Internals Reference: 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 a bracket next to the original bracket of their parent -staff group. +create a new bracket adjacent to the bracket of their parent staff +group. An @code{InnerStaffGroup} is treated similarly to a -@code{StaffGroup}; bar lines are connected between each stave +@code{StaffGroup}; bar lines are connected between each staff within the context: @lilypond[verbatim,quote,relative=2] @@ -308,6 +312,9 @@ Bar lines are @emph{not} connected between staves of an >> @end lilypond +New nested staff group contexts can be defined. For details, see +@ref{Defining new contexts}. + @snippets @@ -319,7 +326,8 @@ Bar lines are @emph{not} connected between staves of an Notation Reference: @ref{Grouping staves}, -@ref{Instrument names}. +@ref{Instrument names}, +@ref{Defining new contexts}. Snippets: @rlsr{Staff notation}. @@ -392,7 +400,7 @@ note positions are not influenced by the staff line positions. @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}} +for @code{'line-positions}.} @lilypond[verbatim,quote,relative=1] \new Staff \with { @@ -422,8 +430,8 @@ thickness. { e4 d c b } @end lilypond -The distance between staff lines can be changed. This setting has -influence on ledger lines as well. +The distance between staff lines can be changed. This setting +affects the spacing of ledger lines as well. @lilypond[verbatim,quote,relative=1] \new Staff \with { @@ -432,9 +440,9 @@ influence on ledger lines as well. { a4 b c d } @end lilypond -The width of a staff can be modified. The unit is one staff -space. The spacing of objects inside the staff is not influenced -by this setting. +The width of a staff can be modified. The units are staff +spaces. The spacing of objects inside the staff is not affected by +this setting. @lilypond[verbatim,quote,relative=1] \new Staff \with { @@ -444,7 +452,7 @@ by this setting. @end lilypond Further details about the properties of @code{StaffSymbol} can be -found here: @rinternals{staff-symbol-interface}. +found in @rinternals{staff-symbol-interface}. @funindex \startStaff @funindex \stopStaff @@ -464,6 +472,20 @@ b2 b a2 a @end lilypond +@cindex stopping a staff + +@noindent +In general, @code{\startStaff} and @code{\stopStaff} can be used +to stop or start a staff in the middle of a score. + +@lilypond[verbatim,quote,relative=2] +c4 b a2 +\stopStaff +b4 c d2 +\startStaff +e4 d c2 +@end lilypond + @predefined @@ -485,7 +507,7 @@ Music Glossary: @rglos{staff}. Notation Reference: -@ref{Displaying pitches}. +@ref{Clef}. Snippets: @rlsr{Staff notation}. @@ -525,6 +547,7 @@ staff in the appropriate location: } @end lilypond +@noindent However, the above example is usually not the desired result. To create ossia staves that are above the original staff, have no time signature or clef, and have a smaller font size, tweaks must @@ -568,7 +591,7 @@ example. << \new Staff = ossia \with { \remove "Time_signature_engraver" - \remove "Clef_engraver" + \override Clef #'transparent = ##t fontSize = #-3 \override StaffSymbol #'staff-space = #(magstep -3) \override StaffSymbol #'thickness = #(magstep -3) @@ -596,47 +619,6 @@ example. >> @end lilypond -@c The following is the legacy "ossia.ly" example -@c -@c I don't think this method is very efficient. -@c I'm commenting it out for now. -pm - -@ignore - -@ lilypond[verbatim,quote] -<< - \new Staff \with - { - %No time signature in the ossia staff - \remove "Time_signature_engraver" - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) - firstClef = ##f - } - \relative c'' { - \stopStaff - \skip 2 - - \startStaff - \clef treble - bes8[^"ossia" g bes g] - \stopStaff - - s2 - - \startStaff - f8 d g4 - } - \new Staff \relative c'' { - \time 2/4 - c4 c g' g a a g2 - } ->> -@ end lilypond - -@end ignore - Using the @code{\RemoveEmptyStaffContext} command to create ossia staves may be used as an alternative. This method is most convenient when ossia staves occur immediately following a line @@ -649,7 +631,7 @@ more information about @code{\RemoveEmptyStaffContext}, see << \new Staff = ossia \with { \remove "Time_signature_engraver" - \remove "Clef_engraver" + \override Clef #'transparent = ##t fontSize = #-3 \override StaffSymbol #'staff-space = #(magstep -3) \override StaffSymbol #'thickness = #(magstep -3) @@ -697,7 +679,7 @@ Learning Manual: @rlearning{Length and thickness of objects}. Notation Reference: -@ref{Setting the staff size}. +@ref{Hiding staves}. Snippets: @rlsr{Staff notation}. @@ -732,11 +714,11 @@ alternative, @code{\stopStaff} may be used. Empty staves can be hidden by setting the @code{\RemoveEmptyStaffContext} command in the @code{\layout} block. In orchestral scores, this style is known as @q{Frenched -Score}. By default, this command hides all empty staves in a -score except for those in the first system. +Score}. By default, this command hides and removes all empty +staves in a score except for those in the first system. @warning{An empty staff may only include multi-measure rests, -skips, spacer rests, or a combination of these.} +skips, spacer rests, or a combination of these elements.} @lilypond[verbatim,quote,ragged-right] \layout { @@ -744,6 +726,7 @@ skips, spacer rests, or a combination of these.} \RemoveEmptyStaffContext } } + \relative c' << \new Staff { e4 f g a \break @@ -760,6 +743,7 @@ skips, spacer rests, or a combination of these.} @cindex ossia +@noindent @code{\RemoveEmptyStaffContext} can also be used to create ossia sections for a staff. For details, see @ref{Ossia staves}. @@ -804,7 +788,21 @@ Internals Reference: @rinternals{FiguredBass}, @rinternals{Lyrics}, @rinternals{Staff}, -@rinternals{VerticalAxisGroup}. +@rinternals{VerticalAxisGroup}, +@rinternals{Staff_symbol_engraver}. + + +@knownissues + +Removing @code{Staff_symbol_engraver} also hides bar lines. If +bar line visibility is forced, formatting errors may occur. In +this case, use the following overrides instead of removing the +engraver: + +@example +\override StaffSymbol #'stencil = ##f +\override NoteHead #'no-ledgers = ##t +@end example @node Writing parts @@ -879,7 +877,10 @@ d4 g e c @c perhaps also an example of how to move it horizontally? -@c TODO add snippet to LSR -pm +@c TODO add snippet when ready +@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@c {changing-the-tempo-without-a-visible-metronome-mark.ly} + To change the tempo in the MIDI output without printing anything, make the metronome marking invisible @@ -887,7 +888,10 @@ make the metronome marking invisible \once \override Score.MetronomeMark #'transparent = ##t @end example -@c TODO add snippet to LSR -pm +@c TODO add snippet when ready +@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@c {creating-metronome-marks-in-markup-mode.ly} + To print other metronome markings, use these markup commands @lilypond[verbatim,quote,relative=1] @@ -927,7 +931,7 @@ Internals Reference: @cindex instrument names @cindex instrument names, short -Instrument names can be printed on the left side of staves for the +Instrument names can be printed on the left side of staves in the @code{Staff} and @code{PianoStaff} contexts. The value of @code{instrumentName} is used for the first staff, and the value of @code{shortInstrumentName} is used for all succeeding staves. @@ -957,7 +961,7 @@ instrument names and short instrument names are centered by default. To center multi-line instrument names, @code{\center-column} must be used: -@lilypond[verbatim,quote,relative=2] +@lilypond[verbatim,quote,indent=1.5\cm,relative=2] << \new Staff { \set Staff.instrumentName = "Flute" @@ -965,7 +969,7 @@ default. To center multi-line instrument names, } \new Staff { \set Staff.instrumentName = \markup \center-column { - Clarinetti + Clarinet \line { "in B" \smaller \flat } } c4 b c2 @@ -978,20 +982,18 @@ default. To center multi-line instrument names, However, if the instrument names are longer, the instrument names in a staff group may not be centered unless the @code{indent} and -@code{short-indent} settings are increased. The @code{indent} and -@code{short-indent} settings are modified in the @code{\layout} -block and specify the level of indentation for the first system -and all succeeding systems, respectively. +@code{short-indent} settings are increased. For details about +these settings, see @ref{Horizontal dimensions}. @lilypond[verbatim,quote,ragged-right] \layout { - indent = 2.5\cm + indent = 3.0\cm short-indent = 1.5\cm } \relative c'' << \new Staff { - \set Staff.instrumentName = "Flute" + \set Staff.instrumentName = "Alto Flute in G" \set Staff.shortInstrumentName = "Fl." f2 g4 f \break g4 f g2 @@ -1025,10 +1027,48 @@ c1 c c c \break c1 c c c \break @end lilypond +@cindex instrument switch +@cindex switching instruments + +If an instrument @emph{switch} is needed, +@code{\addInstrumentDefinition} may be used in combination with +@code{\instrumentSwitch} to create a detailed list of the +necessary changes for the switch. The +@code{\addInstrumentDefinition} command has two arguments: an +identifying string, and an association list of context properties +and values to be used for the instrument. It must be placed in +the toplevel scope. @code{\instrumentSwitch} is used in the music +expression to declare the instrument switch: + +@lilypond[verbatim,quote,ragged-right] +\addInstrumentDefinition #"contrabassoon" + #`((instrumentTransposition . ,(ly:make-pitch -1 0 0)) + (shortInstrumentName . "Cbsn.") + (clefGlyph . "clefs.F") + (middleCPosition . 6) + (clefPosition . 2) + (instrumentCueName . ,(make-bold-markup "cbsn.")) + (midiInstrument . "bassoon")) + +\new Staff \with { + instrumentName = "Bassoon" +} +\relative c' { + \clef tenor + \compressFullBarRests + c2 g' + R1*16 + \instrumentSwitch "contrabassoon" + c,,2 g \break + c,1 ~ | c1 +} +@end lilypond + @seealso Notation Reference: +@ref{Horizontal dimensions}, @ref{Modifying context plug-ins}. Snippets: @@ -1048,28 +1088,34 @@ Internals Reference: @cindex fragments @cindex cue notes -Quotations allow fragments of other parts to be inserted directly -into a music expression. Before a part can be quoted, the -@code{\addQuote} command must be used to initialize the quoted -fragment. This command must be used in the toplevel scope. The -first argument is an identifying string, and the second is a music -expression: +It is very common for one voice to double the some of the music from +another voice. For example, the first and second violins may play the +same notes during a passage of music. In LilyPond this is accomplished +by letting one voice @emph{quote} the other voice without having to +re-enter it. + +Before a part can be quoted, the @code{\addQuote} command must be used +to initialize the quoted fragment. This command must be used in the +toplevel scope. The first argument is an identifying string, and the +second is a music expression: @example -flute = \relative c' @{ - f4 fis g gis +flute = \relative c'' @{ + a4 gis g gis @} \addQuote "flute" @{ \flute @} @end example -The @code{\quoteDuring} command may then be used to indicate when -the quotation should take place. The corresponding measures from -the quotation are inserted into the music expression. The syntax -is similar to @code{\addQuote}: +The @code{\quoteDuring} command is used to indicate the point where the +quotation begins. It is followed by two arguments: the name of the +quoted voice, as defined with @code{\addQuote}, and a music expression +that indicates the duration of the quote, usually spacer rests or +multi-measure rests. The corresponding music from the quoted voice is +inserted into the music expression: @lilypond[verbatim,quote] -flute = \relative c' { - f4 fis g gis +flute = \relative c'' { + a4 gis g gis } \addQuote "flute" { \flute } @@ -1083,8 +1129,8 @@ anything but a spacer rest or multi-measure rest, a polyphonic situation is created, which is often not desirable: @lilypond[verbatim,quote] -flute = \relative c' { - f4 fis g gis +flute = \relative c'' { + a4 gis g gis } \addQuote "flute" { \flute } @@ -1094,13 +1140,14 @@ flute = \relative c' { @end lilypond Quotations recognize instrument transposition settings for both -the source and target instruments if they are specified using the -@code{\transposition} command: +the source and target instruments if the @code{\transposition} +command is used. For details about @code{\transposition}, see +@ref{Instrument transpositions}. @lilypond[verbatim,quote] -clarinet = \relative c' { +clarinet = \relative c'' { \transposition bes - f4 fis g gis + a4 gis g gis } \addQuote "clarinet" { \clarinet } @@ -1109,22 +1156,9 @@ clarinet = \relative c' { } @end lilypond -@c add to snippets, possibly. It might already be there. -pm -@c -@c The type of events that are present in the quoted music can be -@c trimmed with the @code{quotedEventTypes} property. The default -@c value is @code{(note-event rest-event)}, which means that only -@c notes and rests of the quoted voice end up in the -@c @code{\quoteDuring}. Setting -@c -@c @example -@c \set Staff.quotedEventTypes = -@c #'(note-event articulation-event dynamic-event) -@c @end example -@c -@c @noindent -@c will quote notes (but no rests), together with scripts and -@c dynamics. +It is possible to tag quotations with unique names in order to +process them in different ways. For details about this procedure, +see @ref{Using tags}. @snippets @@ -1132,6 +1166,12 @@ clarinet = \relative c' { @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {quoting-another-voice-with-transposition.ly} +@cindex note-event +@cindex articulation-event +@cindex dynamic-event +@cindex rest-event +@funindex quotedEventTypes + @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {quoting-another-voice.ly} @@ -1139,7 +1179,8 @@ clarinet = \relative c' { @seealso Notation Reference: -@ref{Instrument transpositions}. +@ref{Instrument transpositions}, +@ref{Using tags}. Snippets: @rlsr{Staff notation}. @@ -1175,13 +1216,13 @@ written entirely in lower-case letters: @code{\addquote}. @cindex quoting other voices @cindex cues, formatting -The previous section explains how to quote other voices. The +The previous section explains how to create quotations. The @code{\cueDuring} command is a more specialized form of @code{\quoteDuring}, being particularly useful for inserting cue notes into a part. The syntax is as follows: @example - \cueDuring #@var{partname} #@var{voice} @var{music} +\cueDuring #@var{partname} #@var{voice} @var{music} @end example This command copies the corresponding measures from @var{partname} @@ -1205,12 +1246,13 @@ oboe = \relative c'' { } @end lilypond +@noindent In the above example, the @code{Voice} context had to be explicitly declared, or else the entire music expression would belong to the @code{CueVoice} context. The name of the cued instrument can be printed by setting the -@code{instrumentCueName} property. +@code{instrumentCueName} property in the @code{CueVoice} context. @lilypond[verbatim,quote] oboe = \relative c''' { @@ -1229,8 +1271,16 @@ oboe = \relative c''' { >> @end lilypond -The @code{\killCues} command is used to remove the cue notes from -a music expression. +In addition to printing the name of the cued instrument, when cue +notes end, the name of the original instrument should be printed, +and any other changes introduced by the cued part should be +undone. This can be accomplished by using +@code{\addInstrumentDefinition} and @code{\instrumentSwitch}. For +an example and explanation, see @ref{Instrument names}. + +The @code{\killCues} command removes cue notes from a music +expression. This can be useful if cue notes need to be removed +from a part but may be restored at a later time. @lilypond[verbatim,quote] flute = \relative c''' { @@ -1246,29 +1296,11 @@ flute = \relative c''' { } @end lilypond -When typesetting cue notes, some guidelines should be followed: - -@itemize -@item -The instrument playing the cue should be clearly marked on the -score. - -@item -When the cue notes end, the name of the original instrument should -be indicated. - -@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. - -@end itemize - -The @code{\transposedCueDuring} command is useful to add cues for -instruments in a completely different register. The syntax is -similar to @code{\cueDuring}, but it requires one more argument to -specify the transposition of the cued instrument. For more -information about transposition, see +The @code{\transposedCueDuring} command is useful for adding +instrumental cues from a completely different register. The +syntax is similar to @code{\cueDuring}, but it requires one extra +argument to specify the transposition of the cued instrument. For +more information about transposition, see @ref{Instrument transpositions}. @lilypond[verbatim,quote] @@ -1293,11 +1325,17 @@ cbassoon = \relative c, { >> @end lilypond +It is possible to tag cued parts with unique names in order to +process them in different ways. For details about this procedure, +see @ref{Using tags}. + @seealso Notation Reference: -@ref{Instrument transpositions}. +@ref{Instrument transpositions}, +@ref{Instrument names}, +@ref{Using tags}. Snippets: @rlsr{Staff notation}. @@ -1309,5 +1347,5 @@ Internals Reference: @knownissues -Collisions are not checked between @code{Voice} and -@code{CueVoice} contexts. +Collisions can occur with rests, when using @code{\cueDuring}, +between @code{Voice} and @code{CueVoice} contexts.