]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/learning/fundamental.itely
Issue 3687 (part 2): Amend docs to use \compressMMRests
[lilypond.git] / Documentation / learning / fundamental.itely
index b8f001b3a282937f642510675e6e19666832f67f..d86134e9ea8388367a82d533cd45fd75f44fcc2c 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.29"
+@c \version "2.19.20"
 
 @node Fundamental concepts
 @chapter Fundamental concepts
@@ -125,10 +125,9 @@ advisable to always create staves and voices explicitly.}
 For now, though, let us return to the first example and examine the
 @code{\score} command, leaving the others to default.
 
-A @code{\score} block must always contain just one music expression,
-and this must appear immediately after the @code{\score} command.
-Remember that a music expression could be anything from a single
-note to a huge compound expression like
+A @code{\score} block must always contain exactly one music
+expression.  Remember that a music expression could be anything
+from a single note to a huge compound expression like
 
 @example
 @{
@@ -269,11 +268,11 @@ We didn't skip over it at all.  The big mystery is simply that
 there @emph{is} no mystery.  This line explains it all:
 
 @quotation
-@emph{A @code{\score} block must begin with a compound music expression.}
+@emph{A @code{\score} block must contain exactly one music expression.}
 @end quotation
 
 @noindent
-To understand what is meant by a music expression and a compound
+To understand what is meant by a
 music expression, you may find it useful to review the tutorial,
 @ref{Music expressions explained}.  In that section, we saw how to
 build big music expressions from small pieces -- we started from
@@ -684,7 +683,7 @@ of slurs, stems, ties, dynamics etc., is set appropriately.
   c16 d e f
   %    Voice "1"     Voice "2"                Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >> |
-  << { d2 e }   \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
 }
 @end lilypond
 
