]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/tutorial.itely
patch::: 1.5.4.jcn3
[lilypond.git] / Documentation / user / tutorial.itely
index 241034151bb44072f95255c6ae65139b505f3825..1599e9c98c521908ef8c6f256028976933a1a96c 100644 (file)
@@ -10,7 +10,7 @@
 * First steps::                 Music language of LilyPond
 * Simple legend::               Small table of music language symbols
 * Running LilyPond::            Printing music
-* The first tune::              The first tune
+* The first real tune::         The first real tune
 * Lyrics and chords::           Lyrics and chords
 * More movements ::             Joining separate pieces of music
 * A piano excerpt::             Piano music
@@ -34,7 +34,7 @@ language.  After this first contact, we will show you how to run
 LilyPond to produce printed output; you should then be able to create
 your first sheets of music.
 
-The tutorial continues with a bit more elaborate example of real music.
+The tutorial continues with a slightly more elaborate example of real music.
 This piece introduces and explains some finer details of LilyPond.
 Then, a number of more complex examples follow, that will help you to
 produce most complex music with LilyPond.
@@ -75,7 +75,7 @@ c d e f g a b
 @separate
 
 The length of a note is specified by adding a number, ``@code{1}'' for a
-whole note, ``@code{2}'' for a halve note, and so on:
+whole note, ``@code{2}'' for a half note, and so on:
 
 @quotation
 @example
@@ -383,7 +383,7 @@ To use relative mode, add @code{\relative} before the piece of music.
 You must also give a note from which relative starts, in this case
 @code{c''}.
 
-@c In relative ocatave mode, quotes are used to mark large jumps in the
+@c In relative octave mode, quotes are used to mark large jumps in the
 @c melody.  Without any quotes or commas, the interval between a note and
 @c its predecessor is assumed to be a fourth or less.  Quotes and commas
 @c add octaves in up and down direction.
