From 3e28a8d6ac352cb26dcd454dc6d6b67a44376579 Mon Sep 17 00:00:00 2001 From: Carl Sorensen Date: Wed, 10 Dec 2008 21:09:27 -0700 Subject: [PATCH] DOC -- Index editorial, pitches, staff. Ralph Palmer's work --- Documentation/user/editorial.itely | 38 +- Documentation/user/pitches.itely | 105 +- Documentation/user/staff.itely | 1475 ++++++++++------------------ 3 files changed, 607 insertions(+), 1011 deletions(-) diff --git a/Documentation/user/editorial.itely b/Documentation/user/editorial.itely index c8d021a84a..568356bef9 100644 --- a/Documentation/user/editorial.itely +++ b/Documentation/user/editorial.itely @@ -45,6 +45,7 @@ inside the staff. @cindex selecting font size (notation) @cindex notation font size @cindex note heads + @funindex fontSize @funindex font-size @funindex magstep @@ -105,6 +106,7 @@ c4.-> d8---3 @cindex standard font size (notation) @cindex font size (notation), standard + @funindex font-interface @funindex font-size @@ -119,17 +121,11 @@ that use fonts. These are the ones supporting the @predefined -@funindex \teeny @code{\teeny}, -@funindex \tiny @code{\tiny}, -@funindex \small @code{\small}, -@funindex \normalsize @code{\normalsize}, -@funindex \large @code{\large}, -@funindex \huge @code{\huge}. @endpredefined @@ -147,6 +143,7 @@ Internals Reference: @cindex fingering @cindex finger change + @funindex \finger @funindex finger @@ -164,6 +161,7 @@ c4-1 d-2 f-4 c^\markup { \finger "2 - 3" } @end lilypond @cindex thumb-script + @funindex \thumb @funindex thumb @@ -224,6 +222,7 @@ Internals Reference: @cindex notes, hidden @cindex notes, invisible @cindex notes, transparent + @funindex \hideNotes @funindex hideNotes @funindex \unHideNotes @@ -273,6 +272,7 @@ Internals Reference: @unnumberedsubsubsec Coloring objects @cindex colored objects +@cindex objects, colored @cindex colors @cindex coloring objects @cindex colored notes @@ -281,6 +281,7 @@ Internals Reference: @cindex x11 color @cindex x11-color @cindex with-color + @funindex color @funindex \with-color @funindex with-color @@ -330,6 +331,7 @@ b2 cis @cindex rgb-color @cindex color, rgb @cindex rgb color + @funindex rgb-color Exact RGB colors can be specified using the Scheme function @@ -363,6 +365,7 @@ Snippets: @cindex colored notes in chords @cindex notes, colored in chords @cindex color in chords + @funindex x11-color @knownissues @@ -386,6 +389,7 @@ Notes in a chord cannot be colored with @code{\override}; use @cindex notes, ghost @cindex notes, parenthesized @cindex parentheses + @funindex \parenthesize @funindex parenthesize @@ -431,17 +435,21 @@ chord. @cindex stem, invisible @cindex invisible stem +@funindex \stemUp +@funindex stemUp +@funindex \stemDown +@funindex stemDown +@funindex \stemNeutral +@funindex stemNeutral + Whenever a note is found, a @code{Stem} object is created automatically. For whole notes and rests, they are also created but made invisible. @predefined -@funindex \stemUp @code{\stemUp}, -@funindex \stemDown @code{\stemDown}, -@funindex \stemNeutral @code{\stemNeutral}. @endpredefined @@ -489,11 +497,16 @@ from outside of the staff. @cindex notation, explaining @cindex balloon help @cindex help, balloon + @funindex \balloonGrobText @funindex \balloonText @funindex Balloon_engraver @funindex balloonGrobText @funindex balloonText +@funindex \balloonLengthOn +@funindex balloonLengthOn +@funindex \balloonLengthOff +@funindex balloonLengthOff Elements of notation can be marked and named with the help of a square balloon. The primary purpose of this feature is to explain @@ -535,11 +548,7 @@ altered: @predefined -@funindex balloonLengthOn -@funindex \balloonLengthOn @code{\balloonLengthOn}, -@funindex \balloonLengthOff -@funindex balloonLengthOff @code{\balloonLengthOff}. @endpredefined @@ -561,6 +570,7 @@ Internals Reference: @cindex lines, grid @cindex vertical lines between staves @cindex lines, vertical between staves + @funindex Grid_point_engraver @funindex Grid_line_span_engraver @funindex gridInterval @@ -630,9 +640,11 @@ Internals Reference: @cindex bracket, phrasing @cindex phrasing bracket @cindex musicological analysis +@cindex analysis, musicological @cindex note grouping bracket @cindex horizontal bracket @cindex bracket, horizontal + @funindex Horizontal_bracket_engraver @funindex \startGroup @funindex startGroup diff --git a/Documentation/user/pitches.itely b/Documentation/user/pitches.itely index 977ac59fe3..9224f8e1bb 100644 --- a/Documentation/user/pitches.itely +++ b/Documentation/user/pitches.itely @@ -47,7 +47,9 @@ mode. In most cases, relative mode will be more convenient. @cindex pitches @cindex absolute @cindex absolute octave specification +@cindex octave specification, absolute @cindex absolute octave entry +@cindex octave entry, absolute A pitch name is specified using lowercase letters@tie{}@code{a} through@tie{}@code{g}. The note names @code{c} to @code{b} are @@ -62,6 +64,7 @@ d e f g @end lilypond @cindex octave changing mark + @funindex ' @funindex , @@ -93,7 +96,11 @@ Snippets: @cindex relative @cindex relative octave entry +@cindex octave entry, relative @cindex relative octave specification +@cindex ocatve specification, relative + +@funindex relative @funindex \relative When octaves are specified in absolute mode it is easy to @@ -168,6 +175,9 @@ large intervals: } @end lilypond +@cindex chords and relative octave entry +@cindex relative octave entry and chords + If the preceding item is a chord, the first note of the chord is used as the reference point for the octave placement of a following note or chord. Inside chords, the next note is always @@ -219,9 +229,13 @@ Internals Reference: @cindex relative octave entry and transposition @cindex transposition and relative octave entry + @funindex \transpose +@funindex transpose @funindex \chordmode +@funindex chordmode @funindex \relative +@funindex relative @knownissues @@ -256,6 +270,7 @@ see @rlearning{Accidentals and key signatures}.} @cindex note names, Dutch @cindex note names, default +@cindex default note names @cindex sharp @cindex flat @cindex double sharp @@ -286,7 +301,8 @@ a4 aes a2 @end lilypond @cindex quarter tones -@cindex semi-flats, semi-sharps +@cindex semi-flats +@cindex semi-sharps Quarter tones may be added; the following is a series of Cs with increasing pitches: @@ -301,11 +317,13 @@ ceseh1 ces ceh c cih cis cisih @cindex accidental, cautionary @cindex accidental, parenthesized @cindex reminder accidental -@funindex ? @cindex cautionary accidental @cindex parenthesized accidental + +@funindex ? @funindex ! + Normally accidentals are printed automatically, but you may also print them manually. A reminder accidental can be forced by adding an exclamation mark@tie{}@code{!} after the pitch. A @@ -530,8 +548,10 @@ This section discusses how to modify pitches. @cindex octave correction @cindex octave check @cindex control pitch + @funindex = @funindex \octaveCheck +@funindex octaveCheck @funindex controlpitch In relative mode, it is easy to forget an octave changing mark. @@ -605,7 +625,9 @@ Internals Reference: @cindex transposition of notes @cindex pitches, transposition of @cindex notes, transposition of + @funindex \transpose +@funindex transpose A music expression can be transposed with @code{\transpose}. The syntax is @@ -670,8 +692,6 @@ music = \relative c' { c d e f } } @end lilypond -@cindex transposing instruments -@cindex instruments, transposing @code{\transpose} may also be used in a different way, to input written notes for a transposing instrument. The previous examples @@ -719,8 +739,11 @@ Internals Reference: @funindex \transpose +@funindex transpose @funindex \chordmode +@funindex chordmode @funindex \relative +@funindex relative @knownissues @@ -748,7 +771,6 @@ This section discusses how to alter the output of pitches. @node Clef @unnumberedsubsubsec Clef -@funindex \clef @cindex G clef @cindex C clef @cindex F clef @@ -781,6 +803,9 @@ This section discusses how to alter the output of pitches. @cindex clef, varbaritone @cindex subbass clef, subbass +@funindex \clef +@funindex clef + The clef may be altered. Middle C is shown in every example. @lilypond[verbatim,quote,relative=1] @@ -825,6 +850,7 @@ and @ref{Gregorian clefs}. @cindex clef, transposing @cindex octave transposition @cindex choral tenor clef +@cindex tenor clef, choral By adding@tie{}@code{_8} or@tie{}@code{^8} to the clef name, the clef is transposed one octave down or up, respectively, @@ -866,7 +892,9 @@ Internals Reference: @unnumberedsubsubsec Key signature @cindex key signature + @funindex \key +@funindex key @c duplicated in Key signature and Accidentals @warning{New users are sometimes confused about accidentals and @@ -885,14 +913,24 @@ at the start of the staff. The key signature may be altered: @end example @funindex \major +@funindex major @funindex \minor +@funindex minor @funindex \ionian +@funindex ionian @funindex \locrian +@funindex locrian @funindex \aeolian +@funindex aeolian @funindex \mixolydian +@funindex mixolydian @funindex \lydian +@funindex lydian @funindex \phrygian +@funindex phrygian @funindex \dorian +@funindex dorian + @cindex church modes @cindex modes @cindex major @@ -958,7 +996,10 @@ Internals Reference: @cindex 8va @cindex 8ve @cindex octavation + @funindex set-octavation +@funindex \ottava +@funindex ottava @notation{Ottava brackets} introduce an extra transposition of an octave for the staff: @@ -1002,7 +1043,9 @@ Internals Reference: @cindex transposing instrument @cindex MIDI @cindex MIDI transposition + @funindex \transposition +@funindex transposition When typesetting scores that involve transposing instruments, some parts can be typeset in a different pitch than the @@ -1096,8 +1139,10 @@ Snippets: @cindex accidentals, automatic @cindex automatic accidentals @cindex default accidental style + @funindex set-accidental-style @funindex voice +@funindex default There are many different conventions on how to typeset accidentals. LilyPond provides a function to specify which @@ -1124,7 +1169,6 @@ style in all staves of the current @code{StaffGroup}, use: The following accidental styles are supported. To demonstrate each style, we use the following example: -@funindex default @lilypond[verbatim,quote] musicA = { @@ -1198,6 +1242,7 @@ both staves. @cindex default accidental style @cindex accidental style, default + @funindex default This is the default typesetting behavior. It corresponds to @@ -1261,6 +1306,7 @@ musicB = { @cindex modern accidental style @cindex accidental style, modern-cautionary @cindex modern-cautionary accidental style + @funindex voice The normal behavior is to remember the accidentals at @@ -1328,6 +1374,7 @@ musicB = { @cindex accidentals, modern style @cindex modern style accidentals + @funindex modern This rule corresponds to the common practice in the twentieth @@ -1392,6 +1439,7 @@ musicB = { @cindex modern cautionary accidental style @cindex modern style accidentals @cindex modern style cautionary accidentals + @funindex modern-cautionary This rule is similar to @code{modern}, but the @q{extra} @@ -1455,6 +1503,7 @@ musicB = { @cindex modern accidental style @cindex modern accidentals @cindex multivoice accidentals + @funindex modern-voice This rule is used for multivoice accidentals to be read both by @@ -1515,6 +1564,7 @@ musicB = { @cindex accidental style, cautionary, modern voice @cindex accidental style, modern voice cautionary @cindex accidental style, voice, modern cautionary + @funindex modern-voice-cautionary @item modern-voice-cautionary @@ -1577,6 +1627,7 @@ musicB = { @cindex accidentals, piano @cindex piano accidental style @cindex piano accidentals + @funindex piano This rule reflects twentieth-century practice for piano notation. @@ -1635,7 +1686,6 @@ musicB = { @item piano-cautionary -@funindex piano-cautionary @cindex accidentals, piano cautionary @cindex cautionary accidentals, piano @cindex piano cautionary accidentals @@ -1643,6 +1693,8 @@ musicB = { @cindex cautionary accidental style, piano @cindex piano cautionary accidental style +@funindex piano-cautionary + This is the same as @code{piano} but with the extra accidentals typeset as cautionaries. @@ -1694,10 +1746,11 @@ musicB = { @item neo-modern -@funindex neo-modern @cindex neo-modern accidental style @cindex accidental style, neo-modern +@funindex neo-modern + This rule reproduces a common practice in contemporary music: accidentals are printed like with @code{modern}, but they are printed again if the same note appears later in the same measure -- except @@ -1751,10 +1804,11 @@ musicB = { @item neo-modern-cautionary -@funindex neo-modern-cautionary @cindex neo-modern-cautionary accidental style @cindex accidental style, neo-modern-cautionary +@funindex neo-modern-cautionary + This rule is similar to @code{neo-modern}, but the extra accidentals are printed as cautionary accidentals. @@ -1807,10 +1861,11 @@ musicB = { @item dodecaphonic -@funindex dodecaphonic @cindex dodecaphonic accidental style @cindex dodecaphonic style, neo-modern +@funindex dodecaphonic + This rule reflects a practice introduced by composers at the beginning of the 20th century, in an attempt to abolish the hierarchy between natural and non-natural notes. @@ -1866,10 +1921,11 @@ musicB = { @item teaching -@funindex teaching @cindex teaching accidental style @cindex accidental style, teaching +@funindex teaching + This rule is intended for students, and makes it easy to create scale sheets with automagically created cautionary accidentals. Accidentals are printed like with @code{modern}, but cautionary @@ -1928,10 +1984,11 @@ musicB = { @item no-reset -@funindex no-reset @cindex accidental style, no reset @cindex no reset accidental style +@funindex no-reset + This is the same as @code{default} but with accidentals lasting @q{forever} and not only within the same measure: @@ -1983,10 +2040,11 @@ musicB = { @item forget -@funindex forget @cindex forget accidental style @cindex accidental style, forget +@funindex forget + This is the opposite of @code{no-reset}: Accidentals are not remembered at all -- and hence all accidentals are typeset relative to the key signature, regardless of what came before in @@ -2173,6 +2231,7 @@ This section suggests ways of altering note heads. @cindex guitar note heads @cindex note head styles @cindex styles, note heads + @funindex cross Note heads may be altered: @@ -2227,6 +2286,11 @@ Internals Reference: @cindex easy play note heads @cindex note heads, easy play +@funindex \easyHeadsOn +@funindex easyHeadsOn +@funindex \easyHeadsOff +@funindex easyHeadsOff + The @q{easy play} note head includes a note name inside the head. It is used in music for beginners. To make the letters readable, it should be printed in a large font size. To print with a larger @@ -2245,9 +2309,7 @@ font, see @ref{Setting the staff size}. @predefined -@funindex \easyHeadsOn @code{\easyHeadsOn}, -@funindex \easyHeadsOff @code{\easyHeadsOff}. @endpredefined @@ -2275,9 +2337,13 @@ Internals Reference: @cindex shape notes @cindex Aiken shape note heads @cindex sacred harp note heads + @funindex \key +@funindex key @funindex \aikenHeads +@funindex aikenHeads @funindex \sacredHarpHeads +@funindex sacredHarpHeads In shape note head notation, the shape of the note head corresponds to the harmonic function of a note in the scale. This @@ -2296,9 +2362,7 @@ base of the scale is determined by the @code{\key} command. @predefined -@funindex \aikenHeads @code{\aikenHeads}, -@funindex \sacredHarpHeads @code{\sacredHarpHeads}. @endpredefined @@ -2334,6 +2398,11 @@ Internals Reference: @cindex note heads, improvisation @cindex note heads, slashed +@funindex \improvisationOn +@funindex improvisationOn +@funindex \improvisationOff +@funindex improvisationOff + Improvisation is sometimes denoted with slashed note heads, where the performer may choose any pitch but should play the specified rhythm. Such note heads can be created: @@ -2354,9 +2423,7 @@ rhythm. Such note heads can be created: @predefined -@funindex \improvisationOn @code{\improvisationOn}, -@funindex \improvisationOff @code{\improvisationOff}. @endpredefined diff --git a/Documentation/user/staff.itely b/Documentation/user/staff.itely index 3791eacb71..acb129d021 100644 --- a/Documentation/user/staff.itely +++ b/Documentation/user/staff.itely @@ -6,852 +6,412 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.64" - @node Staff notation @section Staff notation -@lilypondfile[quote]{staff-headword.ly} +@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 appearance of staves, -how to print scores with more than one staff, and how to add tempo -indications and cue notes to staves. @menu -* Displaying staves:: -* Modifying single staves:: -* Writing parts:: +* Displaying staves:: +* Writing parts:: @end menu @node Displaying staves @subsection Displaying staves -This section describes the different methods of creating and -grouping staves. - @menu -* Instantiating new staves:: -* Grouping staves:: -* Nested staff groups:: +* System start delimiters:: +* Staff symbol:: +* Hiding staves:: @end menu - -@node Instantiating new staves -@unnumberedsubsubsec Instantiating new staves - -@cindex new staff -@cindex staff initiation -@cindex staff instantiation -@cindex staff, new -@cindex staff, single -@cindex drum staff -@cindex percussion staff -@cindex Gregorian transcription staff -@cindex rhythmic staff -@cindex tabstaff -@cindex tablature - -@notation{Staves} (singular: @notation{staff}) are created with -the @code{\new} or @code{\context} commands. For details, see -@ref{Creating contexts}. - -The basic staff context is @code{Staff}: - -@lilypond[verbatim,quote,relative=2] -\new Staff { c4 d e f } -@end lilypond - -The @code{DrumStaff} context creates a five-line staff set up for -a typical drum set. Each instrument is shown with a different -symbol. The instruments are entered in drum mode following a -@code{\drummode} command, with each instrument specified by name. -For details, see @ref{Percussion staves}. - -@lilypond[verbatim,quote] -\new DrumStaff { - \drummode { cymc hh ss tomh } -} -@end lilypond - -@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 - -@code{TabStaff} creates a tablature with six strings in standard -guitar tuning. For details, see @ref{Default tablatures}. - -@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}. - -The @code{GregorianTranscriptionStaff} context creates a staff to -notate modern Gregorian chant. It does not show bar lines. - -@lilypond[verbatim,quote,relative=2] -\new GregorianTranscriptionStaff { c4 d e f e d } -@end lilypond - -New single staff contexts may be defined. For details, see -@ref{Defining new contexts}. - - -@seealso -Music Glossary: -@rglos{staff}, -@rglos{staves}. - -Notation Reference: -@ref{Creating contexts}, -@ref{Percussion staves}, -@ref{Showing melody rhythms}, -@ref{Default tablatures}, -@ref{Pre-defined contexts}, -@ref{Staff symbol}, -@ref{Gregorian chant contexts}, -@ref{Mensural contexts}, -@ref{Defining new contexts}. - -Snippets: -@rlsr{Staff notation}. - -Internals Reference: -@rinternals{Staff}, -@rinternals{DrumStaff}, -@rinternals{GregorianTranscriptionStaff}, -@rinternals{RhythmicStaff}, -@rinternals{TabStaff}, -@rinternals{MensuralStaff}, -@rinternals{VaticanaStaff}, -@rinternals{StaffSymbol}. - - -@node Grouping staves -@unnumberedsubsubsec Grouping staves +@node System start delimiters +@unnumberedsubsubsec System start delimiters @cindex start of system @cindex staff, multiple -@cindex staves, multiple -@cindex system start delimiters +@cindex vertical bracket @cindex bracket, vertical @cindex brace, vertical -@cindex choir staff +@cindex vertical brace @cindex grand staff -@cindex piano staff @cindex staff group @cindex staff, choir -@cindex staff, piano @cindex system -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. +Many scores consist of more than one staff. These staves can be +grouped in several different ways: -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 +In a @code{GrandStaff}, the group is started with a brace +at the left, and bar lines are connected between the staves. -@lilypond[verbatim,quote,relative=2] -<< - \new Staff { c1 c } +@lilypond[verbatim,ragged-right,quote] +\new GrandStaff +\relative << \new Staff { c1 c } + \new Staff { c c } >> @end lilypond -In the @code{StaffGroup} context, the group is started with a -bracket and bar lines are drawn through all the staves. +@item +In a @code{StaffGroup}, the bar lines will be drawn through +all the staves, but the group is started with a bracket. -@lilypond[verbatim,quote,relative=2] -\new StaffGroup << - \new Staff { c1 c } +@lilypond[verbatim,ragged-right,quote] +\new StaffGroup +\relative << \new Staff { c1 c } + \new Staff { c c } >> @end lilypond -In a @code{ChoirStaff}, the group starts with a bracket, but bar -lines are not connected. +@item +In a @code{ChoirStaff}, the group is started with a +bracket, but bar lines are not connected. -@lilypond[verbatim,quote,relative=2] -\new ChoirStaff << - \new Staff { c1 c } +@lilypond[verbatim,ragged-right,quote] +\new ChoirStaff +\relative << \new Staff { c1 c } + \new Staff { c c } >> @end lilypond -In a @code{GrandStaff}, the group begins with a brace, and bar -lines are connected between the staves. +@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,quote,relative=2] -\new GrandStaff << - \new Staff { c1 c } +@lilypond[verbatim,ragged-right,quote] +\relative << \new Staff { c1 c } + \new Staff { c c } >> @end lilypond +@end itemize -The @code{PianoStaff} is identical to a @code{GrandStaff}, except -that it supports printing the instrument name directly. For -details, see @ref{Instrument names}. +@cindex Mensurstriche layout +@cindex Renaissance music -@lilypond[verbatim,quote,relative=2] -\new PianoStaff << - \set PianoStaff.instrumentName = "Piano" - \new Staff { c1 c } - \new Staff { c1 c } ->> -@end lilypond - -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. - -New staff group contexts may be defined. For details, see -@ref{Defining new contexts}. - - -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{use-square-bracket-at-the-start-of-a-staff-group.ly} - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{display-bracket-with-only-one-staff-in-a-system.ly} - -@cindex mensurstriche layout -@cindex renaissance music -@cindex transcription of mensural music -@cindex mensural music, transcription of - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{mensurstriche-layout-bar-lines-between-the-staves.ly} - - -@seealso -Music Glossary: -@rglos{brace}, -@rglos{bracket}, -@rglos{grand staff}. - -Notation Reference: -@ref{Instrument names}, -@ref{Defining new contexts}. - -Snippets: -@rlsr{Staff notation}. - -Internals Reference: -@rinternals{Staff}, -@rinternals{StaffGroup}, -@rinternals{ChoirStaff}, -@rinternals{GrandStaff}, -@rinternals{PianoStaff}, -@rinternals{SystemStartBar}, -@rinternals{SystemStartBrace}, -@rinternals{SystemStartBracket}, -@rinternals{SystemStartSquare}. - - -@node Nested staff groups -@unnumberedsubsubsec Nested staff groups +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} @cindex staff, nested -@cindex staves, nested -@cindex nesting of staves -@cindex system start delimiters, nested -@cindex nested staff brackets -@cindex brackets, nesting of -@cindex braces, nesting of - -Staff-group contexts can be nested to arbitrary depths. In this -case, each child context creates a new bracket adjacent to the -bracket of its parent group. - -@lilypond[verbatim,quote,relative=2] -\new StaffGroup << - \new Staff { c2 c | c2 c } - \new StaffGroup << - \new Staff { g2 g | g2 g } - \new StaffGroup \with { - systemStartDelimiter = #'SystemStartSquare - } - << - \new Staff { e2 e | e2 e } - \new Staff { c2 c | c2 c } - >> - >> + +Staff groups can be nested, using the context +@code{InnerStaffGroup} or @code{InnerChoirStaff}; see +@lsr{staff,staff-brackets.ly} +@c snippet 137 + +@commonprop + +More complex nesting can be accomplished using the property +@code{systemStartDelimiterHierarchy}: + +@lilypond[quote,ragged-right,verbatim] +\new StaffGroup +\relative << + \set StaffGroup.systemStartDelimiterHierarchy + = #'(SystemStartSquare (SystemStartBracket a + (SystemStartSquare b)) d) + \new Staff { c1 } + \new Staff { c1 } + \new Staff { c1 } + \new Staff { c1 } + \new Staff { c1 } >> @end lilypond -New nested staff group contexts can be defined. For details, see -@ref{Defining new contexts}. - - -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{nesting-staves.ly} - +Each staff group context sets the property +@code{systemStartDelimiter} to one of the values +@internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, +and @internalsref{SystemStartBracket}. A fourth delimiter, +@code{systemStartSquare}, is also available, but must be +instantiated manually. + +@c FIXME: Graham will deal with this. -gp +@c snippet 201 +To display a bracket even if there is only one staff, see +@lsr{staff,display-bracket-with-only-one-staff-in-a +system.ly} @seealso -Notation Reference: -@ref{Grouping staves}, -@ref{Instrument names}, -@ref{Defining new contexts}. - -Snippets: -@rlsr{Staff notation}. -Internals Reference: -@rinternals{StaffGroup}, -@rinternals{ChoirStaff}, -@rinternals{SystemStartBar}, -@rinternals{SystemStartBrace}, -@rinternals{SystemStartBracket}, -@rinternals{SystemStartSquare}. +Music Glossary: @rglos{brace}, @rglos{staff}, @rglos{staves} +@rglos{bracket}. +Snippets: @lsrdir{staff} -@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:: -@end menu +Internals Reference: @internalsref{ChoirStaff}, +@internalsref{GrandStaff}, @internalsref{StaffGroup}, +@internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, +@internalsref{SystemStartBracket}, +@internalsref{systemStartDelimiterHierarchy}. @node 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 lines of a staff belong to the @code{StaffSymbol} grob. -@code{StaffSymbol} properties can be modified to change the -appearance of a staff, but they must be modified before the staff -is created. - -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 \with { - \override StaffSymbol #'line-count = #3 -} -{ d4 d d d } -@end lilypond - -Staff line thickness can be modified. The thickness of ledger -lines and stems are also affected, since they depend on staff line -thickness. +@cindex staff symbol, adjusting +@cindex staff, starting +@cindex staff, stopping -@lilypond[verbatim,quote,relative=1] -\new Staff \with { - \override StaffSymbol #'thickness = #3 -} -{ e4 d c b } -@end lilypond - -Ledger line thickness can be set independently of staff line -thickness. In the example the two numbers are factors multiplying -the staff line thickness and the staff line spacing. The two -contributions are added to give the ledger line thickness. - -@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. This setting -affects the spacing of ledger lines as well. - -@lilypond[verbatim,quote,relative=1] -\new Staff \with { - \override StaffSymbol #'staff-space = #1.5 -} -{ a4 b c d } -@end lilypond - -Further details about the properties of @code{StaffSymbol} can be -found in @rinternals{staff-symbol-interface}. - -@funindex \startStaff +@fundindex \startStaff +@funindex startStaff @funindex \stopStaff - -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 +@funindex stopStaff + +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}. + +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 \revert Staff.StaffSymbol #'line-count -\startStaff -a2 a +\stopStaff \startStaff +b b @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 -@code{\startStaff}, -@code{\stopStaff}. -@endpredefined - - -@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{Clef}. - -Snippets: -@rlsr{Staff notation}. - -Internals Reference: -@rinternals{StaffSymbol}, -@rinternals{staff-symbol-interface}. - - -@knownissues - -When setting vertical staff line positions manually, bar lines are -always centered on position 0, so the maximum distance between the -outermost bar lines in either direction must be equal. - - -@node Ossia staves -@unnumberedsubsubsec Ossia staves - -@cindex staff, Frenched +@cindex staves, Frenched @cindex ossia @cindex Frenched staves -@cindex staff, resizing of -@cindex resizing of staves - -@notation{Ossia} staves can be set by creating a new simultaneous -staff in the appropriate location: - -@lilypond[verbatim,quote] -\new Staff \relative c'' { - c4 b d c - << - { c4 b d c } - \new Staff { e4 d f e } - >> - c4 b c2 -} -@end lilypond -@noindent -However, the above example is not what is usually desired. To -create ossia staves that are above the original staff, have no -time signature or clef, and have a smaller font size, tweaks must -be used. The Learning Manual describes a specific technique to -achieve this goal, beginning with -@rlearning{Nesting music expressions}. - -The following example uses the @code{alignAboveContext} property -to align the ossia staff. This method is most appropriate when -only a few ossia staves are needed. - -@lilypond[verbatim,quote] -\new Staff = main \relative c'' { - c4 b d c - << - { c4 b d c } - - \new Staff \with { - \remove "Time_signature_engraver" - alignAboveContext = #"main" - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) - firstClef = ##f - } - { e4 d f e } - >> - c4 b c2 -} -@end lilypond - -If many isolated ossia staves are needed, creating an empty -@code{Staff} context with a specific @emph{context id} may be more -appropriate; the ossia staves may then be created by -@emph{calling} this context and using @code{\startStaff} and -@code{\stopStaff} at the desired locations. The benefits of this -method are more apparent if the piece is longer than the following -example. +In combination with Frenched staves, this may be used to typeset +@emph{ossia} sections. An example is shown here -@lilypond[verbatim,quote,ragged-right] +@lilypond[verbatim,relative=2,quote] << - \new Staff = ossia \with { + \new Staff \with + { \remove "Time_signature_engraver" - \override Clef #'transparent = ##t - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) + fontSize = #-2 + \override StaffSymbol #'staff-space = #(magstep -2) + firstClef = ##f } - { \stopStaff s1*6 } - - \new Staff \relative c' { - c4 b c2 - << - { e4 f e2 } - \context Staff = ossia { - \startStaff e4 g8 f e2 \stopStaff - } - >> - g4 a g2 \break - c4 b c2 - << - { g4 a g2 } - \context Staff = ossia { - \startStaff g4 e8 f g2 \stopStaff - } - >> - e4 d c2 - } ->> -@end lilypond + \relative c'' { + \stopStaff + \skip 2 -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 -break. In this case, spacer rests do not need to be used at all; -only @code{\startStaff} and @code{\stopStaff} are necessary. For -more information about @code{\RemoveEmptyStaffContext}, see -@ref{Hiding staves}. + \startStaff + \clef treble + bes8[^"ossia" g bes g] + \stopStaff -@lilypond[verbatim,quote,ragged-right] -<< - \new Staff = ossia \with { - \remove "Time_signature_engraver" - \override Clef #'transparent = ##t - fontSize = #-3 - \override StaffSymbol #'staff-space = #(magstep -3) - \override StaffSymbol #'thickness = #(magstep -3) + s2 + + \startStaff + f8 d g4 } - \new Staff \relative c' { - c4 b c2 - e4 f e2 - g4 a g2 \break - << - { c4 b c2 } - \context Staff = ossia { - c4 e8 d c2 \stopStaff - } - >> - g4 a g2 - e4 d c2 + \new Staff \relative + { + \time 2/4 + c4 c g' g a a g2 } ->> -\layout { - \context { - \RemoveEmptyStaffContext - \override VerticalAxisGroup #'remove-first = ##t - } -} +>> @end lilypond - -@snippets - -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{vertically-aligning-ossias-and-lyrics.ly} - +@cindex staff lines, setting number of +@cindex staff lines, setting thickness of +@cindex thickness of staff lines, setting +@cindex number of staff lines, setting @seealso -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}. +Music Glossary: @rglos{ossia}, @rglos{staff}, @rglos{Frenched staff}. -Notation Reference: -@ref{Hiding staves}. +Snippets: @lsrdir{staff} -Snippets: -@rlsr{Staff notation}. - -Internals Reference: -@rinternals{StaffSymbol}. +Internals Reference: @internalsref{StaffSymbol}, +@internalsref{DrumStaff}. @node Hiding staves @unnumberedsubsubsec Hiding staves -@cindex Frenched score -@cindex Frenched staff -@cindex staff, hiding -@cindex staff, empty -@cindex hiding of staves -@cindex empty staves - -Staff lines can be hidden by removing the -@code{Staff_symbol_engraver} from the @code{Staff} context. As an -alternative, @code{\stopStaff} may be used. - -@lilypond[verbatim,quote] -\new Staff \with { - \remove "Staff_symbol_engraver" -} -\relative c''' { a8 f e16 d c b a2 } -@end lilypond - -@funindex \RemoveEmptyStaffContext +@cindex Frenched scores +@cindex staves, hiding empty +@cindex hiding empty staves -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 and removes all empty -staves in a score except for those in the first system. +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 +the lines of these contexts turn out empty after the line-breaking +process, they are removed. -@warning{A staff is considered empty when it contains only -multi-measure rests, skips, spacer rests, or a combination of these -elements.} +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 -@lilypond[verbatim,quote,ragged-right] +@lilypond[quote,ragged-right,verbatim] \layout { - \context { - \RemoveEmptyStaffContext - } + \context { \RemoveEmptyStaffContext } } -\relative c' << - \new Staff { - e4 f g a \break - b1 \break - a4 b c2 - } - \new Staff { - c,4 d e f \break - R1 \break - f4 g c,2 - } ->> +{ + \relative c' << + \new Staff { e4 f g a \break c1 } + \new Staff { c4 d e f \break R1 } + >> +} @end lilypond -@cindex ossia - -@noindent -@code{\RemoveEmptyStaffContext} 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 \AncientRemoveEmptyStaffContext -@funindex \RemoveEmptyRhythmicStaffContext - -The @code{\AncientRemoveEmptyStaffContext} command may be used to -hide empty staves in ancient music contexts. Similarly, -@code{\RemoveEmptyRhythmicStaffContext} may be used to hide empty -@code{RhythmicStaff} contexts. +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 -@predefined -@code{\RemoveEmptyStaffContext}, -@code{\AncientRemoveEmptyStaffContext}, +To remove other types of contexts, use +@code{\AncientRemoveEmptyStaffContext} or @code{\RemoveEmptyRhythmicStaffContext}. -@endpredefined - - -@snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{removing-the-first-empty-line.ly} +@cindex ossia +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}. -@seealso -Music Glossary: -@rglos{Frenched staff}. +You can make the staff lines invisible by removing the +@code{Staff_symbol_engraver} from the @code{Staff} context. -Notation Reference: -@ref{Staff symbol}, -@ref{Ossia staves}. -Snippets: -@rlsr{Staff notation}. +@lilypond[quote,ragged-right,verbatim] +\score { + \context Staff \relative c'' { c8 c c16 c c c } + \layout{ + \context { + \Staff + \remove Staff_symbol_engraver + } + } +} +@end lilypond -Internals Reference: -@rinternals{ChordNames}, -@rinternals{FiguredBass}, -@rinternals{Lyrics}, -@rinternals{Staff}, -@rinternals{VerticalAxisGroup}, -@rinternals{Staff_symbol_engraver}. +@seealso +Notation Reference: @ref{Staff symbol}. -@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 +Snippets: @lsrdir{staff} +Internals Reference: @internalsref{ChordNames}, +@internalsref{FiguredBass}, @internalsref{Lyrics}, +@internalsref{Staff}, @internalsref{VerticalAxisGroup}. @node Writing parts @subsection Writing parts -This section explains how to insert tempo indications and -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:: +* 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 marking -@cindex metronome marking with text -@funindex \tempo -A basic metronome mark is simple to write: +@funindex \tempo +@funindex tempo -@lilypond[verbatim,quote,relative=1] -\tempo 4 = 120 -c2 d -e4. d8 c2 -@end lilypond +Metronome settings can be entered as follows -Tempo indications with text can be used instead: +@example +\tempo @var{duration} = @var{per-minute} +@end example -@lilypond[verbatim,quote,relative=2] -\tempo "Allegretto" -c4 e d c -b4. a16 b c4 r4 -@end lilypond +In the MIDI output, they are interpreted as a tempo change. In +the layout output, a metronome marking is printed -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 +@lilypond[quote,ragged-right,verbatim,fragment] +\tempo 8.=120 c''1 @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 +@commonprop -A parenthesized metronome mark with no textual indication may be -written by including an empty string in the input: +To change the tempo in the MIDI output without printing anything, +make the metronome marking invisible @example \once \override +Score.MetronomeMark #'transparent = ##t @end example -@lilypond[verbatim,quote,relative=2] -\tempo "" 8 = 96 -d4 g e c +To print other metronome markings, use these markup commands +@lilypond[quote,ragged-right,verbatim,relative,fragment] +c4^\markup { + ( + \smaller \general-align #Y #DOWN \note #"16." #1 + = + \smaller \general-align #Y #DOWN \note #"8" #1 + ) } @end lilypond +@noindent +For more details, see @ref{Text markup}. -@snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{printing-metronome-and-rehearsal-marks-below-the-staff.ly} +@seealso -@c perhaps also an example of how to move it horizontally? +Music Glossary: @rglos{metronome}, @rglos{metronomic indication}, +@rglos{tempo indication}, @rglos{metronome mark}. -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{changing-the-tempo-without-a-metronome-mark.ly} +Notation Reference: @ref{Text markup}. -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{creating-metronome-marks-in-markup-mode.ly} +Snippets: @lsrdir{staff}. -For more details, see @ref{Formatting text}. +Internals Reference: @internalsref{MetronomeMark}, @ref{MIDI +output}. -@seealso -Music Glossary: -@rglos{metronome}, -@rglos{metronomic indication}, -@rglos{tempo indication}, -@rglos{metronome mark}. +@refbugs -Notation Reference: -@ref{Formatting text}, -@ref{MIDI output}. +Collisions are not checked. If you have notes above the top line +of the staff (or notes with articulations, slurs, text, etc), then +the metronome marking may be printed on top of musical symbols. +If this occurs, increase the padding of the metronome mark to +place it further away from the staff. -Snippets: -@rlsr{Staff notation}. +@example +\override Score.MetronomeMark #'padding = #2.5 +@end example -Internals Reference: -@rinternals{MetronomeMark}. +@c perhaps also an example of how to move it horizontally? @node Instrument names @@ -860,92 +420,100 @@ Internals Reference: @cindex instrument names @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{instrumentName} is used for the first staff, and the value -of @code{shortInstrumentName} is used for all succeeding staves. +In an orchestral score, instrument names are printed at the left +side of the staves. -@lilypond[verbatim,quote,ragged-right,relative=1] -\set Staff.instrumentName = "Violin " -\set Staff.shortInstrumentName = "Vln " -c4.. g'16 c4.. g'16 -\break +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 " +\set Staff.shortInstrumentName = "Plk " c1 +\break +c'' @end lilypond -Markup mode can be used to create more complicated instrument -names: +You can also use markup texts to construct more complicated +instrument names, for example -@lilypond[verbatim,quote,relative=2] +@lilypond[quote,fragment,verbatim,ragged-right] \set Staff.instrumentName = \markup { \column { "Clarinetti" \line { "in B" \smaller \flat } } } -c4 c,16 d e f g2 +c''1 @end lilypond @cindex instrument names, centering - -When two or more staff contexts are grouped together, the -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,indent=1.5\cm,relative=2] -<< - \new Staff { - \set Staff.instrumentName = "Flute" - f2 g4 f - } - \new Staff { - \set Staff.instrumentName = \markup \center-column { - Clarinet - \line { "in B" \smaller \flat } - } - c4 b c2 - } +@cindex centering instrument names +@cindex aligning instrument names +@cindex instrument names, aligning + +If you wish to center the instrument names, you must center all of +them individually: + +@lilypond[quote,verbatim,ragged-right] +{ << +\new Staff { + \set Staff.instrumentName = \markup { + \center-align { "Clarinetti" + \line { "in B" \smaller \flat } } } + c''1 +} +\new Staff { + \set Staff.instrumentName = + \markup{ \center-align { Vibraphone }} + c''1 +} >> +} @end lilypond -@cindex indent -@cindex short-indent - -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}. +For longer instrument names, it may be useful to increase the +@code{indent} setting in the @code{\layout} block. -@lilypond[verbatim,quote,ragged-right] -\layout { - indent = 3.0\cm - short-indent = 1.5\cm -} +To center instrument names while leaving extra space to the right, -\relative c'' << +@lilypond[quote,verbatim,ragged-right] +\new StaffGroup \relative +<< \new Staff { - \set Staff.instrumentName = "Alto Flute in G" - \set Staff.shortInstrumentName = "Fl." - f2 g4 f \break - g4 f g2 + \set Staff.instrumentName = + \markup { \hcenter-in #10 "blabla" } + c1 c1 } \new Staff { - \set Staff.instrumentName = "Clarinet" - \set Staff.shortInstrumentName = "Clar." - c,4 b c2 \break - c2 b4 c + \set Staff.instrumentName = + \markup { \hcenter-in #10 "blo" } + c1 c1 } >> @end lilypond To add instrument names to other contexts (such as -@code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}), -@code{Instrument_name_engraver} must be added to that context. -For details, see @ref{Modifying context plug-ins}. +@code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}), the +engraver must be added to that context. + +@example +\layout@{ + \context @{\GrandStaff \consists "Instrument_name_engraver"@} +@} +@end example + +@noindent +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: +Instrument names may be changed in the middle of a piece, -@lilypond[verbatim,quote,ragged-right,relative=1] +@lilypond[quote,fragment,verbatim,ragged-right] \set Staff.instrumentName = "First" \set Staff.shortInstrumentName = "one" c1 c c c \break @@ -956,56 +524,15 @@ 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: -@rlsr{Staff notation}. +Notation Reference: @ref{Modifying context plug-ins}. -Internals Reference: -@rinternals{InstrumentName}, -@rinternals{PianoStaff}, -@rinternals{Staff}. +Snippets: @lsrdir{staff} + +Internals Reference: @internalsref{InstrumentName}, +@internalsref{PianoStaff}, @internalsref{Staff}. @node Quoting other voices @@ -1015,113 +542,114 @@ Internals Reference: @cindex quoting other voices @cindex fragments @cindex cue notes - -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. - -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: +@cindex cue transposition +@cindex trasposition of cue notes +@cindex quote transposition +@cindex transposition of quotes + +@funindex \addQuote +@funindex addQuote +@funindex \quoteDuring +@funindex quoteDuring +@funindex \cueDuring +@funindex cueDuring +@funindex \transposition +@funindex transposition + +With quotations, fragments of other parts can be inserted into a +part directly. Before a part can be quoted, it must be marked +especially as quotable. This is done with the @code{\addQuote} +command. @example -flute = \relative c'' @{ - a4 gis g gis -@} -\addQuote "flute" @{ \flute @} +\addQuote @var{name} @var{music} @end example -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'' { - a4 gis g gis -} -\addQuote "flute" { \flute } +@noindent +Here, @var{name} is an identifying string. The @var{music} is any +kind of music. Here is an example of @code{\addQuote} -\relative c' { - c4 cis \quoteDuring #"flute" { s2 } -} -@end lilypond +@example +\addQuote clarinet \relative c' @{ + f4 fis g gis +@} +@end example -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: +This command must be entered at toplevel, i.e., outside any music +blocks. Typically, one would use an already defined music event +as the @var{music}: -@lilypond[verbatim,quote] -flute = \relative c'' { - a4 gis g gis -} -\addQuote "flute" { \flute } - -\relative c' { - c4 cis \quoteDuring #"flute" { c4 b } -} -@end lilypond +@example +clarinet = \relative c' @{ + f4 fis g gis +@} +\addQuote clarinet @{ \clarinet @} +@end example -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}. -@lilypond[verbatim,quote] -clarinet = \relative c'' { - \transposition bes - a4 gis g gis -} -\addQuote "clarinet" { \clarinet } +After calling @code{\addQuote}, the quotation may then be done +with @code{\quoteDuring} or @code{\cueDuring}, -\relative c' { - c4 cis \quoteDuring #"clarinet" { s2 } -} -@end lilypond +@example +\quoteDuring #@var{name} @var{music} +@end example -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}. +During a part, a piece of music can be quoted with the +@code{\quoteDuring} command. +@example +\quoteDuring #"clarinet" @{ s2. @} +@end example -@snippets +This would cite three quarter notes (the duration of @code{s2.}) +of the previously added @code{clarinet} voice. -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{quoting-another-voice-with-transposition.ly} +More precisely, it takes the current time-step of the part being +printed, and extracts the notes at the corresponding point of the +@code{\addQuote}d voice. Therefore, the argument to +@code{\addQuote} should be the entire part of the voice to be +quoted, including any rests at the beginning. -@cindex note-event -@cindex articulation-event -@cindex dynamic-event -@cindex rest-event -@funindex quotedEventTypes +It is possible to use another music expression instead of +@code{s}, thus creating a polyphonic section, but this may not +always give the desired result. -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] -{quoting-another-voice.ly} +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' { + \transposition bes + f4 fis g gis +} -@seealso -Notation Reference: -@ref{Instrument transpositions}, -@ref{Using tags}. +{ + e'8 f'8 \quoteDuring #"clarinet" { s2 } +} +@end lilypond -Snippets: -@rlsr{Staff notation}. +The type of events that are present in the quoted music can be +trimmed with the @code{quotedEventTypes} property. The default +value is @code{(note-event rest-event)}, which means that only +notes and rests of the quoted voice end up in the +@code{\quoteDuring}. Setting -Internals Reference: -@rinternals{QuoteMusic}, -@rinternals{Voice}. +@example +\set Staff.quotedEventTypes = + #'(note-event articulation-event dynamic-event) +@end example +@noindent +will quote notes (but no rests), together with scripts and +dynamics. -@knownissues +@refbugs 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} +@var{music} can not 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 @@ -1132,6 +660,14 @@ 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} + +Internals Reference: @internalsref{QuoteMusic}, @internalsref{Voice}. + @node Formatting cue notes @unnumberedsubsubsec Formatting cue notes @@ -1140,138 +676,119 @@ written entirely in lower-case letters: @code{\addquote}. @cindex cue notes @cindex cue notes, formatting @cindex fragments -@cindex quoting other voices +@cindex quoting other voices @cindex cues, formatting +@cindex transposing cue notes +@cindex transposing cues +@cindex cues, transposing +@cindex cue notes, transposing + +@funindex \cueDuring +@funindex cueDuring +@funindex \transposedCueDuring +@funindex transposedCueDuring -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: +The previous section deals with inserting notes from another +voice. There is a more advanced music function called +@code{\cueDuring}, which makes formatting cue notes easier. + +The syntax is @example -\cueDuring #@var{partname} #@var{voice} @var{music} + \cueDuring #@var{name} #@var{updown} @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. - -@lilypond[verbatim,quote] -oboe = \relative c'' { - r2 r8 d16 f e g f a - g8 g16 g g2. +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. + + +@lilypond[verbatim,ragged-right] +smaller = { + \set fontSize = #-2 + \override Stem #'length-fraction = #0.8 + \override Beam #'thickness = #0.384 + \override Beam #'length-fraction = #0.8 } -\addQuote "oboe" { \oboe } -\new Voice \relative c'' { - \cueDuring #"oboe" #UP { R1 } - g2 c, +\addQuote clarinet \relative { + R1*20 + r2 r8 c' f f } -@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. +\new Staff \relative << -The name of the cued instrument can be printed by setting the -@code{instrumentCueName} property in the @code{CueVoice} context. + % setup a context for cue notes. + \new Voice = "cue" { \smaller \skip 1*21 } -@lilypond[verbatim,quote] -oboe = \relative c''' { - g4 r8 e16 f e4 d -} -\addQuote "oboe" { \oboe } + \set Score.skipBars = ##t -\new Staff \relative c'' << - \new CueVoice \with { - instrumentCueName = "ob." - } \new Voice { - \cueDuring #"oboe" #UP { R1 } - g4. b8 d2 + R1*20 + \cueDuring #"clarinet" #UP { + R1 + } + g4 g2. } >> @end lilypond -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. +Here are a couple of hints for successful cue notes: -@lilypond[verbatim,quote] -flute = \relative c''' { - r2 cis2 r2 dis2 -} -\addQuote "flute" { \flute } +@itemize +@item +Cue notes have smaller font sizes. -\new Voice \relative c'' { - \killCues { - \cueDuring #"flute" #UP { R1 } - g4. b8 d2 - } -} -@end lilypond +@item +The cued part is marked with the instrument playing the cue. -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}. +@item +When the original part takes over again, this should be marked +with the name of the original instrument. -@lilypond[verbatim,quote] -piccolo = \relative c''' { +@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 macro @code{\transposedCueDuring} is useful to add cues to +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] +picc = \relative c''' { \clef "treble^8" - R1 - c8 c c e g2 - a4 g g2 + R1 | + c8 c c e g2 | + a4 g g2 | } -\addQuote "piccolo" { \piccolo } +\addQuote "picc" { \picc } -cbassoon = \relative c, { +cbsn = \relative c, { \clef "bass_8" c4 r g r - \transposedCueDuring #"piccolo" #UP c,, { R1 } - c4 r g r + \transposedCueDuring #"picc" #UP c,, { R1 } | + c4 r g r | } << - \new Staff = "piccolo" \piccolo - \new Staff = "cbassoon" \cbassoon + \context Staff = "picc" \picc + \context Staff = "cbsn" \cbsn >> @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 names}, -@ref{Using tags}. - -Snippets: -@rlsr{Staff notation}. -Internals Reference: -@rinternals{CueVoice}, -@rinternals{Voice}. +Snippets: @lsrdir{staff}. +Internals Reference: @internalsref{Voice}. -@knownissues -Collisions can occur with rests, when using @code{\cueDuring}, -between @code{Voice} and @code{CueVoice} contexts. -- 2.39.2