@@ -722,7 +721,7 @@ blue triangle voice.
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -802,7 +801,7 @@ later sections.
   \\  % Voice two
     {
       % Ignore these for now - they are explained in Ch 4
-      \once \override NoteColumn.ignore-collision = ##t
+      \once \override NoteColumn.force-hshift = #0
       <ees, c>2
       \once \override NoteColumn.force-hshift = #0.5
       des2
@@ -852,7 +851,7 @@ not understand.
   \\  % Voice two
     { \voiceTwoStyle
       % Ignore these for now - they are explained in Ch 4
-      \once \override NoteColumn.ignore-collision = ##t
+      \once \override NoteColumn.force-hshift = #0
       <ees, c>2
       \once \override NoteColumn.force-hshift = #0.5
       des2
@@ -1005,25 +1004,25 @@ markup, ties, slurs, and dynamics:
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1051,7 +1050,7 @@ permitting a phrasing slur to be drawn over them.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1082,7 +1081,7 @@ typeset the music:
       \voiceTwo
       r8 e4 d c8~ |
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b c2 |
@@ -1113,7 +1112,7 @@ as here:
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1130,7 +1129,7 @@ as here:
 @cindex note collisions
 @cindex collisions, notes
 @cindex shift commands
-@funindex \shiftOff
+@funindex \undo\shiftOn
 @funindex shiftOff
 @funindex \shiftOn
 @funindex shiftOn
@@ -1151,10 +1150,10 @@ final chord the C in voice three is also shifted to the right
 relative to the other notes.
 
 The @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, and
-@code{\shiftOff} commands specify the degree to which notes and
+@code{\undo\shiftOn} commands specify the degree to which notes and
 chords of the voice should be shifted if a collision
 would otherwise occur.  By default, the outer voices (normally
-voices one and two) have @code{\shiftOff} specified, while the
+voices one and two) have @code{\undo\shiftOn} specified, while the
 inner voices (three and four) have @code{\shiftOn} specified.
 When a shift is applied, voices one and three are shifted to
 the right and voices two and four to the left.
@@ -1168,11 +1167,16 @@ with stems up and one note (or chord) from a voice with stems
 down.  If notes from two voices which have their stems in the
 same direction are placed at the same position and both voices
 have no shift or the same shift specified, the error message
-@qq{Too many clashing note columns} will be produced.
+@qq{This voice needs a @code{@bs{}voiceXx} or @code{@bs{}shiftXx} setting}
+will be produced.
 
 
 @seealso
-Notation Reference: @ruser{Multiple voices}.
+Learning Manual:
+@ref{Moving objects}.
+
+Notation Reference:
+@ruser{Multiple voices}.
 
 
 @node Voices and vocals
@@ -1246,7 +1250,7 @@ rather than music.
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -2435,7 +2439,15 @@ lower = \relative c, {
 }
 @end lilypond
 
-None of the templates provides this layout exactly.  The nearest is
+@warning{This layout can be achieved very easily using the built-in
+template: @code{satb.ly}, see @ref{Built-in templates}.  But for ease
+of use this template deliberately hides the necessary context
+structure, instead providing it automatically.  So for purposes of
+learning let us see how to build this up from scratch.  You may need
+to do this if the built-in template does not meet your needs
+adequately.}
+
+The nearest copy-and-edit template to this layout is
 @ref{SATB vocal score and automatic piano reduction} -- but we need
 to change the layout and add a piano
 accompaniment which is not derived automatically from the vocal parts.
@@ -2911,15 +2923,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d ees8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
@@ -3002,11 +3014,11 @@ violin = \new Staff {
 However, you can also use these variables (also known as
 macros, or user-defined commands) for tweaks:
 
-@c TODO Avoid padtext - not needed with skylining
 @lilypond[quote,verbatim,ragged-right]
 dolce = \markup { \italic \bold dolce }
 
-padText = { \once \override TextScript.padding = #5.0 }
+centreText = { \once \override TextScript.self-alignment-X = #CENTER }
+
 fthenp =_\markup {
   \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
 }
@@ -3014,9 +3026,9 @@ fthenp =_\markup {
 violin = \relative c'' {
   \repeat volta 2 {
     c4._\dolce b8 a8 g a b |
-    \padText
-    c4.^"hi there!" d8 e' f g d |
-    c,4.\fthenp b8 c4 c-. |
+    \centreText
+    c4.^"hi there!" d8 e f g d |
+    c4.\fthenp b8 c4 c-. |
   }
 }
 
@@ -3024,7 +3036,6 @@ violin = \relative c'' {
   {
     \violin
   }
-  \layout { ragged-right = ##t }
 }
 @end lilypond
 
@@ -3039,9 +3050,9 @@ the last line.
 violin = \relative c'' @{
   \repeat volta 2 @{
     c4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
-    \once \override TextScript.padding = #5.0
-    c4.^"hi there!" d8 e' f g d |
-    c,4.\markup @{
+    \once \override TextScript.self-alignment-X = #CENTER
+    c4.^"hi there!" d8 e f g d |
+    c4._\markup @{
       \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p
     @}
     b8 c4 c-. |
@@ -3049,13 +3060,10 @@ violin = \relative c'' @{
 @}
 @end example
 
-@c TODO Replace the following with a better example  -td
-@c Skylining handles this correctly without padText
-
 So far we've seen static substitution -- when LilyPond
-sees @code{\padText}, it replaces it with the stuff that
+sees @code{\centreText}, it replaces it with the stuff that
 we've defined it to be (ie the stuff to the right of
-@code{padtext=}).
+@code{centreText=}).
 
 LilyPond can handle non-static substitution, too (you
 can think of these as functions).
@@ -3069,12 +3077,12 @@ padText =
      \once \override TextScript.padding = #padding
    #})
 
-\relative c''' {
-  c4^"piu mosso" b a b |
+\relative c'' {
+  c4^"piu mosso" b a b
   \padText #1.8
-  c4^"piu mosso" d e f |
+  c4^"piu mosso" b a b
   \padText #2.6
-  c4^"piu mosso" fis a g |
+  c4^"piu mosso" b a b
 }
 @end lilypond
 
@@ -3156,22 +3164,18 @@ takes 3@tie{}measures in 2/4 time
 R2*3
 @end example
 
-When printing the part, multi-rests
-must be condensed.  This is done by setting a run-time variable
+When printing the part, multi-measure rests must be compressed.  There
+is a music function available to do this:
 
 @example
-\set Score.skipBars = ##t
+\compressMMRests @{ ... @}
 @end example
 
-@noindent
-This command sets the property @code{skipBars} in the
-@code{Score} context to true (@code{##t}).  Prepending the rest and
-this option to the music above, leads to the following result
+Applying this to @code{hornNotes} gives:
 
 @lilypond[quote,ragged-right]
-\transpose f c' \relative c {
+\compressMMRests \transpose f c' \relative c {
   \time 2/4
-  \set Score.skipBars = ##t
   R2*3 |
   r4 f8 a | cis4 f | e4 d |
 }
@@ -3212,5 +3216,13 @@ leading to
 >>
 @end lilypond
 
+@seealso
+Learning Manual:
+@ref{Organizing pieces with variables}.
 
+Notation Reference:
+@ruser{Transpose},
+@ruser{Writing parts},
+@ruser{Full measure rests},
+@ruser{Including LilyPond files}.