@@ -414,7 +414,7 @@ For example: @code{c f} goes up; @code{c g} goes down:
 @c grappig: Pa vond het heel logies, en slim toen-i eenmaal begreep.
 @c in eerste instantie drong het `relative' niet door zonder extra uitleg.
 You can make a large interval by adding octaviation quotes.  Note that
-quotes or commas do not determine the absolote height of a note;
+quotes or commas do not determine the absolute height of a note;
 the height of a note is relative to the previous one.
 @c don't use commas or quotes in this sentence
 For example: @code{c f,} goes down; @code{f, f} are both the same;
@@ -471,8 +471,9 @@ and @code{]}:
 @separate
 
 To print more than one staff, each piece of music that makes up a staff
-is marked by adding @code{\context Staff} before it.  These staffs can
-be grouped inside @code{<} and @code{>}, as is demonstrated here:
+is marked by adding @code{\context Staff} before it.  These
+@code{Staff}'s can be grouped inside @code{<} and @code{>}, as is
+demonstrated here:
 
 @quotation
 @lilypond[fragment,verbatim]
@@ -484,12 +485,12 @@ be grouped inside @code{<} and @code{>}, as is demonstrated here:
 @end quotation
 
 In this example, @code{staffA} and @code{staffB} are names that are
-given to the staffs.  For now, it doesn't matter what names you give, as
+given to the staves.  For now, it doesn't matter what names you give, as
 long as each staff has a unique name.
 
 @separate
 
-We can typeset a melody with two staffs now:
+We can typeset a melody with two staves now:
 
 @quotation
 @lilypond[verbatim]
@@ -513,7 +514,7 @@ We can typeset a melody with two staffs now:
 
 Notice that the time signature is specified in one melody staff only
 (the top staff), but is printed on both.  LilyPond knows that the time
-signature should be the same for all staffs.
+signature should be the same for all staves.
 
 @separate
 
@@ -534,7 +535,7 @@ c-\ff c-\mf
 @separate
 
 Crescendi are started with the commands @code{\<}  and @code{\>}. The
-command @code{\!} finishes a crescendo on the following.
+command @code{\!} finishes a crescendo on the following note.
 @quotation
 @lilypond[verbatim,relative 1]
 c2\<  \!c2-\ff  \>c2  \!c2
@@ -555,7 +556,7 @@ r4 <c e g> <c f a>
 @c hmm, te losjes, iig
 In general, @code{ < @var{stuff} > } is used when @var{stuff} all
 happens at the same time, like in chords, or (like in the two-staff
-example above) in a bunch of stacked staffs.
+example above) in a bunch of stacked staves.
 @end ignore
 
 Of course, you can combine beams and ties with chords.  Notice that
@@ -643,7 +644,7 @@ fine tuning output, polyphonic music, and integrating text and music.
 @quotation
 @multitable @columnfractions .10 .20 .40
 
-@item @code{[]}
+@item @code{[ ]}
 @tab beam
 @tab
 @lilypond[fragment, relative 1]
@@ -665,7 +666,7 @@ fine tuning output, polyphonic music, and integrating text and music.
 d ~ d
 @end lilypond
 
-@item @code{()}
+@item @code{( )}
 @tab slur
 @tab
 @lilypond[fragment, relative 1]
@@ -697,7 +698,7 @@ a a'
 c c,
 @end lilypond
 
-@item @code{<>}
+@item @code{< >}
 @tab chord
 @tab
 @lilypond[fragment, relative 1]
@@ -839,14 +840,14 @@ You can also print from the command line by executing @code{gsview32 /s
 test.ps}
 
 
-@node The first tune
-@section The first tune
+@node The first real tune
+@section The first real tune
 
 
-This tutorial will demonstrate how to use Lilypond by presenting
-examples of input along with resulting output.  We will use English
-terms for notation.  In case you are not familiar with those, you may
-consult the glossary that is distributed with LilyPond.
+The rest of this tutorial will demonstrate how to use Lilypond by
+presenting examples of input along with resulting output.  We will use
+English terms for notation.  In case you are not familiar with those,
+you may consult the glossary that is distributed with LilyPond.
 
 The examples discussed are included in the distribution, in the
 subdirectory @file{input/tutorial/}@footnote{When we refer to filenames,
@@ -942,12 +943,15 @@ Prepare LilyPond for accepting notes.
  
 @end example
 @cindex relative
-As we will see, each note is described by its note name, duration,
-octave and possibly a chromatic alteration.  In this setup, the octave
-is indicated by using high quotes (@code{'}) and ``lowered quotes''
-(commas: @code{,}).  The central C is denoted by @code{c'}.  The C one
-octave higher is @code{c''}.  One and two octaves below the central C is
-denoted by @code{c} and @code{c,} respectively.
+@c removed duplicate introduction to octave marks /MB
+@c Shorten even more?
+
+@c As we will see, each note is described by its note name, duration,
+@c octave and possibly a chromatic alteration.  In this setup, the octave
+@c is indicated by using high quotes (@code{'}) and ``lowered quotes''
+@c (commas: @code{,}).  The central C is denoted by @code{c'}.  The C one
+@c octave higher is @code{c''}.  One and two octaves below the central C is
+@c denoted by @code{c} and @code{c,} respectively.
 
 Even though a piece of music often spans a range of several octaves, it
 mostly moves in small intervals.  LilyPond has a special entry mode to
@@ -1128,7 +1132,7 @@ staccato as shown above.
  
 @end example 
  
-Rests are denoted by the special notename @code{r}.  
+Rests are denoted by the special note name @code{r}.  
 @separate
 @example 
 
@@ -1147,8 +1151,8 @@ identifier.
         \bar "|."
         @}
 @end example 
-Here the music ends.  LilyPond does not automatically typeset and end
-bar, we must explicitely request one, using @code{"|."}.
+Here the music ends.  LilyPond does not automatically typeset an end
+bar, we must explicitly request one, using @code{"|."}.
 
 @separate
 @example 
@@ -1299,7 +1303,7 @@ information to print titles above the music.
 the @code{\header} block contains assignments.  In each assignment, a
 variable is set to a value. Lexically, both the variable name and the
 assigned value are strings. The values have to be quoted here, because
-they contain spaces, the variable names could also be put within quotes
+they contain spaces. The variable names could also be put within quotes
 but it is not necessary. 
 @separate
 @example 
@@ -1425,7 +1429,7 @@ separated by dots.
  
 @end example
 
-Some modifiers have predefined names, eg. @code{min} is  the same as
+Some modifiers have predefined names, e.g. @code{min} is  the same as
 @code{3-}, so @code{d-min} is a minor @code{d} chord.
 @separate
 @example 
@@ -1512,12 +1516,12 @@ silly.
  
 @end example
 
-The second argument of @code{\addlyrics} is the melody.  We instantiate
+The first argument of @code{\addlyrics} is the melody.  We instantiate
 a @code{Staff} context explicitly: should you choose to remove the
 comment before the ``note heads'' version of the accompaniment, the
 accompaniment will be on a nameless staff.  The melody has to be on
 staff different from the accompaniment.  This is accomplished by giving
-the melody and accompaniment staffs different names.
+the melody and accompaniment staves different names.
 @separate
 @example 
 
@@ -1528,9 +1532,10 @@ the melody and accompaniment staffs different names.
 @cindex context variables
 @cindex setting context variables
 An interpretation context has variables, called properties, that tune
-its behaviour.  One of the variables is @code{noAutoBeaming}.  Setting
-this Staff's property to @code{##t}, which is the boolean value @var{true},
-turns the automatic beaming mechanism off for the current staff.
+its behavior.  One of the variables is @code{noAutoBeaming}.  Setting
+this @code{Staff}'s property to @code{##t}, which is the boolean value
+@var{true}, turns the automatic beaming mechanism off for the current
+staff.
 @cindex GUILE
 @cindex Scheme
 @cindex accessing Scheme
@@ -1591,7 +1596,7 @@ Lyrics.
 @end example 
 MIDI (Musical Instrument Digital Interface) is a standard for
 connecting and recording digital instruments. So a MIDI file is like a
-tape recording of an instrument. The @code{\midi} block causes makes the
+tape recording of an instrument. The @code{\midi} block makes the
 music go to a MIDI file, so you can listen to the music you entered.  It
 is great for checking the music.  Whenever you hear something weird, you
 probably hear a typing error.
@@ -1625,10 +1630,10 @@ The first thing it does, is running LilyPond on the input file. After
 some calculations, a @file{.tex} is produced. The contents
 of this file are very  low-level instructions.
 
-For example, the following file (@file{miniatures.ly}) 
+For example, consider the following file (@file{miniatures.ly}) 
 
 @example
-\version "1.3.124"
+\version "1.4.0"
 \header @{
   title = "Two miniatures"
   tagline = "small is beautiful"
@@ -1653,7 +1658,7 @@ For example, the following file (@file{miniatures.ly})
 @end example
 
 The titling in this manual was not generated by ly2dvi, so we can't
-exactly show it would look, but the result should resemble this:
+exactly show what it would look like, but the result should resemble this:
 
 @center @strong{Two miniatures}
 @flushright
@@ -1692,7 +1697,7 @@ Next, now we'll look at the example line by line to explain new things.
 
 @separate
 @example 
-\version "1.3.124"
+\version "1.4.0"
 @end example 
 Lilypond and its language are still under development, and occasionally,
 details of the syntax are changed. This fragment indicates for which
@@ -1701,7 +1706,7 @@ version number will be checked, and you will get a warning when the file
 is too old.
 
 This version number is also used by the @code{convert-ly} program (See
-@ref{convert-ly}), which uses it to update the file to the latest lily
+@ref{convert-ly}), which is used to update the file to the latest lily
 version.
 
 @separate
@@ -1743,7 +1748,7 @@ note was entered.  For more information, see @ref{Point and click}.
 
 The @code{\score} blocks that follow in the file don't have
 @code{\paper} sections, so the settings of this block are substituted: A
-paper block, at top-level, i.e. not in a @code{\score} block sets the
+paper block at top level, i.e. not in a @code{\score} block sets the
 default page layout.
 
 @separate
@@ -1766,7 +1771,7 @@ little space, a longer phrase more space.
 @end example
 
 In previous examples, notes were specified in relative octaves,
-i.e. each note was put in the octave that would put it closest to its
+i.e. each note was put in the octave that is closest to its
 predecessor. Besides relative, there is also absolute octave
 specification, which you get when you don't specify @code{\relative}. In
 this input mode, the central C is denoted by @code{c'}. Going down, you
@@ -1776,7 +1781,7 @@ get @code{c} @code{c,} @code{c,,} etc.  Going up, you get @code{c''}
 When you're copying music from existing sheet music, relative octaves
 are probably the easiest to use: it's less typing work and errors are
 easily spotted. However, if you write LilyPond input directly, either by
-hand (i.e. composing) or by computer, absolute octaves are easier to use.
+hand (i.e. composing) or by computer, absolute octaves may be easier to use.
 
 
 @separate
@@ -1825,20 +1830,22 @@ viola = \notes \relative c' \context Voice = viola {
 
 oboes = \notes \relative c'' \context Voice = oboe {
     \stemUp s4  g8. b,16 c8 r <e'8.^\p g> <f16 a>
-    \grace <e8( g> <d4 )f> <c2 e>
+    \grace { <e8( g> } <d4 )f> <c2 e>
     \times 2/3 { <d8 \< f> <e g> <f a> }
     <
         { \times 2/3 { a8 g c } \! c2 }
         \context Voice = oboeTwo {
             \stemDown
             \grace {
-                \property Grace.Stem \override #'direction = #-1
-                [f,16 g] }
+                \property Voice.Stem \override #'direction = #-1
+                [f,16 g] 
+                \property Voice.Stem \revert #'direction
+           }
             f8 e e2
         }
     >
     \stemBoth
-    \grace <c,8( e> <)b8. d8.-\trill> <c16 e> | 
+    \grace { <c,8( e> } <)b8. d8.-\trill> <c16 e> | 
     [<d ( f> < )f8. a>] <)b,8 d> r [<d16( f> <f8. )a>] <b,8 d> r  |
     [<c16( e>  < )e8. g>] <c8 e,>
 }
@@ -1892,7 +1899,7 @@ file @file{scm/grob-description.scm}.
   stemDown = \property Voice.Stem \override #'direction = #-1
 @end example
 
-Set a proprerty for all Stem grobs in the current Voice:
+Set a property for all Stem grobs in the current Voice:
 @code{direction} is set to @code{-1}, which encodes down.  The setting
 remains in effect until it is reverted.
 
@@ -1902,7 +1909,7 @@ remains in effect until it is reverted.
 @end example
 
 Revert the to the previous setting.  The effect of precisely one
-@code{\stemDown} or @code{\stemUp} is neutralised.
+@code{\stemDown} or @code{\stemUp} is neutralized.
 
 
 LilyPond includes the identifiers @code{\stemUp}, @code{\stemDown} along
@@ -1917,9 +1924,9 @@ viola = \notes \relative c'  \context Voice = viola @{
 @end example 
 In this example, you can see multiple parts on a staff.  Each part is
 associated with one notation context.  This notation context handles
-stems and dynamics (among others).  The name of this context is
+stems and dynamics (among others).  The type name of this context is
 @code{Voice}.  For each part we have to make sure that there is
-precisely one @code{Voice} context, so we give it an unique name
+precisely one @code{Voice} context, so we give it a unique name
 (`@code{viola}').
 
 @separate
