+@c -*-texinfo-*-
+
+@c TODO: LilyPond LilyPond LilyPond
@node Tutorial
@chapter Tutorial
+@html
+<!--- @@WEB-TITLE@@=Tutorial --->
+@end html
@menu
-* Introduction:: Introduction
-* The first tune:: The first tune
-* Lyrics and chords:: Lyrics and chords
-* Piano music:: Piano music
-* end of tutorial:: The end
+* First steps:: Music language of LilyPond
+* Running LilyPond:: Printing music
+* More basics::
+* Printing lyrics::
+* A melody with chords ::
+* More stanzas::
+* More movements :: Joining separate pieces of music
+* A piano excerpt:: Piano music
+* Fine tuning a piece::
+* An orchestral score:: Conductor's score and individual parts
+* Integrating text and music:: Integrating text and music
+* End of tutorial:: The end
@end menu
-@node Introduction
-@section Introduction
+Operating lilypond is done through text files: to print a piece of
+music, you enter the music in a file. When you run lilypond on that
+file, the program produces another file which contains sheet music that
+you can print or view.
-
-LilyPond prints music from a specification that you, the user, supply.
-You have to give that specification using a @emph{language}. This
-document is a gentle introduction to that language, which is called
-Mudela, an acronym of Music Definition Language.
+This tutorial starts with a small introduction to the LilyPond music
+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 more and more
+complex examples.
-This tutorial will demonstrate how to use Mudela 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.
+@node First steps
+@section First steps
-The examples discussed are included in the distribution, in the
-subdirectory @file{input/tutorial/}. It is recommended that you
-experiment with writing Mudela input yourself, to get a feel for
-how LilyPond behaves.
+We start off by showing how very simple music is entered in
+LilyPond: you get a note simply by typing its note name, from
+@code{a} through @code{g}. So if you enter
+@quotation
+@example
+c d e f g a b
+@end example
+@end quotation
+then the result looks like this:
+@quotation
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\transpose c'' { c d e f g a b }
+@end lilypond
+@end quotation
+@separate
+
+We will continue with this format: first we show a snippet of input,
+then the resulting output.
+
+The length of a note is specified by adding a number, ``@code{1}'' for a
+whole note, ``@code{2}'' for a half note, and so on:
+
+@quotation
+@example
+a1 a2 a4 a16 a32
+@end example
-@node The first tune
-@section The first tune
+@c missing clef seems to raise more questions than actual pitch of notes,
+@c as these are snippets anyway
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+%\property Staff.Clef = \turnOff
+\transpose c'' { a1 a2 a4 a16 a32 }
+s16_" "
+@end lilypond
+@end quotation
+@separate
+
+If you don't specify a duration, the previous one is used:
+@quotation
+@example
+a4 a a2 a
+@end example
+@c missing clef seems to raise more questions than actual pitch of notes,
+@c as these are snippets anyway
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+%\property Staff.Clef = \turnOff
+\transpose c'' { a a a2 a }
+s16_" "
+@end lilypond
+@end quotation
+@separate
+
+A sharp (@texisharp{}) is made by adding ``@code{is}'', a flat
+(@texiflat{}) by adding ``@code{es}''. As you would expect, a
+double-sharp or double-flat is made by adding ``@code{isis}'' or
+``@code{eses}'':
+
+@quotation
+@example
+cis1 ees fisis aeses
+@end example
-To demonstrate what LilyPond input looks like, we start off with a
-full fledged, yet simple example. It is a convoluted version
-of the famous menuet in J. S. Bach's @emph{Klavierbuechlein}.
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\transpose c'' { cis1 ees fisis aeses }
+s16_" "
+@end lilypond
+@end quotation
+@separate
+
+Add a dot ``@code{.}'' after the duration to get a dotted note:
+@quotation
+@example
+a2. a4 a8. a16
+@end example
-@mudela[verbatim]
-% lines preceded by a percent are comments.
-\include "paper16.ly"
-\score {
- \notes
- \relative c'' \sequential{
- \time 3/4;
- \key g;
-
- \repeat "volta" 2 {
- d4 g,8 a b c d4 g, g |
- e'4 c8 d e fis g4 g, g |
- c4 d8()c b a( )b4 c8 b a g |
- a4 [b8 a] [g fis] g2. |
- }
+@c missing clef seems to raise more questions than actual pitch of notes,
+@c as these are snippets anyway
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature \set #'transparent = ##t
+%\property Staff.Clef = \turnOff
+\transpose c'' { a2. a4 a8. a16 }
+s16_" "
+@end lilypond
+@end quotation
+@separate
+
+The meter (or time signature) can be set with the @code{\time} command:
+
+@quotation
+@example
+\time 3/4
+\time 6/8
+\time 4/4
+@end example
- b'4 g8 a b g
- a4 d,8 e fis d |
- g4 e8 fis g d cis4 b8 cis a4 |
- a8-. b-. cis-. d-. e-. fis-.
- g4 fis e |
- fis a, r8 cis8
- d2.-\fermata
- \bar "|.";
- }
- \paper {
- % standard settings are too wide for a book
- linewidth = 14.0 \cm;
- }
-}
-@end mudela
+@c a clef here may lead to confusion
+@lilypond[fragment]
+\property Staff.Clef \set #'transparent = ##t
+\time 3/4
+s4_" "
+\time 6/8
+s4_" "
+\time 4/4
+s16_" "
+@end lilypond
+@end quotation
+@separate
+
+The clef can be set using the ``@code{\clef}'' command:
+
+@c what is more common name treble or violin?
+@c in Dutch, its violin.
+@c in English its definately treble.
+@quotation
+@example
+\clef treble
+\clef bass
+\clef alto
+\clef tenor
+@end example
+
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\clef violin
+s4_" "
+\clef bass
+s4_" "
+\clef alto
+s4_" "
+\clef tenor
+s16_" "
+@end lilypond
+@end quotation
+@separate
+
+@c From these commands and notes, a piece of music can be formed. A piece
+@c of music is made by enclosing it in ``@code{\notes @{ ... @}}''.
+@c rephrased:
+With these commands you can now write a piece of music. The next step
+is to enclose your music inside ``@code{\notes @{ .. @}}''.
+This lets LilyPond know that music (and not lyrics, for example) follows:
+
+@quotation
+@example
+\notes @{
+ \time 3/4
+ \clef bass
+ c2 e4 g2.
+ f4 e d c2.
+@}
+@end example
+@end quotation
+@separate
-Enter it (or copy it, the filename is @file{menuet.ly}), compile it
-with LilyPond and view the output. Details of this procedure may vary
-from system to system. To create the output, one would issue the
-command `@code{ly2dvi menuet}'. @file{ly2dvi} is a program that does
-the job of running LilyPond and @TeX{}, handling of titles and
-adjusting of page margins.
+Now the piece of music is almost ready to be printed. The final step is to
+combine the music with a printing command.
-If all goes well, the file @file{menuet.dvi} will be created.
-To view this output, issue the command `@code{xdvi menuet}'.
+The printing command is the so-called ``@code{\paper}'' block. Later on
+you will see that the @code{\paper} block is used to customize
+printing specifics. The music and the @code{\paper} block are combined by
+enclosing them in ``@code{\score @{ ... @}}''. This is what a full
+LilyPond source file looks like:
-Now that we are familiar with the procedure of producing output, we
-will analyse the input, line by line.
-@ignore
-Let's try to redo this
+@quotation
@example
+\score @{
+ \notes @{
+ \time 3/4
+ \clef bass
+ c2 e4 g2.
+ f4 e d c2.
+ @}
+ \paper @{ @}
+@}
+@end example
- % lines preceded by a percent are comments.
-
-@end example
-The percent sign, `@code{%}', introduces a line comment. If you want to
-make larger comments, you can use block comments. These are delimited
-by `@code{%@{}' and `@code{%@}}'
-@end ignore
-@multitable @columnfractions .60 .39
-@item
-@noindent
-@c @example urg: no tt font
-@c @exdent % lines preceded by a percent are comments.
-@exdent @code{% lines preceded by a percent are comments.}
-@c @end example
-@tab
-The percent sign, `@code{%}', introduces a line comment. If you
-want to make larger comments, you can use block comments. These
-are delimited by `@code{%@{}' and `@code{%@}}'
-@end multitable
-@example
+@lilypond
+\score {
+ \notes {
+ \time 3/4
+ \clef bass
+ c2 e4 g2.
+ f4 e d c2.
+ }
+ \paper { linewidth = 60 * \staffspace }
+}
+@end lilypond
+@end quotation
+@separate
- \input "paper16.ly"
-
-@end example
-By default, LilyPond will use definitions for a 20
-point@footnote{A point is the standard measure of length for
-printing. One point is 1/72.27 inch.} high staff. We want smaller
-output (16 point staff height), so we must import the settings for
-that size, which is done.
-@example
- \score @{
-
-@end example
- A mudela file combines music with directions for outputting that
-music. The music is combined with the output directions by putting
-them into a @code{\score} block.
-@example
+@node Running LilyPond
+@section Running LilyPond
- \notes
-
-@end example
- This makes LilyPond ready for accepting notes.
-@example
+In the last section we explained what kind of things you could enter
+in a lilypond file. In this section we explain how to run LilyPond
+and how view or print the output. If you have not used LilyPond
+before, want to test your setup of LilyPond, or want to run an example
+file yourself, read this section. Most of the instructions that follow
+are for running LilyPond on Unix-like systems. Some additional
+instructions for running LilyPond on Windows are given at the end of
+this section.
- \relative c''
-
-@end example
- As we will see, pitches are combinations of octave, note name and
-chromatic alteration. In this scheme, the octave is indicated by
-using raised 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.
-
-For pitches in a long piece you might have to type many quotes. To
-remedy this, LilyPond has a ``relative'' octave entry mode. In this
-mode, octaves of notes without quotes are chosen such that a note is
-as close as possible (graphically, on the staff) to the the preceding
-note. If you add a high-quote an extra octave is added. The lowered
-quote (a comma) will subtract an extra octave. Because the first note
-has no predecessor, you have to give the (absolute) pitch of the note
-to start with.
-@example
-
- \sequential @{
-
-@end example
- What follows is sequential music, i.e.,
-notes that are to be played and printed after each other.
-@example
+Begin by opening a terminal window and starting a text editor.
+For example, you could open an xterm and execute @code{joe}. In your
+text editor, enter the following input and save the file as
+@file{test.ly}:
- \time 3/4;
-
-@end example
- This command changes the time signature of the current piece: a 3/4
-sign is printed. This command is also used to generate bar lines in
-the right spots.
-@example
+@quotation
+@example
+\score @{
+ \notes @{ c'4 e' g' @}
+@}
+@end example
+@end quotation
- \key g;
-
-@end example
- This command changes the current key to G-major. Although this
-command comes after the @code{\time} command, in the output, the key
-signature comes before the time signature: LilyPond knows about music
-typesetting conventions.
-@example
+@cindex ly2dvi
- \repeat "volta" 2
-
-@end example
- This command tells LilyPond that the following piece of music must
-be played twice; @code{"volta"} volta brackets should be used for
-alternatives---if there were any.
-@example
+@c now this is weird, running ly2dvi to run LilyPond
+@c (therefore name change proposal)
- @{
-
-@end example
-The subject of the repeat is again sequential music. Since
-@code{\sequential} is such a common construct, a shorthand is provided:
-just leave off @code{\sequential}, and the result is the same.
-@example
+LilyPond is the program that computes the sheet music. All other
+things, such as adding titles, page breaking and other page layout,
+are done by a small wrapper program called
+@code{ly2dvi}. @code{ly2dvi} calls lilypond to render the music, and
+then adds the titling and page layout instructions. To process
+@file{test.ly} with ly2dvi, proceed as follows:
- d4
-
-@end example
- This is a note with pitch @code{d} (determined up to octaves). The
-relative music was started with a @code{c''}, so the real pitch of this
-note is @code{d''}. The @code{4} designates the duration of the note
-(it is a quarter note).
-@example
+@quotation
+@example
+ly2dvi -P test.ly
+@end example
+@end quotation
- a b
-
-@end example
-These are notes with pitch @code{a} and @code{b}. Because their
-duration is the same as the @code{g}, there is no need to enter the
-duration (You may enter it anyway, e.g. @code{a4 b4})
-@example
+You will see the following on your screen:
- d4 g, g |
-
-@end example
- Three more notes. The `@code{|}' character is a `barcheck'. When
-processing the music, LilyPond will verify that barchecks are found at
-the start of a measure. This can help you track down errors.
+@quotation
+@example
+GNU LilyPond 1.6.0
+Now processing: `/home/fred/ly/test.ly'
+Parsing...
+Interpreting music...[1]
+ @emph{ ... more interesting stuff ... }
+PS output to `test.ps'...
+DVI output to `test.dvi'...
+@end example
+@end quotation
+@cindex DVI file
+@cindex Viewing music
+@cindex xdvi
+
+The results of the ly2dvi run are two files, @file{test.dvi} and
+@file{test.ps}. The PS file (@file{test.ps}) is the one you can print.
+You can view the PS file using the program ghostview. If a version of
+ghostview is installed on your system, one of these commands will
+produce a window with some music notation on your screen:
+@c eeek
+@quotation
+@example
+ gv test.ps
+ ghostview test.ps
+ ggv test.ps
+ kghostview test.ps
+@end example
+@end quotation
+If the music on your screen looks good, you can print it by clicking
+File/Print inside ghostview.
+
+The DVI file (@file{test.dvi}) contains the same sheet music in a
+different format. DVI files are more easily processed by the computer,
+so viewing them usually is quicker. You can run @code{xdvi test.dvi} or
+@code{kdvi test.dvi} to view the DVI file. In Xdvi, the mouse buttons
+activate magnifying glasses. Unfortunately, variable symbols (such as
+beams and slurs) are not displayed in the magnifying glasses.
+
+If your DVI viewer does not have a "Print" button, you can print the
+file by executing @code{lpr test.ps}.
+
+@c volgende alinea schrappen?
+
+If your system does not support printing PostScript files, then you
+can install GhostScript, a PostScript emulator. Refer to
+GhostScript's website at @uref{http://www.ghostscript.com}.
+
+@cindex GhostScript
+@cindex @code{lpr}
+@cindex Printing output
+@cindex PostScript
+@cindex PDF
+
+A final option is to use the popular PDF format. You can get a PDF
+file by running @code{ly2dvi --pdf test.ly}. With @code{--pdf}
+you will get DVI, PS and PDF files. Viewers for PS files also
+accept PDF files, but there are also many other applications for
+viewing PDF files.
+
+If you are familiar with @TeX{}, be warned: do not use other
+DVI drivers like @code{dvilj}. The @TeX{} coming out of LilyPond
+uses embedded PostScript code and will not render correctly if
+you use anything other than @code{dvips}.
+
+@cindex dvips
+@cindex dvilj
+@cindex DVI driver
+
+@unnumberedsubsec Windows users
+Windows users can start the terminal by clicking on the LilyPond or
+Cygwin icons. You can use any text editor (such as Notepad) to edit
+the LilyPond file. Viewing the PS file can be done with:
+@quotation
+@example
+@code{gsview32 test.ps}
+@end example
+@end quotation
+You can also print from the command line by executing:
+@quotation
+@example
+@code{gsview32 /s test.ps}
+@end example
+@end quotation
- So far, no notes were chromatically altered. Here is the first one
-that is: @code{fis}. Mudela by default uses Dutch note names, and
-``Fis'' is the Dutch note name for ``F sharp''. However, there is no
-sharp sign in the output. The program keeps track of key signatures,
-and will only print accidentals if they are needed.
-@example
- c8 d e fis
-
-@end example
-LilyPond guesses were beams can be added to eighth and shorter notes.
-In this case, a beam over 4 eighths is added.
-@example
+@strong{SUMMARY}
- c4 d8( )c b a( )b4 c8 b a g |
-
-@end example
- The next line shows how to make a slur:
-the beginning and ending note of the slur is marked with an opening and
-closing parenthesis respectively. In the line shown above this is
-done for two slurs. Slur markers (parentheses) are between
-the notes.
-@example
+To run LilyPond, input a text file, then run the command @code{ly2dvi} on
+that file. The resulting files are either DVI or PostScript, and can
+be viewed with @code{xdvi} (unix) and ghostview (unix and windows)
+respectively. The following table summarizes the constructs that were
+discussed in the previous two sections.
- a4 [b8 a] [g fis]
-
-@end example
-Automatic beaming can be overridden by inserting beam marks
-(brackets). Brackets are put around notes you want beamed.
-@example
+@multitable @columnfractions .3 .3 .4
- g2. |
-
-@end example
-A duration with augmentation dot is notated
-with the duration number followed by a period.
-@example
+@item @b{Syntax}
+@tab @b{Description}
+@tab @b{Example}
- @}
-
-@end example
- This ends the sequential music to be repeated. LilyPond will typeset
-a repeat bar.
-@example
+@item @code{1 2 8 16}
+@tab durations
+@tab
+@lilypond[fragment, relative 1]
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+c1 c2 c8 c16
+@end lilypond
+
+@item @code{. ..}
+@tab augmentation dots
+@tab
+@lilypond[fragment, relative 1]
+\property Staff.TimeSignature = \turnOff
+\property Staff.Clef = \turnOff
+c4. c4..
+@end lilypond
+
+@item @code{c d e f g a b }
+@tab scale
+@tab
+@lilypond[fragment, relative 1]
+\property Staff.TimeSignature = \turnOff
+\property Staff.Clef = \turnOff
+c d e f g a b
+@end lilypond
+
+@item @code{\clef treble \clef bass }
+@tab clefs
+@tab
+@lilypond[fragment]
+\property Staff.TimeSignature \set #'transparent = ##t
+\clef treble
+s4_" "
+\clef bass
+s4_" "
+@end lilypond
+
+@item @code{\time 3/4 \time 4/4 }
+@tab time signature
+@tab
+@lilypond[fragment]
+\property Staff.Clef \set #'transparent = ##t
+\time 3/4
+s4_" "
+\time 4/4
+s16_" "
+@end lilypond
- cis'4 b8 cis a4 |
-
-@end example
- This line shows that Lily will print an accidental if that is
-needed: the first C sharp will be printed with an accidental, the
-second one without.
-@example
+@end multitable
- a8-. b-. cis-. d-. e-. fis-.
-
-@end example
-You can enter articulation signs either in a verbose form using a
-shorthand. Here we demonstrate the shorthand: it is formed by a dash
-and the the character for the articulation to use, e.g. `@code{-.}' for
-staccato as shown above.
-@example
- fis a, r8 cis8
-
-@end example
-
-Rests are denoted by the special notename `@code{r}'. You can also enter
-an invisible rest by using the special notename `@code{s}'.
-@example
+@node More basics
+@section More basics
- d2.-\fermata
-
-@end example
- All articulations have a verbose form, like @code{\fermata}. The
-command `@code{\fermata}' is not part of the core of the language (most
-of the other discussed elements are), but it is a shorthand for a more
-complicated description of a fermata. @code{\fermata} names that
-description and is therefore called an @emph{identifier}.
-@example
+We continue with the introduction of the remaining musical constructs.
+Normal rests are entered just like notes, but use the name
+``@code{r}'':
- @}
-
-@end example
-
-Here the music ends.
-@example
+@quotation
+@example
+r2 r4 r8 r16
+@end example
- \paper @{
- linewidth = 14.0\cm;
- @}
-
-@end example
-This specifies a conversion from music to notation output. Most of
-the details of this conversions (font sizes, dimensions, etc.) have
-been taken care of, but to fit the output in this document, it has
-to be smaller. We do this by setting the line width to 14 centimeters
-(approximately 6 inches).
-@example
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.Clef = \turnOff
+\property Staff.TimeSignature = \turnOff
+r2 r4 r8 r16
+s16_" "
+@end lilypond
+@end quotation
+@separate
+
+@c Tim wants to move this quotes example just before the: quotes-don't-work
+@c score, but we'd need to remove quotes from the other two (key and
+@c tie) examples...
+
+@c better to have this just before the `octaves are bad' snipped
+@c but we'd need to remove the ', from \key and tie
+To raise a note by an octave, add a high quote @code{'} (apostrophe) to
+the note name, to lower a note one octave, add a ``low quote'' @code{,}
+(a comma). Middle C is @code{c'}:
+
+@quotation
+@example
+c'4 c'' c''' \clef bass c c,
+@end example
- @}
-
-@end example
-The last brace ends the @code{\score} block.
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+c'4 c'' c''' \clef bass c c,
+@end lilypond
+@end quotation
+@separate
+
+A tie is created by entering a tilde ``@code{~}'' between the notes to
+be tied. A tie between two notes means that the second note must not be
+played separately; it just makes the first note sound longer:
+
+@quotation
+@lilypond[fragment,verbatim]
+g'4 ~ g' a'2 ~ a'4
+@end lilypond
+@end quotation
+@separate
+
+The key signature is set with the command ``@code{\key}'':
+@quotation
+@example
+\key d \major
+g'1
+\key c \minor
+g'
+@end example
-There are two things to note here. The format contains musical
-concepts like pitches and durations, instead of symbols and positions:
-the input format tries to capture the meaning of @emph{music}, and not
-notation. Therefore Second, the format tries to be @emph{context-free}:
-a note will sound the same regardless of the current time signature,
-the key, etc.
+@lilypond[fragment]
+\property Staff.TimeSignature = \turnOff
+\key d \major
+g'1
+\key c \minor
+g'
+@end lilypond
+@end quotation
-The purpose of LilyPond is explained informally by the term `music
-typesetter'. This is not a fully correct name: not only does the
-program print musical symbols, it also makes esthetic decisions. All
-symbols and their placement is @emph{generated} from a high-level musical
-description. In other words, LilyPond would be best
-described by `music compiler' or `music to notation compiler'.
-@node Lyrics and chords
-@section Lyrics and chords
+@c bit on the long/complex/scary taste
+@c cheating a bit: two lines makes for a friendlier look
+This example shows notes, ties, octave marks, and rests in action.
-In this section we show how to typeset a song of unknown
-origin.@footnote{The author would welcome information about the origin
-of this song.}.
+@quotation
+@example
+\score @{
+ \notes @{
+ \time 4/4
+ \key d \minor
+ \clef violin
+ r4 r8 d''8 cis''4 e''
+ d''8 a'4. ~ a' b'8
+ cis''4 cis''8 cis'' bis'4 d''8 cis'' ~
+ cis''2 r2
+ @}
+ \paper @{ @}
+@}
+@end example
-@example
-\header @{
- title = "The river is flowing";
- composer = "Traditional (?)";
+@lilypond
+\score {
+ \notes {
+ \time 4/4
+ \clef violin
+ \key d \minor
+ r4 r8 d''8 cis''4 e''
+ d''8 a'4. ~ a' b'8
+ cis''4 cis''8 cis'' bis'4 d''8 cis'' ~
+ cis''2 r2
+ }
+ \paper { linewidth = 50*\staffspace }
+}
+@end lilypond
+@end quotation
+
+@c accidentals...
+There are some interesting points to note in this example.
+Accidentals (sharps and flats) don't have to be marked explicitly: you
+just enter the note name, and LilyPond determines whether or not to
+print an accidental. Bar lines and beams are drawn automatically.
+LilyPond calculates line breaks for you; it doesn't matter where you
+make new lines in the source file. Finally, the order of time, key and
+clef changes is not relevant: lilypond will use standard notation
+conventions for ordering these items.
+
+The example also indicates that a piece of music written in a high
+register needs lots of quotes. This makes the input less readable,
+and is therefore also a potential source of errors.
+
+The solution is to use ``relative octave'' mode. In practice, this is
+the most convenient way to copy existing music. 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''}. If you don't
+use octavation quotes (ie don't add ' or , after a note), relative mode
+chooses the note that is closest to the previous one. Since most music
+has small intervals, you can write quite a lot in relative mode without
+using octavation quotes.
+@c don't use commas or quotes in this sentence
+For example: @code{c f} goes up; @code{c g} goes down:
+
+@quotation
+@example
+\relative c'' @{
+ c f c g c
@}
-\include "paper16.ly"
-melody = \notes \relative c' @{
- \partial 8;
- g8 |
- c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
- c4 c8 d [es () d] c4 | d4 es8 d c4.
- \bar "|.";
+@end example
+
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\relative c'' {
+ c f c g c
+}
+@end lilypond
+@end quotation
+@separate
+
+
+@c needed better, maybe even redundant explanation
+@c added another example below.
+@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 larger intervals by adding octavation quotes. Note that
+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;
+@code{c c'} are the same; and @code{c g'} goes up:
+
+@quotation
+@example
+\relative c'' @{
+ c f, f c' c g' c,
@}
+@end example
+
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\relative c'' {
+ c f, f c' c g' c,
+}
+@end lilypond
+@end quotation
+@separate
+
-text = \lyrics @{
- The ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the
- ri -- ver is flo -- wing down to the sea.
+Here's an example of the difference between relative mode and
+``normal'' (non-relative) mode:
+
+@quotation
+@example
+\relative a @{
+\clef bass
+ a d a e d c' d'
@}
+@end example
-accompaniment =\chords @{
- r8
- c2:3- f:3-.7 d:min es4 c8:min r8
- c2:min f:min7 g:7^3.5 c:min @}
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\relative a {
+\clef bass
+ a d a e d c' d'
+}
+@end lilypond
+@end quotation
+@separate
-\score @{
- \simultaneous @{
-% \accompaniment
- \context ChordNames \accompaniment
+@quotation
+@example
+\clef bass
+ a d a e d c' d'
+@end example
- \addlyrics
- \context Staff = mel @{
- \property Staff.noAutoBeaming = "1"
- \property Staff.automaticMelismata = "1"
- \melody
- @}
- \context Lyrics \text
- @}
- \midi @{ @}
- \paper @{ linewidth = 10.0\cm; @}
-@}
-@end example
+@lilypond[fragment]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\clef bass
+ a d a e d c' d'
+@end lilypond
+@end quotation
+@separate
+@strong{SUMMARY}
-The result would look this@footnote{The titling and font size shown
-may differ, since the titling in this document is not generated by
-@file{ly2dvi}.}.
+The following table summarizes the syntax learned so far in this section.
-@center @strong{The river is flowing}
-@center Traditional
+@multitable @columnfractions .3 .3 .4
-@mudela[center]
-\header {
- title = "The river is flowing";
- composer = "Traditional (?)";
-}
-\include "paper16.ly"
-melody = \notes \relative c' {
- \partial 8;
- \key c \minor;
- g8 |
- c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
- c4 c8 d [es () d] c4 | d4 es8 d c4.
- \bar "|.";
-}
+@item @b{Syntax}
+@tab @b{Description}
+@tab @b{Example}
-text = \lyrics {
- The ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the
- ri -- ver is flo -- wing down to the sea.
-}
+@item @code{r4 r8}
+@tab rest
+@tab
+@lilypond[fragment, relative 1]
+\property Staff.TimeSignature = \turnOff
+\property Staff.Clef = \turnOff
+r4 r8
+@end lilypond
-accompaniment =\chords {
- r8
- c2:3- f:3-.7 d:min es4 c8:min r8
- c2:min f:min7 g:7^3.5 c:min }
-\score {
- \simultaneous {
-% \accompaniment
- \context ChordNames \accompaniment
+@item @code{~}
+@tab tie
+@tab
+@lilypond[fragment, relative 1]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+d ~ d
+@end lilypond
- \addlyrics
- \context Staff = mel {
- \property Staff.noAutoBeaming = "1"
- \property Staff.automaticMelismata = "1"
- \melody
- }
- \context Lyrics \text
- }
- \midi { }
- \paper { linewidth = 10.0\cm; }
-}
-@end mudela
-Again, we will dissect the file line by line.
-@example
+@item @code{\key es \major }
+@tab key signature
+@tab
+@lilypond[fragment]
+\property Staff.TimeSignature \set #'transparent = ##t
+\clef treble
+\key es \major
+s4
+@end lilypond
+
+@item @code{'}
+@tab raise octave
+@tab
+@lilypond[fragment, relative 1]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+a a'
+@end lilypond
+
+@item @code{,}
+@tab lower octave
+@tab
+@lilypond[fragment, relative 1]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+c c,
+@end lilypond
- \header @{
-
-@end example
-Information about the music you are about to typeset goes into a
-@code{\header} block. The information in this block is not used by
-LilyPond, but it is included in the output. @file{ly2dvi} uses this
-information to print titles above the music.
-@example
+@end multitable
- title = "The river is flowing";
- composer = "Traditional (?)";
-@end example
-the @code{\header} block contains assignments. An assignment starts
-with a string. (which is unquoted, in this case). Then comes the
-equal sign `@code{=}'. After the equal sign comes the expression you
-want to store. In this case, you want to put in strings. The
-information has to be quoted here, because it contains spaces. The
-assignment is finished with a semicolon.
-@example
+A slur is drawn across many notes, and indicates bound articulation
+(legato). The starting note and ending note are marked with a
+``@code{(}'' and a ``@code{)}'' respectively:
+
+@quotation
+@lilypond[fragment,relative 1, verbatim]
+d4( )c16( cis d e c cis d )e( )d4
+@end lilypond
+@end quotation
+@separate
+
+If you need two slurs at the same time (one for articulation, one for
+phrasing), you can also make a phrasing slur with @code{\(} and
+@code{\)}.
+
+@c lousy example
+@c ? --hwn
+@c fragment of 1st hrn in Adams' The Chairman Dances, with creative
+@c chromatic thing pasted in front. (admittedly the original doesn't
+@c have a phrasing slur. The problem is that we don't want the slur
+@c and the Phrasing slur to collide. We're trying to make a good
+@c impression here.
+
+@quotation
+@lilypond[fragment,relative 1, verbatim]
+a8(\( ais b ) c cis2 b'2 a4 cis, \) c
+@end lilypond
+@end quotation
+@separate
+
+Beams are drawn automatically, but if you don't like the choices, you
+can enter beams by hand. Surround the notes to be grouped with @code{[}
+and @code{]}:
+@quotation
+@lilypond[fragment,relative 1, verbatim]
+[a8 ais] [d es r d]
+@end lilypond
+@end quotation
+@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
+@code{Staff}'s can be grouped inside @code{<} and @code{>}, as is
+demonstrated here:
+
+@quotation
+@lilypond[fragment,verbatim]
+<
+ \context Staff = staffA { \clef violin c'' }
+ \context Staff = staffB { \clef bass c }
+>
+@end lilypond
+@end quotation
+
+In this example, @code{staffA} and @code{staffB} are names that are
+given to the staves. 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 staves now:
+
+@quotation
+@lilypond[verbatim,singleline]
+\score {
+ \notes
+ < \context Staff = staffA {
+ \time 3/4
+ \clef violin
+ \relative c'' { e2 ( d4 c2 b4 [a8 a] [b b] [g g] )a2. }
+ }
+ \context Staff = staffB {
+ \clef bass
+ c2 e4 g2.
+ f4 e d c2.
+ }
+ >
+ \paper {}
+}
+@end lilypond
+@end quotation
+
+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 staves.
+
+@separate
+
+Common accents can be added to a note using @code{-.}, @code{--}, @code{->}:
+@quotation
+@lilypond[verbatim,relative 1]
+c-. c-- c->
+@end lilypond
+@end quotation
+@separate
+
+Dynamic signs are made by adding the markings to the note:
+@quotation
+@lilypond[verbatim,relative 1]
+c-\ff c-\mf
+@end lilypond
+@end quotation
+@separate
+
+Crescendi are started with the commands @code{\<} and @code{\>}. The
+command @code{\!} finishes a crescendo on the following note.
+@quotation
+@lilypond[verbatim,relative 1]
+c2\< \!c2-\ff \>c2 \!c2
+@end lilypond
+@end quotation
+@separate
+
+Chords can be made by surrounding notes with @code{<} and @code{>}:
+@quotation
+@lilypond[relative 0, fragment,verbatim]
+r4 <c e g> <c f a>
+@end lilypond
+@end quotation
+@separate
- \include "paper16.ly"
-
-@end example
-Smaller size for inclusion in a book.
-@example
+@ignore
+@c te diepzinnig?
+@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 staves.
+@end ignore
- melody = \notes \relative c' @{
-
-@end example
-The structure of the file will be the same as the previous one, a
-@code{\score} block with music in it. To keep things readable, we will
-give names to the different parts of music, and use the names to
-construct the music within the score block.
+You can combine beams and ties with chords. Notice that
+beam and tie markings must be placed outside the chord markers:
+@quotation
+@lilypond[relative 0, fragment,verbatim]
+r4 [<c8 e g> <c8 f a>] ~ <c8 f a>
+@end lilypond
+@end quotation
-@example
- \partial 8;
-@end example
+When you want to combine chords with slurs and dynamics, technical
+detail crops up: you have type these commands next to the notes, which
+means that they have to be inside the @code{< >}. Don't get confused
+by the chord @code{< >} and the dynamic @code{\< \>}!
-The piece starts with an anacrusis of one eighth.
+
+@quotation
@example
- \key c \minor
+r4 <c8 e g \> ( > <c e g> <c e g> < ) \! c8 f a>
@end example
-The key is C minor: we have three flats.
+@lilypond[relative 0, fragment]
+\slurUp
+r4 <c8 e g \> ( > <c e g> <c e g> < ) \! c8 f a>
+@end lilypond
+@end quotation
+@separate
+
+@c this example is a bit too strongly worded -- there's nothing wrong
+@c with starting a piece with a chord; you just have to be careful when
+@c you do so. I've rephrased this example below.
+@c There is one golden rule that you should keep in mind when writing
+@c LilyPond input:
+@c @quotation
+@c @strong{DO NOT START A PIECE WITH A CHORD}
+@c @end quotation
+@c Of course, it is a allowed, but the result might not be what you expect:
+
+@c rephrased "don't start with a chord"
+There is one caution when using chords: if you use a chord at the very
+beginning of the piece, LilyPond might not understand what you want:
+
+@quotation
+@lilypond[verbatim,singleline]
+\score { \notes <c'2 e'2> }
+@end lilypond
+@end quotation
+@separate
+
+If you have a piece that begins with a chord, you must explicitly
+state that the notes of the chord are to be put on the same staff, in
+the same voice. This is done by specifying @code{\context Staff} or
+@code{\context Voice} for the notes:
+
+@quotation
+@lilypond[verbatim,singleline]
+\score { \notes \context Voice <c'2 e'2> }
+@end lilypond
+@end quotation
+@separate
+
+
+@strong{SUMMARY}
+
+@multitable @columnfractions .3 .3 .4
+
+@item @b{Syntax}
+@tab @b{Description}
+@tab @b{Example}
+
+
+@item @code{( )}
+@tab slur
+@tab
+@lilypond[fragment, relative 1]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+c( d )e
+@end lilypond
-@example
- c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
- c4 c8 d [es () d] c4 | d4 es8 d c4.
- \bar "|.";
-
-@end example
+@item @code{\( \)}
+@tab phrasing slur
+@tab
+@lilypond[fragment, relative 1]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+c\( c() d \)e
+@end lilypond
-We use explicit beaming. Since this is a song, we will turn automatic
-beams off, and use explicit beaming where needed.
-@example
- @}
-
-@end example
-This ends the definition of @code{melody}. Note that there are no
-semicolons after assignments at top level.
-@example
+@item @code{[ ]}
+@tab beam
+@tab
+@lilypond[fragment, relative 1]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+[a8 b]
+@end lilypond
- text = \lyrics @{
-
-@end example
-Another identifier assignment. This one is for the lyrics.
-Lyrics are formed by syllables that have duration, and not by
-notes. To make LilyPond parse words as syllables, switch it into
-lyrics mode with @code{\lyrics}. Again, the brace after @code{\lyrics}
-is a shorthand for @code{\sequential @{}.
-@example
- The4 ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the
- ri- ver is flo- __ wing down to the sea.
+@item @code{< \context Staff ... >}
+@tab more staffs
+@tab
+@lilypond[fragment]
+< \context Staff = SA { c'1 }
+ \context Staff = SB { c'1 } >
+@end lilypond
+
+
+@item @code{-> -.}
+@tab articulations
+@tab
+@lilypond[fragment, relative 1]
+\property Staff.TimeSignature = \turnOff
+\property Staff.Clef = \turnOff
+c-> c-.
+@end lilypond
+
+
+@item @code{-\mf -\sfz}
+@tab dynamics
+@tab
+@lilypond[fragment, relative 1]
+\property Staff.TimeSignature = \turnOff
+\property Staff.Clef = \turnOff
+c-\mf c-\sfz
+@end lilypond
+
+
+@item @code{\< \!}
+@tab crescendo
+@tab
+@lilypond[fragment, relative 1]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+a\< a \!a
+@end lilypond
+
+@item @code{\> \!}
+@tab decrescendo
+@tab
+@lilypond[fragment, relative 1]
+\property Score.timing = ##f
+\property Staff.TimeSignature = \turnOff
+\property Staff.autoBeaming = ##f
+\property Staff.Clef = \turnOff
+a\> a \!a
+@end lilypond
+
+
+@item @code{< >}
+@tab chord
+@tab
+@lilypond[fragment, relative 1]
+\context Voice <c e>
+@end lilypond
+
+@end multitable
+
+Now you know the basic ingredients of a music file, so this is the right
+moment to try your at hand at doing it yourself: try typing some
+simple examples, and experiment a little.
+
+When you're comfortable with the basics, you might want to read
+the rest of this chapter. It continues in tutorial-style, but it
+is much more in-depth, dealing with more advanced topics such as
+lyrics, chords, orchestral scores and parts, fine tuning of output,
+polyphonic music, and integrating text and music.
+
+
+
+
+
+@node Printing lyrics
+@section Printing lyrics
+@cindex lyrics
+
+In this section we shall explain how to typeset the following
+fragment of The Free Software Song:
+
+@lilypond[singleline]
+\score { \notes { \addlyrics
+ \notes \relative c' {
+ \time 7/4
+ d'2 c4 b16 ( a g a b a b ) c a2
+ b2 c4 b8 ( a16 g ) a4 g2 }
+ \context Lyrics \lyrics {
+ Join us now __ and
+ share the soft -- ware; }
+}
+\paper { linewidth = -1. }
+}
+@end lilypond
+
+
+@cindex lyric mode
+@cindex @code{\lyrics}
+
+
+To print lyrics, you must enter them, and then instruct lilypond to
+handle the lyrics by printing them.
+You can enter lyrics in a special input mode of LilyPond. This mode is
+called Lyrics mode, and it is introduced by the keyword @code{\lyrics}.
+The purpose of this mode is that you can enter lyrics as plain text,
+punctuation and accents without any hassle.
+
+Syllables are entered like notes, with pitches replaced by text. For
+example, @code{Twin- kle twin- kle} enters four syllables. Note that
+the hyphen has no special meaning for lyrics, and does not introduce
+special symbols.
+
+Spaces can be introduced into a lyric either by using quotes:
+@code{"He could"4 not4} or by using an underscore without quotes:
+@code{He_could4 not4}. All unquoted underscores are converted to
+spaces.
+
+These are the lyrics for the free software song:
+
+@example
+ \lyrics @{
+ Join us now __ and
+ share the soft -- ware; @}
+@end example
+
+As you can see, extender lines are entered as @code{__}. This will
+create an extender, a line that extends over the entire duration of
+the lyric. This line will run all the way to the start of the next
+lyric, so you may want to shorten it by using a blank lyric (using
+@code{_}).
+
+
+If you can use have hyphens at the end of a syllable, i.e.
+@example
+ soft- ware
+@end example
+but then the hyphen will be attached to the to the end of the first
+syllable.
+
+If you want them centered between syllables you can use the special
+`@code{-}@code{-}' lyric as a separate word between syllables. The
+hyphen will have variable length depending on the space between
+syllables. It will be centered between the syllables.
+
+Normally, the notes that you enter are transformed into note heads.
+Note heads alone make no sense, they need surrounding information: a key
+signature, a clef, staff lines, etc. They need @emph{context}. In
+LilyPond, these symbols are created by objects called `interpretation
+contexts'. Interpretation contexts exist for generating notation
+(`notation context') and for generating sound (`performance
+context'). These objects only exist during a run of LilyPond.
+
+When LilyPond interprets music, it will create a Staff context.
+We don't want that default here, because we want lyric. The
+command
+@example
+ \context Lyrics
+@end example
+explicitly creates an interpretation context of
+@code{Lyrics} type to interpret the song text that we entered.
+
+The melody of the song doesn't offer anything new:
+@example
+ \notes \relative c' @{
+ \time 7/4
+ d'2 c4 b16 ( a g a b a b ) c a2
+ b2 c4 b8 ( a16 g ) a4 g2 @}
+@end example
+
+Both can be combined with the @code{\addlyrics}:
+@example
+\addlyrics
+ \notes \relative c' @dots{}
+ \context Lyrics \lyrics @dots{}
+@end example
+
+The lyrics are also music expressions, similar to notes. What happens
+here, is that each syllable of the lyrics is put under the a note of
+the melody.
+The complete file is listed here:
+
+@example
+\score @{ \notes @{ \addlyrics
+ \notes \relative c' @{
+ \time 7/4
+ d'2 c4 b16 ( a g a b a b ) c a2
+ b2 c4 b8 ( a16 g ) a4 g2 @}
+ \context Lyrics \lyrics @{
+ Join us now __ and
+ share the soft -- ware; @}
+@}
+\paper @{ linewidth = -1. @}
+@}
+@end example
+
+
+
+@node A melody with chords
+@section A melody with chords
+
+In this section we show how to typeset a melody with chord
+accompaniment. This file is included as @file{input/tutorial/flowing.ly}.
+
+@example
+\include "paper16.ly"
+melody = \notes \relative c' @{
+ \partial 8
+ \key c \minor
+ g8 |
+ c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
+ c4 c8 d [es () d] c4 | d4 es8 d c4.
+ \bar "|."
@}
+
+accompaniment =\chords @{
+ r8
+ c2:3- f:3-.7 d:min es4 c8:min r8
+ c2:min f:min7 g:7^3.5 c:min @}
+
+\score @{
+ \simultaneous @{
+ %\accompaniment
+ \context ChordNames \accompaniment
+ \context Staff = mel @{
+ \melody
+ @}
+
+ @}
+ \midi @{ \tempo 4=72 @}
+ \paper @{ linewidth = 10.0\cm @}
+@}
+@end example
+
+
+The result would look this.
+
+@lilypond[center]
+\include "paper16.ly"
+melody = \notes \relative c' {
+ \partial 8
+ \key c \minor
+ g8 |
+ c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
+ c4 c8 d [es () d] c4 | d4 es8 d c4.
+ \bar "|."
+}
+
+accompaniment =\chords {
+ r8
+ c2:3- f:3-.7 d:min es4 c8:min r8
+ c2:min f:min7 g:7^3.5 c:min }
+
+\score {
+ \simultaneous {
+ %\accompaniment
+ \context ChordNames \accompaniment
+
+ \context Staff = mel {
+ \property Staff.autoBeaming = ##f
+ \melody
+ }
+ }
+ \midi { \tempo 4=72 }
+ \paper { linewidth = 10.0\cm }
+}
+@end lilypond
+
+Again, we will dissect the file line by line.
+
+@separate
+@example
+
+ \include "paper16.ly"
+
+@end example
+Smaller size for inclusion in a book.
+@separate
+@example
+
+ melody = \notes \relative c' @{
+
+@end example
+The structure of the file will be the same as the previous one, a
+@code{\score} block with music in it. To keep things readable, we will
+give names to the different parts of music, and use the names to
+construct the music within the score block.
+
+@separate
+@example
+ \partial 8
+@end example
+
+@cindex @code{\partial}
+@cindex anacrusis
+The piece starts with an anacrusis of one eighth.
+@separate
+@example
+ \key c \minor
+@end example
+The key is C minor: we have three flats.
+
+@separate
+@example
+
+ c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
+ c4 c8 d [es () d] c4 | d4 es8 d c4.
+ \bar "|."
+
+@end example
+
+@cindex manual beaming
+@cindex automatic beaming, turning off
+We use explicit beaming. Since this is a song, we turn automatic
+beams off, and use explicit beaming where needed.
+@separate
+@example
+
+ @}
@end example
-The syllables themselves are separated by spaces. You can get syllable
-extenders by entering `@code{__}', and centered hyphens with
-`@code{-}@code{-}'. We enter the syllables as if they are all quarter notes
-in length (hence the @code{4}), and use a feature to align the
-syllables to the music (which obviously isn't all quarter notes.)
+This ends the definition of @code{melody}.
+
+@separate
+@example
+
+ text = \lyrics @{
+
+@end example
+@cindex lyrics
+@cindex identifier assignment
+@cindex syllables, entering
+
+@separate
@example
accompaniment =\chords @{
-@end example
-We'll put chords over the music. There is a special mode (analogous
-to @code{\lyrics} and @code{\notes} mode) where you can give the names
-of the chords you want, instead of the notes comprising the chord.
+@end example
+@cindex chords
+@cindex mode, chords
+We'll put chords over the music. To enter them, there is a special mode
+analogous to @code{\lyrics} and @code{\notes} mode, where you can give
+the names of the chords you want, instead of listing the notes
+comprising the chord.
+@separate
@example
r8
@end example
There is no accompaniment during the anacrusis.
+@separate
@example
- c2:3- f:3-.7
+ c2:3-
-@end example
-A chord is started by the tonic of the chord. The
-first one lasts a half note. An unadorned note creates a major
-triad, while a minor triad is wanted. @code{3-} modifies the third to
-be small. @code{7} modifies (adds) a seventh, which is small by default
-to create the @code{f a c es} chord. Multiple modifiers must be
-separated by a dot.
+@end example
+
+@cindex tonic
+@cindex chord modifier
+@cindex modifier, chord
+This is a c minor chord, lasting half a note. Chord are entered by
+entering the tonic. Then notes can be changed. In this case, a small third
+is used. The cod for this is @code{3-}.
+
+@separate
+@example
+f:3-.7
+@end example
+Similarly, @code{7} modifies (adds) a seventh, which is small by
+default to create the @code{f a c es} chord. Multiple modifiers must be
+separated by dots.
+@separate
@example
d:min es4 c8:min r8
-@end example
-Some modifiers have predefined names, eg. @code{min} is the same as
+@end example
+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
c2:min f:min7 g:7^3.5 c:min @}
-@end example
+@end example
+@cindex named modifier
+
A named modifier @code{min} and a normal modifier @code{7} do not have
to be separated by a dot. Tones from a chord are removed with chord
subtractions. Subtractions are started with a caret, and they are
also separated by dots. In this example, @code{g:7^3.5} produces a
minor seventh. The brace ends the sequential music.
+@separate
@example
\score @{
We assemble the music in the @code{\score} block. Melody, lyrics and
accompaniment have to sound at the same time, so they should be
@code{\simultaneous}.
+@cindex @code{\simultaneous}
+@separate
@example
%\accompaniment
Chord mode generates notes grouped in @code{\simultaneous} music. If
you remove the comment sign, you can see the chords in normal
notation: they will be printed as note heads on a separate
-staff.
+staff. To print them as chords names, they have to be interpreted as
+being chords, not notes. This is done with the following command:
+@separate
@example
\context ChordNames \accompaniment
-@end example
+@end example
+@cindex context
+@cindex interpretation context
+@cindex notation context
+
+
Normally, the notes that you enter are transformed into note heads.
-The note heads alone make no sense, they need surrounding information:
-a key signature, a clef, staff lines, etc. They need @emph{context}. In
+Note heads alone make no sense, they need surrounding information: a key
+signature, a clef, staff lines, etc. They need @emph{context}. In
LilyPond, these symbols are created by objects called `interpretation
-context'. Interpretation contexts only exist during a run of
-LilyPond. Interpretation contexts that are for printing music (as
-opposed to playing music) are called `notation context'.
+contexts'. Interpretation contexts exist for generating notation
+(`notation context') and for generating sound (`performance
+context'). These objects only exist during a run of LilyPond.
-By default, LilyPond will create a Staff contexts for you. If you
-would remove the @code{%} sign in the previous line, you can see that
-mechanism in action.
+When LilyPond interprets music, it will create a Staff context. If
+the @code{%} sign in the previous line were removed, you could see
+that mechanism in action.
-We don't want default contexts here, because we want names, not note
-heads. An interpretation context can also created upon explicit
-request. The keyword for such a request is @code{\context}. It takes
-two arguments. The first is the name of a interpretation context.
-The name is a string, it can be quoted with double quotes). The
-second argument is the music that should be interpreted in this
-context. For the previous line, we could have written @code{\context
-Staff \accompaniment}, and get the same effect.
-@example
+We don't want that default here, because we want chord names. The
+command above explicitly creates an interpretation context of
+@code{ChordNames} type to interpret the music @code{\accompaniment}.
- \addlyrics
-
-@end example
-The lyrics need to be aligned with the melody. This is done by
-combining both with @code{\addlyrics}. @code{\addlyrics} takes two
-pieces of music (usually a melody and lyrics, in that order) and
-aligns the syllables of the second piece under the notes of the
-first piece. If you would reverse the order, the notes would be
-aligned on the lyrics, which is not very useful. (Besides, it looks
-silly.)
+@separate
@example
\context Staff = mel @{
-@end example
-This is the argument of @code{\addlyrics}. We instantiate a
-@code{Staff} context explicitly: should you chose to remove comment
-before the ``note heads'' version of the accompaniment, the
-accompaniment will be on a nameless staff. The melody has to be on a
-different staff as the accompaniment. This is accomplished by giving
-the melody staff a different name.
+@end example
+
+We place the melody on a staff called @code{mel}. We give it a name to
+differentiate it from the one that would contain note heads for the
+chords, if you would remove the comment before the ``note heads''
+version of the accompaniment. By giving this staff a name, it is
+forced to be different.
+@separate
@example
- \property Staff.noAutoBeaming = "1"
+ \property Staff.autoBeaming = ##f
-@end example
-An interpretation context has variables that tune its behaviour. One
-of the variables is @code{noAutoBeaming}. If set and non-zero (i.e.,
-true) LilyPond will not try to put automatic beaming on the current
+@end example
+@cindex \property
+@cindex context variables
+@cindex setting context variables
+An interpretation context has variables, called properties, that tune
+its behavior. One of the variables is @code{autoBeaming}. Setting
+this @code{Staff}'s property to @code{##f}, which is the boolean value
+@var{false}, turns the automatic beaming mechanism off for the current
staff.
-@example
- \property Staff.automaticMelismata = "1"
-
-@end example
-Similarly, we don't want to print a syllable when there is
-a slur. This sets up the Staff context to signal slurs while
-@code{\addlyrics} is processed.
+
+@separate
@example
\melody
@code{\property} directives and @code{\melody} are grouped in sequential
music, so the property settings are done before the melody is
processed.
-@example
- \context Lyrics \text
-
-@end example
-The second argument of @code{\addlyrics} is the text. The text also
-should not land on a Staff, but on a interpretation context for
-syllables, extenders, hyphens etc. This context is called
-Lyrics.
+@separate
@example
- @}
+ \midi @{ \tempo 4=72@}
@end example
-This ends @code{\simultaneous}.
-@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 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.
- \midi @{ @}
-
-@end example
-This makes the music go to a MIDI file. MIDI is great for
-checking music you enter. You listen to the MIDI file: if you hear
-something unexpected, it's probably a typing error. @code{\midi} is an
-`output definition', a declaration that specifies how to output music
-analogous to @code{\paper @{ @}}.
+Syntactically, @code{\midi} is similar to @code{\paper @{ @}}, since it
+also specifies an output method. You can specify the tempo using the
+@code{\tempo} command, in this case the tempo of quarter notes is set to
+72 beats per minute.
+@separate
@example
- \paper @{ linewidth = 10.0\cm; @}
+ \paper @{ linewidth = 10.0\cm @}
@end example
We also want notation output. The linewidth is short so the piece
will be set in two lines.
-@example
-
- @}
-
-@end example
-End the score block.
-@node Piano music
-@section Piano music
+@node More stanzas
+@section More stanzas
-Our third subject is a piece piano music. The fragment in the input
-file is a piano reduction of the G major Sinfonia by Giovanni Battista
-Sammartini. It was composed around 1740.
-@mudela[verbatim]
+@cindex phrasing
-\include "paper16.ly";
+If you have multiple stanzas printed underneath each other, the vertical
+groups of syllables should be aligned around punctuation. LilyPond can
+do this if you tell it which lyric lines belong to which melody.
+We show how you can do this by showing how you could print a frivolous
+fragment of a fictional Sesame Street duet.
-viola = \notes \relative c' \context Voice = viola {
- <c4-\f g' c>
- \property Voice.verticalDirection = \down g'8. b,16
- s1 s2. r4
- g
+@lilypond[singleline,verbatim]
+\score {
+\addlyrics
+ \notes \relative c'' \context Voice = duet { \time 3/4
+ g2 e4 a2 f4 g2. }
+ \lyrics \context Lyrics <
+ \context LyricsVoice = "duet-1" {
+ \property LyricsVoice . stanza = "Bert"
+ Hi, my name is bert. }
+ \context LyricsVoice = "duet-2" {
+ \property LyricsVoice . stanza = "Ernie"
+ Ooooo, ch\'e -- ri, je t'aime. }
+ >
}
+@end lilypond
-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> \times 2/3 { <d8 \< f> <e g> <f a> }
- <
- { \times 2/3 { a8 g c } \! c2 }
- \context Voice = oboeTwo {
- \stemdown
- \grace {
- \property Grace.verticalDirection = \down
- [f,16 g] }
- f8 e e2
- } >
- \stemboth
- \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,>
-}
+To this end, give the Voice context an identity, and set the
+LyricsVoice to a name starting with that identity followed by a dash.
+In the following example, the Voice identity is @code{duet},
+@example
+\context Voice = duet @{
+ \time 3/4
+ g2 e4 a2 f4 g2. @}
+@end example
+and the
+identities of the LyricsVoices are @code{duet-1} and @code{duet-2}.
+@example
+ \context LyricsVoice = "duet-1" @{
+ Hi, my name is bert. @}
+ \context LyricsVoice = "duet-2" @{
+ Ooooo, ch\'e -- ri, je t'aime. @}
+@end example
-hoomPah = \notes \transpose c' {
- c8 \translator Staff = top \stemdown
- c'8 \translator Staff = bottom \stemup }
+We add the names of the singers. This can be done by setting
+@code{LyricsVoice.Stanza} (for the first system) and
+@code{LyricsVoice.stz} for the following systems. Notice how you must
+surround dots with spaces in @code{\lyrics} mode.
-hoomPahHoomPah = { [\hoomPah \hoomPah] }
+@example
+ \property LyricsVoice . stanza = "Bert"
+ @dots{}
+ \property LyricsVoice . stanza = "Ernie"
+@end example
-bassvoices = \notes \relative c' {
- c4 g8. b,16
- \hoomPahHoomPah \hoomPahHoomPah \hoomPahHoomPah \hoomPahHoomPah
- \stemdown [c8 c'8] r4
- <g d'> r4
- < {\stemup r2 <e4 c'> <c8 g'> }
- \context Voice = reallyLow {\stemdown g2 ~ | g4 c8 } >
-}
+The convention for naming @code{LyricsVoice} and @code{Voice} must
+also be used to get melismata on rests correct.
+
+
+
+@node More movements
+@section More movements
+
+LilyPond only handles formatting sheet music. It doesn't concern
+itself with producing titles. This is the jobs of a simple wrapper
+program called ly2dvi. @code{ly2dvi} calls LilyPond to do the
+sheet music formatting. Then it produces titles, and ties together all
+inputs into a single @file{dvi} file. In this section, we show some of
+the options for titling. We will show how you can produce a file
+that looks like this:
+
+@center @strong{Two miniatures}
+@flushright
+Opus 1.
+@end flushright
+@flushleft
+@var{Up}
+@end flushleft
+@lilypond
+ \score {
+ \notes { c'4 d'4 }
+ \paper { linewidth = -1.0 }
+ }
+@end lilypond
+@flushright
+Opus 2.
+@end flushright
+@flushleft
+@var{Down}
+@end flushleft
+@lilypond
+ \score {
+ \notes { d'4 c'4 }
+ \paper { linewidth = -1.0 }
+ }
+@end lilypond
+
+For example, consider the following file (@file{miniatures.ly})
-\score {
- \context PianoStaff \notes <
- \context Staff = top < \time 2/2;
- \context Voice = viola \viola
- \oboes
- >
- \context Staff = bottom < \time 2/2; \clef bass;
- \bassvoices
- >
- >
- \midi { }
- \paper {
- indent = 0.0;
- linewidth = 15.0 \cm; }
-}
-@end mudela
+@example
+\version "1.5.60"
+\header @{
+ title = "Two miniatures"
+ composer = "F. Bar Baz"
+ tagline = "small is beautiful" @}
-If it looks like incomprehensible gibberish to you@dots{} Then you are
-right. The author has doctored this example to have as many quirks in
-one system as possible.
-@example
-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
-@code{Voice}. For each part we have to make sure that there is
-precisely one Voice context@footnote{If @code{\context} would not
-have been specified explicitly, three @code{Voice} contexts would be
-created: one for each note in the first chord.}.
-@example
-<c4-\f g' c>
-@end example
-@code{<} and @code{>} are short hands for @code{\simultaneous @{} and
-@code{@}}. So the expression enclosed in @code{<} and @code{>} is a
-chord. @code{\f} places a forte symbol under the chord.
-@example
-\property Voice.verticalDirection = \down
-@end example
-@code{verticalDirection} is a property of the voice context. It
-controls the directions of stems, articulations marks and other
-symbols.
- If @code{verticalDirection} is set to @code{\down}
-(identifier for the integer -1) the stems go down,
-@code{\up} (identifier for the integer 1) makes the stems go up.
-@example
- g'8. b,16
-@end example
-Relative octaves work a little differently with chords. The starting
-point for the note following a chord is the first note of the chord. So
-the @code{g} gets an octave up quote: it is a fifth above the starting
-note of the previous chord (the central C).
+\paper @{ linewidth = -1.0 @}
+%@{
+
+Mental note: discuss Schenkerian analysis of these key pieces.
+
+%@}
+
+
+\score @{
+ \notes @{ c'4 d'4 @}
+ \header @{
+ opus = "Opus 1."
+ piece = "Up" @}
+@}
+\score @{
+ \notes @{ d'4 c'4 @}
+ \header @{
+ opus = "Opus 2."
+ piece = "Down" @}
+@}
+@end example
+
+The information for the global titling is in a so-called header block.
+The information in this block is not used by
+LilyPond, but it is passed into the output. @file{ly2dvi} uses this
+information to print titles above the music.
+@cindex assignments
+@cindex identifier assignment
+the @code{\header} block contains assignments. In each assignment, a
+variable is set to a value. The header block for this file looks like
+this
+@cindex @code{\header}
+@example
+ \header @{
+ title = "Two miniatures"
+ composer = "F. Bar Baz"
+ tagline = "small is beautiful"
+ @}
+@end example
+
+When you process a file with ly2dvi, a signature line is printed at
+the bottom of the last page. This signature is produced from the
+@code{tagline} field of @code{\header}. The default "Lily was here,
+@var{version number}" is convenient for us programmers. Archived
+the layout of different versions can be compared using archived
+print-outs (that include a version number).
+
+@cindex Lily was here
+@cindex signature line
+@cindex tag line
+
+Many people find the default tagline (``Lily was here'') too droll.
+If that is the case, assign something else to @code{tagline}, as shown
+above.
+
+@separate
+@example
+ \paper @{
+ linewidth = -1.0 @}
+@end example
+
+A paper block at top level, i.e. not in a @code{\score} block sets the
+default page layout. The following @code{\score} blocks don't have
+@code{\paper} sections, so the settings of this block are substituted:
+
+The variable @code{linewidth} normally sets the length of the systems
+on the page. However, a negative value has a special meaning. If
+@code{linewidth} is less than 0, no line breaks are inserted into the
+score, and the spacing is set to natural length: a short phrase takes
+up little space, a longer phrase more space.
+
+@example
+%@{
+
+Mental note: discuss Schenkerian analysis of these key pieces.
+
+%@}
+@end example
+
+Mental notes to yourself can be put into comments. There are two types
+of comments. Line comments are introduced by @code{%}, and block
+comments are delimited by @code{%@{} and @code{%@}}.
+
+@separate
+@example
+ \score @{
+ \notes @{ c'4 d'4 @}
+@end example
+
+In previous examples, notes were specified in relative octaves,
+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
+get @code{c} @code{c,} @code{c,,} etc. Going up, you get @code{c''}
+@code{c'''} etc.
+
+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 may be easier to use.
+
+
+@separate
+@example
+ \header @{
+@end example
+
+The @code{\header} is normally at the top of the file, where it sets
+values for the rest of the file. If you want to typeset different pieces
+from one file (for example, if there are multiple movements, or if
+you're making an exercise book), you can put different @code{\score}
+blocks into the input file. ly2dvi will assemble all LilyPond output
+files into a big document. The contents of \header blocks specified
+within each score, are used for the titling of each movement.
+@separate
+@example
+ opus = "Opus 1."
+ piece = "Up" @}
+@end example
+For example, the Opus number is put at the right, and the piece string
+will be at the left.
+
+
+
+@example
+\version "1.5.60"
+\header @{
+ title = "Two miniatures"
+ composer = "F. Bar Baz"
+ tagline = "small is beautiful" @}
+
+\paper @{ linewidth = -1.0 @}
+
+\score @{
+ \notes @{ c'4 d'4 @}
+ \header @{
+ opus = "Opus 1."
+ piece = "Up" @}
+@}
+\score @{
+ \notes @{ d'4 c'4 @}
+ \header @{
+ opus = "Opus 2."
+ piece = "Down" @}
+@}
+@end example
+
+
+@separate
@example
-s1 s2. r4
-@end example
-@code{s} is a `spacer' rest. It does not print anything, but it does
-have the duration of a rest.
-@example
-oboes = \notes \relative c'' \context Voice = oboe @{
-@end example
-Now comes a part for two oboes. They play homophonically, so we
-print the notes as one voice that makes chords. Again, we insure that
-these notes are indeed processed by precisely one context with
-@code{\context}.
-@example
-\stemup s4 g8. b,16 c8 r <e'8.-\p g> <f16 a>
-@end example
-@code{\stemup} is an identifier reference. It is shorthand for
-@code{\property Voice.verticalDirection = \up}. If possible, you
-should use predefined identifiers like these for setting properties.
-Your input will be less dependent upon the implementation of LilyPond.
-@example
-\grace <e8( g> < )d4 f> <c2 e>
-@end example
-@code{\grace} introduces grace notes. It takes one argument, in this
-case a chord. The slur started on the @code{e} of the chord
-will be attached to the next note.@footnote{LilyPond will squirm
-about unended Slurs. In this case, you can ignore the warning}.
-@example
-\times 2/3
-@end example
-Tuplets are made with the @code{\times} keyword. It takes two
-arguments: a fraction and a piece of music. The duration of the
-second argument is multiplied by the first argument. Triplets make
-notes occupy 2/3 of their notated duration, so in this case the
-fraction is 2/3.
-@example
-@{ <d8 \< f> <e g> <f a> @}
-@end example
-The piece of music to be `tripletted' is sequential music containing
-three notes. On the first chord (the @code{d}), a crescendo is started
-with @code{\<}.
-@example
-<
-@end example
-At this point, the homophonic music splits into two rhythmically
-different parts. We can't use a sequence of chords to enter this, so
-we make a `chord' of sequences to do it. We start with the upper
-voice, which continues with upward stems:
-@example
- @{ \times 2/3 @{ a8 g c @} \! c2 @}
+\version "1.6.0"
@end example
-The crescendo is ended at the half note by the escaped exclamation
-mark `@code{\!}'.
+Lilypond and its language are still under development, and
+occasionally, details of the syntax are changed. This fragment
+indicates for which version the input file was written. When you
+compile this file, the 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{Older
+LilyPond versions}), which is used to update the file to the latest
+lily version.
+
+
+@node A piano excerpt
+@section A piano excerpt
+
+Our fourth subject is a piece of piano music. The fragment in the
+input file is a piano reduction of the G major Sinfonia by Giovanni
+Battista Sammartini. It was composed around 1740. It's in the source
+package under the name @file{input/tutorial/sammartini.ly}.
+
+@lilypondfile[smallverbatim]{sammartini.ly}
+
+As you can see, this example features multiple voices on one staff. To
+make room for those voices, their notes have to be stemmed in opposite
+directions.
+
+LilyPond includes the identifiers @code{\stemUp}, @code{\stemDown} along
+with some other commonly used formatting instructions, but to explain how
+it works, we wrote our own here. Of course, you should use predefined
+identifiers like these if possible: then you will be affected less by
+the implementation changes we occasionally make.
+
+@separate
+@example
+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 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 a unique name
+(`@code{viola}').
+
+@separate
@example
-\context Voice = oboeTwo @{
-\stemdown
+<c4-\arpeggio g' c>
@end example
-We can't share stems with the other voice, so we have to create a new
-@code{Voice} context. We give it the name @code{oboeTwo} to distinguish
-it from the other context. Stems go down in this voice.
+The delimiters @code{<} and @code{>} are shorthands for
+@code{\simultaneous @{} and @code{@}}. The expression enclosed in
+@code{<} and @code{>} is a chord.
+
+@cindex arpeggio
+
+@code{\arpeggio} typesets an arpeggio sign (a wavy vertical line) before
+the chord.
+
+@separate
@example
-\grace @{
+ \voiceTwo
+@end example
+
+We want the viola to have stems down, and have all the other
+characteristics of a second voice. This is enforced using the
+@code{\voiceTwo} command: it inserts instructions that makes stem,
+ties, slurs, etc. go down.
+
+
+
+@separate
+@example
+ g'8. b,16
@end example
-When a grace section is processed, a @code{Grace} context is
-created. This context acts like a miniature score of its own. It has
-its own time bookkeeping, and you can make notes, beams, slurs
-etc. Here fiddle with a property and make a beam. The argument of
-@code{\grace} is sequential music.
-@example
-\property Grace.verticalDirection = \down
-[f,16 g] @}
+Relative octaves work a little differently with chords. The starting
+point for the note following a chord is the first note of the chord. So
+the @code{g} gets an octave up quote: it is a fifth above the starting
+note of the previous chord (the central C).
+
+@separate
+@example
+s1 s2. r4
@end example
-Normally, grace notes are always stem up, but in this case, the upper
-voice interferes. We set the stems down here.
+@code{s} is a spacer rest. It does not print anything, but it does have
+the duration of a rest. It is useful for filling up voices that
+temporarily don't play. In this case, the viola doesn't come until one
+and a half measure later.
+
+@separate
+@example
+oboes = \notes \relative c'' \context Voice = oboe @{
+@end example
+Now comes a part for two oboes. They play homophonically, so we
+print the notes as one voice that makes chords. Again, we insure that
+these notes are indeed processed by precisely one context with
+@code{\context}.
+@separate
+@example
+\voiceOne s4 g8. b,16 c8 r <e'8. g> <f16 a>
+@end example
+
+The oboes should have stems up, so they should have stems up, to keep
+them from interfering with the staff-jumping bass figure.
+
+@separate
+@example
+\grace <e8( g> < d4 )f> <c2 e>
+@end example
+@cindex @code{\grace}
+@cindex ornaments
+@cindex grace notes
+@code{\grace} introduces grace notes. It takes one argument, in this
+case a chord. A slur is introduced starting from the @code{\grace}
+ending on the following chord.
+
+@separate
+@example
+\times 2/3
+@end example
+@cindex tuplet
+@cindex triplets
+Tuplets are made with the @code{\times} keyword. It takes two
+arguments: a fraction and a piece of music. The duration of the piece
+of music is multiplied by the fraction. Triplets make notes occupy 2/3
+of their notated duration, so in this case the fraction is 2/3.
+@separate
+@example
+@{ <d8 f> <e g> <f a> @}
+@end example
+The piece of music to be `tripletted' is sequential music containing
+three chords.
+
+@separate
+@example
+<
+@end example
+At this point, the homophonic music splits into two rhythmically
+different parts. We can't use a sequence of chords to enter this, so
+we make a `chord' of sequences to do it. We start with the upper
+voice, which continues with upward stems:
+@separate
+@example
+ @{ \times 2/3 @{ a8 g c @} c2 @}
+@end example
+
+@separate
+@example
+\\
+@end example
+The easiest way to enter multiple voices is demonstrated
+here. Separate the components of the voice (single notes or entire
+sequences) with @code{\\} in a simultaneous music expression. The
+@code{\\} separators split first voice, second voice, third voice, and
+so on.
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
the @code{f}.
+@separate
@example
- f8 e e2
+ f,8 e e2
@} >
@end example
This ends the two-part section.
+@separate
@example
-\stemboth
+\stemBoth
\grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
-@end example
-@code{\stemboth} ends the forced stem directions. From here, stems are
+@end example
+@cindex trill
+@cindex stemBoth
+
+@code{\stemBoth} ends the forced stem directions. From here, stems are
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 identifiers:
+between staves. Since it is repetitive, we use repeats:
+@separate
@example
-hoomPah = \notes \transpose c' @{
-@end example
-Transposing can be done with @code{\transpose}. It 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 is a no-op. Central C is transposed to
-central C.
-
-The purpose of this no-op is circumventing relative mode. Relative
-mode can not be used in conjunction with transposition, so relative
-mode will leave the contents of @code{\hoomPah} alone. We can use it
-without having to worry about getting the motive in a wrong
-octave@footnote{@code{hoomPah = \relative @dots{}} would be more
-intuitive to use, but that would not let me plug @code{\transpose}
-:-).}.
-@example
-c8 \translator Staff = top \stemdown
-@end example
-We assume that the first note will be put in the lower staff. After
-that note we switch to the upper staff with @code{\translator}. To be
-precise, this @code{\translator} entry switches the current voice to a
-@code{Staff} named @code{top}. So we have to name the upper staff
-`@code{top}'. Stem directions are set to avoid interfering with the
-oboe voices.
-@example
-c'8 \translator Staff = bottom \stemup @}
-@end example
-Then a note is put on the upper staff, and we switch again. We have
-to name the lower staff `@code{bottom}'.
+hoomPah = \repeat unfold 8
+@end example
+@cindex unfolded @code{\repeat}
+The unfolded repeat prints the notes in its argument as if they were
+written out in full eight times.
+@separate
+@example
+\notes \transpose c' @{
+@end example
+@cindex transposing
+@cindex relative mode and transposing
+
+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.
+
+The purpose of this no-op is to protect it from being interpreted as
+relative notes. Relative mode can not be used together with
+transposition, so @code{\relative} will leave the contents of
+@code{\hoomPah} alone. We can use it without having to worry about
+getting the motive in a wrong octave.
+@separate
+@cindex staff switch, manual
+@cindex cross staff voice, manual
+@cindex @code{\translator}
+
+@example
+ \translator Staff = down
+ \stemUp
+ c8
+ \translator Staff = up
+ \stemDown
+ c'8 @}
+@end example
+Voices can switch between staves. Here you see two staff switching
+commands. The first one moves to the lower staff, the second one to
+the lower one. If you set stem directions explicitly (using the
+identifiers @code{\stemUp} and @code{\stemDown}.
+
+@separate
@example
-hoomPahHoomPah = @{ [\hoomPah \hoomPah] @}
-@end example
-Put two of these fragments in sequence, and beam them.@example
bassvoices = \notes \relative c' @{
c4 g8. b,16
-\hoomPahHoomPah \hoomPahHoomPah \hoomPahHoomPah
-\hoomPahHoomPah
-@end example
-Entering the bass part is easy: the hoomPahHoomPah variable is
-referenced four times.
+\autochange Staff \hoomPah \context Voice
+@end example
+
+@separate
+@example
+ \translator Staff = down
+@end example
+@cindex staff switch
+@cindex cross staff voice
+We want the remaining part of this melody on the lower staff, so we do a
+manual staff switch here.
+
+
+@separate
@example
-\context Voice = reallyLow @{\stemdown g2 ~ | g4 c8 @} >
-@end example
-After skipping some lines, we see @code{~}. This mark makes ties.
+\context Voice = reallyLow @{\stemDown g2 ~ | g4 c8 @} >
+@end example
+@cindex tie
+@cindex @code{~}
+After skipping some lines, we see @code{~}. This mark makes ties. Note
+that ties and slurs are different things. A tie can only connect two
+note heads of the same pitch, whereas a slur can connect many chords
+with one curve.
+
+@separate
@example
\context PianoStaff
@end example
-For piano music, a special context is needed to get cross staff
-beaming right. It is called @code{PianoStaff}.
+ A special context is needed to get cross staff beaming right. This
+context is called @code{PianoStaff}.
+@separate
@example
-\context Staff = bottom < \time 2/2; \clef bass;
+\context Staff = bottom < \time 2/2 \clef bass
@end example
The bottom staff must have a different clef.
+@separate
@example
-indent = 0.0;
+indent = 0.0
@end example
To make some more room on the line, the first (in this case the only)
-line is not indented. The line still looks is very cramped, but that is due
-to the format of this tutorial.
+line is not indented. The line still looks very cramped, but that is due
+to the page layout of this document.
+
+
+@ignore
+[TODO:
+
+* font-size, multi-stanza.
+
+* Simple part combining in a Hymn
+@end ignore
+
+
+@node Fine tuning a piece
+@section Fine tuning a piece
+
+In this section, we show some ways to fine tune the final output of a
+piece. We do so using a single measure of a moderately complex piano
+piece: a Brahms intermezzo (opus 119, no. 1). Both fragments (the
+tuned and the untuned are in the @file{input/tutorial/}).
+
+The code for the untuned example shows us some new things.
-This example shows a lot of features, but the organisation isn't
-perfect. For example, it would be less confusing to use a chord
-containing sequential music than a sequence of chords for the oboe
-parts.
+@lilypondfile[verbatim]{brahms-original.ly}
-[TODO: demonstrate Hara-Kiri with scores and part extraction.]
-@node end of tutorial
-@section The end
+@cindex dynamics
+@cindex loudness
+@cindex forte
+@cindex crescendo
+@cindex @code{\<}
+@cindex @code{\!}
+
+The crescendo is ended at the half note by the escaped exclamation
+mark @code{\!}.
+
+Hairpin dynamics can be indicated using @code{\>} to start a
+decrescendo, and @code{\!} to end one. The crescendo is started using
+@code{\<} and also ended using @code{\!}. Absolute dynamics can be
+entered using @code{\p}, @code{\mf}, etc. All these commands apply to
+the complete chord where they are entered, but for syntactical
+reasons, they must be attached to one of the notes of the chord.
+
+@cindex fingering instructions
+
+Fingering indications are entered simply using @code{-@var{N}}, where
+@var{N} is a digit.
+
+Now that we have the basic piece of music entered, we want to fine
+tune it, so we get something that resembles the original printed
+edition by Schott/Universal Edition:
+
+@lilypondfile{brahms-tweaked.ly}
+
+@cindex tuning grob behavior
+
+The basic process that we follow is that we override defaults in the
+printing system. We do this by setting variables in so-called grobs.
+Printed symbols are internally represented by Graphical Objects
+(Grobs). Each grob is described by a bunch of settings. Every
+setting is a variable: it has a name, and you can assign a value to
+the variable. These setting determine the fonts, offsets, sub-routines
+to be called on the grob, etc. The initial values of these settings
+are set in the Scheme file @file{scm/grob-description.scm}.
+
+@cindex slur attachments
+
+We start with the slur: the slur in the upper part, running from the F
+sharp to the A, runs from stem to stem in the printed edition, while
+ours starts from the note head at the left. The following property
+setting forces all slurs to run from stem to stem (and not from or to
+note head)
+
+@example
+ \property Voice.Slur \set #'attachment = #'(stem . stem)
+@end example
+
+More precisely, this command extends the definition of the @code{Slur}
+object in the current @code{Voice}. The variable @code{attachment} is
+set to the pair of symbols @code{'(stem . stem)}.
+
+Although this is useful information, it is not very helpful: the
+lilypond backend supports approximately 240 variables like
+@code{attachment}, each with their own meaning and own type
+(eg. number, symbol, list, etc). Besides slur, LilyPond has 80
+different types of Grobs, that may be created in 14 different context
+types besides Voice.
+
+@cindex internal documentation
+@cindex finding grobs
+@cindex grob descriptiosn
+
+The interesting information is how you can figure out which properties
+to tune for your own scores. To discover this, you must have a copy of
+the internals document. This is a set of HTML pages, which should be
+included if you run a binary distribution@footnote{You can also
+compile them by executing @code{make -C Documentation/user/
+out/lilypond-internals.html} in the source package.}. This document is
+also available on the web: go to the lilypond website, click
+``Documentation: other'' on the side bar, click
+``lilypond-internals'', under information for users.
+
+You might want to bookmark either the HTML files on disk, or the one
+on the web. One word of caution is in place here: the internals
+documentation is generated from the definitions that lily uses. For
+that reason, it is strongly tied to the version of LilyPond that you
+use. Before you proceed, please make sure that you are using the
+documentation that corresponds to the LilyPond version that you use.
+
+Suppose that you wanted to tune the behavior of the slur. The first
+step is to get some general information on slurs in lilypond. Turn to
+the index, and look up ``slur''. The section on slurs says
+@quotation
+The grob for this object is @internalsref{Slur}, generally in
+@internalsref{Voice} context.
+@end quotation
+
+So the grob for this object is called @code{Slur}, and slurs are
+created in the @code{Voice} context. If you are reading this tutorial
+in the HTML version, then you can simply click Slur, otherwise, you
+must look it up the internal documentation: click ``grob overview'' ,
+and select ``slur'' (the list is alphabetical.)
+
+Now you get a list of all the properties that the slur object
+supports, along with their default values. Among the properties we
+find the @code{attachment} property with its default setting.
+The property documentation explains that the following setting will
+produce the desired effect:
+@example
+ \property Voice.Slur \set #'attachment = #'(stem . stem)
+@end example
+
+If you ran the previous example, you have unknowingly already used
+this kind of command. The @file{ly/property-init.ly} contains the
+definition of @code{\stemUp}
+@example
+ stemUp = \property Voice.Stem \set #'direction = #1
+@end example
+
+
+We also want to move around the fingering `3'. In the printed edition
+it is not above the stem, but a little lower, slightly left of the
+stem. From the user manual, we find that the associated grob is called
+@code{Fingering}, but how do we know if we should use @code{Voice} or
+@code{Staff}. In many cases, @code{Voice} is a safe bet, but you can
+also deduce this information from the internals documentation: if you
+visit the documentation of @code{Fingering}, you will notice
+@example
+Fingering grobs are created by: Fingering_engraver
+@end example
+
+
+
+Clicking @code{Fingering_engraver} will show you the documentation of
+the module responsible for interpreting the fingering instructions and
+translating them to a @code{Fingering} grob. Such a module is called
+an @emph{engraver}. The documentation of the @code{Fingering_engraver}
+says,
+@example
+Fingering_engraver is part of contexts: Voice and TabVoice
+@end example
+so tuning the settings for Fingering should be done using either
+@example
+ \property Voice.Fingering \set @dots{}
+@end example
+or
+@example
+ \property TabVoice.Fingering \set @dots{}
+@end example
+
+Since the @code{TabVoice} is only used for tab notation, we see that
+the first guess @code{Voice} was indeed correct.
+
+@cindex setting grob properties
+@cindex @code{extra-offset}
+
+For shifting the fingering, we use the grob property
+@code{extra-offset}. The following command manually adds an offset to
+the object. We move it a little to the left, and 1.8 staff space
+downwards.
+@example
+ \property Voice.Fingering \set #'extra-offset = #'(-0.3 . -1.8)
+@end example
+The @code{extra-offset} is a low-level feature: it moves around
+objects in the printout; the formatting engine is completely oblivious
+to these offsets. The unit of these offsets are staff-spaces.
+
+@cindex reverting grob properties
+@cindex undoing grob properties
+
+We only want to offset a single grob, so after the F-sharp, we must
+undo the setting. The technical term is to revert the grob property.
+@example
+ \property Voice.Fingering \revert #'extra-offset
+@end example
+
+@cindex property types
+@cindex translator properties
+@cindex grob properties
+@cindex music properties
+
+
+There is three different types of variables in LilyPond, something
+which is confusing at first (and for some, it stays like that).
+Variables such as @code{extra-offset} and @code{attachment} are called
+grob properties. They are something different from the translator
+properties, like @code{autoBeaming}. Finally, music expressions are
+internally also stored using properties, so-called music
+properties. You will encounter the latter type if you run Scheme
+functions on music using @code{\apply}.
+
+The second fingering instruction should be moved up a little, to avoid
+a collision with the slur. This could be achieved with
+@code{extra-offset}, but in this case, a simpler mechanism also
+works. We insert an empty text between the 5 and the note. The empty
+text pushes the fingering instruction away:
+@example
+ a^" "^#'(finger "5")
+@end example
+
+Lilypond tries to put fingering instructions closer to the notes as
+text instructions. To insert an empty text (@code{^" "}) between the
+finger and the note, we have disguised the fingering instruction as a
+text: @code{(finger "5")}.
+
+Normally, one would specify dynamics in a single voice, and start and
+end dynamics (such as @b{f} and @b{p}) will be aligned with
+hairpins. In this case, we want the decrescendo to be in a different
+place from the piano sign. We achieve this by putting the dynamic
+markings in different voices. The crescendo should be above the upper
+staff. This can be forced by the precooked command
+@example
+ \dynamicsUp
+@end example
+
+However, if you do that, the decrescendo will be too close to the
+upper voice, and collide with the stems. Looking at the manual for
+dynamics, we notice that ``Vertical positioning of these symbols is
+handled by the @internalsref{DynamicLineSpanner} grob.''. If we turn
+to the documentation of @code{DynamicLineSpanner}, we find that the
+@code{DynamicLineSpanner} supports several so-called
+`interfaces'. This grob not only puts dynamic objects next to the
+staff (@code{side-position-interface}), but it also groups dynamic
+objects (@code{axis-group-interface}), is considered a dynamic sign
+itself (@code{dynamic-interface}) and is a grob: it has the
+@code{grob-interface}, with all the variables that come with it.
+
+For the moment, we are interested in the side positioning:
+@quotation
+ side-position-interface
+
+ Position a victim object (this one) next to other objects (the
+ support). In this case, the direction signifies where to put the
+ victim object relative to the support (left or right, up or down?)
+@end quotation
+Between the grob and its support (in this case: the notes in the voice
+going down), there should be more space. This space is controlled by
+@code{padding}, so we increase it.
+@example
+ \property Voice.DynamicLineSpanner \override #'padding = #5.0
+@end example
+
+This command is almost like the command for setting slur attachments,
+but subtly different in its details. Grob properties can be
+manipulated with two commands: @code{\override} extends the grob
+variables with a setting, and @code{\revert} releases this
+setting. This has a certain theoretical appeal: the operations are
+simple and symmetric. For practical use, it can be cumbersome. Both
+commands act like parentheses: you should carefully balance the use of
+@code{\override} and @code{\revert}. The @code{\set} command is more
+friendly: it first does a @code{\revert} followed by @code{\override}.
+
+Finally, Brahms uses music notation is a slightly unorthodox way. Ties
+usually happen only within one voice. In this piece, the composer
+gladly produces ties that jump voices. We deal with this by faking
+these ties: whenever we need such a tie, we insert a notehead in a
+different voice, and blank the stem. This is done in the following
+snippet of code.
+
+@example
+ \property Voice.Stem \set #'transparent = ##t
+ d'
+ \property Voice.Stem \revert #'transparent
+@end example
+
+Finally, the last tie is forced up using @code{\tieUp}.
+
+
+@node An orchestral score
+@section An orchestral score
+
+@menu
+* The full score::
+* Extracting an individual part::
+@end menu
+
+
+Our last two examples show a way to setup the music for an orchestral
+score. When typesetting a piece for several instruments, you'll want to
+create a conductor's full score, alongside several individual parts.
+
+LilyPond is well suited for this task. We will declare the music for
+each instrument individually, giving the music of each instrument its
+own name. These pieces of music are then combined in different
+@code{\score} blocks to produce different combinations of the score.
+
+This orchestral score example consists of three input files. In the
+first file, @file{os-music.ly}, we define the music for all
+instruments. This file will be used both for producing the score and
+the separate parts. Other files reference this file by doing
+@code{\include "os-music.ly"}.
+
+If you were to run LilyPond on this file, no printable output would be
+produced.
+
+@example
+% os-music.ly
+\header @{
+ title = "Zo, goed lieverd?"
+ subtitle = "How's, this babe?"
+ composer = "JCN"
+ opus = "1"
+ piece = "Laid back"
+@}
+global = @{
+ \time 2/4
+ \skip 2*4 \bar "|."
+@}
+Key = \notes \key as \major
+flautoI = \notes\relative c'' @{
+ f8 g f g f g f g
+ bes as bes as bes as bes as
+@}
+flautoII = \notes\relative c'' @{
+ as8 bes as bes R1 d4 ~ d
+@}
+tromboI = \notes\relative c'' @{
+ c4. c8 c8 c4. es4 r as, r
+@}
+tromboII = \notes\relative c'' @{
+ as4. as8 as8 as4. R1*1/2 as4 es'
+@}
+timpani = \notes\relative c, @{
+ \times 2/3 @{ f4 f f @}
+ \times 4/5 @{ as8 as as as as @}
+ R1
+@}
+corno = \notes\relative c' @{
+ bes4 d f, bes d f, bes d
+@}
+@end example
+
+We will not go through the input line by line, but only indicate and
+explain the new elements.
+
+
+@separate
+@example
+global = @{
+ \time 2/4
+ \skip 2*4 \bar "|.";
+@}
+@end example
+
+Declare setting to be used globally. The @code{\skip} command produces
+no output, but moves forward in time: in this case, the duration of a
+half note (@code{2}), and that four times (@code{*4}). This brings us
+to the end of the piece, and we can set the end bar.
+
+@separate
+@example
+Key = \notes \key as \major
+@end example
+Declare the key signature of the piece and assign it to the identifier
+@var{Key}. Later on, we'll use @code{\Key} for all staves except those
+for transposing instruments.
+
+@node The full score
+@subsection The full score
+
+
+The second file, @file{input/tutorial/os-score.ly} reads the definitions of the first
+(@file{input/tutorial/os-music.ly}), and defines the @code{\score} block for the full
+conductor's score.
+
+
+@example
+% os-score.ly
+\include "os-music.ly"
+\include "paper13.ly"
+
+#(set! point-and-click line-column-location)
+#(define text-flat '((font-relative-size . -2)
+ (music "accidentals--1")))
+
+\score @{
+ <
+ \global
+ \property Score.BarNumber \override #'padding = #3
+ \context StaffGroup = woodwind <
+ \context Staff = flauti <
+ \property Staff.midiInstrument = #"flute"
+ \property Staff.instrument = "2 Flauti"
+ \property Staff.instr = "Fl."
+ \Key
+ \context Voice=one @{ \voiceOne \flautoI @}
+ \context Voice=two @{ \voiceTwo \flautoII @}
+ >
+ >
+ \context StaffGroup = timpani <
+ \context Staff = timpani <
+ \property Staff.midiInstrument = #"timpani"
+ \property Staff.instrument = #'(lines "Timpani" "(C-G)")
+ \property Staff.instr = #"Timp."
+ \clef bass
+ \Key
+ \timpani
+ >
+ >
+ \context StaffGroup = brass <
+ \context Staff = trombe <
+ \property Staff.midiInstrument = #"trumpet"
+ \property Staff.instrument = #`(lines "2 Trombe" "(C)")
+ \property Staff.instr = #`(lines "Tbe." "(C)")
+ \Key
+ \context Voice=one \partcombine Voice
+ \context Thread=one \tromboI
+ \context Thread=two \tromboII
+ >
+ \context Staff = corni <
+ \property Staff.midiInstrument = #"french horn"
+ \property Staff.instrument = #`(lines "Corno"
+ (columns "(E" ,text-flat ")"))
+ \property Staff.instr = #`(lines "Cor."
+ (columns "(E" ,text-flat ")"))
+ \property Staff.transposing = #3
+ \notes \key bes \major
+ \context Voice=one \corno
+ >
+ >
+ >
+ \paper @{
+ indent = 15 * \staffspace
+ linewidth = 60 * \staffspace
+ textheight = 90 * \staffspace
+ \translator@{
+ \HaraKiriStaffContext
+ @}
+ @}
+ \midi @{
+ \tempo 4 = 75
+ @}
+@}
+@end example
+
+@center @strong{Zo, goed lieverd?}
+@sp 1
+@center How's, this babe?
+@flushright
+Opus 1.
+@end flushright
+@flushleft
+@sc{Laid back}
+@end flushleft
+
+@lilypondfile{os-score.ly}
+
+@separate
+@example
+\include "os-music.ly"
+@end example
+First, we need to include the music definitions we made in
+@file{os-music.ly}.
+
+@separate
+@example
+#(set! point-and-click line-column-location)
+@end example
+
+This piece of Scheme code sets the Scheme variable
+@code{point-and-click} to the value @var{line-column-location} (which
+itself is a Scheme procedure).
+
+Editing input files can be complicated if you're working with large
+files: if you're digitizing existing music, you have to synchronize
+the .ly file, the sheet music on your lap and the sheet music on the
+screen. The point-and-click mechanism makes it easy to find the
+origin of an error in the LY file: when you view the file with Xdvi
+and click on a note, your editor will jump to the spot where that note
+was entered. For more information, see @ref{Point and click}.
+
+
+@separate
+@example
+#(define text-flat '((font-relative-size . -2)
+ (music "accidentals--1")))
+@end example
+
+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 natural sign is called @code{accidentals-0}). The default font is
+too big for text, so we select a relative size of @code{-2}.
+
+@separate
+@example
+ <
+ \global
+@end example
+Of course, all staves are simultaneous and use the same global settings.
+
+@separate
+@example
+ \property Score.BarNumber \override #'padding = #3
+@end example
+LilyPond prints bar numbers at the start of each line, but
+unfortunately, they end up a bit too close to the staff in this
+example. A bar number internally is a Grob called @var{BarNumber}.
+BarNumber Grobs can be manipulated through their
+@var{side-position-interface}. One 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 information on all these kind of properties in LilyPond's
+automatically generated documentation in
+@ifnottex
+@ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}.
+@end ifnottex
+@iftex
+the online documentation.
+@end iftex
+
+@separate
+@example
+ \context StaffGroup = woodwind <
+ \context Staff = flauti <
+@end example
+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
+ \property Staff.midiInstrument = #"flute"
+@end example
+Specify the instrument for MIDI output (see @ref{MIDI instrument
+names}).
+
+@separate
+@example
+ \property Staff.instrument = "2 Flauti"
+ \property Staff.instr = "Fl."
+@end example
+And define the instrument names to be printed in the margin,
+@code{instrument} for the first line of the score, @code{instr} for the
+rest of the score.
+
+@separate
+@example
+ \Key
+@end example
+The flutes play in the default key.
+
+@separate
+@example
+ \context Voice=one @{ \voiceOne \flautoI @}
+ \context Voice=two @{ \voiceTwo \flautoII @}
+@end example
+Last come the actual flute parts. Remember that we're still in
+simultaneous mode. We name both voices differently, so that LilyPond
+will actually create two Voice contexts. The flute parts are simple, so
+we specify manually which voice is which: @code{\voiceOne} forces the
+direction of stems, beams, slurs and ties up, @code{\voiceTwo} sets
+directions down.
+
+@separate
+@example
+ >
+ >
+@end example
+Close the flutes staff and woodwind staff group.
+
+@separate
+@example
+ \property Staff.instrument = #'(lines "Timpani" "(C-G)")
+@end example
+The timpani staff only shows a new piece of scheme markup, it sets two
+lines of text.
+
+@separate
+@example
+ \context Voice=one \partcombine Voice
+ \context Thread=one \tromboI
+ \context Thread=two \tromboII
+@end example
+You have seen the notation contexts Staff and Voice, but here's a new
+one: Thread. One or more Threads can be part of a Voice. The Thread
+takes care of note heads and rests, the Voice combine note heads onto a
+stem.
+
+For the trumpets we use the automatic part combiner (see @ref{Automatic
+part combining}) to combine the two simultaneous trumpet parts onto the
+trumpet staff. Each trumpet gets its own Thread context, which must be
+named @code{one} and @code{two}). The part combiner makes these two
+threads share a Voice when they're similar, and splits the threads up
+when they're different.
+
+@separate
+@example
+ \property Staff.instrument = #`(lines "Corno"
+ (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 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
+ \property Staff.transposing = #3
+@end example
+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 property
+@var{transposing}.
+
+@separate
+@example
+ \notes \key bes \major
+@end example
+Therefore, it has a different key.
+
+@separate
+@example
+ indent = 15 * \staffspace
+ linewidth = 60 * \staffspace
+@end example
+We specify a big indent for the first line and a small linewidth for this
+tutorial.
+
+@separate
+
+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 staves.
+
+@node Extracting an individual part
+@subsection Extracting an individual part
+
+The third file, @file{os-flute-2.ly} also reads the definitions of the
+first (@file{os-music.ly}), and defines the @code{\score} block for the
+second flute part.
+
+@example
+\include "os-music.ly"
+\include "paper16.ly"
+
+\score @{
+ \context Staff <
+ \property Score.skipBars = ##t
+ \property Staff.midiInstrument = #"flute"
+ \global
+ \Key
+ \flautoII
+ >
+ \header @{
+ instrument = "Flauto II"
+ @}
+ \paper @{
+ linewidth = 80 * \staffspace
+ textheight = 200 * \staffspace
+ @}
+ \midi @{
+ \tempo 4 = 75
+ @}
+@}
+@end example
+
+@center @strong{Zo, goed lieverd?}
+@sp 1
+@center How's, this babe?
+@center @emph{Flauto II}
+@flushright
+Opus 1.
+@end flushright
+@flushleft
+@sc{Laid back}
+@end flushleft
+@lilypondfile{os-flute-2.ly}
+
+
+Because we separated the music definitions from the @code{\score}
+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.
+
+@separate
+@example
+ \flautoII
+@end example
+In this individual part the second flute has a whole staff for itself,
+so we don't want to force stem or tie directions.
+
+@separate
+@example
+ \header @{
+ instrument = "Flauto II"
+ @}
+@end example
+The @code{\header} definitions were also read from @file{os-music.ly},
+but we need to set the instrument for this particular score.
+
+@separate
+@example
+ \property Score.skipBars = ##t
+@end example
+In the conductor's full score, all bars with rests are printed, but for
+the individual parts, we want to contract pieces of consecutive empty
+bars. LilyPond will do this if Score's @var{skipBars} property to
+true.
+
+
+@node Integrating text and music
+@section Integrating text and music
+
+Sometimes, you might want to use music examples in a text that you are
+writing. For example, if you are writing a musicological treatise, a
+songbook, or (like us) the LilyPond manual. You can make such texts by
+hand, simply by importing a PostScript figure into your wordprocessor.
+However, there is a also an automated procedure:
+
+If you use HTML, La@TeX{} or texinfo, you can mix text and LilyPond
+code. A script called @code{lilypond-book} will extract the music
+fragments, run LilyPond on them, and put back the resulting notation.
+This utility program is described fully in the chapter @ref{Insert
+music snippets into your texts using lilypond-book}. Here we show a
+small example. Since the example also contains explanatory text, we
+won't comment on the contents.
+
+@example
+\documentclass[a4paper]@{article@}
+\begin@{document@}
+
+In a lilypond-book document, you can freely mix music and text. For
+example:
+\begin@{lilypond@}
+ \score @{ \notes \relative c' @{
+ c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
+ @} @}
+\end@{lilypond@}
+Notice that the music line length matches the margin settings of the
+document.
+
+If you have no \verb+\score+ block in the fragment,
+\texttt@{lilypond-book@} will supply one:
+
+\begin@{lilypond@}
+ c'4
+\end@{lilypond@}
+
+In the example you see here, a number of things happened: a
+\verb+\score+ block was added, and the line width was set to natural
+length. You can specify many more options using \LaTeX style options
+in brackets:
+
+\begin[verbatim,11pt,singleline,
+ fragment,relative,intertext="hi there!"]@{lilypond@}
+ c'4 f bes es
+\end@{lilypond@}
+
+\texttt@{verbatim@} also shows the LilyPond code, \texttt@{11pt@} selects
+the default music size, \texttt@{fragment@} adds a score block,
+\texttt@{relative@} uses relative mode for the fragment, and
+\texttt@{intertext@} specifies what to print between the
+\texttt@{verbatim@} code and the music.
+
+If you include large examples into the text, it may be more convenient
+to put the example in a separate file:
+
+\lilypondfile[printfilename]@{sammartini.ly@}
+
+The \texttt@{printfilename@} option adds the file name to the output.
+
+\end@{document@}
+@end example
+
+Under Unix, you can view the results as follows.
+@example
+$ cd input/tutorial
+$ lilypond-book --outdir=out/ lilbook.tex
+lilypond-book (GNU LilyPond) 1.3.146
+Reading `input/tutorial/lilbook.tex'
+Reading `input/tutorial/sammartini.ly'
+@var{lots of stuff deleted}
+Writing `out/lilbook.latex'
+$ cd out
+$ latex lilbook.latex
+@var{lots of stuff deleted}
+$ 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 want
+those to clutter up your working directory. Hence, we have them created
+in a separate subdirectory.
+
+The result more or less looks like this:
+
+@separate
+
+In a lilypond-book document, you can freely mix music and text. For
+example:
+@lilypond
+ \score { \notes \relative c' {
+ c2 g'2 \times 2/3 { f8 e d } c'2 g4
+ } }
+@end lilypond
+Notice that the music line length matches the margin settings of the
+document.
+
+If you have no @code{\score} block in the fragment,
+@code{lilypond-book} will supply one:
+
+@lilypond
+ c'4
+@end lilypond
+
+In the example you see here, a number of things happened: a
+@code{\score} block was added, and the line width was set to natural
+length. You can specify many more options using La@TeX{} style options
+in brackets:
+
+@lilypond[verbatim,11pt,singleline,
+ fragment,relative,intertext="hi there!"]
+ c'4 f bes es
+@end lilypond
+
+@code{verbatim} also shows the LilyPond code, @code{11pt} selects
+the default music size, @code{fragment} adds a score block,
+@code{relative} uses relative mode for the fragment, and
+@code{intertext} specifies what to print between the
+@code{verbatim} code and the music.
+
+If you include large examples into the text, it may be more convenient
+to put the example in a separate file:
+
+@lilypondfile[printfilename]{sammartini.ly}
+
+The @code{printfilename} option adds the file name to the output.
+@node End of tutorial
+@section End of tutorial
-That's all folks. From here, you can either try fiddling with input
-files, or you can read the reference manual.
+This is the end of the tutorial. If you came up till here, and
+have understood everything, then you're now an accomplished lilypond
+hacker. From here, you can try fiddling with input
+files, coming back to the reference manual for information.
+Also don't forget to check out the
+@ifhtml
+@uref{../../templates/out-www/templates.html,templates},
+@uref{../../test/out-www/test.html,example} and
+@uref{../../regression/out-www/regression.html,feature test}
+snippets.
+@end ifhtml
+@ifnothtml
+templates, example and feature test snippets.
+@end ifnothtml
+If you want to see real action lilypond, then head over to
+@uref{http://www.mutopiaproject.org}, which has many examples of
+classical music typeset by LilyPond.
+
+