--- /dev/null
+\input texinfo @c -*-texinfo-*-
+@setfilename reference-manual.info
+@settitle LilyPond 1-2-0 Reference Manual
+
+@ifinfo
+
+This is the reference documentation to LilyPond. It is not a tutorial.
+It was written by Han-Wen Nienhuys, Adrian Mariano and Jan Nieuwenhuizen
+
+
+Copyright 1999 by its authors.
+@end ifinfo
+
+@titlepage
+@sp 10
+@comment The title is printed in a large font.
+@center @titlefont{LilyPond Reference manual}
+@vskip 20pt
+@center @titlefont{Han-Wen Nienhuys, Adrian Mariano, Jan Nieuwenhuizen}
+
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1999 by its authors
+@end titlepage
+
+
+@node Top, , Running LilyPond, (dir)
+@top
+@menu
+* LilyPond 1-2-0 Reference Manual::LilyPond 1-2-0 Reference Manual
+@end menu
+
+
+@node LilyPond 1-2-0 Reference Manual, Overview, , Top
+@menu
+* Overview:: Overview
+* Top level:: Top level
+* notenames:: notenames
+* Lexical conventions:: Lexical conventions
+* notelang:: notelang
+* modes:: modes
+* Types:: Types
+* Music expressions:: Music expressions
+* Atomic music expressions:: Atomic music expressions
+* atomicmusic:: atomicmusic
+* notedesc:: notedesc
+* barlines:: barlines
+* manualbeam:: manualbeam
+* tremolo:: tremolo
+* Compound music expressions:: Compound music expressions
+* compoundmusic:: compoundmusic
+* relative:: relative
+* sec-repeats:: sec-repeats
+* transpose:: transpose
+* Ambiguities:: Ambiguities
+* Notation conversion specifics:: Notation conversion specifics
+* autobeam:: autobeam
+* lyricprint:: lyricprint
+* Notation Contexts:: Notation Contexts
+* contextselection:: contextselection
+* Notation output definitions:: Notation output definitions
+* output:: output
+* paper:: paper
+* papervars:: papervars
+* contextdefs:: contextdefs
+* engravers:: engravers
+* Sound output:: Sound output
+* midilist:: midilist
+* Pre-defined Identifiers:: Pre-defined Identifiers
+* ident:: ident
+* Running LilyPond:: Running LilyPond
+@end menu
+@chapter LilyPond 1.2.0 Reference Manual
+
+
+@node Overview, Top level, LilyPond 1-2-0 Reference Manual, LilyPond 1-2-0 Reference Manual
+@section Overview
+
+This document@footnote{This document has been revised for
+LilyPond 1.2.} describes the the GNU LilyPond input format, which is
+a language for defining music. We call this language @emph{Music
+Definition Language} or @emph{Mudela}, for short.@footnote{If anybody
+comes up with a better name, we'd gladly take this. Gourlay already
+uses a ``Musical Description Language,'' ISO standard 10743 defines a
+``Standard Music Description Language.'' We're not being original
+here.}
+
+@emph{Mudela} is a language that allows you to
+
+@itemize @bullet
+ @item create musical expressions by combining pitches, durations
+ @item output those musical expressions to various formats
+ @item give those musical expressions and output definitions names, so
+ you can enter them in manageable chunks.
+@end itemize
+
+@emph{Mudela} aims to define a piece of music completely, both from
+typesetting and from a performance point of view.
+
+
+
+@node Top level, notenames, Overview, LilyPond 1-2-0 Reference Manual
+@section Top level
+
+@cindex top level
+
+This section describes what you may enter at top level.
+
+
+
+@cindex score definition
+
+The output is generated combining a music expression with an output
+definition. A score block has the following syntax:
+
+@quotation
+
+ @code{\score @{} @code{@}}
+@end quotation
+
+ are zero or more output definitions. If no output
+definition is supplied, the default @code{\paper} block will be added.
+
+
+
+@cindex header
+
+@cindex header@@@code{\header}
+
+The syntax is
+
+@quotation
+
+ @code{\header} @code{@{} = ;
+ = ; ... @code{@}}
+@end quotation
+
+A header describes the file's contents. It can also appear in a
+@code{\score} block. Tools like @code{ly2dvi}
+@cindex ly2dvi@@@code{ly2dvi}
+ can use this
+information for generating titles. Key values that are used by
+@code{ly2dvi} are: title, subtitle, composer, opus, poet, instrument,
+metre, arranger, piece and tagline.
+
+It is customary to put the @code{\header} at the top of the file.
+
+
+@node notenames, Lexical conventions, Top level, LilyPond 1-2-0 Reference Manual
+
+Note name tables can be specified using
+
+@quotation
+
+ @code{\notenames}
+@cindex notenames@@@code{\notenames}
+
+ @code{@{} @code{@}}
+@end quotation
+
+ is a list of definitions of the form
+
+@quotation
+
+ =
+@end quotation
+
+Chord modifiers can be set analogously, with
+@code{\chordmodifiers}
+@cindex chordmodifiers@@@code{\chordmodifiers}
+.
+
+
+
+A @code{\paper} block at top level sets the default paper block. A
+@code{\midi} block at top level works similarly.
+
+
+
+LilyPond contains a Scheme interpreter (the GUILE library) for
+internal use. The following commands access the interpreter
+directly.
+
+@quotation
+
+ @code{\scm}
+@cindex scm@@@code{\scm}
+ @code{;}
+@end quotation
+
+Evaluates the specified Scheme code. The result is discarded.
+
+@quotation
+
+ @code{\scmfile}
+@cindex scmfile@@@code{\scmfile}
+ @code{;}
+@end quotation
+
+Reads Scheme code from the specified file. The result is discarded.
+
+
+
+Identifier assignments may appear at top level. Semicolons are
+forbidden after top level assignments.
+
+
+
+@node Lexical conventions, notelang, notenames, LilyPond 1-2-0 Reference Manual
+@section Lexical conventions
+
+@cindex lexical conventions
+
+
+
+@cindex comment
+
+@cindex %@@@code{%}
+
+
+A one line comment is introduced by a `@code{%}' character.
+Block comments are started by `@code{%@{}' and ended by `@code{%@}}'.
+They cannot be nested.
+
+
+
+@cindex keyword
+
+Keywords start with a backslash, followed by a number of lower case
+alphabetic characters. These are all the keywords.
+
+@quotation
+
+ @code{\accepts}
+ @code{\addlyrics}
+ @code{\alternative}
+ @code{\bar}
+ @code{\breathe}
+ @code{\cadenza}
+ @code{\chordmodifiers}
+ @code{\chords}
+ @code{\clef}
+ @code{\cm}
+ @code{\consists}
+ @code{\consistsend}
+ @code{\context}
+ @code{\duration}
+ @code{\font}
+ @code{\grace}
+ @code{\header}
+ @code{\in}
+ @code{\key}
+ @code{\keysignature}
+ @code{\lyrics}
+ @code{\mark}
+ @code{\midi}
+ @code{\mm}
+ @code{\musicalpitch}
+ @code{\name}
+ @code{\notenames}
+ @code{\notes}
+ @code{\paper}
+ @code{\partial}
+ @code{\penalty}
+ @code{\property}
+ @code{\pt}
+ @code{\relative}
+ @code{\remove}
+ @code{\repeat}
+ @code{\repetitions}
+ @code{\scm}
+ @code{\scmfile}
+ @code{\score}
+ @code{\script}
+ @code{\sequential}
+ @code{\shape}
+ @code{\simultaneous}
+ @code{\skip}
+ @code{\spanrequest}
+ @code{\tempo}
+ @code{\textscript}
+ @code{\time}
+ @code{\times}
+ @code{\translator}
+ @code{\transpose}
+ @code{\type}
+@end quotation
+
+
+
+
+@cindex integer
+
+Formed from an optional minus sign followed by digits. Arithmetic
+operations cannot be done with integers, and integers cannot be mixed
+with reals.
+
+
+
+@cindex real
+
+
+Formed from an optional minus sign and a sequence of digits followed
+by a @emph{required} decimal point and an optional exponent such as
+@code{-1.2e3}. Reals can be built up using the usual operations:
+`@code{+}
+@cindex +@@@code{+}
+', `@code{-}
+@cindex -@@@code{-}
+', `@code{*}
+@cindex *@@@code{*}
+', and
+`@code{/}
+@cindex /@@@code{/}
+', with parentheses for grouping.
+
+A real constant can be followed by one of the dimension
+keywords:
+@cindex dimensions
+ @code{\mm}
+@cindex mm@@@code{\mm}
+,
+@code{\pt}
+@cindex pt@@@code{\pt}
+, @code{\in}
+@cindex in@@@code{\in}
+, or
+@code{\cm}
+@cindex cm@@@code{\cm}
+, for millimeters, points, inches and
+centimeters, respectively. This converts the number to a real that
+is the internal representation of dimensions.
+
+
+
+@cindex string
+
+
+Begins and ends with the `@code{"}' character. To include a `@code{"}'
+character in a string write `@code{\"}'. Various other backslash
+sequences have special interpretations as in the C language. A
+string that contains no spaces can be written without the quotes.
+See section @xref{modes} for details on unquoted strings; their
+interpretation varies depending on the situation. Strings can be
+concatenated with the `@code{+}' operator.
+
+
+
+The tokenizer accepts the following commands. They can appear
+anywhere.
+
+@quotation
+
+ @code{\maininput}
+@cindex maininput@@@code{\maininput}
+
+@end quotation
+
+This command is used in init files to signal that the user file must
+be read. This command cannot be used in a user file.
+
+@quotation
+
+ @code{\include}
+@cindex include@@@code{\include}
+
+@end quotation
+
+Include . The argument may be a quoted string (an
+unquoted string will not work here!) or a string identifier. The full
+filename including the @file{.ly} extension must be given,
+
+@quotation
+
+ @code{\version}
+@cindex version@@@code{\version}
+ @code{;}
+@end quotation
+
+Specify the version of LilyPond that a file was written for. The
+argument is a version string in quotes, for example @code{"1.2.0"}.
+This is used to detect invalid input, and to aid
+@code{convert-mudela}, a tool that automatically upgrades input files.
+
+
+
+@cindex other languages
+
+@node notelang, modes, Lexical conventions, LilyPond 1-2-0 Reference Manual
+
+Note name definitions have been provided in various languages.
+Simply include the language specific init file. For example:
+`@code{\include "english.ly"}'. The available language files and the
+names they define are:
+
+@quotation
+
+@example
+ Note Names sharp flat
+
+nederlands.ly c d e f g a bes b -is -es
+english.ly c d e f g a bf b -s/-sharp -f/-flat
+deutsch.ly c d e f g a b h -is -es
+norsk.ly c d e f g a b h -iss/-is -ess/-es
+svenska.ly c d e f g a b h -iss -ess
+italiano.ly do re mi fa sol la sid si -d -b
+catalan.ly do re mi fa sol la sid si -d/-s -b
+@end example
+
+@end quotation
+
+Pitch names can be redefined using the
+@code{\notenames}
+@cindex notenames@@@code{\notenames}
+ command, see
+subsection @xref{notenames}.
+
+
+
+@cindex lexical modes
+
+@cindex modes
+
+@node modes, Types, notelang, LilyPond 1-2-0 Reference Manual
+
+To simplify entering notes, lyrics, and chords, @emph{Mudela} has three
+special input modes on top of the default mode. In each mode, words
+are identified on the input. If @code{"word"} is encountered, it is
+treated as a string. If @code{\word} is encountered, it is treated as
+a keyword or as an identifier. The behavior of the modes differs in
+two ways: Different modes treat unquoted words differently, and
+different modes have different rules for deciding what is a word.
+
+@table @samp
+ @item Normal mode.
+@cindex mode!normal
+
+ At the start of parsing, @emph{Mudela} is in Normal mode. In Normal
+ mode, a word is an alphabetic character followed by alphanumeric
+ characters. If @code{word} is encountered on the input it is
+ treated as a string.
+
+ @item Note mode.
+@cindex mode!note
+
+ Note mode is introduced by the keyword
+ @code{\notes}
+@cindex notes@@@code{\notes}
+. In Note mode, words can only
+ contain alphabetic characters. If @code{word} is encountered,
+ LilyPond first checks for a notename of @code{word}. If no
+ notename is found, then @code{word} is treated as a string.
+
+ Since combinations of numbers and dots are used for indicating
+ durations, it is not possible to enter real numbers in this mode.
+
+ @item Chord mode.
+@cindex mode!chord
+
+ Chord mode is introduced by the keyword
+ @code{\chords}
+@cindex chords@@@code{\chords}
+. It is similar to Note mode, but
+ words are also looked up in a chord modifier table (containing
+ @code{maj}, @code{dim}, etc).
+
+ Since combinations of numbers and dots are used for indicating
+ durations, you can not enter real numbers in this mode. Dashes
+ and carets are used to indicate chord additions and subtractions,
+ so scripts can not be entered in Chord mode.
+
+ @item Lyrics mode.
+@cindex mode!lyric
+
+ Lyrics mode is introduced by the keyword
+ @code{\lyrics}
+@cindex lyrics@@@code{\lyrics}
+. This mode has rules that make it
+ easy to include punctuation and diacritical marks in words. A
+ word in Lyrics mode begins with: an alphabetic character,
+ `@code{_}', `@code{?}', `@code{!}', `@code{:}', `@code{'}', the
+ control characters @code{^A} through @code{^F}, @code{^Q} through
+ @code{^W}, @code{^Y}, @code{^^}, any 8-bit character with ASCII code
+ over 127, or a two-character combination of a backslash followed
+ by one of `@code{`}', `@code{'}', `@code{"}', or
+ `@code{^}'.@footnote{The purpose of Lyrics mode is that you can
+ enter lyrics in TeX format or a standard encoding without
+ needing quotes. The precise definition of this mode indeed is
+ ludicrous. This will remain so until the authors of LilyPond
+ acquire a deeper understanding of character encoding, or someone
+ else steps up to fix this.}
+
+ Subsequent characters of a word can be any character that is not
+ a digit and not white space. One important consequence of this
+ is that a word can end with `@code{@}}', which may be confusing if
+ you thought the closing brace was going to terminate Lyrics
+ mode.@footnote{LilyPond will issue a warning, though.} Any
+ `@code{_}' characters which appear in an unquoted word are
+ converted to spaces. This provides a mechanism for introducing
+ spaces into words without using quotes. Quoted words can also be
+ used in Lyrics mode to specify words that cannot be written with
+ the above rules. Here are some examples. Not all of these words
+ are printable by TeX.
+
+
+ @quotation
+
+@example
+Ah! % a word
+2B_||_!2B % not a word because it starts with a digit
+``Hello'' % not a word because it starts with `
+_ _ _ _ % 4 words, each one a space
+@end example
+
+ @end quotation
+
+ Since combinations of numbers and dots are used for indicating
+ durations, you can not enter real numbers in this mode.
+@end table
+
+It is possible to create words that break the rules by prefixing them
+with the dollar sign `@code{$}
+@cindex $@@@code{$}
+'. Regardless of the context, a
+word beginning with `@code{$}' extends until the next white space
+character. Such words can contain numbers (even in Note mode), or
+other forbidden characters. The dollar sign can be used to create
+and access identifiers that could not otherwise be used.@footnote{Use
+of `@code{$}' hampers readability and portability to future LilyPond
+versions, thus the use of the dollar sign is discouraged.}
+
+
+
+@node Types, Music expressions, modes, LilyPond 1-2-0 Reference Manual
+@section Types
+
+@cindex types and identifiers
+
+@emph{Mudela} has a limited set of types:
+
+@itemize @bullet
+ @item integers
+ @item reals
+ @item strings
+ @item music expressions
+ @item durations of notes and rests (specified with
+ @code{\notenames}
+@cindex notenames@@@code{\notenames}
+)
+ @item note name tables
+ @item context definitions, part of output definitions. See
+ section @xref{contextdefs} for more information
+ @item output definitions (like @code{\paper}
+@cindex paper@@@code{\paper}
+ blocks
+ and @code{\midi}
+@cindex midi@@@code{\midi}
+ blocks)
+ @item score definitions (@code{\score}
+@cindex score@@@code{\score}
+ blocks)
+@end itemize
+
+Type is a syntactical property: @emph{Mudela} has no real type system,
+so there is no support for generic expressions, functions, or user
+defined types. For the same reason, it is not possible to mix reals
+and integers in arithmetic expressions, and ``type
+errors''
+@cindex type error
+ (e.g., using a string identifier to
+initialize a @code{\paper}
+@cindex paper@@@code{\paper}
+ block) will yield a ``parse
+error''.
+
+Identifiers allow objects to be assigned to names. To assign an
+identifier, you use `=' and to refer to an
+identifier, you preceed its name with a backslash:
+`@code{\}'. Identifier assignments must appear at top level
+in the @emph{Mudela} file. Semicolons are forbidden after assignments
+appearing at top level but they are obligatory after assignments
+appearing in the @code{\paper} block, see Section @xref{paper}.
+
+ is any of the types listed above.
+
+An identifier can be created with any string for its name, but you
+will only be able to refer to identifiers whose names begin with a
+letter, being entirely alphanumeric. It is impossible to refer to an
+identifier whose name is the same as the name of a keyword.
+
+The right hand side of an identifier assignment is parsed completely
+before the assignment is done, so it is allowed to redefine an
+identifier in terms of its old value, e.g.
+
+@quotation
+
+ @code{foo = \foo * 2.0}
+@end quotation
+
+When an identifier is referenced, the information it points to is
+copied. Therefore it only makes sense to put identifiers for
+translators, output definitions, and @code{\score}
+@cindex score@@@code{\score}
+
+blocks as the first item in a block. For this reason, if you
+reference a @code{\foo} variable in a @code{\foo} block, it must be the
+first item in the list following @code{\foo}.@footnote{@code{\paper@{\one
+\two@}} does not make sense, because the information of @code{\two}
+would overwrite the information of @code{\one}, thereby making the
+reference to the first identifier useless.}
+
+
+
+@node Music expressions, Atomic music expressions, Types, LilyPond 1-2-0 Reference Manual
+@section Music expressions
+
+@cindex music expressions
+
+Music in @emph{Mudela} is entered as a music expression. Notes, rests,
+lyric syllables are music expressions (the atomic
+expressions)
+@cindex atomic music expressions
+, and you can combine
+music expressions to form new ones. This example forms a compound
+expressions out of the quarter @code{c} note and a @code{d}
+note:
+
+@quotation
+
+ @example
+\sequential @{ c4 d4 @}
+@end example
+
+@end quotation
+
+The meaning of this compound expression is to play the `@code{c}'
+first, and then the `@code{d}' (as opposed to playing them
+simultaneously, for instance).
+
+Atomic music expression are discussed in
+subsection @xref{atomicmusic}. Compound music expressions are
+discussed in subsection @xref{compoundmusic}.
+
+
+
+@node Atomic music expressions, atomicmusic, Music expressions, LilyPond 1-2-0 Reference Manual
+@section Atomic music expressions
+@node atomicmusic, notedesc, Atomic music expressions, LilyPond 1-2-0 Reference Manual
+
+
+
+@cindex pitch
+
+@cindex duration
+
+
+The syntax for pitch specification is
+
+@quotation
+
+ @code{\musicalpitch}
+@cindex musicalpitch@@@code{\musicalpitch}
+
+ @code{@{} @code{@}}
+@end quotation
+
+ is specified by an integer, zero for the octave
+containing middle C. is a number from 0 to 7, with 0
+corresponding to C and 7 corresponding to B. The shift is zero for a
+natural, negative to add flats, or positive to add sharps.
+
+In Note and Chord mode, pitches may be designated by names. See
+section @xref{notelang} for pitch names in different languages.
+
+The syntax for duration specification is
+
+@quotation
+
+ @code{\duration}
+@cindex duration@@@code{\duration}
+
+ @code{@{} @code{@}}
+@end quotation
+
+ is the negative logarithm (base 2) of the duration:
+1 is a half note, 2 is a quarter note, 3 is an eighth
+note, etc. The number of dots after the note is given by
+.
+
+In Note, Chord, and Lyrics mode, durations may be designated by
+numbers and dots. See Section @xref{notelang} for details.
+
+
+@node notedesc, barlines, atomicmusic, LilyPond 1-2-0 Reference Manual
+
+@cindex note specification
+
+@cindex pitches
+
+@cindex entering notes
+
+A note specification has the form
+
+@quotation
+
+ [][@code{!}][@code{?}][]
+@end quotation
+
+The pitch of the note is specified by the note's name.
+
+
+The default names are the Dutch note names. The notes are specified
+by the letters `@code{c}' through `@code{b}', where `@code{c}' is an
+octave below middle C and the letters span the octave above that C.
+In Dutchcindex(notenames!Dutch), a sharp is formed by adding
+`@code{-is}' to the end of a pitch name. A flat is formed by adding
+`@code{-es}'. Double sharps and double flats are obtained by adding
+`@code{-isis}' or `@code{-eses}'. `@code{aes}' and `@code{ees}' are
+contracted to `@code{as}' and `@code{es}' in Dutch, but both forms will
+be accepted.
+
+LilyPond has predefined sets of notenames for various languages. See
+section @xref{notelang} for details.
+
+
+The optional octave specification takes the form of a series of
+single quote (`@code{'}
+@cindex '@@@code{'}
+') characters or a series of comma
+(`@code{,}
+@cindex ,@@@code{,}
+') characters. Each @code{'} raises the pitch by one
+octave; each @code{,} lowers the pitch by an octave.
+
+@mudela[fragment,verbatim,center]
+ c' d' e' f' g' a' b' c''
+@end mudela
+
+@mudela[fragment,verbatim,center]
+ cis' dis' eis' fis' gis' ais' bis'
+@end mudela
+
+@mudela[fragment,verbatim,center]
+ ces' des' es' fes' ges' as' bes'
+@end mudela
+
+@mudela[fragment,verbatim,center]
+ cisis' eisis' gisis' aisis' beses'
+@end mudela
+
+@mudela[fragment,verbatim,center]
+ ceses' eses' geses' ases' beses'
+@end mudela
+
+Whenever a C-sharp is desired, you must specify a C-sharp. LilyPond
+will determine what accidentals to typeset depending on the key and
+context. A reminder accidental
+@cindex reminder accidental
+ can be
+forced by adding an exclamation mark `@code{!}' after the pitch. A
+cautionary accidental,
+@cindex cautionary accidental
+ i.e., an
+accidental within parentheses can be obtained by adding the question
+mark `@code{?}
+@cindex ?@@@code{?}
+' after the pitch.
+
+@mudela[fragment,verbatim,center]
+ cis' d' e' cis' c'? d' e' c'!
+@end mudela
+
+
+@cindex duration
+
+Durations are entered as their reciprocal values. For notes longer
+than a whole note, use identifiers.
+
+@quotation
+
+@example
+c'\longa c'\breve
+c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64
+@end example
+
+@end quotation
+
+@quotation
+
+@mudela[]
+\score {
+ \notes \relative c'' {
+ a\longa a\breve
+ a1 a2 a4 a8 a16 a32 a64 a64
+ }
+ \paper {
+ loose_column_distance = 2.5 * \interline;
+ linewidth = -1.0;
+ \translator {
+ \type "Score_engraver";
+ \name "Score";
+ \consists "Note_heads_engraver";
+ \consists "Stem_engraver";
+ \consists "Rhythmic_column_engraver";
+ }
+ }
+}
+@end mudela
+@end quotation
+
+@quotation
+
+@example
+r\longa r\breve
+r1 r2 r4 r8 r16 r32 r64 r64
+@end example
+
+@end quotation
+
+@quotation
+
+@mudela[]
+\score {
+ \notes \relative c'' {
+ r\longa r\breve
+ r1 r2 r4 r8 r16 r32 r64 r64
+ }
+ \paper {
+ loose_column_distance = 2.5 * \interline;
+ linewidth = -1.0;
+ \translator {
+ \type "Score_engraver";
+ \name "Score";
+ \consists "Rest_engraver";
+ \consists "Stem_engraver";
+ \consists "Rhythmic_column_engraver";
+ }
+ }
+}
+@end mudela
+@end quotation
+
+If the duration is omitted then it is set equal to the previous
+duration. If there is no previous duration, a quarter note is
+assumed. The duration can be followed by a dot (`@code{.}
+@cindex .@@@code{.}
+')
+to obtain dotted note lengths.
+
+@mudela[fragment,verbatim,center]
+ a'4. b'4.
+@end mudela
+
+You can alter the length of duration by writing
+`@code{*}' after it. This will not affect the
+appearance of note heads or rests.
+
+
+Rests are entered like notes, with note name `@code{r}
+@cindex r@@@code{r}
+',
+or `@code{R}
+@cindex R@@@code{R}
+'. There is also a note name `@code{s}
+@cindex s@@@code{s}
+',
+which produces a space of the specified duration.
+`@code{R}' is specifically meant for entering parts: the @code{R} rest
+can expand to fill a score with rests, or it can be printed as a
+single multimeasure rest.
+
+
+@cindex lyrics expressions
+
+Syllables are entered like notes, with pitches replaced by text. For
+example, `@code{Twin-4 kle4 twin-4 kle4}' enters four syllables, each
+with quarter note duration. Note that the hyphen has no special
+meaning for lyrics, and does not introduce special symbols. See
+section @xref{modes} for a description of what is interpreted as
+lyrics.
+
+Spaces can be introduced into a lyric either by using quotes
+(`@code{"}') or by using an underscore without quotes: `@code{He_could4
+not4}'. All unquoted underscores are converted to spaces. Printing
+lyrics is discussed in section @xref{lyricprint}.
+
+
+
+@cindex properties
+
+@quotation
+
+ @code{\property}
+@cindex property@@@code{\property}
+
+ @code{.} @code{=}
+@end quotation
+
+Sets the property of the context to
+the specified . All three arguments are strings.
+Depending on the context, it may be necessary to quote the strings or
+to leave space on both sides of the dot.
+
+
+
+@cindex translator switches
+
+@quotation
+
+ @code{\translator}
+@cindex translator@@@code{\translator}
+
+ =
+@end quotation
+
+A music expression indicating that the context which is a direct
+child of the a context of type should be shifted to
+a context of type and the specified name.
+
+Usually this is used to switch staffs in Piano music, e.g.
+
+@quotation
+
+ @code{\translator Staff = top}
+@end quotation
+
+
+
+@cindex commands
+
+Commands are music expressions that have no duration.
+
+
+@quotation
+
+ @code{\key}
+@cindex key@@@code{\key}
+ @code{;}
+@end quotation
+
+Change the key signature. should be
+@code{\major}
+@cindex major@@@code{\major}
+ or @code{\minor}
+@cindex minor@@@code{\minor}
+ to get
+-major or -minor, respectively. The second
+argument is optional; the default is major keys. The
+argument can also be given as an integer, which tells the number of
+semitones that should be added to the pitch given in the subsequent
+@code{\key}
+@cindex key@@@code{\key}
+ commands to get the corresponding major key,
+e.g., @code{\minor}
+@cindex minor@@@code{\minor}
+ is defined as 3. The standard
+mode names @code{\ionian}
+@cindex ionian@@@code{\ionian}
+,
+@code{\locrian}
+@cindex locrian@@@code{\locrian}
+, @code{\aeolian}
+@cindex aeolian@@@code{\aeolian}
+,
+@code{\mixolydian}
+@cindex mixolydian@@@code{\mixolydian}
+, @code{\lydian}
+@cindex lydian@@@code{\lydian}
+,
+@code{\phrygian}
+@cindex phrygian@@@code{\phrygian}
+, and @code{\dorian}
+@cindex dorian@@@code{\dorian}
+
+are also defined.
+
+@quotation
+
+ @code{\keysignature}
+@cindex keysignature@@@code{\keysignature}
+ @code{;}
+@end quotation
+
+Specify an arbitrary key signature. The pitches from will
+be printed in the key signature in the order that they appear on the
+list.
+
+
+@quotation
+
+ @code{\mark}
+@cindex mark@@@code{\mark}
+ @code{;} @*
+ @code{\mark} @code{;}
+@end quotation
+
+Prints a mark over or under (depending on the
+@code{markDirection}
+@cindex markDirection@@@code{markDirection}
+ property) the staff. You must add
+@code{Mark_engraver}
+@cindex Mark_engraver@@@code{Mark_engraver}
+ to either the Score or Staff context for
+this to work.
+
+@node barlines, manualbeam, notedesc, LilyPond 1-2-0 Reference Manual
+
+@quotation
+
+ @code{\bar}
+@cindex bar@@@code{\bar}
+ @code{;}
+@end quotation
+
+This is a request to print a special bar symbol. It replaces the
+regular bar symbol with a special
+symbol. The argument is a string which specifies the
+kind of bar to print. Options are @code{":|"}
+@cindex "|A@@@code{:|}
+,
+@code{"|:"}
+@cindex "|B@@@code{|:}
+, @code{":|:"}
+@cindex "|C@@@code{:|:}
+,
+@code{"||"}
+@cindex "|D@@@code{||}
+, @code{"|."}
+@cindex "|E@@@code{|.}
+,
+@code{".|"}
+@cindex "|F@@@code{.|}
+, and @code{".|."}
+@cindex "|G@@@code{.|.}
+.
+These produce, respectively, a right repeat, a left repeat, a double
+repeat, a double bar, a start bar, an end bar, and a thick double
+bar. If is set to @code{"empty"} then nothing is
+printed, but a line break is allowed at that spot.
+
+You are encouraged to use @code{\repeat} for repetitions.
+See section @xref{sec-repeats}.
+
+
+
+@quotation
+
+ @code{\cadenza}
+@cindex cadenza@@@code{\cadenza}
+ @code{;}
+@end quotation
+
+Music expression that toggles the automatic generation of bar lines.
+If is 1, bar line generation is turned off. If
+ is 0, a bar line is immediately printed and
+automatic bar generation is turned on.
+
+@quotation
+
+ @code{\time}
+@cindex time@@@code{\time}
+ @code{/} @code{;}
+@end quotation
+
+Change the time signature. The default time signature is 4/4.
+The time signature is used to generate bar lines.
+
+@quotation
+
+ @code{\tempo}
+@cindex tempo@@@code{\tempo}
+ = @code{;}
+@end quotation
+
+Used to specify the tempo. For example, `@code{\tempo 4 = 76;}'
+requests output with 76 quarter notes per minute.
+
+@quotation
+
+ @code{\partial}
+@cindex partial@@@code{\partial}
+ @code{;}
+@end quotation
+
+@cindex anacrusis
+
+@cindex upstep
+
+This creates an incomplete measure (anacrusis, upbeat) at the start of
+the music, e.g., `@code{\partial 8*2;}' creates a starting measure
+lasting two eighth notes.
+
+@quotation
+
+ @code{|}
+@cindex |@@@code{|}
+
+@cindex bar check
+
+@end quotation
+
+@cindex shorten measures
+
+@cindex upstep
+
+`@code{|}' is a barcheck. Whenever a barcheck is encountered during
+interpretation, a warning message is issued if it doesn't fall at a
+measure boundary. This can help you finding errors in the input.
+The beginning of the measure will be relocated, so this can also
+be used to shorten measures.
+
+
+@quotation
+
+ @code{\penalty}
+@cindex penalty@@@code{\penalty}
+ @code{;}
+@end quotation
+
+Discourage or encourage line breaks. See identifiers
+@code{\break}
+@cindex break@@@code{\break}
+ and @code{\nobreak}
+@cindex nobreak@@@code{\nobreak}
+ in
+section @xref{ident}.
+
+@quotation
+
+ @code{\clef}
+@cindex clef@@@code{\clef}
+ @code{;}
+@end quotation
+
+Music expression that sets the current clef. The argument is a
+string which specifies the name of the clef. Several clef names are
+supported. If `@code{_8}' or `@code{^8}' is added to the end of a clef
+name, then the clef lowered or raised an octave will be generated.
+Here are the supported clef names with middle C shown in each
+clef:
+
+@quotation
+
+@mudela[]
+\score {
+ \notes {
+ \cadenza 1;
+ %\property Voice.textStyle = typewriter
+ \clef subbass; c'4-"\kern -5mm subbass"
+ \clef bass; c'4^"\kern -2mm bass"
+ \clef baritone; c'4_"\kern -5mm baritone"
+ \clef varbaritone; c'4^"\kern -6mm varbaritone"
+ \clef tenor; c'4_"\kern -3mm tenor"
+ \clef "G_8"; c'4^"\kern -2mm G\\_8"
+ }
+ \paper {
+ linewidth = 4.5 \in;
+ }
+}
+@end mudela
+@end quotation
+
+@quotation
+
+@mudela[]
+\score {
+ \notes {
+ \cadenza 1;
+ \clef alto; c'4_"\kern -2mm alto"
+ \clef mezzosoprano; c'4^"\kern -9mm mezzosoprano"
+ \clef soprano; c'4_"\kern -6mm soprano"
+ \clef treble; c'4^"\kern -4mm treble"
+ \clef french; c'4_"\kern -4mm french"
+ }
+ \paper {
+ linewidth = 4.5 \in;
+ }
+}
+@end mudela
+@end quotation
+
+The three clef symbols can also be obtained using the names `@code{G}',
+`@code{C}' or `@code{F}', optionally followed by an integer which
+indicates at which note line the clef is located. An as example, the
+@code{mezzosoprano} clef can also be given as `@code{C2}'.
+
+@quotation
+
+ @code{\skip}
+@cindex skip@@@code{\skip}
+ @code{;}
+@end quotation
+
+Skips the amount of time specified by . If no other
+music is played, a gap will be left for the skipped time with no
+notes printed. It works in Note Mode or Lyrics Mode. In Note mode,
+this has the same effect as the space rest `@code{s}'.
+
+
+@cindex beams
+
+@node manualbeam, tremolo, barlines, LilyPond 1-2-0 Reference Manual
+
+A beam is specified by surrounding the beamed notes with brackets
+`@code{[}
+@cindex [@@@code{[}
+' and `@code{]}
+@cindex ]@@@code{]}
+'.
+
+@mudela[fragment,verbatim,center]
+ [a'8 a'] [a'16 a' a' a']
+@end mudela
+
+Some more elaborate constructions:
+
+@mudela[fragment,verbatim,center]
+ [a'16 <a' c''> c'' <a' c''>]
+ \times 2/3 { [e'8 f' g'] }
+@end mudela
+
+Beaming can be generated automatically; see section @xref{autobeam}.
+
+To place tremolo marks
+@cindex tremolo beams
+ between two notes, begin
+with `@code{[:}' and end with `@code{]}'. Tremolo marks
+will appear instead of beams. Putting more than two notes in such a
+construction will produce odd effects. To create tremolo beams on a
+single note, simply attach `@code{:}' to the note itself
+(see also section @xref{tremolo}).
+
+@mudela[fragment,verbatim,center]
+ [:16 e'1 g'] [:8 e'4 f']
+@end mudela
+
+@mudela[fragment,verbatim,center]
+ c'4:32 [:16 c'8 d'8]
+@end mudela
+
+
+@cindex --@@@code{-}@code{-}
+
+@cindex __@@@code{__}
+
+@cindex extender
+
+@cindex hyphen
+
+The syntax for an extender mark is `@code{__}'. This syntax can only
+be used within lyrics mode. The syntax for a spanning hyphen (i.e.,
+a hyphen that will be printed between two lyric syllables) is
+`@code{-}@code{-}'.
+
+
+@cindex ties
+
+A tie connects two adjacent note heads of the same pitch. When used
+with chords, it connects all of the note heads whose pitches match.
+Ties are indicated using the tilde symbol `@code{~}
+@cindex ~@@@code{~}
+'.
+If you try to tie together chords which have no common pitches, a
+warning message will appear and no ties will be created.
+
+@mudela[fragment,verbatim,center]
+ e' ~ e' <c' e' g'> ~ <c' e' g'>
+@end mudela
+
+
+
+[TODO: explain Requests]
+
+
+@cindex articulations
+
+@cindex scripts
+
+@cindex ornaments
+
+A variety of symbols can appear above and below notes to indicate
+different characteristics of the performance. These symbols can be
+added to a note with `@code{-\}'. Numerous symbols
+are defined in @file{script.ly} and @file{script.scm}. Symbols can be
+forced to appear above or below the note by writing
+`@code{^\}' and `@code{_\}'
+respectively. Here is a chart showing symbols above notes, with the
+name of the corresponding symbol appearing underneath.
+
+@mudela[]
+
+ \score {
+ < \notes {
+ c''-\accent c''-\marcato c''-\staccatissimo c''-\fermata
+ c''-\stopped c''-\staccato c''-\tenuto c''-\upbow
+ c''-\downbow c''^\lheel c''-\rheel c''^\ltoe
+ c''-\rtoe c''-\turn c''-\open c''-\flageolet
+ c''-\reverseturn c''-\trill c''-\prall c''-\mordent
+ c''-\prallprall c''-\prallmordent c''-\upprall c''-\downprall
+ c''-\thumb c''-\segno c''-\coda
+ }
+ \context Lyrics \lyrics {
+ accent__ marcato__ staccatissimo__ fermata
+ stopped__ staccato__ tenuto__ upbow
+ downbow__ lheel__ rheel__ ltoe
+ rtoe__ turn__ open__ flageolet
+ reverseturn__ trill__ prall__ mordent
+ prallprall__ prallmordent__ uprall__ downprall
+ thumb__ segno__ coda
+ }
+ >
+ \paper {
+ linewidth = 5.875\in;
+ indent = 0.0;
+ }
+ }
+
+@end mudela
+
+In addition, it is possible to place arbitrary strings of text or
+TeX above or below notes by using a string instead of an
+identifier: `@code{c^"text"}'. Fingerings
+@cindex fingering
+ can be
+placed by simply using digits. All of these note ornaments appear in
+the printed output but have no effect on the MIDI rendering of the
+music.
+
+To save typing, fingering instructions (digits 0 to 9 are
+supported) and single characters shorthands exist for a few
+common symbols
+
+@mudela[]
+
+ \score {
+ \notes {
+ \property Voice.textStyle = typewriter
+ c''4-._"c-." s4
+ c''4--_"c-{}-" s4
+ c''4-+_"c-+" s4
+ c''4-|_"c-|" s4
+ c''4->_"c->" s4
+ c''4-^_"c-\\^{ }" s4
+ c''4-1_"c-1" s4
+ c''4-2_"c-2" s4
+ c''4-3_"c-3" s4
+ c''4-4_"c-4" s4
+ }
+ \paper {
+ linewidth = 5.875 \in;
+ indent = 0.0;
+ }
+ }
+
+@end mudela
+
+Dynamic marks are specified by using an identifier after a note:
+`@code{c4-\ff}' (the dash is optional for dynamics: `@code{c4 \ff})'.
+The available dynamic marks are:
+@code{\ppp}
+@cindex ppp@@@code{\ppp}
+,
+@code{\pp}
+@cindex pp@@@code{\pp}
+, @code{\p}
+@cindex p@@@code{\p}
+, @code{\mp}
+@cindex mp@@@code{\mp}
+,
+@code{\mf}
+@cindex mf@@@code{\mf}
+, @code{\f}
+@cindex f@@@code{\f}
+, @code{\ff}
+@cindex ff@@@code{\ff}
+,
+@code{\fff}
+@cindex fff@@@code{\fff}
+, @code{\fff}
+@cindex ffff@@@code{\ffff}
+,
+@code{\fp}
+@cindex fp@@@code{\fp}
+, @code{\sf}
+@cindex sf@@@code{\sf}
+,
+@code{\sff}
+@cindex sff@@@code{\sff}
+, @code{\sp}
+@cindex sp@@@code{\sp}
+,
+@code{\spp}
+@cindex spp@@@code{\spp}
+, @code{\sfz}
+@cindex sfz@@@code{\sfz}
+, and
+@code{\rfz}
+@cindex rfz@@@code{\rfz}
+.
+
+
+@quotation
+
+ @code{\textscript}
+@cindex textscript@@@code{\textscript}
+
+@end quotation
+
+Defines a text to be printed over or under a note. is a
+string that may be one of @code{roman}, @code{italic}, @code{typewriter},
+@code{bold}, @code{Large}, @code{large}, @code{dynamic} or @code{finger}.
+
+You can attach a general textscript request using this syntax:
+
+@quotation
+
+@example
+c4-\textscript "6" "finger"
+c4-\textscript "foo" "normal"
+@end example
+
+@end quotation
+
+This is equivalent to `@code{c4-6 c4-"foo"}'.
+
+
+@cindex scripts
+
+@quotation
+
+ @code{\script}
+@cindex script@@@code{\script}
+
+@end quotation
+
+Prints a symbol above or below a note. The argument is a string
+which points into the script-alias table defined in @file{script.scm}.
+The scheme definitions specify whether the symbol follows notes into
+the staff, dependence of symbol placement on staff direction, and a
+priority for placing several symbols over one note. Usually the
+@code{\script}
+@cindex script@@@code{\script}
+ keyword is not used directly. Various
+helpful identifier definitions appear in @file{script.ly}.
+
+
+@cindex slur
+
+Slurs connects chords and try to avoid crossing stems. A slur is
+started with `@code{(}' and stopped with `@code{)}'. The
+starting `@code{(}' appears to the right of the first note in
+the slur. The terminal `@code{)}' appears to the left of the
+first note in the slur. This makes it possible to put a note in
+slurs from both sides:
+
+@mudela[fragment,verbatim,center]
+ f'()g'()a' [a'8 b'(] a'4 g'2 )f'4
+@end mudela
+
+
+@cindex crescendo
+
+A crescendo mark is started with @code{\cr}
+@cindex cr@@@code{\cr}
+ and terminated
+with @code{\rc}
+@cindex rc@@@code{\rc}
+. A decrescendo mark is started with
+@code{\decr}
+@cindex decr@@@code{\decr}
+ and terminated with
+@code{\rced}
+@cindex rced@@@code{\rced}
+. There are also shorthands for these
+marks. A crescendo can be started with @code{\<}
+@cindex <@@@code{\<}
+ and a
+decrescendo can be started with @code{\>}
+@cindex >@@@code{\>}
+. Either one can
+be terminated with @code{\!}
+@cindex "!@@@code{\"!}
+. Note that @code{\!}
+must go before the last note of the dynamic mark whereas @code{\rc}
+and @code{\rced} go after the last note. Because these marks are
+bound to notes, if you want to get several marks during one note, you
+must use spacer notes.
+
+@mudela[fragment,verbatim,center]
+ c'' \< \! c'' d'' \decr e'' \rced
+ < f''1 { s4 \< \! s2 \> \! s4 } >
+@end mudela
+
+
+@quotation
+
+ @code{\spanrequest}
+@cindex spanrequest@@@code{\spanrequest}
+
+@end quotation
+
+Define a spanning request. The parameter is either -1
+(@code{\start}
+@cindex start@@@code{\start}
+) or 1 (@code{\stop}
+@cindex stop@@@code{\stop}
+) and
+ is a string that describes what should be started.
+Supported types are @code{crescendo}, @code{decrescendo},
+@code{beam}, @code{slur}. This is an internal command. Users should
+use the shorthands which are defined in the initialization file
+@file{spanners.ly}.
+
+You can attach a (general) span request to a note using
+
+@mudela[fragment,verbatim,center]
+ c'4-\spanrequest \start "slur"
+ c'4-\spanrequest \stop "slur"
+@end mudela
+
+The slur syntax with parentheses is a shorthand for this.
+
+
+
+@cindex tremolo marks
+
+@node tremolo, Compound music expressions, manualbeam, LilyPond 1-2-0 Reference Manual
+
+Tremolo marks can be printed on a single note by adding
+`@code{:}[]' after the note. The length must be at
+least 8. A value of 8 gives one line across
+the note stem. If the length is omitted, then the last value is
+used, or the value of the @code{abbrev}
+@cindex abbrev@@@code{abbrev}
+ property if there was
+no last value.
+
+@mudela[verbatim,fragment,center]
+ c'2:8 c':32
+@end mudela
+
+
+
+@node Compound music expressions, compoundmusic, tremolo, LilyPond 1-2-0 Reference Manual
+@section Compound music expressions
+
+@cindex compound music expressions
+
+@node compoundmusic, relative, Compound music expressions, LilyPond 1-2-0 Reference Manual
+
+Music expressions are compound data structures. You can nest music
+expressions any way you like. This simple example shows how three
+chords can be expressed in two different ways:
+
+@mudela[fragment,verbatim,center]
+ \notes \context Staff {
+ \cadenza 1;
+ <a c'> <b d' > <c' e' >
+ <{a b c'}{c' d' e'}>
+ }
+@end mudela
+
+
+
+@cindex context selection
+
+@quotation
+
+ @code{\context}
+@cindex context@@@code{\context}
+
+ [@code{=} ]
+@end quotation
+
+Interpret within a context of type .
+If the context does not exist, it will be created. The new context
+can optionally be given a name. See
+section @xref{contextselection} and @xref{contextdefs} for more
+information on interpretation contexts.
+
+
+
+@cindex input modes
+
+@cindex mode switch
+
+Mode switching keywords form compound music expressions: @code{\notes}
+
+@cindex notes@@@code{\notes}
+ , @code{\chords}
+@cindex chords@@@code{\chords}
+
+, and @code{\lyrics}
+@cindex lyrics@@@code{\lyrics}
+ .
+These expressions do not add anything to the meaning of their
+arguments. They are just a way to indicate that the arguments should
+be parsed in indicated mode. See section @xref{modes} for more
+information on modes.
+
+More information on context selection can be found in
+section @xref{contextselection}.
+
+
+
+@cindex sequential music
+
+
+
+@quotation
+
+ @code{\sequential}
+@cindex sequential@@@code{\sequential}
+
+ @code{@{} @code{@}}
+@end quotation
+
+This means that list should be played or written in sequence, i.e.,
+the second after the first, the third after the second. The duration
+of sequential music is the the sum of the durations of the elements.
+There is a shorthand, which leaves out the keyword:
+
+@quotation
+
+ @code{@{} @code{@}}
+@end quotation
+
+
+
+@cindex simultaneous music
+
+@cindex <@@@code{<}
+
+@cindex >@@@code{>}
+
+@quotation
+
+ @code{\simultaneous}
+@cindex simultaneous@@@code{\simultaneous}
+
+ @code{@{} @code{@}}
+@end quotation
+
+It constructs a music expression where all of its arguments start at
+the same moment. The duration is the maximum of the durations of the
+elements. The following shorthand is a common idiom:
+
+@quotation
+
+ @code{<} @code{>}
+@end quotation
+
+If you try to use a chord as the first thing in your score, you might
+get multiple staffs instead of a chord.
+
+@mudela[verbatim,center]
+ \score {
+ \notes <c''4 e''>
+ \paper {
+ linewidth = -1.;
+ }
+ }
+@end mudela
+
+This happens because the chord is interpreted by a score context.
+Each time a note is encountered a default Voice context (along with a
+Staff context) is created. The solution is to explicitly instantiate
+a Voice context:
+
+@mudela[verbatim,center]
+ \score {
+ \notes\context Voice <c''4 e''>
+ \paper {
+ linewidth = -1.;
+ }
+ }
+@end mudela
+
+
+
+@cindex relative pitch specification
+
+@node relative, sec-repeats, compoundmusic, LilyPond 1-2-0 Reference Manual
+
+It is easy to get confused by octave changing marks and accidentally
+putting a pitch in the wrong octave. A much better way of entering a
+note's octave is `the relative octave' mode.
+
+@quotation
+
+ @code{\relative}
+@cindex relative@@@code{\relative}
+
+@end quotation
+
+The octave of notes that appear in are calculated as
+follows: If no octave changing marks are used, the basic interval
+between this and the last note is always taken to be a fourth or
+less.@footnote{The interval is determined without regarding
+accidentals. A @code{fisis} following a @code{ceses} will be put above
+the @code{ceses}.} The octave changing marks `@code{'}' and `@code{,}'
+can then be added to raise or lower the pitch by an extra octave.
+Upon entering relative mode, an absolute starting pitch must be
+specified that will act as the predecessor of the first note of
+.
+
+Entering scales is straightforward in relative mode.
+
+@mudela[fragment,verbatim,center]
+ \relative c' {
+ c d e f g a b c c,
+ }
+@end mudela
+
+And octave changing marks are used for intervals greater than a fourth.
+
+@mudela[fragment,verbatim,center]
+ \relative c'' {
+ c g c f, c' a, e'' }
+@end mudela
+
+If the preceding item is a chord, the first note of the chord is used
+to determine the first note of the next chord. But other notes
+within the second chord are determined by looking at the immediately
+preceding note.
+
+@mudela[fragment,verbatim,center]
+ \relative c' {
+ c <c e g>
+ <c' e g>
+ <c, e' g>
+ }
+@end mudela
+
+The pitch after the @code{\relative} contains a notename. To parse
+the pitch as a notename, you have to be in note mode, so there must
+be a surrounding @code{\notes}
+@cindex notes@@@code{\notes}
+ keyword (which is not
+shown here).
+
+The relative conversion will not affect @code{\transpose} or
+@code{\relative} sections in its argument. If you want to use
+relative within transposed music, you must place an additional
+@code{\relative} inside the @code{\transpose}.
+
+It is strongly recommended to use relative pitch mode: less work,
+less error-prone, and more readable.
+
+
+
+Chord names are a way to generate simultaneous music expressions that
+correspond with traditional chord names. It can only be used in
+Chord mode (see section @xref{modes}).
+
+@quotation
+
+ [][@code{-}][@code{^}][@code{/}].
+@end quotation
+
+ should be the tonic note of the chord, and
+is the chord duration in the usual notation. There are two kinds of
+modifiers. One type is @emph{chord additions}, which are obtained by
+listing intervals separated by dots. An interval is written by its
+number with an optional `@code{+}' or `@code{-}' to indicate raising or
+lowering by half a step. Chord additions has two effects: It adds
+the specified interval and all lower odd numbered intervals to the
+chord, and it may lower or raise the specified interval. Intervals
+must be separated by a dot (`@code{.}').
+
+@quotation
+
+@mudela[fragment,verbatim]
+\transpose c'' {
+ \chords {
+ c1 c-3- c-7 c-8
+ c-9 c-9-.5+.7+ c-3-.5- c-4.6.8
+ }
+}
+
+@end mudela
+@end quotation
+
+The second type of modifier that may appear after the `@code{-}' is a
+named modifier. Named modifiers are listed in the file
+@file{chord-modifiers.ly}. The available modifiers are `@code{m}' and
+`@code{min}' which lower the 3rd half a step, `@code{aug}
+@cindex aug@@@code{aug}
+' which
+raises the 5th, `@code{dim}
+@cindex dim@@@code{dim}
+' which lowers the 5th,
+`@code{maj}
+@cindex maj@@@code{maj}
+' which adds a raised 7th, and `@code{sus}
+@cindex sus@@@code{sus}
+'
+which replaces the 5th with a 4th.
+
+@quotation
+
+@mudela[fragment,verbatim]
+\transpose c'' {
+ \chords {
+ c1-m c-min7 c-maj c-aug c-dim c-sus
+ }
+}
+
+@end mudela
+@end quotation
+
+
+Chord subtractions are used to eliminate notes from a chord. The
+notes to be subtracted are listed after a `@code{^}' character,
+separated by dots.
+
+@mudela[fragment,verbatim,center]
+ \transpose c'' {
+ \chords {
+ c1^3 c-7^5.3 c-8^7
+ }
+ }
+@end mudela
+
+Chord inversions can be specified by appending `@code{/}
+@cindex /@@@code{/}
+' and
+the name of a single note to a chord. This has the effect of
+lowering the specified note by an octave so it becomes the lowest
+note in the chord. If the specified note is not in the chord, a
+warning will be printed.
+
+@mudela[fragment,verbatim,center]
+ \transpose c''' {
+ \chords {
+ c1 c/e c/g c-7/e
+ }
+ }
+
+@end mudela
+
+Throughout these examples, chords have been shifted around the staff
+using @code{\transpose}.
+
+You should not combine @code{\relative} with named chords.
+
+
+
+@cindex tuplets
+
+Tuplets are made out of a music expression by multiplying their
+duration with a fraction.
+
+@quotation
+
+ @code{\times}
+@cindex times@@@code{\times}
+
+@end quotation
+
+The duration of will be multiplied by the fraction.
+In print, the fraction's denominator will be printed over the notes,
+optionally with a bracket. The most common tuplet is the triplet in
+which 3 notes have the length of 2, so the notes are 2/3 of
+their written length:
+
+@mudela[fragment,verbatim,center]
+ g'4 \times 2/3 {c'4 c' c'} d'4 d'4
+@end mudela
+
+
+
+@cindex grace notes
+
+@quotation
+
+ @code{\grace}
+@cindex grace@@@code{\grace}
+
+@end quotation
+
+A grace note expression has duration 0; the next real note is
+assumed to be the main note.
+
+You cannot have the grace note after the main note, in terms of
+duration, and main notes, but you can typeset the grace notes to the
+right of the main note using the property
+@code{graceAlignPosition}
+@cindex graceAlignPosition@@@code{graceAlignPosition}
+.
+
+When grace music is interpreted, a score-within-a-score is set up:
+ has its own time bookkeeping, and you could (for
+example) have a separate time signature within grace notes. While in
+this score-within-a-score, you can create notes, beams, slurs, etc.
+Unbeamed eighth notes and shorter by default have a slash through the
+stem. This behavior can be controlled with the
+@code{stemStyle}
+@cindex stemStyle@@@code{stemStyle}
+ property.
+
+@quotation
+
+@mudela[fragment,verbatim]
+\relative c'' {
+ \grace c8 c4 \grace { [c16 c16] } c4
+ \grace { \property Grace.stemStyle = "" c16 } c4
+}
+
+@end mudela
+@end quotation
+
+At present, nesting @code{\grace}
+@cindex grace@@@code{\grace}
+ notes, e.g.
+
+@quotation
+
+ @code{\grace @{ \grace c32 c16 @} c4}
+@end quotation
+
+may result in run-time errors of LilyPond. Since the meaning of such
+a construct is unclear, we don't consider this a loss. Similarly,
+juxtaposing two @code{\grace} sections is syntactically valid, but
+makes no sense and may cause runtime errors.
+
+Ending a staff or score with grace notes may also generate a run-time
+error, since there will be no main note to attach the grace notes to.
+
+
+
+@cindex repeats
+
+@node sec-repeats, transpose, relative, LilyPond 1-2-0 Reference Manual
+
+In order to specify repeats, use the @code{\repeat}
+@cindex repeat@@@code{\repeat}
+
+keyword. Since repeats look and sound differently when played or
+printed, there are a few different variants of repeats.
+
+@table @samp
+ @item unfolded @*
+ Repeated music is fully written (played) out. Useful for MIDI
+ output.
+
+ @item volta @*
+ This is the normal notation: Repeats are not written out, but
+ alternative endings (voltas) are printed, left to right.
+
+ @item folded @*
+ Alternative endings are written stacked, which is useful for
+ lyrics.
+@end table
+
+The syntax for repeats is
+
+@quotation
+
+ @code{\repeat}
+@end quotation
+
+If you have alternative endings, you may add
+
+@quotation
+
+ @code{\alternative}
+@cindex alternative@@@code{\alternative}
+
+ @code{@{}
+
+ ... @code{@}}
+@end quotation
+
+where each is a Music expression.
+
+Normal notation repeats are used like this:
+
+@quotation
+
+@mudela[fragment,verbatim]
+ c'1
+ \repeat volta 2 { c'4 d' e' f' }
+ \repeat volta 2 { f' e' d' c' }
+
+@end mudela
+@end quotation
+
+With alternative endings:
+
+@quotation
+
+@mudela[fragment,verbatim]
+ c'1
+ \repeat volta 2 {c'4 d' e' f'}
+ \alternative { {d'2 d'} {f' f} }
+
+@end mudela
+@end quotation
+
+Folded repeats look like this:@footnote{Folded repeats offer little
+more over simultaneous music. However, it is to be expected that
+more functionality -- especially for the MIDI backend -- will be
+implemented.}
+
+@quotation
+
+@mudela[fragment,verbatim]
+ c'1
+ \repeat fold 2 {c'4 d' e' f'}
+ \alternative { {d'2 d'} {f' f} }
+
+@end mudela
+@end quotation
+
+@quotation
+
+@mudela[fragment,verbatim]
+\context Staff {
+ \relative c' {
+ \partial 4;
+ \repeat volta 2 { e | c2 d2 | e2 f2 | }
+ \alternative { { g4 g g } { a | a a a a | b1 } }
+ }
+}
+
+@end mudela
+@end quotation
+
+If you don't give enough alternatives for all of the repeats, then
+the first alternative is assumed to be repeated often enough to equal
+the specified number of repeats.
+
+@quotation
+
+@mudela[fragment,verbatim]
+\context Staff {
+ \relative c' {
+ \repeat volta 3 { \partial 4; e | c2 d2 | e2 f2 | }
+ \alternative { { g4 g g }
+ {\partial 1; e4 e e }
+ {\partial 1; a a a a | b1 } }
+ }
+}
+
+@end mudela
+@end quotation
+
+It is possible to nest @code{\repeat}. This is not entirely
+supported: the notes will come be in the right places, but the repeat
+bars will not.
+
+
+
+@cindex transposition of pitches
+
+@node transpose, Ambiguities, sec-repeats, LilyPond 1-2-0 Reference Manual
+
+A music expression can be transposed with
+@code{\transpose}
+@cindex transpose@@@code{\transpose}
+. The syntax is
+
+@quotation
+
+ @code{\transpose}
+@end quotation
+
+This means that middle C in is transposed to
+.
+
+@code{\transpose} distinguishes between enharmonic pitches: both
+@code{\transpose cis'} or @code{\transpose des'} will transpose up half
+a tone. The first version will print sharps and the second version
+will print flats.
+
+@quotation
+
+@mudela[fragment,verbatim]
+\context Staff {
+ \clef "F";
+ { \key e; c d e f }
+ \clef "G";
+ \transpose des'' { \key e; c d e f }
+ \transpose cis'' { \key e; c d e f }
+}
+
+@end mudela
+@end quotation
+
+If you want to use both @code{\transpose} and @code{\relative}, then
+you must use @code{\transpose} first. @code{\relative} will have no
+effect music that appears inside a @code{\transpose}.
+
+
+
+@cindex automatic lyric durations
+
+If you have lyrics that are set to a melody, you can import the
+rhythm of that melody into the lyrics using @code{\addlyrics}.
+
+@cindex addlyrics@@@code{\addlyrics}
+ The syntax for this is
+
+@quotation
+
+ @code{\addlyrics}
+@end quotation
+
+This means that both and are
+interpreted, but that every non-command atomic music expression
+(``every syllable'') in is interpreted using timing
+of .
+
+If the property @code{automaticMelismata}
+@cindex automaticMelismata@@@code{automaticMelismata}
+ is set in the
+context of , no lyrics will be put on slurred or tied
+notes.
+
+@quotation
+
+@mudela[verbatim,fragment]
+\addlyrics
+\transpose c'' {
+ \property Voice.automaticMelismata = "1"
+ c8 () cis d8. e16 f2
+}
+\context Lyrics \lyrics {
+ do4 re mi fa }
+
+@end mudela
+@end quotation
+
+You should use a single rhythm melody, and single rhythm lyrics (a
+constant duration is the obvious choice). If you do not, you will get
+undesired effects when using multiple stanzas:
+
+@quotation
+
+@mudela[verbatim,fragment]
+\addlyrics
+\transpose c'' {
+ c8 () cis d8. e16 f2
+}
+\context Lyrics \lyrics
+< { do4 re mi fa }
+ { do8 re mi fa } >
+
+@end mudela
+@end quotation
+
+It is valid (but probably not very useful) to use notes instead of
+lyrics for .
+
+
+
+
+@node Ambiguities, Notation conversion specifics, transpose, LilyPond 1-2-0 Reference Manual
+@section Ambiguities
+
+@cindex ambiguities
+
+The grammar contains a number of ambiguities.@footnote{The authors
+hope to resolve them at a later time.}
+
+@itemize @bullet
+ @item The assignment
+
+ @quotation
+
+ @example
+foo = bar
+@end example
+
+ @end quotation
+
+ can be interpreted as making a string identifier @code{\foo}
+ containing @code{"bar"}, or a music identifier @code{\foo}
+ containing the syllable `bar'.
+
+ @item The assignment
+
+ @quotation
+
+ @example
+foo = -6
+@end example
+
+ @end quotation
+
+ can be interpreted as making an integer identifier
+ containing -6, or a Request identifier containing the
+ fingering `6' (with neutral direction).
+
+ @item If you do a nested repeat like
+
+ @quotation
+
+@example
+\repeat ...
+\repeat ...
+\alternative
+@end example
+
+ @end quotation
+
+ then it is ambiguous to which @code{\repeat} the
+ @code{\alternative} belongs. This is the classic if-then-else
+ dilemma. It may be solved by using braces.
+
+ @item (an as yet unidentified ambiguity :-)
+@end itemize
+
+
+
+@node Notation conversion specifics, autobeam, Ambiguities, LilyPond 1-2-0 Reference Manual
+@section Notation conversion specifics
+
+
+
+@cindex automatic beam generation
+
+@node autobeam, lyricprint, Notation conversion specifics, LilyPond 1-2-0 Reference Manual
+
+By default, LilyPond will generate beams automatically. This feature
+can be disabled by setting the @code{Voice.noAutoBeaming}
+@cindex Voice.noAutoBeaming@@@code{Voice.noAutoBeaming}
+
+property to 1. It can be overridden for specific cases by
+specifying explicit beams as described in
+section @xref{manualbeam}.
+
+A large number of Voice properties are used to decide how to generate
+beams. Their default values appear in @file{auto-beam-settings.ly}.
+In general, beams can begin anywhere, but their ending location is
+significant. Beams can end on a beat, or at durations specified by
+the @code{Voice.beamAutoEnd}
+@cindex Voice.beamAutoEnd@@@code{Voice.beamAutoEnd}
+ property. To end beams every
+quarter note, for example, you could set
+@code{Voice.beamAutoEnd}
+@cindex Voice.beamAutoEnd@@@code{Voice.beamAutoEnd}
+ equal to `@code{"1/4"}'. To end beams
+at every three eighth notes you would set it to `@code{"3/8"}'. The
+same syntax can be used to specify beam starting points using
+@code{Voice.beamAutoBegin}
+@cindex Voice.beamAutoBegin@@@code{Voice.beamAutoBegin}
+.
+
+To allow different settings for different time signatures, these
+property names can start with `@code{time}@code{_}' to
+restrict the definition to `@code{/}' time. For example,
+to specify beams ending only for 6/8 time you would use the
+property @code{Voice.time6_8beamAutoEnd}. To allow different endings
+for notes of different durations, the duration can be tacked onto the
+end of the property. To specify beam endings for beams that contain
+32nd notes, you would use @code{Voice.beamAutoEnd_32}.
+
+
+
+@cindex chord names
+
+@cindex chords
+
+@cindex printing!chord names
+
+For displaying printed chord names, use the @code{ChordNames}
+@cindex ChordNames@@@code{ChordNames}
+
+and @code{ChordNameVoice}
+@cindex ChordNameVoice@@@code{ChordNameVoice}
+ contexts. The chords may be entered
+either using the notation described above, or directly using
+simultaneous music.
+
+@quotation
+
+@mudela[fragment,verbatim]
+<
+ \context ChordNames {
+ \chords{a b c} \notes{<d f g> <e g b>}
+ }
+ \context Staff \notes {
+ a b c' d' e'
+ }
+>
+
+@end mudela
+@end quotation
+
+LilyPond examines chords specified as lists of notes to determine a
+name to give the chord. By default, LilyPond will not try to
+identify chord inversions:
+
+@mudela[fragment,verbatim,center]
+ <
+ \context ChordNameVoice \notes {
+ <e'1 g' c''>
+ }
+ \context Thread \notes {
+ <e'1 g' c''>
+ }
+ >
+@end mudela
+
+If you want inversions to be recognized, you must set the property
+@code{ChordNames.chordInversion}
+@cindex ChordNames.chordInversion@@@code{ChordNames.chordInversion}
+:
+
+@mudela[fragment,verbatim,center]
+ <
+ \property Score.chordInversion = 1
+ \context ChordNameVoice \notes {
+ <e'1 g' c''>
+ }
+ \context Thread \notes {
+ <e'1 g' c''>
+ }
+ >
+@end mudela
+
+
+
+@cindex lyrics
+
+@cindex printing!lyrics
+
+@node lyricprint, Notation Contexts, autobeam, LilyPond 1-2-0 Reference Manual
+
+Lyric syllables must be interpreted within a @code{Lyrics} context
+
+@cindex context!Lyrics
+ for printing them.
+
+Here is a full example:
+
+@quotation
+
+@mudela[verbatim]
+\score {
+ <
+ \notes \transpose c'' {
+ c d e c | c d e c |
+ e f g2 | e4 f g2 \bar "|.";
+ }
+ \context Lyrics \lyrics {
+ Va-4 der Ja- cob Va- der Ja- cob
+ Slaapt gij nog?2 Slaapt4 gij nog?2
+ }
+ >
+}
+
+@end mudela
+@end quotation
+
+You may want a continuous line after the syllables to show melismata.
+To achieve this effect, add a `@code{__}' lyric as a separate word
+after the lyric to be extended. 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{_}').
+
+@quotation
+
+@mudela[verbatim]
+\score {
+ <
+ \notes \relative c'' {
+ a4 () b () c () d | c () d () b () a | c () d () b () a
+ }
+ \context Lyrics \lyrics {
+ foo1 __ | bar2. __ _4 | baz1 __
+ }
+ >
+}
+
+@end mudela
+@end quotation
+
+
+If you want to have hyphens centered between syllables (rather than
+attached to the end of the first syllable) you can use the special
+`@code{-}@code{-}' lyric as a separate word between syllables. This
+will result in a hyphen which length varies depending on the space
+between syllables, and which will be centered between the syllables.
+For example:
+
+@quotation
+
+@mudela[verbatim]
+\score {
+ <
+ \notes \transpose c'' {
+ c d e c | c d e c |
+ e f g2 | e4 f g2 \bar "|.";
+ }
+ \context Lyrics \lyrics {
+ Va4 -- der Ja -- cob | Va -- der Ja -- cob |
+ Slaapt gij nog?2 | Slaapt4 gij nog?2
+ }
+ >
+}
+
+@end mudela
+@end quotation
+
+
+
+@node Notation Contexts, contextselection, lyricprint, LilyPond 1-2-0 Reference Manual
+@section Notation Contexts
+
+@cindex notation contexts
+
+Notation contexts are objects that only exist during a run of
+LilyPond. During the interpretation phase of LilyPond, the Music
+expression contained in a @code{\score} block is interpreted in time
+order. This is the order in which humans read, play, and write
+music.
+
+A context is an object that holds the reading state of the
+expression; it contains information like
+
+@itemize @bullet
+ @item What notes are playing at this point?
+ @item What symbols will be printed at this point?
+ @item In what style will they printed?
+ @item What is the current key signature, time signature, point within
+ the measure, etc.?
+@end itemize
+
+Contexts are grouped hierarchically: A @code{Voice} context is
+contained in a @code{Staff} context (because a staff can contain
+multiple voices at any point), a @code{Staff} context is contained in
+a @code{Score}, @code{StaffGroup}, or @code{ChoirStaff} context (because
+these can all contain multiple staffs).
+
+Contexts associated with sheet music output are called @emph{notation
+contexts}, those for sound output are called playing contexts.
+
+Contexts are created either manually or automatically. Initially,
+the top level music expression is interpreted by the top level
+context (the @code{Score} context). When a atomic music expression
+(i.e. a note, a rest, @code{\bar}, or @code{\time} commands), a nested
+set of contexts is created that can process these atomic expressions,
+as in this example:
+
+@quotation
+
+ @example
+\score @{ \notes < c4 > @}
+@end example
+
+@end quotation
+
+The sequential music, `@code{@{ c4 @}}' is interpreted by @code{Score}
+context. When the note `@code{c4}' itself is interpreted, a set of
+contexts is needed that will accept notes. The default for this is a
+@code{Voice} context, contained in a @code{Staff} context. Creation of
+these contexts results in the staff being printed.
+
+
+@node contextselection, Notation output definitions, Notation Contexts, LilyPond 1-2-0 Reference Manual
+
+@cindex context
+
+You can also create contexts manually, and you probably have to do so
+if you want to typeset complicated multiple part material. If a
+`@code{\context} ' expression is encountered
+during the interpretation phase, the argument will be
+interpreted with a context of type . If you specify a name,
+the specific context with that name is searched.
+
+If a context of the specified type and name can not be found, a new
+one is created. For example,
+
+@quotation
+
+@mudela[verbatim]
+\score {
+ \notes \relative c'' {
+ c4 <d4 \context Staff = "another" e4> f
+ }
+}
+
+@end mudela
+@end quotation
+
+In this example, the @code{c} and @code{d} are printed on the
+default staff. For the @code{e}, a context Staff called
+`@code{another}' is specified; since that does not exist, a new
+context is created. Within @code{another}, a (default) Voice context
+is created for the @code{e4}. When all music referring to a
+context is finished, the context is ended as well. So after the
+third quarter, @code{another} is removed.
+
+Almost all music expressions inherit their interpretation context
+from their parent. In other words, suppose that the syntax for a
+music expression is
+
+@quotation
+
+ @code{\keyword} ...
+@end quotation
+
+When the interpretation of this music expression starts, the context
+for , , etc. is that of the total
+expression.
+
+Lastly, you may wonder, why this:
+
+@quotation
+
+@example
+\score @{
+ \notes \relative c'' @{
+ c4 d4 e4
+ @}
+@}
+@end example
+
+@end quotation
+
+doesn't result in this:
+
+@mudela[]
+
+ \score {
+ \notes \relative c'' {
+ <c4> <d4> <e4>
+ }
+ }
+
+@end mudela
+
+For the @code{c4}, a default @code{Staff} (with a contained
+@code{Voice}) context is created. After the @code{c4} ends, no
+music refers to this default staff, so it would be ended, with the
+result shown. To prevent this inconvenient behavior, the context to
+which the sequential music refers is adjusted during the
+interpretation. So after the @code{c4} ends, the context of the
+sequential music is also the default @code{Voice} context.
+The @code{d4} gets interpreted in the same context
+as @code{c4}.
+
+
+
+These are the contexts supplied with the package. They are defined
+in the initialization file @file{ly/engraver.ly}.
+
+@table @samp
+ @item @code{Grace}
+@cindex Grace@@@code{Grace}
+ @*
+ The context for handling grace notes. It is instantiated
+ automatically when you use @code{\grace}. Basically, it is an
+ `embedded' miniature of the Score context. Since this context
+ needs special interaction with the rest of LilyPond, you should
+ not explicitly instantiate it.
+
+ @item @code{LyricVoice}
+@cindex LyricVoice@@@code{LyricVoice}
+ @*
+ Corresponds to a voice with lyrics. Handles the printing of a
+ single line of lyrics.
+
+ @item @code{Thread}
+@cindex Thread@@@code{Thread}
+ @*
+ Handles note heads, and is contained in the Voice context. You
+ have to instantiate this explicitly if you want to adjust the
+ style of individual note heads.
+
+ @item @code{Voice}
+@cindex Voice@@@code{Voice}
+ @*
+ Corresponds to a voice on a staff. This context handles the
+ conversion of dynamic signs, stems, beams, super- and subscripts,
+ slurs, ties, and rests.
+
+ You have to instantiate this explicitly if you want to have
+ multiple voices on the same staff.
+
+ @item @code{ChordNamesVoice}
+@cindex ChordNamesVoice@@@code{ChordNamesVoice}
+ @*
+ A voice with chord names. Handles printing of a line of chord
+ names.
+
+ @item @code{ChordNames}
+@cindex ChordNames@@@code{ChordNames}
+ @*
+ Typesets chord names. Can contain @code{ChordNamesVoice}
+ contexts.
+
+ @item @code{Lyrics}
+@cindex Lyrics@@@code{Lyrics}
+ @*
+ Typesets lyrics. It can contain @code{LyricVoice} contexts.
+
+ @item @code{Staff}
+@cindex Staff@@@code{Staff}
+ @*
+ Handles clefs, bar lines, keys, accidentals. It can contain
+ @code{Voice} contexts.
+
+ @item @code{RhythmicStaff}
+@cindex RhythmicStaff@@@code{RhythmicStaff}
+ @*
+ A context like @code{Staff} but for printing rhythms. Pitches are
+ ignored; the notes are printed on one line. It can contain
+ @code{Voice} contexts.
+
+ @item @code{GrandStaff}
+@cindex GrandStaff@@@code{GrandStaff}
+ @*
+ Contains @code{Staff} or @code{RhythmicStaff} contexts. It adds a
+ brace on the left side, grouping the staffs together. The bar
+ lines of the contained staffs are connected vertically. It can
+ contain @code{Staff} contexts.
+
+ @item @code{PianoStaff}
+@cindex PianoStaff@@@code{PianoStaff}
+ @*
+ Just like @code{GrandStaff} but with @code{minVerticalAlign} set
+ equal to @code{maxVerticalAlign} so that interstaff beaming and
+ slurring can be used.
+
+ @item @code{StaffGroup}
+@cindex StaffGroup@@@code{StaffGroup}
+ @*
+ Contains @code{Staff} or @code{RhythmicStaff} contexts. Adds a
+ bracket on the left side, grouping the staffs together. The bar
+ lines of the contained staffs are connected vertically. It can
+ contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
+ @code{Lyrics} contexts.
+
+ @item @code{ChoirStaff}
+@cindex ChoirStaff@@@code{ChoirStaff}
+ @*
+ Identical to @code{StaffGroup} except that the contained staffs
+ are not connected vertically.
+
+ @item @code{Score}
+@cindex Score@@@code{Score}
+ @*
+ This is the top level notation context. No other context can
+ contain a @code{Score} context. This context handles the
+ administration of time signatures. It also makes sure that items
+ such as clefs, time signatures, and key-signatures are aligned
+ across staffs. It can contain @code{Lyrics}, @code{Staff},
+ @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
+ @code{ChoirStaff} contexts.
+
+ You cannot explicitly instantiate a Score context (since it is
+ not contained in any other context). It is instantiated
+ automatically when an output definition (a @code{\score} or
+ @code{\paper} block) is processed.
+@end table
+
+
+
+Properties that are set in one context are inherited by all of the
+contained contexts. This means that a property valid for the
+@code{Voice} context can be set in the @code{Score} context (for
+example) and thus take effect in all @code{Voice} contexts.
+
+Properties can be preset within the @code{\translator} block
+corresponding to the appropriate context. In this case, the syntax
+is
+
+@quotation
+
+ @code{=}
+@end quotation
+
+This assignment happens before interpretation starts, so a
+@code{\property} expression will override any predefined settings.
+
+The @code{\property} expression will create any property you specify.
+There is no guarantee that a property will be used. So if you spell
+a property name wrong, there will be no error message.
+
+The property settings are used during the interpretation phase. They
+are read by the LilyPond modules where interpretation contexts are
+built of. These modules are called @emph{translators}. Translators for
+notation are called @emph{engravers}, and translators for sound are
+called @emph{performers}.
+
+The precise result of a property is determined by the implementation
+of the translator that reads them. Therefore, the result of a
+property can vary, since it is implementation and configuration
+dependent.
+
+In order to fully find out what properties are used, you must
+currently search the source code for calls to @code{get_property}.
+The rest of the section is devoted to an (incomplete) overview of
+available properties.
+
+
+@cindex properties!Lyrics
+
+@table @samp
+ @item @code{textStyle}
+@cindex textStyle@@@code{textStyle}
+ @*
+ Set the font for lyrics. The available font choices are
+ @code{roman}, @code{italic}, @code{bold}, @code{large}, @code{Large},
+ @code{typewriter}, and @code{finger}. The @code{finger} font can
+ only display numbers. Note also that you must be careful when
+ using @code{\property} in Lyrics mode, because of the way strings
+ are parsed. Either put quotes around the arguments to
+ @code{\property} or be sure to leave a space on both sides of the
+ dot.
+@end table
+
+
+@cindex properties!Thread
+
+@table @samp
+ @item @code{noteheadStyle}
+@cindex noteheadStyle@@@code{noteheadStyle}
+ @*
+ Selects type of note head. Choices are @code{cross},
+ @code{diamond}, @code{harmonic}, @code{transparent}, and @code{""}.
+ They are shown in that order below.
+
+ @mudela[center]
+
+ \score {
+ \notes {
+ \property Staff.barNonAuto = 1
+ \property Voice.noteHeadStyle = cross
+ a'
+ \property Voice.noteHeadStyle = diamond
+ a'
+ \property Voice.noteHeadStyle = harmonic
+ a'
+ \property Voice.noteHeadStyle = transparent
+ a'
+ \property Voice.noteHeadStyle = ""
+ a'
+ }
+ \paper {
+ linewidth = -1.;
+ }
+ }
+
+@end mudela
+@end table
+
+@subsubheading Grace properties
+
+@cindex properties!Grace
+
+
+@table @samp
+ @item @code{stemStyle}
+@cindex stemStyle@@@code{stemStyle}
+ @*
+ By default set to @code{"grace"} meaning that all unbeamed
+ notes with flags are typeset with a slash through the flag.
+ Setting to @code{""} gives standard flags.
+@end table
+
+
+@cindex properties!Voice
+
+@table @samp
+ @item @code{abbrev}
+@cindex abbrev@@@code{abbrev}
+ @*
+ Set length for tremolo to be used if no length is explicitly
+ specified.
+
+ @item @code{articulationScriptPadding}
+@cindex articulationScriptPadding@@@code{articulationScriptPadding}
+
+ @*
+ Determines the extra space added between articulation marks, such
+ as staccato, tenuto, trill, up/down bow or fermata, and the
+ closest staff line or note.
+
+ @item @code{articulationScriptVerticalDirection}
+
+@cindex articulationScriptVerticalDirection@@@code{articulationScriptVerticalDirection}
+ @*
+ Determines the location of articulation marks. Set to @code{\up}
+ to print marks above the staff; set to @code{\down} to print marks
+ below the staff. This property does not override explicit
+ directions marked with `@code{^}' or `@code{_}' in the mudela file.
+
+ @item @code{noAutoBeaming}
+@cindex beamAuto@@@code{beamAuto}
+ @*
+ If set to 1 then beams are not generated automatically.
+
+ @item @code{beamAutoEnd}
+@cindex beamAutoEnd@@@code{beamAutoEnd}
+ @*
+ Specifies when automatically generated beams can end. See
+ section @xref{autobeam}.
+
+ @item @code{beamAutoBegin}
+@cindex beamAutoBegin@@@code{beamAutoBegin}
+ @*
+ Specifies when automatically generated beams can start. See
+ section @xref{autobeam}.
+
+ @item @code{beamquantisation}
+@cindex beamquantisation@@@code{beamquantisation}
+ @*
+ Set to @code{\none} for no quantization. Set to @code{\normal} to
+ quantize position and slope. Set to @code{\traditional} to avoid
+ wedges. These three settings are available via
+ @code{\beamposfree}
+@cindex beamposfree@@@code{\beamposfree}
+,
+ @code{\beamposnormal}
+@cindex beamposnormal@@@code{\beamposnormal}
+, and
+ @code{\beampostraditional}
+@cindex beampostraditional@@@code{\beampostraditional}
+.
+
+ @item @code{beamslopedamping}
+@cindex beamslopedamping@@@code{beamslopedamping}
+ @*
+ Set to @code{\none} for undamped beams. Set to @code{\normal} for
+ damped beams. Set to @code{\infinity} for beams with zero slope.
+ The identifiers
+ @code{\beamslopeproportional}
+@cindex beamslopeproportional@@@code{\beamslopeproportional}
+,
+ @code{\beamslopedamped}
+@cindex beamslopedamped@@@code{\beamslopedamped}
+, and
+ @code{\beamslopezero}
+@cindex beamslopezero@@@code{\beamslopezero}
+ each set the
+ corresponding value.
+
+ @item @code{dynamicDirection}
+@cindex dynamicDirection@@@code{dynamicDirection}
+ @*
+ Determines location of dynamic marks. Set to @code{\up} to print
+ marks above the staff; set to @code{\down} to print marks below
+ the staff.
+
+ @item @code{dynamicStyle}
+@cindex dynamicStyle@@@code{dynamicStyle}
+ @*
+ Set the text style for dynamics.
+
+ @item @code{fontSize}
+@cindex fontSize@@@code{fontSize}
+ @*
+ Can be used to select smaller font sizes for music. The normal
+ font size is 0, and the two smaller sizes are -1
+ and -2.
+
+ @item @code{forceHorizontalShift}
+@cindex forceHorizontalShift@@@code{forceHorizontalShift}
+ @*
+ Force horizontal shift for collision resolution. It overrides
+ automatic collision resolution. The value is the shift amount
+ expressed in @code{note_width}, as set in the paper section.
+
+
+ @item @code{horizontalNoteShift}
+@cindex horizontalNoteShift@@@code{horizontalNoteShift}
+ @*
+ Enable LilyPond to shift notes horizontally if they collide with
+ other notes. This is useful when typesetting many voices on one
+ staff. The identifier @code{\shift}
+@cindex shift@@@code{\shift}
+ is defined to
+ enable this. Traditionally, the outer chords (the upmost and
+ downmost voices), should have no @code{horizontalNoteShift}.
+
+ @item @code{markScriptPadding}
+@cindex markScriptPadding@@@code{markScriptPadding}
+ @*
+ Determines the extra space added between the mark and the closest
+ staff line or note.
+
+ @item @code{markDirection}
+@cindex markDirection@@@code{markDirection}
+ @*
+ Determines if marks should be printed above or below the staff.
+ Set to @code{\up} to print marks above the staff; set to
+ @code{\down} to print marks below the staff.
+
+ @item @code{midiInstrument}
+@cindex midiInstrument@@@code{midiInstrument}
+ @*
+ Sets the instrument for MIDI output. If this property is not set
+ then LilyPond will use the @code{instrument} property. This must
+ be set to one of the strings on the list of MIDI instruments that
+ appears in section @xref{midilist}. If you use a string which
+ is not listed, LilyPond will silently substitute piano.
+
+ @item @code{oldTieBehavior}
+@cindex oldTieBehavior@@@code{oldTieBehavior}
+ @*
+ Set to 1 in order to get old tie behavior where ties would
+ connect unequal pitches. This property is deprecated, and its
+ use is not recommended.
+
+ @item @code{restStyle}
+@cindex restStyle@@@code{restStyle}
+ @*
+ Change the layout of rests shorter than quarter notes.
+ Currently, the standard layout @code{""} and mensural notation
+ @code{"mensural"} are available. Mensural rests of duration
+ 32 or shorter are not available.
+
+ @item @code{scriptHorizontal}
+@cindex scriptHorizontal@@@code{scriptHorizontal}
+ @*
+ Put scripts left or right of note heads. Support for this is
+ limited. Accidentals will collide with scripts.
+
+ @item @code{slurVerticalDirection}
+@cindex slurVerticalDirection@@@code{slurVerticalDirection}
+ @*
+ Set to @code{\free} for free choice of slur direction, set to
+ @code{\up} to force slurs up, set to @code{\down} to force slurs
+ down. The shorthands @code{\slurup}
+@cindex slurup@@@code{\slurup}
+,
+ @code{\slurdown}
+@cindex slurdown@@@code{\slurdown}
+, and
+ @code{\slurboth}
+@cindex slurboth@@@code{\slurboth}
+ are available.
+
+ @item @code{slurDash}
+@cindex slurDash@@@code{slurDash}
+ @*
+ Set to 0 for normal slurs, 1 for dotted slurs, and a
+ larger value for dashed slurs. Identifiers
+ @code{\slurnormal}
+@cindex slurnormal@@@code{\slurnormal}
+ and
+ @code{\slurdotted}
+@cindex slurdotted@@@code{\slurdotted}
+ are predefined to set the
+ first two settings.
+
+@item @code{stemLength}
+@cindex stemLength@@@code{stemLength}
+ @*
+ Set length of stems. Unit is `@code{interline}/2', so
+ @code{stemLength} defaults to 7.
+
+ @item @code{stemLeftBeamCount}
+@cindex stemLeftBeamCount@@@code{stemLeftBeamCount}
+ @*
+ Specify the number of beams to draw on the left side of the next
+ note. Overrides automatic beaming. The value is only used once,
+ and then it is erased.
+
+ @item @code{stemRightBeamCount}
+@cindex stemRightBeamCount@@@code{stemRightBeamCount}
+ @*
+ Specify the number of beams to draw on the right side of the next
+ note. Overrides automatic beaming. The value is only used once,
+ and then it is erased.
+ @item @code{tieVerticalDirection}
+@cindex tieVerticalDirection@@@code{tieVerticalDirection}
+ @*
+ Set to @code{\free} for free choice of tie direction, set to
+ @code{\up} to force ties up, set to @code{\down} to force ties
+ down.
+
+ @item @code{transposing}
+@cindex transposing@@@code{transposing}
+ @*
+ Transpose the MIDI output. Set this property to the number of
+ half-steps to transpose by.
+
+
+ @item @code{textEmptyDimension}
+@cindex textEmptyDimension@@@code{textEmptyDimension}
+ @*
+ If set to 1 then text placed above or below the staff is
+ assumed to have zero width.
+
+ @item @code{textStyle}
+@cindex textStyle@@@code{textStyle}
+ @*
+ Set the text style for superscripts and subscripts. See above
+ for list of text styles.
+
+ @item @code{textScriptPadding}
+@cindex textScriptPadding@@@code{textScriptPadding}
+ @*
+ Determines the extra space added between superscripted resp.
+ subscripted text and the closest staff line or note.
+
+ @item @code{verticalDirection}
+@cindex verticalDirection@@@code{verticalDirection}
+ @*
+ Determines the direction of stems, subscripts, beams, slurs, and
+ ties. Set to @code{\down} to force them down, @code{\up} to force
+ them up, or @code{\free} to let LilyPond decide. This can be used
+ to distinguish between voices on the same staff. The
+ @code{\stemdown}
+@cindex stemdown@@@code{\stemdown}
+, @code{\stemup}
+@cindex stemup@@@code{\stemup}
+,
+ and @code{\stemboth}
+@cindex stemboth@@@code{\stemboth}
+ identifiers set this
+ property.
+
+
+ @item @code{tupletDirection}
+@cindex tupletDirection@@@code{tupletDirection}
+ @*
+ Determines the direction of triplets and other tuplets. Set to
+ @code{\down} to force them below the staff, @code{\up} to force
+ them above, or @code{\free} to let LilyPond decide.
+
+ @item @code{tupletVisibility}
+@cindex tupletVisibility@@@code{tupletVisibility}
+ @*
+ Determines whether tuplets of notes are labelled. Setting
+ to 0 shows nothing; setting to 1 shows a number;
+ setting to 2 shows a number and a bracket if there is no
+ beam; setting to 3 shows a number, and if there is no beam
+ it adds a bracket; setting to 4 shows both a number and a
+ bracket unconditionally.
+
+@end table
+
+@subsubheading Staff properties
+
+@cindex properties!Staff
+
+@table @samp
+
+ @item @code{barNonAuto}
+@cindex barNonAuto@@@code{barNonAuto}
+ @*
+ If set to 1 then bar lines will not be printed
+ automatically; they must be explicitly created with @code{\bar}
+ keywords. Unlike with the @code{\cadenza} keyword, measures are
+ still counted. Bar generation will resume according to that
+ count if this property is set to zero.
+
+ @item @code{barNumberDirection}
+@cindex barNumberDirection@@@code{barNumberDirection}
+ @*
+ Set to @code{\up} or @code{\down} to put bar numbers above or below
+ the staff.
+
+ @item @code{barNumberHangOnClef}
+@cindex barNumberHangOnClef@@@code{barNumberHangOnClef}
+ @*
+ Set to 1 to cause bar numbers to appear above or below the
+ clef instead of on the bar line. This property is deprecated.
+ Do not use.
+
+ @item @code{barNumberScriptPadding}
+@cindex barNumberScriptPadding@@@code{barNumberScriptPadding}
+ @*
+ Sets extra space between the bar number and the bar it labels.
+
+ @item @code{barSize}
+@cindex barSize@@@code{barSize}
+ @*
+ Specify the height of the bar lines if it should be different
+ than the staff height.
+
+ @item @code{barAtLineStart}
+@cindex barAtLineStart@@@code{barAtLineStart}
+ @*
+ Set to 1 to produce a bar line after the clef at the start
+ of each line (but not at the beginning of the music).
+
+ @item @code{clefStyle}
+@cindex clefStyle@@@code{clefStyle}
+ @*
+ Determines how clefs are typeset. If set to @code{transparent},
+ the clefs are not printed at all, if set to
+ @code{fullSizeChanges}, clef changes in the middle of a line are
+ typeset with a full size clef. By default, clef changes are
+ typeset in smaller size.
+
+ @item @code{createKeyOnClefChange}
+@cindex createKeyOnClefChange@@@code{createKeyOnClefChange}
+ @*
+ Set to a nonempty string if you want key signatures to be printed
+ when the clef changes. Set to the empty string if you do not
+ want key signatures printed.
+
+ @item @code{createInitdefaultClef}
+@cindex createInitdefaultClef@@@code{createInitdefaultClef}
+ @*
+ Specify whether clefs are created on default? (Doesn't seem to
+ do anything.)
+
+ @item @code{defaultClef}
+@cindex defaultClef@@@code{defaultClef}
+ @*
+ Determines the default clef. See @code{\clef} keyword.
+
+ @item @code{markHangOnClef}
+@cindex markHangOnClef@@@code{markHangOnClef}
+ @*
+ Set to 1 to cause marks to appear by clefs instead of by bar
+ lines. Deprecated, use is not recommended.
+
+ @item @code{marginDirection}
+@cindex marginDirection@@@code{marginDirection}
+ @*
+ Set to @code{\left} or @code{\right} to specify location of
+ marginal scripts.
+
+ @item @code{marginScriptPadding}
+@cindex marginScriptPadding@@@code{marginScriptPadding}
+ @*
+ Specify extra space for marginal scripts.
+
+ @item @code{forgetAccidentals}
+@cindex forgetAccidentals@@@code{forgetAccidentals}
+ @*
+ Causes accidentals to be printed at every note instead of
+ remembered for the duration of a measure.
+
+ @item @code{noResetKey}
+@cindex noResetKey@@@code{noResetKey}
+ @*
+ Do not reset the key at the start of a measure. Accidentals will
+ be printed only once and are in effect until overridden, possibly
+ many measures later.
+
+ @item @code{staffLineLeading}
+@cindex staffLineLeading@@@code{staffLineLeading}
+ @*
+ Specifies the distance (in points) between lines of the staff.
+
+ @item @code{numberOfStaffLines}
+@cindex numberOfStaffLines@@@code{numberOfStaffLines}
+ @*
+ Specifies the number of staff lines. The default is 5.
+
+ @item @code{postBreakPadding}
+@cindex postBreakPadding@@@code{postBreakPadding}
+ @*
+ Extra space in points to be added after the clef, time signature
+ and key signature on the staff. Deprecated, do not use.
+
+ @item @code{noVoltaBraces}
+@cindex noVoltaBraces@@@code{noVoltaBraces}
+ @*
+ Set to true to suppress the printing of brackets over alternate
+ endings specified by the command @code{\alternative}.
+
+ @item @code{numberOfStaffLines}
+@cindex numberOfStaffLines@@@code{numberOfStaffLines}
+ @*
+ Sets the number of lines that the staff has.
+
+ @item @code{barAlways}
+@cindex barAlways@@@code{barAlways}
+ @*
+ If set to 1 a bar line is drawn after each note.
+
+ @item @code{defaultBarType}
+@cindex defaultBarType@@@code{defaultBarType}
+ @*
+ Sets the default type of bar line. See Section @xref{barlines}
+ for a list of available bar types.
+
+ @item @code{instrument}, @code{instr}
+
+@cindex instrument@@@code{instrument}
+
+@cindex instr@@@code{instr}
+ @*
+ If @code{Staff_margin_engraver}
+@cindex Staff_margin_engraver
+ is
+ added to the Staff translator, then the @code{instrument} property
+ is used to label the first line of the staff and the @code{instr}
+ property is used to label subsequent lines. If the
+ @code{midiInstrument} property is not set, then @code{instrument}
+ is used to determine the instrument for MIDI output.
+
+ @item @code{keyOctaviation}
+@cindex keyOctaviation@@@code{keyOctaviation}
+ @*
+ If set to 1, then keys are the same in all octaves. If set
+ to 0 then the key signature for different octaves can be
+ different and is specified independently:
+
+ @quotation
+
+ @code{\keysignature bes fis'}
+ @end quotation
+
+ The default value is 1. Can be set to zero with
+ @code{\specialkey} or reset to 1 with @code{\normalkey}.
+
+ @item @code{timeSignatureStyle}
+@cindex timeSignatureStyle@@@code{timeSignatureStyle}
+ @*
+ Changes the default two-digit layout for time signatures. The
+ following values are recognized:
+
+ @table @samp
+ @item @code{C}
+@cindex C@@@code{C}
+ @*
+ 4/4 and 2/2 are typeset as C and struck C, respectively. All
+ other time signatures are written with two digits.
+
+ @item @code{old}
+@cindex old@@@code{old}
+ @*
+ 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are
+ typeset with old-style mensuration marks. All other time
+ signatures are written with two digits.
+
+ @item @code{1}
+@cindex 1@@@code{1}
+ @*
+ All time signatures are typeset with a single
+ digit, e.g. 3/2 is written as 3.
+
+ @item
+@cindex CM/N@@@code{CM/N}
+@code{C}@code{/},
+
+@cindex oldM/N@@@code{oldM/N}
+@code{old}@code{/} or
+ @code{old6/8alt}
+@cindex old6/8alt@@@code{old6/8alt}
+ @*
+ Tells LilyPond to use a specific symbol as time signature.
+ @end table
+
+ The different time signature characters are shown below with its
+ names:
+
+ @mudela[center]
+
+ \score {
+ \notes\relative c'' {
+ \property Voice.textStyle = typewriter
+ \property Staff.timeSignatureStyle = "C2/2"
+ \time 2/2; a2^"C2/2" a2
+ \property Staff.timeSignatureStyle = "C4/4"
+ \time 2/2; a2^"C4/4" a2
+ \property Staff.timeSignatureStyle = "old2/2"
+ \time 2/2; a2^"old2/2" a2
+ \property Staff.timeSignatureStyle = "old3/2"
+ \time 2/2; a2^"old3/2" a2
+ \property Staff.timeSignatureStyle = "old2/4"
+ \time 2/2; a2^"old2/4" a2
+ \property Staff.timeSignatureStyle = "old4/4"
+ \time 2/2; a2^"old4/4" a2
+ \property Staff.timeSignatureStyle = "old6/4"
+ \time 2/2; a2^"old6/4" a2
+ \property Staff.timeSignatureStyle = "old9/4"
+ \time 2/2; a2^"old9/4" a2
+ \property Staff.timeSignatureStyle = "old4/8"
+ \time 2/2; a2^"old4/8" a2
+ \property Staff.timeSignatureStyle = "old6/8"
+ \time 2/2; a2^"old6/8" a2
+ \property Staff.timeSignatureStyle = "old6/8alt"
+ \time 2/2; a2^"old6/8alt" a2
+ \property Staff.timeSignatureStyle = "old9/8"
+ \time 2/2; a2^"old9/8" a2
+ }
+ \paper {
+ linewidth = 4.5 \in;
+ }
+ }
+
+@end mudela
+
+ @item @code{voltaSpannerDuration}
+@cindex voltaSpannerDuration@@@code{voltaSpannerDuration}
+ @*
+ Set to an integer to control the size of the brackets printed by
+ @code{\alternative}. The integer specifies the number of whole
+ notes duration to use for the brackets. It is rounded to the
+ nearest measure. This can be used to shrink the length of
+ brackets in the situation where one alternative is very large.
+ It may have odd effects if the specified duration is longer than
+ the music given in an @code{\alternative}.
+@end table
+
+
+@cindex properties!GrandStaff
+
+@table @samp
+ @item @code{alignmentReference}
+@cindex alignmentReference@@@code{alignmentReference}
+ @*
+ Set to @code{\center} for vertical alignment reference point to be
+ in the center of the vertical group. Set to @code{\up} to put the
+ reference point at the top of the group.
+
+ @item @code{maxVerticalAlign}
+@cindex maxVerticalAlign@@@code{maxVerticalAlign}
+ @*
+ Set the maximum vertical distance between staffs.
+
+ @item @code{minVerticalAlign}
+@cindex minVerticalAlign@@@code{minVerticalAlign}
+ @*
+ Set the minimum vertical distance between staffs.
+@end table
+
+
+@cindex properties!Score
+
+@table @samp
+ @item @code{skipBars}
+@cindex skipBars@@@code{skipBars}
+ @*
+ Set to 1 to skip the empty bars that are produced by
+ multimeasure notes and rests. These bars will not appear on the
+ printed output. Set to zero (the default) to expand multimeasure
+ notes and rests into their full length, printing the appropriate
+ number of empty bars so that synchronization with other voices is
+ preserved.
+
+ @quotation
+
+@mudela[fragment,verbatim,center]
+r1 r1*3 R1*3\property Score.skipBars=1 r1*3 R1*3
+
+@end mudela
+ @end quotation
+
+@end table
+
+
+@cindex properties!ChordNamesVoice
+
+@table @samp
+ @item @code{chordInversion}
+@cindex chordInversion@@@code{chordInversion}
+ @*
+ Determines whether LilyPond should look for chord inversions when
+ translating from notes to chord names. Set to 1 to find
+ inversions. The default is 0 which does not look for
+ inversions.
+@end table
+
+
+
+@node Notation output definitions, output, contextselection, LilyPond 1-2-0 Reference Manual
+@section Notation output definitions
+
+@cindex output
+
+@cindex notation output
+
+@cindex output definition
+
+@node output, paper, Notation output definitions, LilyPond 1-2-0 Reference Manual
+
+@node paper, papervars, output, LilyPond 1-2-0 Reference Manual
+
+The most important output definition is the @code{\paper} block, for
+music notation. The syntax is
+
+@quotation
+
+ @code{\paper @{} [] @code{@}}
+@end quotation
+
+where each of the items is one of
+
+@itemize @bullet
+ @item An assignment. The assignment must be terminated by a
+ semicolon. See section @xref{papervars} for information on
+ paper variables.
+
+ @item A context definition. See section @xref{contextdefs} for
+ more information on context definitions.
+
+ @item A margin shape declaration. The syntax is
+
+ @quotation
+
+ @code{\shape} @code{,} @code{,}
+ @code{,} ... @code{;}
+ @end quotation
+
+
+@cindex shape@@@code{\shape}
+
+ Each pair of and values is a dimension
+ specifying how far to indent and how wide to make the line.
+ The indentation and width of successive lines are specified by
+ the successive pairs of dimensions. The last pair of
+ dimensions will define the characeristics of all lines beyond
+ those explicitly specified.
+
+ @item A font declaration. Its syntax is
+
+ @quotation
+
+ @code{=} @code{\font}
+@cindex font@@@code{\font}
+
+ @end quotation
+
+ is an integer describing the font to be used.
+ 0 is the default font. is the basename of
+ a font (usually a member of the Feta family).
+@end itemize
+
+
+
+@cindex changing font size and paper size
+
+The Feta font provides musical symbols at six different sizes. These
+fonts are 11 point, 13 point, 16 point, 20 point,
+23 point, and 26 point. The point size of a font is the
+height of the five lines in a staff when displayed in the font.
+
+Definitions for these sizes are the files @file{paperSZ.ly}, where
+@code{SZ} is one of 11, 13, 16, 20, 23 and 26. If you include
+any of these files, the identifiers @code{paper_eleven},
+@code{paper_thirteen}, @code{paper_sixteen}, @code{paper_twenty},
+@code{paper_twentythree}, and @code{paper_twentysix} are defined
+respectively. The default @code{\paper} block is also set.
+
+To change the paper size, you must first set the
+@code{papersize}
+@cindex papersize@@@code{papersize}
+ variable at top level. Set it to the strings
+@code{a4}, @code{letter}, or @code{legal}. After this specification,
+you must set the font as described above. If you want the default
+font, then use the 20 point font. The new paper size will not
+take effect if the font is not loaded and selected afterwards. Paper
+size selection works by loading a file named after the paper size you
+select.
+
+
+
+@cindex paper variables
+
+@node papervars, contextdefs, paper, LilyPond 1-2-0 Reference Manual
+
+There is a large number of paper variables that are used to control
+details of the layout. These variables control the defaults for the
+entire score. Usually, they do not have to be changed; they are by
+default set to values that depend on the font size in use. The
+values are used by the graphic objects while formatting the score;
+they are therefore implementation dependent. Most variables are
+accompanied by documentation in the initalization file
+@file{params.ly} or @file{paperSZ.ly}, where @code{SZ} is the staff
+height in points.
+
+Nevertheless, here are some variables you may want to use or change:
+
+@table @samp
+ @item @code{indent}
+@cindex indent@@@code{indent}
+ @*
+ The indentation of the first line of music.
+
+ @item @code{interline}
+@cindex interline@@@code{interline}
+ @*
+ The distance between two staff lines, calculated from the center
+ of the lines. You should use either this or @code{rulethickness}
+ as a unit for distances you modify.
+
+ @item @code{linewidth}
+@cindex linewidth@@@code{linewidth}
+ @*
+ Sets the width of the lines. If set to -1.0, a single
+ unjustified line is produced.
+
+ @item @code{output}
+@cindex output@@@code{output}
+ @*
+ Specifies an alternate name for the the output @file{s}.
+ A @file{.tex}, @file{.midi} or @file{.ps} extension will be
+ added to the string you specify.
+
+ @item @code{rulethickness}
+@cindex rulethickness@@@code{rulethickness}
+ @*
+ Determines the thickness of staff and bar lines.
+
+ @item @code{castingalgorithm}
+@cindex castingalgorithm@@@code{castingalgorithm}
+ @*
+ The algorithm to use for breaking lines. Choices are
+ @code{\Gourlay}
+@cindex Gourlay@@@code{\Gourlay}
+ for a TeX-like dynamic
+ programming algorithm, and @code{\Wordwrap}
+@cindex Wordwrap@@@code{\Wordwrap}
+ for
+ a simple algorithm. Gourlay breaking looks much better, but
+ takes a lot more resources. Wordwrap leaves loosely spaced lines
+ at the end.
+@end table
+
+
+@node contextdefs, engravers, papervars, LilyPond 1-2-0 Reference Manual
+
+@cindex context definition
+
+A notation contexts is defined by the following information
+
+@enumerate i
+ @item A name.
+
+ @item The LilyPond modules that do the actual conversion of music to
+ notation. Each module is a so-called
+ @emph{engraver}
+@cindex engraver
+.
+
+ @item How these modules should cooperate, i.e. which ``cooperation
+ module'' should be used. This cooperation module is a special
+ type of engraver.
+
+ @item What other contexts the context can contain,
+
+ @item What properties are defined.
+@end enumerate
+
+A context definition has this syntax:
+
+@quotation
+
+ @code{\translator} @code{@{}
+
+ @code{@}}
+@end quotation
+
+ can be an identifier or of the form
+
+@quotation
+
+ @code{\type} @code{;}
+@end quotation
+
+ is one of
+
+@table @samp
+ @item @code{Engraver_group_engraver}
+@cindex Engraver_group_engraver@@@code{Engraver_group_engraver}
+ @*
+ The standard cooperation engraver.
+
+ @item @code{Score_engraver}
+@cindex Score_engraver@@@code{Score_engraver}
+ @*
+ This is cooperation module that should be in the top level context.
+
+ @item @code{Grace_engraver_group}
+@cindex Grace_engraver_group@@@code{Grace_engraver_group}
+ @*
+ This is a special cooperation module (resembling
+ @code{Score_engraver}) that is used to created an embedded
+ `miniscore'.
+@end table
+
+ is a list of items where each item is
+one of
+
+@itemize @bullet
+ @item @code{\consists} @code{;} @*
+ Add to the list of modules in this context.
+ Section @xref{engravers} contains an overview of the engravers
+ available. The order of engravers added with @code{\consists} is
+ significant.
+
+ @item @code{\consistsend} @code{;} @*
+ Analogous to @code{\consists}, but makes sure that
+ is always added to the end of the list of
+ engravers.
+
+ Some engraver types need to be at the end of the list; this
+ insures they are put there, and stay there, if a user adds or
+ removes engravers. This command is usually not needed for
+ end-users.
+
+ @item @code{\accepts} @code{;} @*
+ Add to the list of context this context can
+ contain. The first listed context the context to create by
+ default.
+
+ @item @code{\remove} @code{;} @*
+ Remove a previously added (with @code{\consists}) engraver.
+
+ @item @code{\name} @code{;} @*
+ This sets name of the context, e.g. @code{Staff}, @code{Voice}. If
+ the name is not specified, the translator won't do anything.
+
+ @item @code{=} @code{;} @*
+ A property assignment. It is allowed to use reals for
+ .
+@end itemize
+
+In the @code{\paper} block, it is also possible to define translator
+identifiers. Like other block identifiers, the identifier can only
+be used as the very first item of a translator. In order to define
+such an identifier outside of @code{\score}, you must do
+
+@quotation
+
+@example
+\paper @{
+ foo = \translator @{ ... @}
+@}
+\score @{
+ \notes @{
+ ...
+ @}
+ \paper @{
+ \translator @{ \foo ... @}
+ @}
+@}
+@end example
+
+@end quotation
+
+
+@cindex paper types, engravers, and pre-defined translators
+
+Some pre-defined identifiers can simplify modification of
+translators. The pre-defined identifiers are:
+
+@table @samp
+ @item @code{StaffContext}
+@cindex StaffContext@@@code{StaffContext}
+ @*
+ Default Staff context.
+
+ @item @code{RhythmicStaffContext}
+@cindex RhythmicStaffContext@@@code{RhythmicStaffContext}
+ @*
+ Default RhythmicStaff context.
+
+ @item @code{VoiceContext}
+@cindex VoiceContext@@@code{VoiceContext}
+ @*
+ Default Voice context.
+
+ @item @code{ScoreContext}
+@cindex ScoreContext@@@code{ScoreContext}
+ @*
+ Default Score context.
+
+ @item @code{ScoreWithNumbers}
+@cindex ScoreWithNumbers@@@code{ScoreWithNumbers}
+ @*
+ Score context with numbering at the Score level.
+
+ @item @code{BarNumberingStaffContext}
+@cindex BarNumberingStaffContext@@@code{BarNumberingStaffContext}
+ @*
+ Staff context with numbering at the Staff level.
+
+ @item @code{HaraKiriStaffContext}
+@cindex HaraKiriStaffContext@@@code{HaraKiriStaffContext}
+ @*
+ Staff context that does not print if it only contains rests.
+ Useful for orchestral scores.@footnote{Harakiri, also called
+ Seppuku, is the ritual suicide of the Samourai.}
+
+ @item @code{OrchestralPartStaffContext}
+@cindex OrchestralPartStaffContext@@@code{OrchestralPartStaffContext}
+
+ @item @code{OrchestralScoreContext}
+@cindex OrchestralScoreContext@@@code{OrchestralScoreContext}
+
+@end table
+
+Using these pre-defined values, you can remove or add items to the
+translator:
+
+@quotation
+
+@example
+\paper @{
+ \translator @{
+ \StaffContext
+ \remove Some_engraver;
+ \consists Different_engraver;
+ @}
+@}
+@end example
+
+@end quotation
+
+
+
+@node engravers, Sound output, contextdefs, LilyPond 1-2-0 Reference Manual
+
+The engravers for paper output are:
+
+[incomplete, FIXME]
+
+@table @samp
+ @item @code{Bar_engraver}
+@cindex Bar_engraver@@@code{Bar_engraver}
+ @*
+ Engraves bar lines. Normally in @code{Staff} and
+ @code{RhythmicStaff}.
+
+ @item @code{Bar_number_engraver}
+@cindex Bar_number_engraver@@@code{Bar_number_engraver}
+ @*
+ Engrave bar numbers. These numbers appear at the start of each
+ line. Not normally in any translator. Can be added to
+ @code{Score} for score-wide numbering or to @code{Staff} for
+ numbering on each staff.
+
+ @item @code{Beam_engraver}
+@cindex Beam_engraver@@@code{Beam_engraver}
+ @*
+ Handles beam requests by engraving beams. Normally appears in
+ the @code{Voice} translator. If omitted, then notes will be
+ printed with flags instead of beams.
+
+ @item @code{Beam_req_swallow_translator}
+
+@cindex Beam_req_swallow_translator@@@code{Beam_req_swallow_translator}
+ @*
+ Swallows beam requests. In @code{LyricVoice}.
+
+ @item @code{Chord_name_engraver}
+@cindex Chord_name_engraver@@@code{Chord_name_engraver}
+ @*
+ Engraves chord names. Normally in @code{ChordNameVoice} .
+
+ @item @code{Chord_tremolo_engraver}
+@cindex Chord_tremolo_engraver@@@code{Chord_tremolo_engraver}
+
+ @item @code{Clef_engraver}
+@cindex Clef_engraver@@@code{Clef_engraver}
+ @*
+ Engraves the clef symbol. Normally in @code{Staff}.
+
+ @item @code{Collision_engraver}
+@cindex Collision_engraver@@@code{Collision_engraver}
+
+ @item @code{Dot_column_engraver}
+@cindex Dot_column_engraver@@@code{Dot_column_engraver}
+ @*
+ Engraves dots on dotted notes shifted to the right of the note.
+ Normally in @code{Voice}. If omitted, then dots appear on top of
+ the notes.
+
+ @item @code{Dynamic_engraver}
+@cindex Dynamic_engraver@@@code{Dynamic_engraver}
+ @*
+ Engraves dynamics symbols. Normally in @code{Voice}.
+
+ @item @code{Font_size_engraver}
+@cindex Font_size_engraver@@@code{Font_size_engraver}
+
+ @item @code{Key_engraver}
+@cindex Key_engraver@@@code{Key_engraver}
+ @*
+ Engraves the key signature. Normally in @code{Staff}.
+
+ @item @code{Local_key_engraver}
+@cindex Local_key_engraver@@@code{Local_key_engraver}
+
+ @item @code{Lyric_engraver}
+@cindex Lyric_engraver@@@code{Lyric_engraver}
+ @*
+ Engraves lyrics. Normally in @code{LyricVoice}.
+
+ @item @code{Multi_measure_rest_engraver}
+
+@cindex Multi_measure_rest_engraver@@@code{Multi_measure_rest_engraver}
+ @*
+ Engraves multi-measure rests that are produced with @code{R}.
+ Normally in @code{Voice}.
+
+ @item @code{Piano_bar_engraver}
+@cindex Piano_bar_engraver@@@code{Piano_bar_engraver}
+
+ @item @code{Pitch_squash_engraver}
+@cindex Pitch_squash_engraver@@@code{Pitch_squash_engraver}
+ @*
+ Treat all pitches as middle C. Used in @code{RhythmicStaff}.
+ Note that the notes move, but the locations of accidentals stay
+ the same.
+
+ @item @code{Priority_horizontal_align_engraver}
+
+@cindex Priority_horizontal_align_engraver@@@code{Priority_horizontal_align_engraver}
+
+ @item @code{Repeat_engraver}
+@cindex Repeat_engraver@@@code{Repeat_engraver}
+ @*
+ Handles repeats? In @code{Staff} and @code{RhythmicStaff}.
+
+ @item @code{Rest_collision_engraver}
+@cindex Rest_collision_engraver@@@code{Rest_collision_engraver}
+ @*
+ Handles collisions of rests. In @code{Staff}.
+
+ @item @code{Rest_engraver}
+@cindex Rest_engraver@@@code{Rest_engraver}
+ @*
+ Engraves rests. Normally in @code{Voice}.
+
+ @item @code{Rhythmic_column_engraver}
+@cindex Rhythmic_column_engraver@@@code{Rhythmic_column_engraver}
+
+ @item @code{Score_priority_engraver}
+@cindex Score_priority_engraver@@@code{Score_priority_engraver}
+
+ @item @code{Script_engraver}
+@cindex Script_engraver@@@code{Script_engraver}
+ @*
+ Handles note ornaments generated by @code{\script}. Normally in
+ @code{Voice}.
+
+ @item @code{Separating_line_group_engraver}
+
+@cindex Separating_line_group_engraver@@@code{Separating_line_group_engraver}
+
+ @item @code{Skip_req_swallow_translator}
+
+@cindex Skip_req_swallow_translator@@@code{Skip_req_swallow_translator}
+
+ @item @code{Slur_engraver}
+@cindex Slur_engraver@@@code{Slur_engraver}
+ @*
+ Engraves slurs. Normally in @code{Voice}.
+
+ @item @code{Span_bar_engraver}
+@cindex Span_bar_engraver@@@code{Span_bar_engraver}
+ @*
+ Engraves lines across multiple staffs. Normally in
+ @code{Staffgroup} and @code{GrandStaff}. Removing this from
+ @code{StaffGroup} gives the definition of @code{ChoirStaff}.
+
+ @item @code{Span_score_bar_engraver}
+@cindex Span_score_bar_engraver@@@code{Span_score_bar_engraver}
+
+ @item @code{Staff_group_bar_engraver}
+@cindex Staff_group_bar_engraver@@@code{Staff_group_bar_engraver}
+
+ @item @code{Staff_margin_engraver}
+@cindex Staff_margin_engraver@@@code{Staff_margin_engraver}
+ @*
+ Prints the name of the instrument (specified by
+ @code{Staff.instrument} and @code{Staff.instr}) at the left of the
+ staff.
+
+ @item @code{Staff_sym_engraver}
+@cindex Staff_sym_engraver@@@code{Staff_sym_engraver}
+
+ @item @code{Stem_engraver}
+@cindex Stem_engraver@@@code{Stem_engraver}
+ @*
+ Engraves stems. Normally in @code{Voice}.
+
+ @item @code{Ties_engraver}
+@cindex Ties_engraver@@@code{Ties_engraver}
+ @*
+ Engraves ties. Normally in @code{Voice}.
+
+ @item @code{Time_signature_engraver}
+@cindex Time_signature_engraver@@@code{Time_signature_engraver}
+ @*
+ Engraves the time signature. Normally in @code{Staff} and
+ @code{RhythmicStaff}.
+
+ @item @code{Timing_engraver}
+@cindex Timing_engraver@@@code{Timing_engraver}
+ @*
+ Responsible for synchronizing timing information from staffs.
+ Normally in @code{Score}. In order to create polyrhythmic music,
+ this engraver should be removed from @code{Score} and placed in
+ @code{Staff}.
+
+ @item @code{Tuplet_engraver}
+@cindex Tuplet_engraver@@@code{Tuplet_engraver}
+ @*
+ Engraves tuplet brackets? In @code{Staff}.
+
+ @item @code{Vertical_align_engraver}
+@cindex Vertical_align_engraver@@@code{Vertical_align_engraver}
+
+@end table
+
+
+
+@node Sound output, midilist, engravers, LilyPond 1-2-0 Reference Manual
+@section Sound output
+
+
+
+The MIDI block is analogous to the paper block, but it is simpler.
+The @code{\midi} block can contain:
+@cindex MIDI block
+
+@itemize @bullet
+ @item a @code{\tempo} definition
+ @item context definitions
+@end itemize
+
+Assignments in the @code{\midi} block are not allowed.
+
+
+
+@cindex context definition
+
+Context definitions follow precisely the same syntax as within the
+\paper block. Translation modules for sound are called performers.
+The contexts for MIDI output are defined in @file{ly/performer.ly}.
+
+
+
+@cindex MIDI instrument names
+
+@node midilist, Pre-defined Identifiers, Sound output, LilyPond 1-2-0 Reference Manual
+
+The MIDI instrument name is set by the
+@code{Staff.midiInstrument}
+@cindex Staff.midiInstrument@@@code{Staff.midiInstrument}
+ property or, if that property is
+not set, the @code{Staff.instrument}
+@cindex Staff.instrument@@@code{Staff.instrument}
+ property. The instrument
+name should be chosen from the following list. If the selected
+string does not exactly match, then LilyPond uses the default piano.
+
+
+@quotation
+
+@example
+"acoustic grand" "contrabass" "lead 7 (fifths)"
+"bright acoustic" "tremolo strings" "lead 8 (bass+lead)"
+"electric grand" "pizzicato strings" "pad 1 (new age)"
+"honky-tonk" "orchestral strings" "pad 2 (warm)"
+"electric piano 1" "timpani" "pad 3 (polysynth)"
+"electric piano 2" "string ensemble 1" "pad 4 (choir)"
+"harpsichord" "string ensemble 2" "pad 5 (bowed)"
+"clav" "synthstrings 1" "pad 6 (metallic)"
+"celesta" "synthstrings 2" "pad 7 (halo)"
+"glockenspiel" "choir aahs" "pad 8 (sweep)"
+"music box" "voice oohs" "fx 1 (rain)"
+"vibraphone" "synth voice" "fx 2 (soundtrack)"
+"marimba" "orchestra hit" "fx 3 (crystal)"
+"xylophone" "trumpet" "fx 4 (atmosphere)"
+"tubular bells" "trombone" "fx 5 (brightness)"
+"dulcimer" "tuba" "fx 6 (goblins)"
+"drawbar organ" "muted trumpet" "fx 7 (echoes)"
+"percussive organ" "french horn" "fx 8 (sci-fi)"
+"rock organ" "brass section" "sitar"
+"church organ" "synthbrass 1" "banjo"
+"reed organ" "synthbrass 2" "shamisen"
+"accordion" "soprano sax" "koto"
+"harmonica" "alto sax" "kalimba"
+"concertina" "tenor sax" "bagpipe"
+"acoustic guitar (nylon)" "baritone sax" "fiddle"
+"acoustic guitar (steel)" "oboe" "shanai"
+"electric guitar (jazz)" "english horn" "tinkle bell"
+"electric guitar (clean)" "bassoon" "agogo"
+"electric guitar (muted)" "clarinet" "steel drums"
+"overdriven guitar" "piccolo" "woodblock"
+"distorted guitar" "flute" "taiko drum"
+"guitar harmonics" "recorder" "melodic tom"
+"acoustic bass" "pan flute" "synth drum"
+"electric bass (finger)" "blown bottle" "reverse cymbal"
+"electric bass (pick)" "skakuhachi" "guitar fret noise"
+"fretless bass" "whistle" "breath noise"
+"slap bass 1" "ocarina" "seashore"
+"slap bass 2" "lead 1 (square)" "bird tweet"
+"synth bass 1" "lead 2 (sawtooth)" "telephone ring"
+"synth bass 2" "lead 3 (calliope)" "helicopter"
+"violin" "lead 4 (chiff)" "applause"
+"viola" "lead 5 (charang)" "gunshot"
+"cello" "lead 6 (voice)"
+@end example
+
+@end quotation
+
+
+@cindex MIDI types and performers
+
+The types available for MIDI translators are:
+
+@table @samp
+ @item @code{Performer_group_performer}
+@cindex Performer_group_performer@@@code{Performer_group_performer}
+
+ @item @code{Score_performer}
+@cindex Score_performer@@@code{Score_performer}
+
+ @item @code{Staff_performer}
+@cindex Staff_performer@@@code{Staff_performer}
+
+@end table
+
+The performers for MIDI translators are:
+
+@table @samp
+ @item @code{Key_performer}
+@cindex Key_performer@@@code{Key_performer}
+
+ @item @code{Time_signature_performer}
+@cindex Time_signature_performer@@@code{Time_signature_performer}
+
+ @item @code{Note_performer}
+@cindex Note_performer@@@code{Note_performer}
+
+ @item @code{Lyric_performer}
+@cindex Lyric_performer@@@code{Lyric_performer}
+
+ @item @code{Swallow_performer}
+@cindex Swallow_performer@@@code{Swallow_performer}
+
+@end table
+
+
+
+@node Pre-defined Identifiers, ident, midilist, LilyPond 1-2-0 Reference Manual
+@section Pre-defined Identifiers
+
+@cindex pre-defined identifiers
+
+@node ident, Running LilyPond, Pre-defined Identifiers, LilyPond 1-2-0 Reference Manual
+
+Various identifiers are defined in the initialization files to
+provide shorthands for some settings. Most of them are in
+@file{ly/declarations.ly}.
+
+@table @samp
+ @item @code{\break}
+@cindex break@@@code{\break}
+ @*
+ Force a line break in music by using a large argument for the
+ keyword @code{\penalty}.
+
+ @item @code{\center}
+@cindex center@@@code{\center}
+ @*
+ Used for setting direction properties. Equals 0.
+
+ @item @code{\down}
+@cindex down@@@code{\down}
+ @*
+ Used for setting direction setting properties. Is equal
+ to -1.
+
+ @item @code{\free}
+@cindex free@@@code{\free}
+ @*
+ Used for setting direction setting properties. Is equal
+ to 0.
+
+ @item @code{\left}
+@cindex left@@@code{\left}
+ @*
+ Used for setting text alignment property. Is equal to -1.
+
+ @item @code{\nobreak}
+@cindex nobreak@@@code{\nobreak}
+ @*
+ Prevent a line break in music by using a large negative argument
+ for the keyword @code{\penalty}.
+
+ @item @code{\none}
+@cindex none@@@code{\none}
+ @*
+ Used for setting @code{Score.beamslopedamping} and
+ @code{Score.beamquantisation} properties. Is equal to 0.
+
+ @item @code{\normal}
+@cindex normal@@@code{\normal}
+ @*
+ Used for setting @code{Score.beamslopedamping} and
+ @code{Score.beamquantisation} properties. Is equal to 1.
+
+ @item @code{\normalkey}
+@cindex normalkey@@@code{\normalkey}
+ @*
+ Select normal key signatures where each octave has the same key
+ signature. This sets the @code{Staff.keyoctaviation} property.
+
+ @item @code{\right}
+@cindex right@@@code{\right}
+ @*
+ Used for setting text alignment property. Is set to 1.
+
+ @item @code{\shiftoff}
+@cindex shiftoff@@@code{\shiftoff}
+ @*
+ Disable horizontal shifting of note heads that collide. Sets the
+ @code{Voice.horizontalNoteShift} property.
+
+ @item @code{\shifton}
+@cindex shifton@@@code{\shifton}
+ @*
+ Enable note heads that collide with other note heads to be
+ shifted horiztonally. Sets the @code{Voice.horizontalNoteShift}
+ property.
+
+ @item @code{\slurboth}
+@cindex slurboth@@@code{\slurboth}
+ @*
+ Allow slurs to be above or below notes. This sets the
+ @code{Voice.slurVerticalDirection} property.
+
+ @item @code{\slurdown}
+@cindex slurdown@@@code{\slurdown}
+ @*
+ Force slurs to be below notes. This sets the
+ @code{Voice.slurVerticalDirection} property.
+
+ @item @code{\slurup}
+@cindex slurup@@@code{\slurup}
+ @*
+ Force slurs to be above notes. This sets the
+ @code{Voice.slurVerticalDirection} property.
+
+ @item @code{\specialkey}
+@cindex specialkey@@@code{\specialkey}
+ @*
+ Allow key signatures do differ in different octaves. This sets
+ the @code{Staff.keyoctaviation} property.
+
+ @item @code{\stemboth}
+@cindex stemboth@@@code{\stemboth}
+ @*
+ Allow stems, beams, and slurs to point either upwards or
+ downwards, decided automatically by LilyPond. This sets the
+ @code{Voice.verticalDirection} property.
+
+ @item @code{\stemdown}
+@cindex stemdown@@@code{\stemdown}
+ @*
+ Force stems, beams, and slurs to point down. This sets the
+ @code{Voice.verticalDirection} property.
+
+ @item @code{\stemup}
+@cindex stemup@@@code{\stemup}
+ @*
+ Force stems, beams and slurs to point up. This sets the
+ @code{Voice.verticalDirection} property.
+
+ @item @code{\traditional}
+@cindex traditional@@@code{\traditional}
+ @*
+ Used for setting the @code{Score.beamquantisation} property. Is
+ equal to 2.
+
+ @item @code{\up}
+@cindex up@@@code{\up}
+ @*
+ Used for setting various direction properties. Is equal
+ to 1.
+@end table
+
+
+
+@node Running LilyPond, Top, ident, LilyPond 1-2-0 Reference Manual
+@section Running LilyPond
+
+@cindex running LilyPond
+
+
+When invoked with a filename that has no extension, LilyPond will try
+adding `@file{.ly}' as an extension first, then `@file{.fly}' and
+finally `@file{.sly}' extension. If the filename ends with
+`@file{.fly}', LilyPond processes the file as music using
+`@file{init.fly}'. In this case, LilyPond does something like:
+
+@quotation
+
+@example
+\score @{
+ \notes\relative c @{
+ \input "yourfile.fly"
+ @}
+ \paper@{@}
+ \midi@{@}
+@}
+@end example
+
+@end quotation
+
+The result of `@file{.sly}' is similar except that a single unjustified
+line is produced.
+
+If you invoke LilyPond with a file `@file{foo.}' that doesn't
+have the `@file{.ly}' extension, then LilyPond will look for a file
+called `@file{init.}' and process this file. The file
+`@file{init.}' must contain the @code{\maininput} keyword or
+LilyPond will not read the user specified file.
+
+When LilyPond processes @file{filename.ly} it will produce
+@file{filename.tex} as output. If @file{filename.ly} contains a second
+@code{\paper} keyword, then LilyPond will produce @file{filename-1.tex}
+as well. Subsequent @code{\paper} keywords will produce sequentially
+numbered file names. Several files can be specified; they will each
+be processed independently.@footnote{Not entirely true: The status of
+GUILE is kept.}
+
+
+
+@bye
--- /dev/null
+\\input texinfo @c -*-texinfo-*-
+@setfilename tutorial.info
+@settitle Typesetting music with LilyPond
+
+
+@ifinfo
+
+This is a short tutorial to show you how LilyPond works. It is not a
+tutorial. It was written by Han-Wen Nienhuys.
+
+Copyright 1999 by its authors.
+@end ifinfo
+
+@titlepage
+@sp 10
+@comment The title is printed in a large font.
+@center @titlefont{LilyPond tutorial}
+@vskip 20pt
+@center @titlefont{Han-Wen Nienhuys}
+
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1999 by its author(s)
+@end titlepage
+
+
+@node Top, , The end, (dir)
+@top
+@menu
+* Typesetting music with LilyPond::Typesetting music with LilyPond
+@end menu
+
+
+
+
+
+
+
+
+
+
+
+
+@node Typesetting music with LilyPond, Introduction, , Top
+@menu
+* Introduction:: Introduction
+* tutorial-introduction:: tutorial-introduction
+* The first tune:: The first tune
+* sec-firsttune:: sec-firsttune
+* Lyrics and chords:: Lyrics and chords
+* Piano music:: Piano music
+* The end:: The end
+@end menu
+@chapter Typesetting music with LilyPond
+
+
+
+
+
+
+@node Introduction, tutorial-introduction, Typesetting music with LilyPond, Typesetting music with LilyPond
+@section Introduction
+@node tutorial-introduction, The first tune, Introduction, Typesetting music with LilyPond
+
+
+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 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.
+
+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.
+
+@node The first tune, sec-firsttune, tutorial-introduction, Typesetting music with LilyPond
+@section The first tune
+@node sec-firsttune, Lyrics and chords, The first tune, Typesetting music with LilyPond
+
+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}.
+
+@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. |
+ }
+
+ 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
+
+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.
+
+If all goes well, the file @file{menuet.dvi} will be created.
+To view this output, issue the command `@code{xdvi menuet}'.
+
+Now that we are familiar with the procedure of producing output, we
+will analyse the input, line by line.@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{%@}}'@example
+
+ \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
+
+ \notes
+
+@end example
+ This makes LilyPond ready for accepting notes.
+@example
+
+ \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
+
+ \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
+
+ \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
+
+ \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
+
+ @{
+
+@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
+
+ 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
+
+ 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, eg. @code{a4 b4}) @example
+
+ 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.
+
+ 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
+
+ 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
+
+ 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
+
+ g2. |
+
+@end example
+A duration with augmentation dot is notated
+with the duration number followed by a period.@example
+
+ @}
+
+@end example
+ This ends the sequential music to be repeated. LilyPond will typeset
+a repeat bar. @example
+
+ 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
+
+ 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
+
+ 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
+
+ @}
+
+@end example
+
+Here the music ends.
+@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
+
+ @}
+
+@end example
+The last brace ends the @code{\score} block.
+
+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.
+
+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, Piano music, sec-firsttune, Typesetting music with LilyPond
+@section Lyrics and chords
+
+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.}.
+
+@example
+\header @{
+ title = "The river is flowing";
+ composer = "Traditional (?)";
+@}
+\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 "|.";
+@}
+
+text = \lyrics @{
+ The ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the
+ ri -- ver is flo -- wing down to the sea.
+@}
+
+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
+
+ \addlyrics
+ \context Staff = mel @{
+ \property Staff.noAutoBeaming = "1"
+ \property Staff.automaticMelismata = "1"
+ \melody
+ @}
+ \context Lyrics \text
+ @}
+ \midi @{ @}
+ \paper @{ linewidth = 10.0\cm; @}
+@}
+@end example
+
+
+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}.}.
+
+@center @strong{The river is flowing}
+@center Traditional
+
+@mudela[center]
+\header {
+ title = "The river is flowing";
+ composer = "Traditional (?)";
+}
+\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 "|.";
+}
+
+text = \lyrics {
+ The ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the
+ ri -- ver is flo -- wing down to the sea.
+}
+
+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
+
+ \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
+
+ \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
+
+ 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
+
+ \include "paper16.ly"
+
+@end example
+Smaller size for inclusion in a book.@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.
+
+@example
+
+ \partial 8;
+
+@end example
+
+The piece starts with an anacrusis of one eighth. @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
+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
+
+ 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.
+ @}
+
+@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.)
+@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.
+@example
+
+ r8
+
+@end example
+There is no accompaniment during the anacrusis.@example
+
+ c2-3- f-3-.7
+
+@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.@example
+
+ d-min es4 c8-min r8
+
+@end example
+Some modifiers have predefined names, eg. @code{min} is the same as
+@code{3-}, so @code{d-min} is a minor @code{d} chord.@example
+
+ c2-min f-min7 g-7^3.5 c-min @}
+
+@end example
+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. @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}.@example
+
+ %\accompaniment
+
+@end example
+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. @example
+
+ \context ChordNames \accompaniment
+
+@end example
+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
+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'.
+
+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.
+
+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
+
+ \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.)@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.@example
+
+ \property Staff.noAutoBeaming = "1"
+
+@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
+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. @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. @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.@example
+
+ @}
+
+@end example
+This ends @code{\simultaneous}.@example
+
+ \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 @{ @}}.@example
+
+ \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, The end, Lyrics and chords, Typesetting music with LilyPond
+@section Piano music
+
+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]
+
+\include "paper16.ly";
+
+viola = \notes \relative c' \context Voice = viola {
+ <c4-\f g' c>
+ \property Voice.verticalDirection = \down g'8. b,16
+ s1 s2. r4
+ g
+}
+
+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,>
+}
+
+hoomPah = \notes \transpose c' {
+ c8 \translator Staff = top \stemdown
+ c'8 \translator Staff = bottom \stemup }
+
+hoomPahHoomPah = { [\hoomPah \hoomPah] }
+
+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 } >
+}
+
+\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
+
+If it looks like incomprehensible gibberish to you... 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).
+
+@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 @}
+@end example
+The crescendo is ended at the half note by the escaped exclamation
+mark `@code{\!}'. @example
+\context Voice = oboeTwo @{
+\stemdown
+@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. @example
+\grace @{
+@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] @}
+@end example
+Normally, grace notes are always stem up, but in this case, the upper
+voice interferes. We set the stems down here.
+
+As far as relative mode is concerned, the previous note is the
+@code{c'''2} of the upper voice, so we have to go an octave down for
+the @code{f}.
+@example
+
+ f8 e e2
+@} >
+@end example
+This ends the two-part section. @example
+\stemboth
+\grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
+@end example
+@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:@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 ...} 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}'. @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.@example
+\context Voice = reallyLow @{\stemdown g2 ~ | g4 c8 @} >
+@end example
+After skipping some lines, we see @code{~}. This mark makes ties.@example
+\context PianoStaff
+@end example
+For piano music, a special context is needed to get cross staff
+beaming right. It is called @code{PianoStaff}.@example
+\context Staff = bottom < \time 2/2; \clef bass;
+@end example
+The bottom staff must have a different clef.@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 is very cramped, but that is due
+to the format of this tutorial.
+
+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.
+
+[TODO: demonstrate Hara-Kiri with scores and part extraction.]
+
+@node The end, Top, Piano music, Typesetting music with LilyPond
+@section The end
+
+That's all folks. From here, you can either try fiddling with input
+files, or you can read the reference manual.
+
+
+@bye