@@ -1983,12 +1990,13 @@ these notes are indeed processed by precisely one context with
 defined above. 
 @separate
 @example 
-\grace <e8 g> < d4 f> <c2 e> 
+\grace { <e8 g> } < d4 f> <c2 e> 
 @end example
 @cindex @code{\grace}
 @cindex ornaments
 @cindex grace notes
 
+[FIXME]
 @code{\grace} introduces grace notes.  It takes one argument, in this
 case a chord.
 
@@ -2049,6 +2057,7 @@ it from the other context.  Stems go down in this voice.
 @example 
 \grace @{  
 @end example
+[FIXME]
 @cindex Grace context
 When a grace section is processed, a @code{Grace} context is
 created. This context acts like a miniature score of its own.  It has
@@ -2058,12 +2067,13 @@ etc. Here we fiddle with a property and make a beam.  The argument of
 
 @separate
 @example 
-\property Grace.Stem \override #'direction = #-1
-[f,16 g] @}
+                \property Voice.Stem \override #'direction = #-1
+                [f,16 g] 
+                \property Voice.Stem \revert #'direction
 @end example 
 
 Normally, grace notes are always stem up, but in this case, the upper
-voice interferes. We set the stems down here.
+voice interferes, so we set the stems down here.
 
 As far as relative mode is concerned, the previous note is the
 @code{c'''2} of the upper voice, so we have to go an octave down for
@@ -2078,7 +2088,7 @@ This ends the two-part section.
 @separate
 @example 
 \stemBoth
-\grace <c,8( e> <)b8. d8.-\trill> <c16 e> |  
+\grace { <c,8( e> } <)b8. d8.-\trill> <c16 e> |  
 @end example
 @cindex trill
 @cindex stemBoth
@@ -2087,7 +2097,7 @@ This ends the two-part section.
 positioned as if it were single part music.
 
 The bass has a little hoom-pah melody to demonstrate parts switching
-between staffs.  Since it is repetitive, we use repeats:
+between staves.  Since it is repetitive, we use repeats:
 @separate
 @example 
 hoomPah  =  \repeat unfold 8
@@ -2102,8 +2112,8 @@ written out in full eight times.
 @cindex transposing
 @cindex relative mode and transposing
 
-Transposing can be done with @code{\transpose}.  It takes two arguments
-the first specifies what central C should be transposed to.  The second
+Transposing can be done with @code{\transpose}, which takes two arguments.
+The first specifies what central C should be transposed to.  The second
 is the to-be-transposed music.  As you can see, in this case, the
 transposition has no effect, as central C stays at central C.
 
@@ -2121,10 +2131,10 @@ c4 g8. b,16
 @cindex cross staff voice, automatic
 @cindex @code{\autochange}
 
-Voices can switch between staffs. The easiest way to get this, is to use
+Voices can switch between staves. The easiest way to get this, is to use
 @code{\autochange}. This command looks at the pitch of each note, and if
 necessary, will cross to the other staff. For this to work, the two
-staffs must be called @code{"up"} and @code{"down"}.
+staves must be called @code{"up"} and @code{"down"}.
 @separate
 @example
         \translator Staff = down
@@ -2260,7 +2270,7 @@ to the end of the piece, and we can set the end bar.
 Key = \notes \key as \major
 @end example
 Declare the key signature of the piece and assign it to the identifier
-@var{Key}.  Lateron, we'll use @code{\Key} for all staffs except those
+@var{Key}.  Later on, we'll use @code{\Key} for all staves except those
 for transposing instruments.
 
 @node The full score
@@ -2331,13 +2341,8 @@ conductor's score.
     indent = 15 * \staffspace
     linewidth = 60 * \staffspace
     textheight = 90 * \staffspace
-    \translator@{
-      \VoiceContext
-      \consists "Multi_measure_rest_engraver"
-    @}
     \translator@{
       \HaraKiriStaffContext
-      \remove "Multi_measure_rest_engraver"
     @}
   @}
   \midi @{
@@ -2383,7 +2388,7 @@ When naming the tuning of the french horn, we'll need a piece of text
 with a flat sign.  LilyPond has a mechanism for font selection and
 kerning called Scheme markup text (See @ref{Text markup}).  The flat
 sign is taken from the music font, and its name is @code{accidentals--1}
-(The sharp sign is called @code{accidentals-+1}).  The default font is
+(The sharp sign is called @code{accidentals-1}).  The default font is
 too big for text, so we select a relative size of @code{-2}.
 
 @separate
@@ -2391,7 +2396,7 @@ too big for text, so we select a relative size of @code{-2}.
   <
     \global
 @end example
-Of course, all staffs are simultaneous and use the same global settings.
+Of course, all staves are simultaneous and use the same global settings.
 
 @separate
 @example
@@ -2405,8 +2410,8 @@ of the properties of a @var{side-position-interface} that can be tweaked
 is the @var{padding}: the amount of extra space that is put between this
 Grob and other Grobs.  We set the padding to three staff spaces.
 
-You can find all this kind of information in LilyPond's automatically
-generated documentation in
+You can find information on all these kind of properties in LilyPond's
+automatically generated documentation in
 @ifnottex
 @ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}.
 @end ifnottex
@@ -2419,11 +2424,11 @@ the online documentation.
     \context StaffGroup = woodwind <
       \context Staff = flauti <
 @end example
-A new notation context: the StaffGroup.  StaffGroup can hold one or more
-Staffs, and will print a big bracket at the left of the score.  Start a
-new staff group for the woodwind section (just the flutes in this case).
-Immediately after that, we start the staff for the two flutes, that also
-play simultaneously.
+A new notation context: the @code{StaffGroup}.  @code{StaffGroup} can
+hold one or more @code{Staff}'s, and will print a big bracket at the
+left of the score.  Start a new staff group for the woodwind section
+(just the flutes in this case).  Immediately after that, we start the
+staff for the two flutes, that also play simultaneously.
 
 @separate
 @example
@@ -2497,8 +2502,11 @@ when they're different.
           (columns "(E" ,text-flat ")"))
 @end example
 The french horn has the most complex scheme markup name, made up of two
-lines of text.  The second line has two elements (columns), the @code{E}
-and the flat sign @code{text-flat} that we defined before.
+lines of text.  The second line has three elements (columns), the @code{(E},
+the flat sign @code{text-flat} that we defined before and a final @code{")"}.
+Note that we use a backquote instead of an ordinary quote at the
+beginning of the Scheme expression to be able to access the
+@code{text-flat} identifier, `unquoting' it with a @code{,}.
 
 @separate
 @example
@@ -2508,7 +2516,7 @@ The french horn is to be tuned in E-flat, so we tell the MIDI backend to
 transpose this staff by three steps.
 
 Note how we can choose different tuning for entering, printing and
-playing, using @code{\transpose} and the MIDI Staff proprerty
+playing, using @code{\transpose} and the MIDI Staff property
 @var{transposing}.
 
 @separate
@@ -2531,10 +2539,16 @@ Usually, LilyPond's predefined setup of notation contexts (Thread,
 Voice, Staff, Staffgroup, Score) is just fine.  But in this case, we
 want a different type of Staff context.
 
+@example
+    \translator@{
+      \HaraKiriStaffContext
+    @}
+@end example
+
 In orchestral scores, it often happens that one instrument has only
 rests during one line of the score.  The @code{HaraKiriStaffContext} can
 be used as a regular @code{StaffContext} drop-in and will take care of
-the automatic removing of empty staffs.
+the automatic removing of empty staves.
 
 @node Extracting an individual part
 @subsection Extracting an individual part
@@ -2582,7 +2596,7 @@ Opus 1.
 
 
 Because we separated the music definitions from the @code{\score}
-instantiations, we can easily define a second score from the music of
+instantiations, we can easily define a second score with the music of
 the second flute.  This then is the part for the second flute player.
 Of course, we make separate parts for all individual instruments.
 
@@ -2618,8 +2632,8 @@ true.
 Until now, you have been using @file{ly2dvi} to invoke LilyPond.
 There are three other routes.  Firstly, there is a script called
 @code{lilypond-book}, that allows you to freely mix LilyPond input with
-Texinfo or LaTeX input. For example, this manual was written using
-@code{lilypond-book}. It is discussed in @ref{lilypond-book}.
+Texinfo or \LaTeX input. For example, this manual was written using
+@code{lilypond-book}. It is discussed below and in @ref{lilypond-book}.
 
 
 Secondly, you can generate PostScript directly. This is useful if you
@@ -2629,9 +2643,10 @@ PostScript output, invoke LilyPond as follows:
 @example
 lilypond -f ps test.ly
 @end example
-You have to set some environment variables to view or print this
-output. More information can be found in @ref{Invoking
-LilyPond}.
+You have to set some environment variables to view or print this output. 
+More information can be found in @ref{Invoking LilyPond}. Since the
+direct Postscript generation has some problems, it is recommended
+to use @file{ly2dvi}.
 
 
 Thirdly, if you want to do special things with your output, you can run
@@ -2728,7 +2743,7 @@ $ xdvi lilbook
 @end example
 
 Notice the @code{outdir} option to lilypond-book. Running lilypond-book
-and running latex creates a lot of temporary files, and you wouldn't
+and running latex creates a lot of temporary files, and you wouldn't want
 those to clutter up your working directory. Hence, we have them created
 in a separate subdirectory.