version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.11.57"
+@c \version "2.12.0"
@node General input and output
@chapter General input and output
rather than specific notation.
@menu
-* Input structure::
-* Titles and headers::
-* Working with input files::
-* Controlling output::
-* MIDI output::
+* Input structure::
+* Titles and headers::
+* Working with input files::
+* Controlling output::
+* MIDI output::
@end menu
these files end with @code{.ly}.
@menu
-* Structure of a score::
-* Multiple scores in a book::
-* File structure::
+* Structure of a score::
+* Multiple scores in a book::
+* File structure::
@end menu
block, and inside or outside the single music expression within a
@code{\score} block.
-@seealso
+@seealso
Learning Manual:
-
@rlearning{Working on input files},
@rlearning{Music expressions explained},
@rlearning{Score is a (single) compound musical expression}.
@}
@end example
+@funindex \bookpart
+
+Pieces of music may be grouped into book parts using @code{\bookpart}
+blocks. Book parts are separated by a page break, and can start with a
+title, like the book itself, by specifying a @code{\header} block.
+
+@example
+\bookpart @{
+ \header @{
+ title = "Book title"
+ subtitle = "First part"
+ @}
+ \score @{ @dots{} @}
+ @dots{}
+@}
+\bookpart @{
+ \header @{
+ subtitle = "Second part"
+ @}
+ \score @{ @dots{} @}
+ @dots{}
+@}
+@end example
+
@node File structure
@subsection File structure
@funindex \header
@funindex \score
@funindex \book
+@funindex \bookpart
A @code{.ly} file may contain any number of toplevel expressions, where a
toplevel expression is one of the following:
toplevel. The default handler is defined in the init file
@file{../scm/@/lily@/.scm}.
+@item
+A @code{\bookpart} block. A book may be divided into several parts,
+using @code{\bookpart} blocks, in order to ease the page breaking,
+or to use different @code{\paper} settings in different parts.
+
@item
A compound music expression, such as
@example
@end itemize
-@seealso
+@seealso
Learning Manual:
@rlearning{How LilyPond input files work}.
+
@node Titles and headers
@section Titles and headers
some pieces include a lot more information.
@menu
-* Creating titles::
-* Custom titles::
-* Reference to page numbers::
-* Table of contents::
+* Creating titles::
+* Custom titles::
+* Reference to page numbers::
+* Table of contents::
@end menu
@subsection Creating titles
Titles are created for each @code{\score} block, as well as for the full
-input file (or @code{\book} block).
+input file (or @code{\book} block) and book parts (created by
+@code{\bookpart} blocks).
The contents of the titles are taken from the @code{\header} blocks.
The header block for a book supports the following
}
@end lilypond
-@funindex printallheaders
+@funindex print-all-headers
@noindent
You may change this behavior (and print all the headers when defining
@code{\header} inside @code{\score}) by using
@example
\paper@{
- printallheaders=##t
+ print-all-headers = ##t
@}
@end example
dimensions. If the book has between 10 and 99 pages, it may be "00",
ie. a two digit number.
-@predefined
+@predefined
@funindex \label
-@code{\label}
+@code{\label},
@funindex \page-ref
-@code{\page-ref}
+@code{\page-ref}.
+@endpredefined
+
@node Table of contents
@subsection Table of contents
}
@end lilypond
-@seealso
+@seealso
Init files: @file{../ly/@/toc@/-init@/.ly}.
-@predefined
+@predefined
@funindex \table-of-contents
-@code{\table-of-contents}
+@code{\table-of-contents},
@funindex \tocItem
-@code{\tocItem}
+@code{\tocItem}.
+@endpredefined
@node Working with input files
@section Working with input files
@menu
-* Including LilyPond files::
-* Different editions from one source::
-* Text encoding::
-* Displaying LilyPond notation::
+* Including LilyPond files::
+* Different editions from one source::
+* Text encoding::
+* Displaying LilyPond notation::
@end menu
@end example
Files which are to be included can also contain @code{\include}
-statements of their own. These second-level
+statements of their own. By default, these second-level
@code{\include} statements are not interpreted until they have
been brought into the main file, so the file names they specify
must all be relative to the directory containing the main file,
-not the directory containing the included file.
+not the directory containing the included file. However,
+this behavior can be changed by passing the option
+@code{-drelative-includes} option at the command line
+(or by adding @code{#(ly:set-option 'relative-includes #t)}
+at the top of the main input file). With @code{relative-includes}
+set, the path for each @code{\include} command will be taken
+relative to the file containing that command. This behavior is
+recommended and it will become the default behavior in a future
+version of lilypond.
Files can also be included from a directory in a search path
specified as an option when invoking LilyPond from the command
Files which are to be included in many scores may be placed in
the LilyPond directory @file{../ly}. (The location of this
-directory is installation-dependent - see @rlearning{Other sources
-of information}). These files can then be included simply by
-naming them on an @code{\include} statement. This is how the
-language-dependent files like @file{english.ly} are included.
+directory is installation-dependent - see
+@rlearning{Other sources of information}). These files can then
+be included simply by naming them on an @code{\include} statement.
+This is how the language-dependent files like @file{english.ly} are
+included.
LilyPond includes a number of files by default when you start
the program. These includes are not apparent to the user, but the
files may be identified by running @code{lilypond --verbose} from
the command line. This will display a list of paths and files that
LilyPond uses, along with much other information. Alternatively,
-the more important of these files are discussed in @rlearning{Other
-sources of information}. These files may be edited, but changes to
-them will be lost on installing a new version of LilyPond.
+the more important of these files are discussed in
+@rlearning{Other sources of information}. These files may be
+edited, but changes to them will be lost on installing a new
+version of LilyPond.
Some simple examples of using @code{\include} are shown in
@rlearning{Scores and parts}.
+
@seealso
Learning Manual:
@rlearning{Other sources of information},
@rlearning{Scores and parts}.
+
@knownissues
If an included file is given a name which is the same as one in
structure while leaving the notation untouched.
@menu
-* Using variables::
-* Using tags::
+* Using variables::
+* Using tags::
@end menu
@node Using variables
the first filter will remove all tagged sections except the one
named, and the second filter will remove even that tagged section.
-@seealso
+@seealso
Learning Manual:
@rlearning{Organizing pieces with variables}.
@ref{Automatic part combining},
@ref{Including LilyPond files}.
+
@ignore
@c This warning is more general than this placement implies.
@c Rests are not merged whether or not they come from tagged sections.
@end lilypond
To enter a single character for which the Unicode escape sequence
-is known but which is not available in the editor being used, enter
-
-@example
-#(ly:export (ly:wide-char->utf-8 #x03BE))
-@end example
+is known but which is not available in the editor being used, use
+@code{\char ##xhhhh} within a @code{\markup} block, where
+@code{hhhh} is the hexadecimal code for the character required.
+For example, @code{\char ##x03BE} enters the Unicode U+03BE
+character, which has the Unicode name @qq{Greek Small Letter Xi}.
+Any Unicode hexadecimal code may be substituted, and if all special
+characters are entered in this format it is not necessary to save
+the input file in UTF-8 format. Of course, a font containing all
+such encoded characters must be installed and available to LilyPond.
+
+The following example shows UTF-8 coded characters being used in
+four places -- in a rehearsal mark, as articulation text, in lyrics
+and as stand-alone text below the score:
-where in this example @code{x03BE} is the hexadecimal code for the
-Unicode U+03BE character, which has the Unicode name @qq{Greek Small
-Letter Xi}. Any Unicode hexadecimal code may be substituted, and
-if all special characters are entered in this format it is not
-necessary to save the input file in UTF-8 format.
+@lilypond[quote,verbatim]
+\score {
+ \relative c'' {
+ c1 \mark \markup { \char ##x03EE }
+ c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
+ }
+ \addlyrics { O \markup { \concat{ Ph \char ##x0153 be! } } }
+}
+\markup { "Copyright 2008--2009" \char ##x00A9 }
+@end lilypond
-@knownissues
+To enter the copyright sign in the copyright notice use:
-The @code{ly:export} format may be used in text within @code{\mark} or
-@code{\markup} commands but not in lyrics.
+@example
+\header @{
+ copyright = \markup @{ \char ##x00A9 "2008" @}
+@}
+@end example
@node Displaying LilyPond notation
@subsection Displaying LilyPond notation
@section Controlling output
@menu
-* Extracting fragments of music::
-* Skipping corrected music::
+* Extracting fragments of music::
+* Skipping corrected music::
@end menu
@node Extracting fragments of music
@funindex skipTypesetting
+@funindex showFirstLength
@funindex showLastLength
When entering or copying music, usually only the music near the end (where
in your source file. This will render only the last 5 measures
(assuming 4/4 time signature) of every @code{\score} in the input
file. For longer pieces, rendering only a small part is often an order
-of magnitude quicker than rendering it completely
+of magnitude quicker than rendering it completely. When working on the
+beginning of a score you have already typeset (e.g. to add a new part),
+the @code{showFirstLength} property may be useful as well.
Skipping parts of a score can be controlled in a more fine-grained
fashion with the property @code{Score.skipTypesetting}. When it is
(or 14 if you do not use drums). Other staves will remain silent.
@menu
-* Creating MIDI files::
-* MIDI block::
-* What goes into the MIDI output?::
-* Repeats in MIDI::
-* Controlling MIDI dynamics::
-* Percussion in MIDI::
+* Creating MIDI files::
+* MIDI block::
+* What goes into the MIDI output?::
+* Repeats in MIDI::
+* Controlling MIDI dynamics::
+* Percussion in MIDI::
@end menu
@node Creating MIDI files
@example
\new Staff @{
- \set Staff.midiInstrument = "glockenspiel"
+ \set Staff.midiInstrument = #"glockenspiel"
@var{...notes...}
@}
@end example
@example
-\new Staff \with @{midiInstrument = "cello"@} @{
+\new Staff \with @{midiInstrument = #"cello"@} @{
@var{...notes...}
@}
@end example
@itemize
@item Pitches
-@item Quarter tones (See @ref{Accidentals}. Rendering needs a
+@item Microtones (See @ref{Accidentals}. Rendering needs a
player that supports pitch bend.)
@item Chords entered as chord names
@item Rhythms entered as note durations, including tuplets
@item Dynamic marks
@item Crescendi, decrescendi over multiple notes
@item Tempo changes entered with a tempo marking
+@item Lyrics
@end itemize
@unnumberedsubsubsec Unsupported in MIDI
@item Crescendi, decrescendi over a single note
@item Tremolos entered with @q{@code{:}[@var{number}]}
@item Figured bass
-@c TODO Check Lyrics
-@item Lyrics
+@item Microtonal chords
@end itemize
\score {
\new Staff {
- \set Staff.midiInstrument = "cello"
+ \set Staff.midiInstrument = #"cello"
\set Score.dynamicAbsoluteVolumeFunction = #myDynamics
\new Voice {
\relative c'' {