]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/staff.itely
Doc: NR - using \unfoldRepeat with \addQuote
[lilypond.git] / Documentation / notation / staff.itely
index bb59664769fd0a5e1b406e71f8016482eb4f521e..db5d5ebab8fe0508986554f4d553e4af4bdb0818 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.2"
+@c \version "2.19.21"
 
 @node Staff notation
 @section Staff notation
@@ -73,8 +73,8 @@ the @code{\new} or @code{\context} commands.  For details, see
 
 The basic staff context is @code{Staff}:
 
-@lilypond[verbatim,quote,relative=2]
-\new Staff { c4 d e f }
+@lilypond[verbatim,quote]
+\new Staff \relative { c''4 d e f }
 @end lilypond
 
 The @code{DrumStaff} context creates a five-line staff set up for
@@ -93,15 +93,15 @@ For details, see @ref{Percussion staves}.
 displays the rhythmic values of the input.  Real durations are
 preserved.  For details, see @ref{Showing melody rhythms}.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \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 }
+@lilypond[verbatim,quote]
+\new TabStaff \relative { c''4 d e f }
 @end lilypond
 
 There are two staff contexts specific for the notation of ancient
@@ -111,8 +111,8 @@ 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 }
+@lilypond[verbatim,quote]
+\new GregorianTranscriptionStaff \relative { c''4 d e f e d }
 @end lilypond
 
 New single staff contexts may be defined.  For details, see
@@ -174,40 +174,40 @@ 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.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 <<
-  \new Staff { c1 c }
-  \new Staff { c1 c }
+  \new Staff \relative { c''1 c }
+  \new Staff \relative { c''1 c }
 >>
 @end lilypond
 
 In the @code{StaffGroup} context, the group is started with a
 bracket and bar lines are drawn through all the staves.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new StaffGroup <<
-  \new Staff { c1 c }
-  \new Staff { c1 c }
+  \new Staff \relative { c''1 c }
+  \new Staff \relative { c''1 c }
 >>
 @end lilypond
 
 In a @code{ChoirStaff}, the group starts with a bracket, but bar
 lines are not connected.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new ChoirStaff <<
-  \new Staff { c1 c }
-  \new Staff { c1 c }
+  \new Staff \relative { c''1 c }
+  \new Staff \relative { c''1 c }
 >>
 @end lilypond
 
 In a @code{GrandStaff}, the group begins with a brace, and bar
 lines are connected between the staves.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new GrandStaff <<
-  \new Staff { c1 c }
-  \new Staff { c1 c }
+  \new Staff \relative { c''1 c }
+  \new Staff \relative { c''1 c }
 >>
 @end lilypond
 
@@ -215,11 +215,11 @@ The @code{PianoStaff} is identical to a @code{GrandStaff}, except
 that it supports printing the instrument name directly.  For
 details, see @ref{Instrument names}.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new PianoStaff <<
   \set PianoStaff.instrumentName = #"Piano"
-  \new Staff { c1 c }
-  \new Staff { c1 c }
+  \new Staff \relative { c''1 c }
+  \new Staff \relative { \clef bass c1 c }
 >>
 @end lilypond
 
@@ -290,17 +290,17 @@ 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]
+@lilypond[verbatim,quote]
 \new StaffGroup <<
-  \new Staff { c2 c | c2 c }
+  \new Staff \relative { c''2 c | c2 c }
   \new StaffGroup <<
