X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Fstaff.itely;h=1239a92769fad82dbab30bd6c16e0409fb2d765c;hb=2055f35c47a045a50a01ff4dba8524322cfc3b48;hp=64897821755a72c4804032b3fe60be568a4dbafb;hpb=794dcbdb52faf4292036cd1b0270a956cf4316a3;p=lilypond.git diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index 6489782175..1239a92769 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -3,10 +3,11 @@ Translation of GIT committish: FILL-IN-HEAD-COMMITTISH When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore -@c \version "2.12.0" +@c \version "2.14.0" @node Staff notation @section Staff notation @@ -34,6 +35,7 @@ grouping staves. * Instantiating new staves:: * Grouping staves:: * Nested staff groups:: +* Separating systems:: @end menu @@ -87,7 +89,7 @@ For details, see @ref{Percussion staves}. @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}. +preserved. For details, see @ref{Showing melody rhythms}. @lilypond[verbatim,quote,relative=2] \new RhythmicStaff { c4 d e f } @@ -272,6 +274,9 @@ Internals Reference: @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. +@knownissues +@code{PianoStaff} does not, by default, accept @code{ChordNames}. + @node Nested staff groups @unnumberedsubsubsec Nested staff groups @@ -331,6 +336,55 @@ Internals Reference: @rinternals{SystemStartBracket}, @rinternals{SystemStartSquare}. +@node Separating systems +@unnumberedsubsubsec Separating systems + +@cindex system separator mark + +If the number of systems per page changes from page to page it is +customary to separate the systems by placing a system separator mark +between them. By default the system separator is blank, but can be +turned on with a @code{\paper} option. + +@c \book is required here to display the system separator +@c ragged-right is required as there are two systems +@lilypond[verbatim,quote,ragged-right] +\book { + \score { + \new StaffGroup << + \new Staff { + \relative c'' { + c4 c c c + \break + c4 c c c + } + } + \new Staff { + \relative c'' { + c4 c c c + \break + c4 c c c + } + } + >> + } + \paper { + system-separator-markup = \slashSeparator + % following commands are needed only to format this documentation + paper-width = 100\mm + paper-height = 100\mm + tagline = ##f + } +} +@end lilypond + +@seealso +Notation Reference: +@ref{Page layout}. + +Snippets: +@rlsr{Staff notation}. + @node Modifying single staves @subsection Modifying single staves @@ -587,11 +641,11 @@ example. @end lilypond -Using the @code{\RemoveEmptyStaffContext} command to create ossia +Using the @code{\Staff \RemoveEmptyStaves} command to create ossia staves may be used as an alternative. This method is most convenient when ossia staves occur immediately following a line break. For more information about -@code{\RemoveEmptyStaffContext}, see @ref{Hiding staves}. +@code{\Staff \RemoveEmptyStaves}, see @ref{Hiding staves}. @lilypond[verbatim,quote,ragged-right] << @@ -617,7 +671,7 @@ break. For more information about \layout { \context { - \RemoveEmptyStaffContext + \Staff \RemoveEmptyStaves \override VerticalAxisGroup #'remove-first = ##t } } @@ -661,8 +715,7 @@ Internals Reference: @cindex hiding of staves @cindex empty staves -@funindex \RemoveEmptyStaffContext -@funindex RemoveEmptyStaffContext +@funindex \RemoveEmptyStaves @funindex Staff_symbol_engraver @funindex \stopStaff @funindex stopStaff @@ -681,19 +734,19 @@ alternative, @code{\stopStaff} may be used. Empty staves can be hidden by setting the -@code{\RemoveEmptyStaffContext} command in the @code{\layout} +@code{\Staff \RemoveEmptyStaves} command in the @code{\layout} block. In orchestral scores, this style is known as @q{Frenched Score}. By default, this command hides and removes all empty staves in a score except for those in the first system. @warning{A staff is considered empty when it contains only -multi-measure rests, skips, spacer rests, or a combination of these +multi-measure rests, rests, skips, spacer rests, or a combination of these elements.} @lilypond[verbatim,quote,ragged-right] \layout { \context { - \RemoveEmptyStaffContext + \Staff \RemoveEmptyStaves } } @@ -714,29 +767,24 @@ elements.} @cindex ossia @noindent -@code{\RemoveEmptyStaffContext} can also be used to create ossia +@code{\Staff \RemoveEmptyStaves} can also be used to create ossia sections for a staff. For details, see @ref{Ossia staves}. @cindex hiding ancient staves @cindex hiding rhythmic staves -@funindex \RemoveEmptyStaffContext -@funindex RemoveEmptyStaffContext -@funindex \AncientRemoveEmptyStaffContext -@funindex AncientRemoveEmptyStaffContext -@funindex \RemoveEmptyRhythmicStaffContext -@funindex RemoveEmptyRhythmicStaffContext +@funindex \RemoveEmptyStaves -The @code{\AncientRemoveEmptyStaffContext} command may be used to +The @code{\VaticanaStaff \RemoveEmptyStaves} command may be used to hide empty staves in ancient music contexts. Similarly, -@code{\RemoveEmptyRhythmicStaffContext} may be used to hide empty +@code{\RhythmicStaff \RemoveEmptyStaves} may be used to hide empty @code{RhythmicStaff} contexts. @predefined -@code{\RemoveEmptyStaffContext}, -@code{\AncientRemoveEmptyStaffContext}, -@code{\RemoveEmptyRhythmicStaffContext}. +@code{\Staff \RemoveEmptyStaves}, +@code{\VaticanaStaff \RemoveEmptyStaves}, +@code{\RhythmicStaff \RemoveEmptyStaves}. @endpredefined @@ -754,6 +802,7 @@ Learning Manual: @rlearning{Visibility and color of objects}. Notation Reference: +@ref{Changing context default settings}, @ref{Staff symbol}, @ref{Ossia staves}, @ref{Hidden notes}, @@ -784,6 +833,9 @@ engraver: \override NoteHead #'no-ledgers = ##t @end example +For the Known issues and warnings associated with +@code{\Staff \RemoveEmptyStaves} see +@ref{Changing context default settings}. @node Writing parts @subsection Writing parts @@ -793,99 +845,11 @@ instrument names into a score. Methods to quote other voices and format cue notes are also described. @menu -* Metronome marks:: * Instrument names:: * Quoting other voices:: * Formatting cue notes:: @end menu - -@node Metronome marks -@unnumberedsubsubsec Metronome marks - -@cindex tempo -@cindex beats per minute -@cindex metronome mark -@cindex metronome marking with text - -@funindex \tempo -@funindex tempo - -A basic metronome mark is simple to write: - -@lilypond[verbatim,quote,relative=1] -\tempo 4 = 120 -c2 d -e4. d8 c2 -@end lilypond - -Tempo indications with text can be used instead: - -@lilypond[verbatim,quote,relative=2] -\tempo "Allegretto" -c4 e d c -b4. a16 b c4 r4 -@end lilypond - -Combining a metronome mark and text will automatically place the -metronome mark within parentheses: - -@lilypond[verbatim,quote,relative=2] -\tempo "Allegro" 4 = 160 -g4 c d e -d4 b g2 -@end lilypond - -In general, the text can be any markup object: - -@lilypond[verbatim,quote,relative=2] -\tempo \markup { \italic Faster } 4 = 132 -a8-. r8 b-. r gis-. r a-. r -@end lilypond - -A parenthesized metronome mark with no textual indication may be -written by including an empty string in the input: - -@lilypond[verbatim,quote,relative=2] -\tempo "" 8 = 96 -d4 g e c -@end lilypond - - -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{printing-metronome-and-rehearsal-marks-below-the-staff.ly} - -@c perhaps also an example of how to move it horizontally? - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{changing-the-tempo-without-a-metronome-mark.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{creating-metronome-marks-in-markup-mode.ly} - -For more details, see @ref{Formatting text}. - - -@seealso -Music Glossary: -@rglos{metronome}, -@rglos{metronomic indication}, -@rglos{tempo indication}, -@rglos{metronome mark}. - -Notation Reference: -@ref{Formatting text}, -@ref{MIDI output}. - -Snippets: -@rlsr{Staff notation}. - -Internals Reference: -@rinternals{MetronomeMark}. - - @node Instrument names @unnumberedsubsubsec Instrument names @@ -893,7 +857,8 @@ Internals Reference: @cindex instrument names, short Instrument names can be printed on the left side of staves in the -@code{Staff} and @code{PianoStaff} contexts. The value of +@code{Staff}, @code{PianoStaff}, @code{StaffGroup}, @code{GrandStaff} +and @code{ChoirStaff} contexts. The value of @code{instrumentName} is used for the first staff, and the value of @code{shortInstrumentName} is used for all succeeding staves. @@ -944,7 +909,7 @@ 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. For details about -these settings, see @ref{Horizontal dimensions}. +these settings, see @ref{\paper variables for shifts and indents}. @lilypond[verbatim,quote,ragged-right] \layout { @@ -971,14 +936,17 @@ these settings, see @ref{Horizontal dimensions}. @cindex instrument names, adding to other contexts To add instrument names to other contexts (such as -@code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}), +@code{ChordNames} or @code{FiguredBass}), @code{Instrument_name_engraver} must be added to that context. For details, see @ref{Modifying context plug-ins}. @cindex instrument names, changing @cindex changing instrument names -Instrument names may be changed in the middle of a piece: +Instrument names may be changed in the middle of a piece. +However, remember that @code{instrumentName} will not be +displayed in the middle of the piece, as it only appears +on the first staff: @lilypond[verbatim,quote,ragged-right,relative=1] \set Staff.instrumentName = #"First" @@ -1036,7 +1004,7 @@ expression to declare the instrument switch: @seealso Notation Reference: -@ref{Horizontal dimensions}, +@ref{\paper variables for shifts and indents}, @ref{Modifying context plug-ins}. Snippets: @@ -1051,9 +1019,9 @@ Internals Reference: @node Quoting other voices @unnumberedsubsubsec Quoting other voices -@cindex cues -@cindex quoting other voices -@cindex fragments +@cindex quote, voices +@cindex voices, quoting +@cindex fragments, quoting @cindex cue notes @funindex \addQuote @@ -1063,78 +1031,118 @@ Internals Reference: @funindex \transposition @funindex transposition -It is very common for one voice to double 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. +It is very common for one voice to use the same notes as those from +another voice. For example, first and second violins playing the same +phrase during a particular passage of the music. This is done by +letting one voice @emph{quote} the other, without having to re-enter the +music all over again for the second voice. -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'' @{ - a4 gis g gis -@} -\addQuote "flute" @{ \flute @} -@end example +The @code{\addQuote} command, used in the top level scope, defines a +stream of music from which fragments can be quoted. 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: +for the duration of the quote. @lilypond[verbatim,quote] -flute = \relative c'' { - a4 gis g gis +fluteNotes = \relative c'' { + a4 gis g gis | b4^"quoted" r8 ais\p a4( f) } -\addQuote "flute" { \flute } -\relative c' { - c4 cis \quoteDuring #"flute" { s2 } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"flute" { s1 } +} + +\addQuote "flute" { \fluteNotes } + +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -If the music expression used for @code{\quoteDuring} contains -anything but a spacer rest or multi-measure rest, a polyphonic -situation is created, which is often not desirable: +If the music expression used in @code{\quoteDuring} contains notes +instead of spacer or multimeasure rests then the quote will appear as +polyphony and may produce unexpected results. @lilypond[verbatim,quote] -flute = \relative c'' { - a4 gis g gis +fluteNotes = \relative c'' { + a4 gis g gis | b4^"quoted" r8 ais\p a4( f) } -\addQuote "flute" { \flute } -\relative c' { - c4 cis \quoteDuring #"flute" { c4 b } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a } +} + +\addQuote "flute" { \fluteNotes } + +\score { + << + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -Quotations recognize instrument transposition settings for both -the source and target instruments if the @code{\transposition} -command is used. For details about @code{\transposition}, see -@ref{Instrument transpositions}. +The @code{\quoteDuring} command uses the @code{\transposition} settings +of both quoted and quoting parts to produce notes for the quoting part +that have the same sounding pitch as those in the quoted part. @lilypond[verbatim,quote] -clarinet = \relative c'' { +clarinetNotes = \relative c'' { \transposition bes - a4 gis g gis + \key d \major + b4 ais a ais | cis4^"quoted" r8 bis\p b4( f) } -\addQuote "clarinet" { \clarinet } -\relative c' { - c4 cis \quoteDuring #"clarinet" { s2 } +oboeNotes = \relative c'' { + c4 cis c b \quoteDuring #"clarinet" { s1 } +} + +\addQuote "clarinet" { \clarinetNotes } + + +\score { + << + \new Staff \with { instrumentName = "Clarinet" } \clarinetNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> } @end lilypond -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}. +By default quoted music will include all articulations, dynamics, +markups, etc., in the quoted expression. It is possible to choose which +of these objects from the quoted music are displayed by using the +@code{quotedEventTypes} context property. + +@lilypond[verbatim,quote] +fluteNotes = \relative c'' { + a2 g2 | + b4\<^"quoted" r8 ais a4\f( c->) + } + +oboeNotes = \relative c'' { + c2. b4 | + \quoteDuring #"flute" { s1 } +} + +\addQuote "flute" { \fluteNotes } + +\score { + << + \set Score.quotedEventTypes = #'(note-event articulation-event + crescendo-event rest-event + slur-event dynamic-event) + \new Staff \with { instrumentName = "Flute" } \fluteNotes + \new Staff \with { instrumentName = "Oboe" } \oboeNotes + >> + } +@end lilypond +Quotes can also be tagged, see @ref{Using tags}. @snippets @@ -1147,6 +1155,7 @@ see @ref{Using tags}. @cindex rest-event @funindex quotedEventTypes +@funindex quotedCueEventTypes @lilypondfile[verbatim,lilyquote,texidoc,doctitle] {quoting-another-voice.ly} @@ -1161,16 +1170,21 @@ Snippets: @rlsr{Staff notation}. Internals Reference: +@rinternals{Music classes}, @rinternals{QuoteMusic}, @rinternals{Voice}. +Installed Files: +@file{scm/define-event-classes.scm}. + @knownissues Only the contents of the first @code{Voice} occurring in an @code{\addQuote} command will be considered for quotation, so -@var{music} cannot contain @code{\new} and @code{\context Voice} -statements that would switch to a different Voice. +@code{@var{music}} cannot contain @code{\new} and +@code{\context Voice} statements that would switch to a different +Voice. Quoting grace notes is broken and can even cause LilyPond to crash. @@ -1205,17 +1219,18 @@ notes into a part. The syntax is as follows: \cueDuring #@var{partname} #@var{voice} @var{music} @end example -This command copies the corresponding measures from @var{partname} -into a @code{CueVoice} context. The @code{CueVoice} is created -implicitly, and occurs simultaneously with @var{music}, which -creates a polyphonic situation. The @var{voice} argument -determines whether the cue notes should be notated as a first or -second voice; @code{UP} corresponds to the first voice, and -@code{DOWN} corresponds to the second. +This command copies only the notes and rests from the +corresponding measures from @code{@var{partname}} into a +@code{CueVoice} context. The @code{CueVoice} is created +implicitly, and occurs simultaneously with @code{@var{music}}, +which creates a polyphonic situation. The @code{@var{voice}} +argument determines whether the cue notes should be notated as a +first or second voice; @code{UP} corresponds to the first voice, +and @code{DOWN} corresponds to the second. @lilypond[verbatim,quote] oboe = \relative c'' { - r2 r8 d16 f e g f a + r2 r8 d16(\f f e g f a) g8 g16 g g2. } \addQuote "oboe" { \oboe } @@ -1231,24 +1246,50 @@ 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 in the @code{CueVoice} context. +It is possible to adjust which aspects of the music are quoted with +@code{\cueDuring} by setting the @code{quotedCueEventTypes} +property. Its default value is @code{#'(note-event rest-event +tie-event beam-event tuplet-span-event)}, which means that only +notes, rests, ties, beams and tuplets are quoted, but not +articulations, dynamic marks, markup etc. @lilypond[verbatim,quote] -oboe = \relative c''' { - g4 r8 e16 f e4 d +oboe = \relative c'' { + r2 r8 d16(\f f e g f a) + g8 g16 g g2. } \addQuote "oboe" { \oboe } -\new Staff \relative c'' << - \new CueVoice \with { - instrumentCueName = "ob." - } - \new Voice { - \cueDuring #"oboe" #UP { R1 } - g4. b8 d2 - } ->> +\new Voice \relative c'' { + \set Score.quotedCueEventTypes = #'(note-event rest-event tie-event + beam-event tuplet-span-event + dynamic-event slur-event) + \cueDuring #"oboe" #UP { R1 } + g2 c, +} +@end lilypond + +Markup can be used to show the name of the quoted instrument. Also, +if the cue notes require a change in clef, the original clef should +be restored at the end of the cue notes. + +@lilypond[verbatim,quote] +flute = \relative c'' { + r2. c4 d8 c d e fis2 g2 d2 +} +bassoon = \relative c { + \clef bass + R1 + \clef treble + s1*0^\markup { \tiny "flute" } + \cueDuring #"flute" #UP { R1 } + \clef bass + g4. b8 d2 +} +\addQuote "flute" { \flute } +\new Staff { + \bassoon +} @end lilypond @cindex removing cues @@ -1257,67 +1298,87 @@ oboe = \relative c''' { @funindex \killCues @funindex killCues -@funindex \transposedCueDuring -@funindex transposedCueDuring - -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. +expression, so the same music expression can be used to produce +the instrument part with cues and the score. The @code{\killCues} +command removes only the notes and events that were quoted by +@code{\cueDuring}. Other markup associated with cues, such as clef +changes and a label identifying the source instrument, can be +tagged for selective inclusion in the score; see @ref{Using tags}. @lilypond[verbatim,quote] -flute = \relative c''' { - r2 cis2 r2 dis2 +flute = \relative c'' { + r2. c4 d8 c d e fis2 g2 d2 +} +bassoon = \relative c { + \clef bass + R1 + \tag #'part { + \clef treble + s1*0^\markup { \tiny "flute" } + } + \cueDuring #"flute" #UP { R1 } + \tag #'part \clef bass + g4. b8 d2 } \addQuote "flute" { \flute } -\new Voice \relative c'' { - \killCues { - \cueDuring #"flute" #UP { R1 } - g4. b8 d2 - } +\new Staff { + \bassoon } +\new StaffGroup << + \new Staff { + \flute + } + \new Staff { + \removeWithTag #'part { \killCues { \bassoon } } + } +>> @end lilypond -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}. +Alternatively, Clef changes and instrument labels can be +collected into an instrument definition for repeated use, using +@code{\addInstrumentDefinition} described in +@ref{Instrument names}. + +@funindex \transposedCueDuring +@funindex transposedCueDuring + +Like @code{\quoteDuring}, @code{\cueDuring} takes instrument +transpositions into account. Cue notes are produced at the +pitches that would be written for the instrument receiving the cue +to produce the sounding pitches of the source instrument. + +To transpose cue notes differently, use +@code{\transposedCueDuring}. This command takes an extra argument +to specify (in absolute mode) the printed pitch that you want to +represent the sound of a concert middle C. This is useful for +taking cues from an instrument in a completely different register. @lilypond[verbatim,quote] piccolo = \relative c''' { \clef "treble^8" R1 c8 c c e g2 - a4 g g2 + c4 g g2 } -\addQuote "piccolo" { \piccolo } - -cbassoon = \relative c, { - \clef "bass_8" - c4 r g r - \transposedCueDuring #"piccolo" #UP c,, { R1 } - c4 r g r +bassClarinet = \relative c' { + \key d \major + \transposition bes, + d4 r a r + \transposedCueDuring #"piccolo" #UP d { R1 } + d4 r a r } +\addQuote "piccolo" { \piccolo } + << - \new Staff = "piccolo" \piccolo - \new Staff = "cbassoon" \cbassoon + \new Staff \piccolo + \new Staff \bassClarinet >> @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}. - @cindex notes, smaller @cindex smaller notes @@ -1332,17 +1393,19 @@ g4 ees8 f4 g8 \stemDown << { d4. bes4 c8 } - \new CueVoice + \new CueVoice { g'4. f4 ees8 } >> \stemUp d2. d2. @end lilypond + @seealso Notation Reference: @ref{Instrument transpositions}, @ref{Instrument names}, +@ref{Musical cues}, @ref{Using tags}. Snippets: