* 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
+* A lead sheet::
+* Listening to output::
+* Titling ::
+* Single staff polyphony ::
+* Piano staffs::
+* Organising larger pieces::
* Fine tuning a piece::
-* An orchestral score:: Conductor's score and individual parts
+* An orchestral part::
* Integrating text and music:: Integrating text and music
@end menu
-Operating lilypond is done through text files: To print a piece of
-music, you enter the music in a file. When you run lilypond (normally
-using the program @code{ly2dvi}) on that file, the program produces
-another file which contains sheet music that you can print or view.
+Operating is done through text files: To print a piece of music, you
+enter the music in a file. When LilyPond is run (normally using the
+program @code{ly2dvi}) on that file, another file containing formatted
+sheet music, is produced. That file may be printed or viewed.
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.
+language. After this first contact, we will show which commands to
+run to produce printed output, so you should then be able to create
+your first sheets of music. When starting out, it will be convenient
+to print out
+@ifhtml
+the
+@end ifhtml
+@ref{Cheat sheet}, which is a table listing all commands for
+convenient reference.
+
@node First steps
@end lilypond
A @rglos{sharp} (@texisharp{}) is made by adding @samp{is}, a
-@rglos{flat} (@texiflat{}) by adding @samp{es}. As you would expect,
+@rglos{flat} (@texiflat{}) by adding @samp{es}. As you might expect,
a @rglos{double sharp} or @rglos{double flat} is made by adding
-@samp{isis} or @samp{eses}:
+@samp{isis} or @samp{eses}:@footnote{This syntax derived from note
+naming conventions in Nordic and Germanic languages, like German and
+Dutch}
@example
cis1 ees fisis aeses
\transpose c c' { a2. a4 a8. a16 s16_" " }
@end lilypond
+Entering pitches and durations is fully explained in @ref{Pitches} and
+@ref{Durations}.
+
+
The @rglos{meter} (or @rglos{time signature}) can be set with the
@code{\time} command:
s16_" "
@end lilypond
+Time signatures and other timing commands are described in @ref{Time
+signature}.
+
+
The @rglos{clef} can be set using the @code{\clef} command:
@c what is more common name treble or violin?
s16_" "
@end lilypond
+Clefs are fully explained in @ref{Clef}.
+
+
When you enter these commands in a file, you must to enclose them in
@code{\notes @{@dots{}@}}. This lets LilyPond know that music (as
opposed to @rglos{lyrics}) follows:
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:
+enclosing them in @code{\score @{ ... @}}. This is what a full source file looks like:
@example
\score @{
@section Running LilyPond
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
+in a LilyPond file. In this section we explain what commands to run
and how to 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. 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.
+before, want to test your setup, or want to run an example file
+yourself, read this section. The instructions that follow are for
+Unix-like systems. Some additional instructions for Microsoft Windows are given
+at the end of this section.
Begin by opening a terminal window and starting a text editor.
For example, you could open an xterm and execute @code{joe}. In your
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
+@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 @code{ly2dvi}, proceed as follows:
ghostview test.pdf
ggv test.pdf
kghostview test.pdf
+ xpdf test.pdf
+ gpdf test.pdf
@end example
@end quotation
If the music on your screen looks good, you can print it by clicking
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 burtons
+so viewing them usually is quicker. You can run @code{xdvi test.dvi}
+@c KDVI doesn't grok the PS specials.
+@c or
+@c @code{kdvi test.dvi}
+@c
+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.
@cindex PDF
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}.
+drivers like @code{dvilj}. LilyPond DVI use embedded PostScript code
+and will not render correctly with other DVI drivers besides
+@code{dvips}.
@cindex dvips
@cindex dvilj
@cindex DVI driver
+
+Various commands for formatting and printing music are detailed in
+@ref{Invoking LilyPond}.
+
+
@unnumberedsubsec Windows users
-Windows users can start the terminal by clicking on the LilyPond or
-Cygwin icon. You can use any text editor (such as NotePad, Emacs or
-Vim) to edit the LilyPond file. If you install the Cygwin's
-@code{XFree86} X11 window system, @code{tetex-x11} and
-@code{ghostscript-x11} packages too, you can view the @code{dvi}
-output doing @code{xdvi test.dvi} as described above. If you have
+
+On Windows, the terminal is started by clicking on the LilyPond or
+Cygwin icon. Any text editor (such as NotePad, Emacs or Vim) may be
+used to edit the LilyPond file. When Cygwin's @code{XFree86} X11
+window system is installed along with @code{tetex-x11} and
+@code{ghostscript-x11} packages, then the @code{dvi} output may be
+viewed with @code{xdvi test.dvi} as described above. If you have
installed a PostScript/PDF viewer, such as @code{GSView} from
@uref{http://www.cs.wisc.edu/~ghost}, viewing the PDF file can be done
with:
@code{gsview32 test.pdf}
@end example
@end quotation
-You can also print from the command line by executing:
+Printing may be done by executing
@quotation
@example
@code{gsview32 /s test.pdf}
@end quotation
-@strong{SUMMARY}
-
-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.
-
-@multitable @columnfractions .3 .3 .4
-
-@item @b{Syntax}
-@tab @b{Description}
-@tab @b{Example}
-
-@item @code{1 2 8 16}
-@tab durations
-@tab
-@lilypond[relative 1, notime]
-\property Staff.autoBeaming = ##f
-\property Staff.Clef = \turnOff
-c1 c2 c8 c16
-@end lilypond
-
-@item @code{. ..}
-@tab augmentation dots
-@tab
-@lilypond[relative 1, notime]
-\property Staff.Clef = \turnOff
-c4. c4..
-@end lilypond
-
-@item @code{c d e f g a b }
-@tab scale
-@tab
-@lilypond[relative 1, notime]
-\property Staff.Clef = \turnOff
-c d e f g a b
-@end lilypond
-
-@item @code{\clef treble \clef bass }
-@tab clefs
-@tab
-@lilypond[notime]
-\clef treble
-s4_" "
-\clef bass
-s4_" "
-@end lilypond
-
-@item @code{\time 3/4 \time 4/4 }
-@tab time signature
-@tab
-@lilypond
-\property Staff.Clef \set #'transparent = ##t
-\time 3/4
-s4_" "
-\time 4/4
-s16_" "
-@end lilypond
-
-@end multitable
-
-
@node More basics
@section More basics
-We continue with the introduction of the remaining musical constructs.
-Normal rests are entered just like notes with the name ``@code{r}'':
+We continue with the introduction of more musical constructs. Normal
+rests are entered just like notes with the name ``@code{r}'':
@quotation
@example
@end quotation
@separate
+Rests are described in full detail in @ref{Rests}.
+
+
@c Tim wants to move this quotes example just before the: quotes-do not-work
@c score, but we'd need to remove quotes from the other two (key and
@c tie) examples...
c2-~-( c8 fis fis4 ~ fis2 g2-)
@end lilypond
+The notation manual discusses ties in @ref{Ties}.
-The key signature is set with the command ``@code{\key}''. One
-caution word of caution: you need to specify whether the key is
-@code{\major} or @code{\minor}.
+The key signature is set with the command ``@code{\key}'', followed by
+a pitch and @code{\major} or @code{\minor}:
@quotation
@example
\key d \major
@end quotation
+
@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.
@c accidentals...
There are some interesting points to note in this example.
-Accidentals (sharps and flats) do not 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 does not 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.
+Accidentals (sharps and flats) do not have to be marked explicitly:
+you just enter the note name, and an accidental is printed
+automatically, only when necessary. Bar lines and beams are drawn
+automatically. Line breaks are calculated automatically; it does not
+matter where the lines breaks are in the source file. Finally, the
+order of time, key and clef changes is not relevant: in the printout,
+these are ordered using standard notation conventions.
The example also indicates that a piece of music written in a high
register needs lots of quotes. This makes the input less readable,
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 do not
-use octavation quotes (ie do not 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.
+note from which relative starts, in this case @code{c''}. If you do
+not use octavation quotes (i.e. do not add ' or , after a note),
+relative mode chooses the note that is closest to the previous one.
@c do not use commas or quotes in this sentence
For example: @code{c f} goes up; @code{c g} goes down:
@separate
+Since most music has small intervals, in relative mode pieces can be
+written almost without using octavation quotes.
+
@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.
+Larger intervals are made by adding octavation quotes. Quotes or
+commas do not determine the absolute height of a note; the height of a
+note is relative to the previous one.
@c do not 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:
@separate
-Here's an example of the difference between relative mode and
+Here is an example of the difference between relative mode and
``normal'' (non-relative) mode:
@quotation
@end quotation
@separate
-@strong{SUMMARY}
-
-The following table summarizes the syntax in this section.
-
-@c Is it possible to avoid page breaks directly after the
-@c table head? /Mats
-
-@multitable @columnfractions .3 .3 .4
-
-@item @b{Syntax}
-@tab @b{Description}
-@tab @b{Example}
-
-@item @code{r4 r8}
-@tab rest
-@tab
-@lilypond[relative 1, notime]
-\property Staff.Clef = \turnOff
-r4 r8
-@end lilypond
-
-@item @code{~}
-@tab tie
-@tab
-@lilypond[relative 1, notime]
-\property Score.timing = ##f
-\property Staff.autoBeaming = ##f
-\property Staff.Clef = \turnOff
-d ~ d
-@end lilypond
-
-@item @code{\key es \major }
-@tab key signature
-@tab
-@lilypond[notime]
-\clef treble
-\key es \major
-s4
-@end lilypond
-
-@item @var{note}@code{'}
-@tab raise octave
-@tab
-@lilypond[relative 1, notime]
-\property Score.timing = ##f
-\property Staff.autoBeaming = ##f
-\property Staff.Clef = \turnOff
-a a'
-@end lilypond
-
-@item @var{note}@code{,}
-@tab lower octave
-@tab
-@lilypond[relative 1, notime]
-\property Score.timing = ##f
-\property Staff.autoBeaming = ##f
-\property Staff.Clef = \turnOff
-c c,
-@end lilypond
-
-@end multitable
-
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:
@end quotation
@separate
-Beams are drawn automatically, but if you do not like the choices, you
-can enter beams by hand. Mark the first note to be beamed with
-@code{[} and the last one with @code{]}:
+Beams are drawn automatically, but if you do not like where they are
+put, they can be entered by hand. Mark the first note to be beamed
+with @code{[} and the last one with @code{]}:
@quotation
@lilypond[fragment,relative 1, verbatim]
a8-[ ais-] d-[ es r d-]
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 are then grouped inside @code{<} and @code{>}, as is
+@code{Staff}'s are then grouped inside @code{\simultaneous @{} and @code{@}}, as is
demonstrated here:
@quotation
@lilypond[fragment,verbatim]
-<
+\simultaneous {
\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 does not matter what names you give, as long
as each staff has a different name. If you give them the same name,
-LilyPond will assume that you only want one staff, and will but both
-pieces of music on the same staff.
-
+they are assumed to belong on the same staff, and will be printed like
+that. @code{\simultaneous } indicates that both fragments happen at
+the same time, and must be printed stacked vertically.
@separate
@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.
+The time signature is specified in one melody staff only
+(the top staff), but is printed on both, since common practice
+dictates that all staves have the same time signature.
@separate
@end quotation
@separate
+Similarly, fingering indications can be added to a note using @code{-}
+and the digit to be printed.
+@lilypond[verbatim,relative 1]
+ c-3 e-5 b-2 a-1
+@end lilypond
+
+
+
+
+
Dynamic signs are made by adding the markings to the note:
@quotation
@lilypond[verbatim,relative 1]
@end quotation
@separate
-Chords can be made by surrounding notes with @code{<<} and @code{>>}:
+Chords can be made by
+surrounding pitches with @code{<<} and @code{>}>:
@quotation
@lilypond[relative 0, fragment,verbatim]
r4 <<c e g>>4 <<c f a>>8
@end lilypond
@end quotation
-@ignore
-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{< >}. Do Not get confused
-by the chord @code{< >} and the dynamic @code{\< \>}!
-@end ignore
-
@quotation
@example
-r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-\)
+r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-)
@end example
@lilypond[relative 0, fragment]
\slurUp
-r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-\)
+r4 <<c e g>>8-\>-( <<c e g>> <<c e g>> <<c f a>>8-\!-)
@end lilypond
@end quotation
@separate
-@strong{SUMMARY}
+A pickup (or upstep) is entered with the keyword @code{\partial}. It
+is followed by a duration: @code{\partial 4} is a quarter note upstep
+and @code{\partial 8} an eighth note.
+@lilypond[relative 1,verbatim,fragment]
+ \partial 8
+ f8 c2 d e
+@end lilypond
-@multitable @columnfractions .3 .3 .4
+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 a triplet has 2/3 as its fraction.
+@c
+@lilypond[relative 0,verbatim,fragment]
+ \times 2/3 { f8 g a }
+ \times 2/3 { c r c }
+@end lilypond
+
+Grace notes are also made by prefixing a note, or a set of notes with
+a keyword. In this case, the keyword is @code{\grace}.
+@lilypond[relative 1, verbatim,fragment]
+ \grace b16-( c4-)
+ \grace { d16-( e } d4-)
+@end lilypond
-@item @b{Syntax}
-@tab @b{Description}
-@tab @b{Example}
+@noindent
+More information on the use of grace notes is in @ref{Grace notes}.
-@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
+Comments are pieces of the input that are ignored. There are two
+types of comments. A line comments are introduced by @code{%}: after
+that, the rest of that line is ignored. Block comments span larger
+sections of input. Anything that is enclosed in @code{%@{} and
+@code{%@}} is ignored too. The following fragment shows possible uses
+for comments.
+@example
+ % notes for twinkle twinkle follow:
+ c4 c g' g a a
+
+ %@{
+
+ This line, and the notes below
+ are ignored, since they are in a
+ block comment.
-@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
+ g g f f e e d d c2
+ %@}
+@end 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
-@item @code{< \context Staff ... >}
-@tab more staffs
-@tab
-@lilypond[fragment]
-< \context Staff = SA { c'1 }
- \context Staff = SB { c'1 } >
-@end lilypond
+@node Printing lyrics
+@section Printing lyrics
+@cindex lyrics
-
-@item @code{-> -.}
-@tab articulations
-@tab
-@lilypond[fragment, relative 1]
-\property Staff.TimeSignature = \turnOff
-\property Staff.Clef = \turnOff
-c-> c-.
-@end lilypond
+Lyrics are entered by separating each syllable with a space, and
+surrounding them with @code{\lyrics @{ @dots{} @}}, for example
+@example
+ \lyrics @{ I want to break free @}
+@end example
+Like notes, lyrics are also a form of music, but they must not be
+printed on a staff, which is the default way to print music. To print
+them as lyrics, they must be marked with @code{ \context Lyrics}:
+@example
+ \context Lyrics \lyrics @{ I want to break free @}
+@end example
+The melody for this song is as follows
-@item @code{-\mf -\sfz}
-@tab dynamics
-@tab
-@lilypond[fragment, relative 1]
-\property Staff.TimeSignature = \turnOff
-\property Staff.Clef = \turnOff
-c-\mf c-\sfz
+@lilypond[fragment,relative=1]
+ \partial 8
+ c8
+ \times 2/3 { f4 g g } \times 2/3 { g4-( a2-) }
@end lilypond
+The lyrics can be set to these notes, combining both with the
+@code{\addlyrics} keyword:
+@example
+ \addlyrics
+ \notes @{ @dots{} @}
+ \context Lyrics @dots{}
+@end example
-@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
+The final result is
+@lilypond[singleline,verbatim]
+\score {
+ \notes {
+ \addlyrics
+ \relative c' {
+ \partial 8
+ c8
+ \times 2/3 { f g g } \times 2/3 { g4-( a2-) }
+ }
+ \context Lyrics \lyrics { I want to break free }
+ }
+ \paper{ }
+}
@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-\!
+This melody ends on a @rglos{melisma}, a single syllable (``free'')
+sung to more than one note. This is indicated with a @emph{extender
+line}. It is entered as two underscores, i.e.,
+@example
+ \lyrics @{ I want to break free __ @}
+@end example
+@lilypond[]
+\score {
+ \notes {
+ \addlyrics
+ \relative c' {
+ \partial 8
+ c8
+ \times 2/3 { f g g } \times 2/3 { g4-( a2-) }
+
+ %% ugh, this is to deal with bugs in the extender implementation
+ \blankNotes
+ c8
+ }
+ \context Lyrics \lyrics { I want to break free __ }
+ }
+ \paper{ linewidth = 9.0 \cm }
+}
@end lilypond
-
-@item @code{<< >>}
-@tab chord
-@tab
-@lilypond[fragment, relative 1]
-<<c e>>
+Similarly, hyphens between words can be entered as two dashes,
+resulting in a centered hyphen between two syllables.
+@example
+ Twin -- kle twin -- kle
+@end example
+@lilypond[singleline]
+\score {
+ \addlyrics \notes \relative f' { \time 2/4
+ f4 f c' c' }
+ \context Lyrics \lyrics { Twin -- kle twin -- kle
+ }
+\paper { linewidth = 6.0 \cm }
+ }
+
@end lilypond
-@end multitable
+More options, like putting multiple lines of lyrics below a melody are
+discussed in @ref{Vocal music}.
-Now you know the basic ingredients of a music file, so this is the
-right moment to experiment and try your at hand typing some simple
-files.
-When you are 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 A lead sheet
+@section A lead sheet
+In popular music, it is common to denote accompaniment as chord-names.
+Using them in LilyPond has two parts, just like lyrics: entering the
+chords (with @code{\chords}), and printing them (with @code{\context
+ChordNames}).
+Chord names are entered by starting chords mode (with @code{\chords}).
+In chords mode, you can enter chords with a letter (indicating the
+root of the chord), and a durations following that.
+@c
+@lilypond[verbatim]
+ \chords { c2 f4. g8 }
+@end lilypond
-@node Printing lyrics
-@section Printing lyrics
-@cindex lyrics
+@noindent
+The result of @code{\chords} is a list of chords, and is equivalent
+to entering chords with @code{<<@dots{}>>}.
+
+Other chords can be created by adding modifiers, after a colon. The
+following example shows a few common modifiers
+@c
+@lilypond[verbatim]
+ \chords { c2 f4:m g4:maj7 gis1:dim7 }
+@end lilypond
+
+Printing chords is done by adding @code{\context ChordNames}
+before the chords thus entered:
+@c
+@lilypond[verbatim]
+ \context ChordNames \chords \chords { c2 f4.:m g4.:maj7 gis8:dim7 }
+@end lilypond
-In this section we shall explain how to typeset the following
-fragment of The Free Software Song:
+A complete list of modifiers, and other options for layout are in the
+reference manual section @ref{Chords}.
-@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 { raggedright = ##t }
+@cindex lead sheet
+When put together, chord names, lyrics and a melody form
+a lead sheet, for example,
+
+@example
+\score @{
+ <
+ \context ChordNames \chords @{ @emph{chords} @}
+ \addlyrics
+ \notes @emph{the melody}
+ \context Lyrics \lyrics @{ @emph{the text} @}
+ >
+ \paper @{ @}
+@}
+@end example
+@lilypond[]
+\score {
+ <
+ \context ChordNames \chords { r8 c2:sus4 f }
+ \addlyrics
+ \notes \relative c' {
+ \partial 8
+ c8
+ \times 2/3 { f g g } \times 2/3 { g4-( a2-) } }
+ \context Lyrics \lyrics { I want to break free __ }
+ >
+ \paper{ raggedright = ##t }
}
@end lilypond
-@cindex lyric mode
-@cindex @code{\lyrics}
+@node Listening to output
+@section Listening to output
+
+MIDI (Musical Instrument Digital Interface) is a standard for
+connecting and recording digital instruments. A MIDI file is like a
+tape recording of a MIDI 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: octaves that are off, or
+accidentals that were mistyped, stand out very much when listening to
+the musical transcription.
+@code{\midi} can be used in similarly to @code{\paper @{ @}}, for
+example
+@example
+\score @{
+ @var{..music..}
+ \midi @{ \tempo 4=72 @}
+ \paper @{ @}
+@}
+@end example
-Lyrics are a form of music. To get them printed, you must do two
-things: indicate that lyrics are entered with @code{\lyrics}, and
-indicate that this type of music must be interpreted as texts (and not
-notes). This is done with @code{\context Lyrics}.
+Here, the tempo is specified using the @code{\tempo} command. In this
+case the tempo of quarter notes is set to 72 beats per minute. More
+information on auditory output is in the @ref{Sound} section in the
+notation manual.
-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}. In this mode you can enter lyrics, with punctuation
-and accents without any hassle. Syllables are entered like notes, but
-with pitches replaced by text. For example,
-@example
- Twin- kle twin- kle
-@end example
-enters four syllables. Spaces can be introduced into a lyric either
-by using quotes: @code{"He could" not} or by using an underscore
-without quotes: @code{He_could not}.
-These are the lyrics for the free software song:
+@node Titling
+@section Titling
+Bibliographic information is entered in a separate block, the
+@code{\header} block. The name of the piece, its composer, etc. are
+entered as assignment within @code{\header @{ @dots{} @}}. For
+example,
@example
- \lyrics @{
- Join us now __ and
- share the soft -- ware; @}
+ \header @{
+ title = "Eight miniatures"
+ composer = "Igor Stravinsky"
+ tagline = "small is beautiful"
+ @}
+
+ \score @{ @dots{} @}
@end example
- Extender lines are entered as @code{__}. This will create an
-extender, which is 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{_}).
-
+@cindex bibliographic information
+@cindex titles
+@cindex composer
+@cindex ly2dvi
-You can use ordinary hyphens at the end of a syllable, i.e.
-@example
- soft- ware
-@end example
-but then the hyphen will be attached 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
-the syllables and 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 while LilyPond is
-executing. For lyrics, the command
-@example
- \context Lyrics
-@end example
-must be used to interpret a set of syllables as lyrics.
+When the file is processed by @code{ly2dvi}, the title and composer
+specified are printed above the music. The `tagline' is a short line
+printed at bottom of the last page, which normally says ``Lily was
+here, version @dots{}''. In the example above, it is replaced by the
+line ``small is beautiful.''
-@cindex context
-@cindex interpretation context
-@cindex notation context
+Normally, the @code{\header} is put at the top of the file. However,
+for a document that contains multiple pieces (e.g. a etude book, or
+part with multiple movements), then the header can be put into the
+@code{\score} block as follows In this case, the name of each piece
+will be printed before each movement.
+@cindex Lily was here
+@cindex signature line
+@cindex tag line
-The melody and the lyrics can be combined with the @code{\addlyrics}:
-@example
-\addlyrics
- \notes \relative c' @dots{}
- \context Lyrics \lyrics @dots{}
+@example
+ \header @{
+ title = "Eight miniatures"
+ composer = "Igor Stravinsky"
+ tagline = "small is beautiful"
+ @}
+
+ \score @{ @dots{}
+ \header @{ piece = "Adagio" @}
+ @}
+ \score @{ @dots{}
+ \header @{ piece = "Menuetto" @}
+ @}
@end example
-The lyrics are also music expressions, similar to notes. Each lyric
-syllable is put under a note of the melody. The complete file is
-listed here:
+More information on titling can be found in @ref{Invoking ly2dvi}.
-@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 @{ raggedright = ##t @}
-@}
-@end example
+@node Single staff polyphony
+@section Single staff polyphony
+When different melodic lines are combined on a single staff, these are
+printed as polyphonic voices: each voice has its own stems, slurs
+and beams, and the top voice has the stems up, while the bottom voice
+has stems down.
-@node A melody with chords
-@section A melody with chords
+Entering such parts is done by entering each voice as a sequence (with
+@code{@{ .. @}}), and combing those simultaneously, separating the
+voices with @code{\\}:
-In this section we show how to typeset a melody with chord
-accompaniment. This file is included in
-@inputfileref{input/tutorial,flowing.ly}.
+@lilypond[verbatim,relative]
+ < { a4 g2 f4-~ f4 } \\
+ { r4 g4 f2 f4 } >
+@end lilypond
+The notation @code{< .. >} is a shorthand for @code{\simultaneous @{
+.. @}}.
+
+For polyphonic typesetting spacer rests can also be convenient: these
+are rests that do not print. It is useful for filling up voices that
+temporarily do not play:
+@lilypond[verbatim,relative]
+ < { a4 g2 f4-~ f4 } \\
+ { s4 g4 f2 f4 } >
+@end lilypond
-@lilypondfile[verbatim,intertext="the result looks like"]{flowing.ly}
+More features of polyphonic typesetting are in the notation manual
+in @ref{Polyphony}.
+@node Piano staffs
+@section Piano staffs
-@separate
-@example
+@cindex staff switch, manual
+@cindex cross staff voice, manual
+@cindex @code{\translator}
- \include "paper16.ly"
-
+Piano music is always typeset in two staffs connected by a brace.
+Printing such a staff is done similar to the polyphonic example in
+@ref{More basics}:
+@example
+ < \context Staff = up @{ @dots{} @}
+ \context Staff = down @{ @dots{} @}
+ >
+@end example
+but now this entire expression must be interpreted as a
+@code{PianoStaff}:
+@example
+ \context PianoStaff < \context Staff @dots{} >
@end example
-Smaller size (suitable 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 different names to the different parts of music, and use the names
-to construct the music within the score block.
+Here is a complete-fledged example:
+@lilypond[relative 0,fragment]
+\context PianoStaff
+ < \context Staff = up {
+ c4 c g g }
+ \context Staff = down {
+ \clef bass c, c' e c }
+ >
+@end lilypond
-@separate
-@example
- \partial 8
-@end example
+More information on formatting piano music is in @ref{Piano music}.
-@cindex @code{\partial}
-@cindex anacrusis
-The piece starts with an anacrusis (or ``pickup'') of one eighth.
-@separate
+@node Setting variables
+@section Setting variables
-@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
+@node Organising larger pieces
+@section Organising larger pieces
- @}
-
-@end example
-This ends the definition of @code{melody}.
+TODO: discuss identifiers, p&c, .
@separate
@example
+\version "1.5.72"
+@end example
+Lilypond and its language are still under development, and
+occasionally details of the syntax are changed. The @code{version}
+fragment indicates which LilyPond version the input file was written
+for. When you compile this file, the version number will be
+checked. When the file is too old, a warning is issued. The version
+number is also used by the @code{convert-ly} program (See
+@ref{Invoking convert-ly}), which updates the file to the latest
+version automatically.
- text = \lyrics @{
-
-@end example
-@cindex lyrics
-@cindex identifier assignment
-@cindex syllables, entering
-This defines the lyrics, similar to what we have seen before.
-@separate
-@example
- accompaniment =\chords @{
-
-@end example
-@cindex chords
-@cindex mode, chords
-We will put chords over the music. To enter them, we use 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
+@node Fine tuning a piece
+@section Fine tuning a piece
- r8
-
-@end example
-There is no accompaniment during the anacrusis.
-@separate
-@example
-
- c2:3-
-
-@end example
-
-@cindex tonic
-@cindex chord modifier
-@cindex modifier, chord
-This is a c minor chord, lasting for a half note. Chords are entered using
-the tonic. Notes can be changed to create different chords. In this case,
-a lowered third is used (making a C major chord into a C minor chord).
-The code 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, 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
-@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 (a G7 chord without the third or the fifth). The
-brace ends the sequential music.
-@separate
-@example
-
- \score @{
- \simultaneous @{
-
-@end example
-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
-To print chords as chords names, they have to be interpreted as
-such. This is done with the following command: The following command
-explicitly creates an interpretation context of @code{ChordNames} type
-to interpret the music @code{\accompaniment}.
-@example
-
- \context ChordNames \accompaniment
-
-@end example
-
-@separate
-@example
-
- \context Staff @{
-
-@end example
-
-We place the melody on a staff.
-@separate
-@example
-
- \property Staff.autoBeaming = ##f
-
-@end example
-@cindex \property
-@cindex context variables
-@cindex setting context variables
-An interpretation context has variables that tune its behavior. These
-variables are also called @emph{properties}. The @code{autoBeaming}
-variable in a @code{Staff} controls whether 8th and shorter notes are
-beamed automatically. Setting the variable to @code{##f}, which is the
-boolean value @var{false}, turns it off.
-
-
-@separate
-@example
-
- \melody
- @}
-
-@end example
-Finally, we put the melody on the current staff. Note that the
-@code{\property} directives and @code{\melody} are grouped in sequential
-music, so the property settings are done before the melody is
-processed.
-
-@separate
-@example
-
- \midi @{ \tempo 4=72@}
-
-@end example
-MIDI (Musical Instrument Digital Interface) is a standard for
-connecting and recording digital instruments. A MIDI file is like a
-tape recording of a MIDI 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.
-
-@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 @}
-
-@end example
-We also want notation output. The linewidth is short so that the piece
-will be set in two lines.
-
-@node More stanzas
-@section More stanzas
-
-
-@cindex phrasing
-
-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.
-
-@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
-
-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
-The convention for naming @code{LyricsVoice} and @code{Voice} must
-also be used to get melismata on rests correct.
-
-
-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. Note that you must
-surround dots with spaces in @code{\lyrics} mode.
-
-@example
- \property LyricsVoice . stanza = "Bert"
- @dots{}
- \property LyricsVoice . stanza = "Ernie"
-@end example
-
-
-@node More movements
-@section More movements
-
-The program @code{lilypond} only produces sheet music. Titles,
-subtitles, and the composer's name are created by a separate program,
-called use @code{ly2dvi}. @code{ly2dvi} creates the titles, then
-calls @code{lilypond} to format the sheet music. In this section, we
-show you how to create titles like this:
-
-@center @strong{Two miniatures}
-@flushright
-Opus 1.
-@end flushright
-@flushleft
-@var{Up}
-@end flushleft
-@lilypond
- \score {
- \notes { c'4 d'4 }
- \paper { raggedright = ##t }
- }
-@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})
-
-@example
-\version "1.5.72"
-\header @{
- title = "Two miniatures"
- composer = "F. Bar Baz"
- tagline = "small is beautiful" @}
-
-\paper @{ raggedright = ##t @}
-
-%@{
-
-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 @code{ly2dvi}, which 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. Many people find the default (``Lily was
-here'' with a version number) too droll. If that is the case, you can
-change @code{tagline} in the @code{\header}, as shown above.
-
-@cindex Lily was here
-@cindex signature line
-@cindex tag line
-
-@separate
-@example
- \paper @{
- raggedright = ##t @}
-@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 do not
-have @code{\paper} sections so the settings of this block are used.
-
-When @code{raggedright} is set, the spacing is set to natural length:
-a short phrase takes up little space, a longer phrase takes more
-space, all on the same line.
-
-@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, most notes were specified in relative octaves
-(i.e. each note was put in the octave that is closest to its preceding
-note). This is convenient when copying existing music: you have to do
-less typing, and errors are easily spotted.
-
-There is also absolute octave specification, which you get when you do
-not include @code{\relative} in your input file. In this input mode,
-the middle 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. Absolute octaves are convenient when you write LilyPond input
-directly, either by hand (i.e. composing) or by computer.
-
-@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 are making an exercise book), you can put different
-@code{\score} blocks into the input file. @code{ly2dvi} will assemble
-all LilyPond output files into a one document. The contents of
-@code{\header} blocks specified within each score is used for the
-title of that 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.72"
-\header @{
- title = "Two miniatures"
- composer = "F. Bar Baz"
- tagline = "small is beautiful" @}
-
-\paper @{ raggedright = ##t @}
-
-\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
-
-TODO:
-@example
-
-scoreA = \score @{ \deelA @}
-scoreB = \score @{ \deelA @}
-
-% \score @{ \scoreA @}
-\score @{ \scoreB @}
-
-@end example
-
-@separate
-@example
-\version "1.5.72"
-@end example
-Lilypond and its language are still under development, and
-occasionally details of the syntax are changed. The @code{version}
-fragment indicates which version of lilypond the input file was written
-for. 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{Invoking convert-ly}), which can used to update the file to the
-latest lily version.
-
-
-@node A piano excerpt
-@section A piano excerpt
-
-Our eighth 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, composed around 1740. It's in the source
-package under the name @inputfileref{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 should be stemmed in opposite
-directions.
-
-
-
-@separate
-@example
-viola = \notes \relative c' \context Voice = viola @{
-@end example
-In this example you see multiple parts on a staff. Each part is
-associated with one notation context. This notation context handles
-stems and dynamics (among other things). 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
-<<c g' c>>4-\arpeggio
-@end example
-The delimiters @code{<<} and @code{>>} enclose the pitches of a chord.
-@code{\arpeggio} typesets an arpeggio sign (a wavy vertical line)
-before the chord.
-
-@cindex arpeggio
-
-
-
-
-
-@separate
-@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).
-
-@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. It is useful for filling up voices that
-temporarily do not play. In this case, the viola does not 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
- s4 g8. b,16 c8 r <<e' g>>8. <<f a>>16
-@end example
-
-The oboes should have stems up to keep them from interfering with
-the staff-jumping bass figure. To do that, we use @code{\voiceOne}.
-
-@separate
-@example
-\grace <<e g>>-( <<d f>>4-) <<c e>>2
-@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
-@{ <<d f>>8 <<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 cannot 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
-
- f,8 e e2
-@} >
-@end example
-This ends the two-part section.
-@separate
-@example
-\grace <<c, e>>8-( <<b d>>8.-\trill <<c e>>16 |
-@end example
-@cindex trill
-@cindex stemBoth
-
-The bass has a little hoom-pah melody to demonstrate parts switching
-between staves. Since it is repetitive, we use repeats:
-@separate
-@example
-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 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 cannot 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. Conversely, if you want to
-transpose a fragment of music entered with @code{\relative}, then you
-should make sure that @code{\transpose} comes before @code{\relative}.
-
-@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 the stem directions explicitly
-(using the identifiers @code{\stemUp} and @code{\stemDown}, the notes
-can be beamed together (despite jumping between staffs).
-
-@separate
-@example
-bassvoices = \notes \relative c' @{
-c4 g8. b,16
-\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 PianoStaff
-@end example
- 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
-@end example
-The bottom staff must have a different clef.
-@separate
-@example
-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 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 versions) are in @file{input/tutorial/}.
+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 versions) are in @file{input/tutorial/}.
The code for the untuned example shows us some new things.
@cindex crescendo
-@cindex fingering instructions
-[TODO: moveme]
-Fingering indications are entered with @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 that we get something that resembles the original printed
internals document. This is a set of HTML pages which should be
included if you installed a binary distribution. [TODO: revise for
new site.] These HTML pages are also available on the web: go to the
-lilypond website, click ``Documentation: Index'' on the side bar, look
+LilyPond website, click ``Documentation: Index'' on the side bar, look
in the ``Information for uses'' section, and click on ``Documentation
-of internals''.
+of internals.''
You might want to bookmark either the HTML files on your disk, or the
one on the web (the HTML on your hard drive will load much faster than
@c TODO: the quote is incorrect, although that shouldn't be a big
@c problem for the reader.
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
+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
\property Voice.DynamicLineSpanner \override #'padding = #5.0
@end example
-This command resembles the one for setting slur attachments, but
-subtly differs in its details. Grob properties can be manipulated
-with two commands: @code{\override} extends the definition of a grob
-with one setting, and @code{\revert} releases this setting. This has
-a theoretical appeal: the operations are simple and symmetric. For
-practical use, it can be cumbersome. The 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}.
@separate
@separate
-Here's the complete ``fine tuned'' version, which includes all the
+Here is the complete ``fine tuned'' version, which includes all the
modifications we discussed in this section:
@lilypondfile[verbatim]{brahms-tweaked.ly}
-@node An orchestral score
-@section An orchestral score
-
-@menu
-* The full score::
-* Extracting an individual part::
-@end menu
-
-
-Our next two examples demonstrate one way to create an orchestral score
-in LilyPond. When typesetting a piece for several instruments, you'll
-want to create a full score (for the conductor) along with several
-individual parts (for the players).
-
- 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 instruments (for example, one @code{\score} block may
-only include the cello part; another @code{\score} block may be for
-all the strings, and yet another @code{\score} block may be for all
-parts together).
-
-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 for producing the score and the
-separate parts, but the file does not produce any sheet music itself.
-Other files reference it by stating @code{\include "os-music.ly"}.
-
-@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 examine this example line by line, since you already know
-most of it. We'll examine a few lines which contain new elements.
-
-
-@separate
-@example
-global = @{
- \time 2/4
- \skip 2*4 \bar "|."
-@}
-@end example
-
-This declares settings 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.
-You can use @code{s} as a shortcut for @code{\skip} (the last line of
-this section would be @code{s2*4 \bar"|."}).
-
-@separate
-@example
-Key = \notes \key as \major
-@end example
-This declares the key signature of the piece and assign it to the
-identifier @var{Key}. Later on we will use @code{\Key} for all staves
-except those for transposing instruments.
-
-@node The full score
-@subsection The full score
-
-
-The second file, @inputfileref{input/tutorial,os-score.ly}, reads the
-definitions of the first (@inputfileref{input/tutorial,os-music.ly}), and
-defines the @code{\score} block for the full conductor's score.
-
-@example
-\version "1.7.6"
-
-\include "os-music.ly"
-\include "paper13.ly"
-
-textFlat = \markup @{\smaller \musicglyph #"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 = \markup @{ \column << "Timpani" "(C-G)" >> @}
- \property Staff.instr = #"Timp."
- \clef bass
- \Key
- \timpani
- >
- >
- \context StaffGroup = brass <
- \context Staff = trombe <
- \property Staff.midiInstrument = #"trumpet"
- \property Staff.instrument = \markup @{ \column << "2 Trombe" "(C)" >> @}
- \property Staff.instr = \markup@{ \column << "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
- = \markup @{ \column << "Corno" @{ "(E" \textFlat ")" @} >> @}
- \property Staff.instr =
- \markup @{ \column << "Cor." @{ "(E" \textFlat ")" @} >> @}
- \property Staff.transposing = #3
- \notes \key bes \major
- \context Voice=one \corno
- >
- >
- >
- \paper @{
- indent = 15 * \staffspace
- linewidth = 60 * \staffspace
- textheight = 90 * \staffspace
- \translator@{
- \VoiceContext
- \consists "Multi_measure_rest_engraver"
- @}
- \translator@{
- \HaraKiriStaffContext
- \remove "Multi_measure_rest_engraver"
- @}
- @}
- \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
+@node An orchestral part
+@section An orchestral part
-@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}.
-
-@ignore
-
-[TODO: mention in a more relevant place]
-
-@separate
-@example
-#(ly:set-point-and-click 'line-column)
-@end example
-
-This piece of Scheme code executes the function
-@code{ly:set-point-and-click} with the argument
-@code{line-column}. Editing input files can be complicated if you are
-working with large files: if you are 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}.
-@end ignore
-
-
-@separate
-@example
-#(define text-flat '((font-relative-size . -2)
- (music "accidentals--1")))
-@end example
-
-To name the transposition of the french horn, we will 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
-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. In LilyPond, a bar number is called @var{BarNumber}.
-BarNumber objects can be manipulated through their
-@var{side-position-interface}. One of the properties of a
-@var{side-position-interface} that can be tweaked is @var{padding}:
-the amount of extra space that is put between this and other objects.
-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}
-or in @ref{Fine tuning a piece}.
-@end ifnottex
-@iftex
-the online documentation or in the previous section of the tutorial.
-@end iftex
-
-@c REFERENCE MAO
-
-@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. This starts 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, who 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
-This defines the instrument names to be printed in the
-margin. @code{instrument} specifies the name for the first line
-of the score, @code{instr} is used 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 are still in
-simultaneous mode. We name both voices differently, so that LilyPond
-will 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 demonstrates 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. Thread
-takes care of note heads and rests; 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 are similar, and splits the threads up
-when they are different.
-
-@separate
-@example
-\property Staff.instrument = #`(lines "Corno"
- (columns "(E" ,text-flat ")"))
-@end example
-The french horn (``Corno'') 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 previously,
-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 back-end to
-transpose this staff by three steps.
-
-Note how we can choose different tunings for the text input, sheet music
-output and, and MIDI output, using @code{\transpose} and the MIDI Staff
-property @var{transposing}.
-
-@separate
-@example
- \notes \key bes \major
-@end example
-Since the horn is transposing, it is in a different key.
-
-@separate
-@example
- indent = 15 * \staffspace
- linewidth = 55 * \staffspace
-@end example
-We specify a big indent for the first line and a small linewidth for this
-tutorial.
-
-@separate
-
-Usually LilyPond's default 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 only has
-rests during one line of the score. @code{HaraKiriStaffContext} can
-be used as a regular @code{StaffContext} drop-in and will take care of
-the automatic removing of empty staves -- so if the strings are the
-only instruments playing for a line, LilyPond will only print the string
-parts for that line of the score. This reduces the number of page turns
-(and the number of dead trees!) required in a score.
-
-@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 is the part for the second flute player. Of
-course, we would make separate parts for all individual instruments if
-we were preparing the score for an orchestra.
-
-@separate
-@example
- \flautoII
-@end example
-In this individual part the second flute has a whole staff for itself,
-so we do not 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.
+TODO:
-@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 print one multimeasure rest instead of
-many consecutive empty bars. LilyPond will do this if
-@code{Score.skipBars} is set to true (@code{##t}).
+\markup, mmrest, transposing, cue notes, identifiers?.
@node Integrating text and music
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 program is fully described in @ref{Integrating text and music
-with lilypond-book}. Here we show a small example. Since the example
-also contains explanatory text, we will not comment it further.
+This program is fully described in @ref{lilypond-book manual}. Here
+we show a small example. Since the example also contains explanatory
+text, we will not comment it further.
@example
\documentclass[a4paper]@{article@}
If you want to include large examples into the text, it may be more
convenient to put the example in a separate file:
-\lilypondfile[printfilename]@{sammartini.ly@}
+\lilypondfile[printfilename]@{screech-boink.ly@}
The \texttt@{printfilename@} option adds the file name to the output.
$ lilypond-book --outdir=out/ lilbook.tex
lilypond-book (GNU LilyPond) 1.7.16
Reading `input/tutorial/lilbook.tex'
-Reading `input/tutorial/sammartini.ly'
+Reading `input/screech-boink6.ly'
@var{lots of stuff deleted}
Writing `out/lilbook.latex'
$ cd out
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}
+@lilypondfile[printfilename]{screech-boink.ly}
The @code{printfilename} option adds the file name to the output.
-[TODO: include excercises? ]