-    \new Staff { g2 g | g2 g }
+    \new Staff \relative { g'2 g | g2 g }
     \new StaffGroup \with {
       systemStartDelimiter = #'SystemStartSquare
     }
     <<
-      \new Staff { e2 e | e2 e }
-      \new Staff { c2 c | c2 c }
+      \new Staff \relative { e'2 e | e2 e }
+      \new Staff \relative { c'2 c | c2 c }
     >>
   >>
 >>
@@ -350,15 +350,15 @@ turned on with a @code{\paper} option.
   \score {
     \new StaffGroup <<
       \new Staff {
-        \relative c'' {
-          c4 c c c
+        \relative {
+          c''4 c c c
           \break
           c4 c c c
         }
       }
       \new Staff {
-        \relative c'' {
-          c4 c c c
+        \relative {
+          c''4 c c c
           \break
           c4 c c c
         }
@@ -417,10 +417,12 @@ The @code{\stopStaff} and @code{\startStaff} commands can be used to
 stop or (re)start the staff lines respectively, from being printed at
 any point witin a score.
 
-@lilypond[verbatim,quote,relative=2]
-\stopStaff f4 d \startStaff g, e
-f'4 d \stopStaff g, e
-f'4 d \startStaff g, e
+@lilypond[verbatim,quote]
+\relative {
+  \stopStaff f''4 d \startStaff g, e
+  f'4 d \stopStaff g, e
+  f'4 d \startStaff g, e
+}
 @end lilypond
 
 @predefined
@@ -434,14 +436,16 @@ these modifications must be made before the staff is (re)started.
 
 The number of staff lines can be altered:
 
-@lilypond[verbatim,quote,relative=2]
-f4 d \stopStaff
-\override Staff.StaffSymbol.line-count = #2
-\startStaff g, e |
-
-f'4 d \stopStaff
-\revert Staff.StaffSymbol.line-count
-\startStaff g, e |
+@lilypond[verbatim,quote]
+\relative {
+  f''4 d \stopStaff
+  \override Staff.StaffSymbol.line-count = #2
+  \startStaff g, e |
+
+  f'4 d \stopStaff
+  \revert Staff.StaffSymbol.line-count
+  \startStaff g, e |
+}
 @end lilypond
 
 The position of each staff line can also be altered.  A list of
@@ -451,13 +455,15 @@ center line, and the normal line positions are
 printed for every value entered so that the number of staff lines, as
 well as their position, can be changed with a single override.
 
-@lilypond[verbatim,quote,relative=2]
-f4 d \stopStaff
-\override Staff.StaffSymbol.line-positions = #'(1 3 5 -1 -3)
-\startStaff g, e |
-f'4 d \stopStaff
-\override Staff.StaffSymbol.line-positions = #'(8 6.5 -6 -8 -0.5)
-\startStaff g, e
+@lilypond[verbatim,quote]
+\relative {
+  f''4 d \stopStaff
+  \override Staff.StaffSymbol.line-positions = #'(1 3 5 -1 -3)
+  \startStaff g, e |
+  f'4 d \stopStaff
+  \override Staff.StaffSymbol.line-positions = #'(8 6.5 -6 -8 -0.5)
+  \startStaff g, e |
+}
 @end lilypond
 
 To preserve typical stem directions (in the bottom half of the staff
@@ -470,22 +476,24 @@ lines.  See @ref{Clef}.
 Staff line thickness can be altered.  Ledger lines and note stems, by
 default, are also affected.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new Staff \with {
   \override StaffSymbol.thickness = #3
+} \relative {
+  f''4 d g, e
 }
-{ f4 d g, e }
 @end lilypond
 
 It is also possible to set ledger line thickness independently of staff
 lines.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new Staff \with {
   \override StaffSymbol.thickness = #2
   \override StaffSymbol.ledger-line-thickness = #'(0.5 . 0.4)
+} \relative {
+  f'''4 a, a,, f
 }
-{ f'4 a, a,, f }
 @end lilypond
 
 @noindent
@@ -495,22 +503,24 @@ new thickness of the ledger line.
 
 The vertical positions of ledger lines can be altered,
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new Staff \with {
   \override StaffSymbol.ledger-positions = #'(-3 -2 -1 2 5 6)
+} \relative {
+  f'''4 a, a,, f
 }
-{ f'4 a, a,, f }
 @end lilypond
 
 Additional ledger lines can be made to appear above or below note heads
 depending on the current position relative to other note heads that
 also have their own ledger lines.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new Staff \with {
   \override StaffSymbol.ledger-extra = #4
+} \relative {
+  f'''4 a, d, f,
 }
-{ f'4 a, d, f, }
 @end lilypond
 
 Ledger lines can also be made to appear inside the staff where custom
@@ -519,23 +529,26 @@ ledger lines when the explicit @code{ledger-position} is and is not set.
 The @code{\stopStaff} is needed in the example to revert the
 @code{\override} for the whole @code{StaffSymbol}.
 
-@lilypond[verbatim,quote,relative=1]
-\override Staff.StaffSymbol.line-positions = #'(-8 0 2 4)
-d4 e f g
-\stopStaff
-\startStaff
-\override Staff.StaffSymbol.ledger-positions = #'(-8 -6 (-4 -2) 0)
-d4 e f g
+@lilypond[verbatim,quote]
+\relative d' {
+  \override Staff.StaffSymbol.line-positions = #'(-8 0 2 4)
+  d4 e f g
+  \stopStaff
+  \startStaff
+  \override Staff.StaffSymbol.ledger-positions = #'(-8 -6 (-4 -2) 0)
+  d4 e f g
+}
 @end lilypond
 
 The distance between staff lines can be altered.  This affects ledger
 line spacing as well.
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new Staff \with {
   \override StaffSymbol.staff-space = #1.5
+} \relative {
+  f'''4 d, g, e,
 }
-{ f'4 d, g, e, }
 @end lilypond
 
 @snippets
@@ -577,8 +590,8 @@ Internals Reference:
 staff in the appropriate location:
 
 @lilypond[verbatim,quote]
-\new Staff \relative c'' {
-  c4 b d c
+\new Staff \relative {
+  c''4 b d c
   <<
     { c4 b d c }
     \new Staff { e4 d f e }
@@ -600,8 +613,8 @@ 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
+\new Staff = "main" \relative {
+  c''4 b d c
   <<
     { c4 b d c }
 
@@ -634,8 +647,8 @@ example.
   }
   { \stopStaff s1*6 }
 
-  \new Staff \relative c' {
-    c4 b c2
+  \new Staff \relative {
+    c'4 b c2
     <<
       { e4 f e2 }
       \context Staff = "ossia" {
@@ -668,12 +681,12 @@ break.  For more information about
     \remove "Time_signature_engraver"
     \hide Clef
     \magnifyStaff #2/3
-  } \relative c'' {
+  } \relative {
     R1*3
-    c4 e8 d c2
+    c''4 e8 d c2
   }
-  \new Staff \relative c' {
-    c4 b c2
+  \new Staff \relative {
+    c'4 b c2
     e4 f e2
     g4 a g2 \break
     c4 b c2
@@ -741,7 +754,7 @@ alternative, @code{\stopStaff} may be used.
 \new Staff \with {
   \remove "Staff_symbol_engraver"
 }
-\relative c''' { a8 f e16 d c b a2 }
+\relative { a''8 f e16 d c b a2 }
 @end lilypond
 
 
@@ -762,9 +775,9 @@ elements.}
   }
 }
 
-\relative c' <<
+\relative <<
   \new Staff {
-    e4 f g a \break
+    e'4 f g a \break
     b1 \break
     a4 b c2
   }
@@ -872,27 +885,29 @@ 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.
 
-@lilypond[verbatim,quote,ragged-right,relative=1]
+@lilypond[verbatim,quote,ragged-right]
 \new Staff \with {
   instrumentName = #"Violin "
   shortInstrumentName = #"Vln. "
+} \relative {
+  c'4.. g'16 c4.. g'16 \break | c1 |
 }
-{ c4.. g'16 c4.. g'16 \break | c1 }
 @end lilypond
 
 @cindex instrument names, complex
 
 @code{\markup} can be used to create more complex instrument names:
 
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote]
 \new Staff \with {
   instrumentName = \markup {
     \column { "Clarinetti"
       \line { "in B" \smaller \flat }
     }
   }
+} \relative {
+  c''4 c,16 d e f g2
 }
-{ c4 c,16 d e f g2 }
 @end lilypond
 
 @cindex instrument names, centering
@@ -901,20 +916,20 @@ 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]
+@lilypond[verbatim,quote,indent=1.5\cm]
 <<
   \new Staff \with {
     instrumentName = #"Flute"
-  }
-  { f2 g4 f }
+  } \relative {
+    f''2 g4 f
+}
   \new Staff \with {
     instrumentName = \markup {
       \center-column { "Clarinet"
         \line { "in B" \smaller \flat }
       }
     }
-  }
-  { c4 b c2 }
+  } \relative { c''4 b c2 }
 >>
 @end lilypond
 
@@ -927,26 +942,22 @@ staff group may not be centered unless the @code{indent} and
 settings, see @ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents}.
 
 @lilypond[verbatim,quote,ragged-right]
-\relative c'' {
-  <<
-    \new Staff \with {
-      instrumentName = #"Alto Flute in G"
-      shortInstrumentName = #"Flt."
-    }
-    {
-      f2 g4 f \break
-      g4 f g2
-    }
-    \new Staff \with {
-      instrumentName = #"Clarinet"
-      shortInstrumentName = #"Clar."
-    }
-    {
-      c,4 b c2 \break
-      c2 b4 c
-    }
-  >>
-}
+<<
+  \new Staff \with {
+    instrumentName = #"Alto Flute in G"
+    shortInstrumentName = #"Flt."
+  } \relative {
+    f''2 g4 f \break
+    g4 f g2
+  }
+  \new Staff \with {
+    instrumentName = #"Clarinet"
+    shortInstrumentName = #"Clar."
+  } \relative {
+    c''4 b c2 \break
+    c2 b4 c
+  }
+>>
 
 \layout {
   indent = 3.0\cm
@@ -994,8 +1005,8 @@ setFlute = {
   shortInstrumentName = #"Flt."
   midiInstrument = #"flute"
 }
-\relative c'' {
-  g1 g g g \break
+\relative {
+  g'1 g g g \break
   g1 g \prepPiccolo R R \break
   \setPiccolo
   g1 g g g \break
@@ -1050,12 +1061,12 @@ quoted voice, as defined with @code{\addQuote}, and a music expression
 for the duration of the quote.
 
 @lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
-  a4 gis g gis | b4^"quoted" r8 ais\p a4( f)
+fluteNotes = \relative {
+  a'4 gis g gis | b4^"quoted" r8 ais\p a4( f)
 }
 
-oboeNotes = \relative c'' {
-  c4 cis c b \quoteDuring #"flute" { s1 }
+oboeNotes = \relative {
+  c''4 cis c b \quoteDuring #"flute" { s1 }
 }
 
 \addQuote "flute" { \fluteNotes }
@@ -1073,12 +1084,12 @@ instead of spacer or multimeasure rests then the quote will appear as
 polyphony and may produce unexpected results.
 
 @lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
-  a4 gis g gis | b4^"quoted" r8 ais\p a4( f)
+fluteNotes = \relative {
+  a'4 gis g gis | b4^"quoted" r8 ais\p a4( f)
 }
 
-oboeNotes = \relative c'' {
-  c4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a }
+oboeNotes = \relative {
+  c''4 cis c b \quoteDuring #"flute" { e4 r8 ais b4 a }
 }
 
 \addQuote "flute" { \fluteNotes }
@@ -1091,6 +1102,41 @@ oboeNotes = \relative c'' {
 }
 @end lilypond
 
+If an @code{\unfoldRepeat} command in a music expression is required to
+be printed when using @code{\quoteDuring}, then it too must also contain
+its own @code{\unfoldRepeat} command;
+
+@lilypond[verbatim,quote]
+fluteNotes = \relative {
+  \repeat volta 2 { a'4 gis g gis }
+}
+
+oboeNotesDW = \relative {
+  \repeat volta 2 \quoteDuring #"incorrect" { s1 }
+}
+
+oboeNotesW = \relative {
+  \repeat volta 2 \quoteDuring #"correct" { s1 }
+}
+
+
+\addQuote "incorrect" { \fluteNotes }
+
+\addQuote "correct" { \unfoldRepeats \fluteNotes }
+
+\score {
+  \unfoldRepeats
+  <<
+    \new Staff \with { instrumentName = "Flute" }
+    \fluteNotes
+    \new Staff \with { instrumentName = "Oboe (incorrect)" }
+    \oboeNotesDW
+    \new Staff \with { instrumentName = "Oboe (correct)" }
+    \oboeNotesW
+  >>
+}
+@end lilypond
+
 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.
@@ -1102,8 +1148,8 @@ clarinetNotes = \relative c'' {
   b4 ais a ais | cis4^"quoted" r8 bis\p b4( f)
 }
 
-oboeNotes = \relative c'' {
-  c4 cis c b \quoteDuring #"clarinet" { s1 }
+oboeNotes = \relative {
+  c''4 cis c b \quoteDuring #"clarinet" { s1 }
 }
 
 \addQuote "clarinet" { \clarinetNotes }
@@ -1133,13 +1179,13 @@ of these objects from the quoted music are displayed by using the
 @code{quotedEventTypes} context property.
 
 @lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
-  a2 g2 |
+fluteNotes = \relative {
+  a'2 g2 |
   b4\<^"quoted" r8 ais a4\f( c->)
  }
 
-oboeNotes = \relative c'' {
-  c2. b4 |
+oboeNotes = \relative {
+  c''2. b4 |
   \quoteDuring #"flute" { s1 }
 }
 
@@ -1209,15 +1255,17 @@ triplets may result in poor notation.
 The simplest way to format cue notes is to explicitly create a
 @code{CueVoice} context within the part.
 
-@lilypond[verbatim,relative=1]
-R1
-<<
-  { e2\rest r4. e8 }
-  \new CueVoice {
-    \stemUp d'8^"flute" c d e fis2
-  }
->>
-d,4 r a r
+@lilypond[verbatim]
+\relative {
+  R1
+  <<
+    { e'2\rest r4. e8 }
+    \new CueVoice {
+      \stemUp d'8^"flute" c d e fis2
+    }
+  >>
+  d,4 r a r
+}
 @end lilypond
 
 The @code{\cueClef} command can also be used with an explict
@@ -1226,28 +1274,32 @@ an appropriately sized clef for the cue notes.  The @code{\cueClefUnset}
 command can then be used to switch back to the original clef, again with
 an appropriately sized clef.
 
-@lilypond[verbatim,noragged-right,relative=1]
-\clef "bass"
-R1
-<<
-  { e2\rest r4. \cueClefUnset e,8 }
-  \new CueVoice {
-    \cueClef "treble" \stemUp d''8^"flute" c d e fis2
-  }
->>
-d,,4 r a r
+@lilypond[verbatim,noragged-right]
+\relative {
+  \clef "bass"
+  R1
+  <<
+    { e'2\rest r4. \cueClefUnset e,8 }
+    \new CueVoice {
+      \cueClef "treble" \stemUp d''8^"flute" c d e fis2
+    }
+  >>
+  d,,4 r a r
+}
 @end lilypond
 
 The @code{\cueClef} and @code{\cueClefUnset} command can also be used
 without a @code{CueVoice} if required.
 
-@lilypond[verbatim,noragged-right,relative=1]
-\clef "bass"
-R1
-\cueClef "treble"
-d'8^"flute" c d e fis2
-\cueClefUnset
-d,,4 r a r
+@lilypond[verbatim,noragged-right]
+\relative {
+  \clef "bass"
+  R1
+  \cueClef "treble"
+  d''8^"flute" c d e fis2
+  \cueClefUnset
+  d,,4 r a r
+}
 @end lilypond
 
 For more complex cue note placement, e.g including transposition, or
@@ -1276,8 +1328,8 @@ corresponds to the first and second voices respectively, determining how
 the cue notes are printed in relation to the other voice.
 
 @lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
-  r2. c4 | d8 c d e fis2 | g2 d |
+fluteNotes = \relative {
+  r2. c''4 | d8 c d e fis2 | g2 d |
 }
 
 oboeNotes = \relative c'' {
@@ -1310,8 +1362,8 @@ or else the entire music expression would belong to the @code{CueVoice}
 context.}
 
 @lilypond[verbatim,quote]
-oboeNotes = \relative c'' {
-  r2 r8 d16(\f f e g f a)
+oboeNotes = \relative {
+  r2 r8 d''16(\f f e g f a)
   g8 g16 g g2.
 }
 \addQuote "oboe" { \oboeNotes }
@@ -1331,8 +1383,8 @@ this can be done manually but the original clef should also be
 restored manually at the end of the cue notes.
 
 @lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
-  r2. c4 d8 c d e fis2 g2 d2
+fluteNotes = \relative {
+  r2. c''4 d8 c d e fis2 g2 d2
 }
 
 bassoonNotes = \relative c {
@@ -1358,8 +1410,8 @@ clef that needs to be printed for the cue notes but will automatically
 print the original clef once the cue notes have finished.
 
 @lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
-  r2. c4 d8 c d e fis2 g2 d2
+fluteNotes = \relative {
+  r2. c''4 d8 c d e fis2 g2 d2
 }
 
 bassoonNotes = \relative c {
@@ -1392,10 +1444,10 @@ 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]
-piccoloNotes = \relative c''' {
+piccoloNotes = \relative {
   \clef "treble^8"
   R1
-  c8 c c e g2
+  c'''8 c c e g2
   c4 g g2
 }
 
@@ -1430,8 +1482,8 @@ changes and a label identifying the source instrument, can be
 tagged for selective inclusion in the score; see @ref{Using tags}.
 
 @lilypond[verbatim,quote]
-fluteNotes = \relative c'' {
-  r2. c4 d8 c d e fis2 g2 d2
+fluteNotes = \relative {
+  r2. c''4 d8 c d e fis2 g2 d2
 }
 
 bassoonNotes = \relative c {