version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.11.51"
+@c \version "2.12.0"
@node Introduction
@chapter Introduction
documentation.
@menu
-* Background::
-* About the documentation::
+* Background::
+* About the documentation::
@end menu
LilyPond.
@menu
-* Engraving::
-* Automated engraving::
-* What symbols to engrave?::
-* Music representation::
-* Example applications::
+* Engraving::
+* Automated engraving::
+* What symbols to engrave?::
+* Music representation::
+* Example applications::
@end menu
@node Engraving
@unnumberedsubsec Engraving
+@cindex engraving
+@cindex typography, music
+@cindex music typography
+@cindex plate engraving
+@cindex music engraving
+
The art of music typography is called @emph{(plate) engraving}.
The term derives from the traditional process of music printing.
Just a few decades ago, sheet music was made by cutting and
stamping the music into a zinc or pewter plate in mirror image.
-The plate would be inked, the depressions caused by the cutting
+The plate would be inked, and the depressions caused by the cutting
and stamping would hold ink. An image was formed by pressing
-paper to the plate. The stamping and cutting was completely done
+paper to the plate. The stamping and cutting was done completely
by hand. Making a correction was cumbersome, if possible at all,
so the engraving had to be perfect in one go. Engraving was a
highly specialized skill; a craftsman had to complete around five
skilled.
Nowadays, all newly printed music is produced with computers.
-This has obvious advantages; prints are cheaper to make, and
+This has obvious advantages: prints are cheaper to make, and
editorial work can be delivered by email. Unfortunately, the
pervasive use of computers has also decreased the graphical
quality of scores. Computer printouts have a bland, mechanical
symbol matches the light lines and it has a straight layout with
sharp corners. By contrast, the Bärenreiter flat has a bold,
almost voluptuous rounded look. Our flat symbol is designed
-after, among others, this one. It is rounded, and its weight
+after this one, among others. It is rounded, and its weight
harmonizes with the thickness of our staff lines, which are also
much thicker than lines in the computer edition.
@end ifnottex
@end ifnotinfo
@ifinfo
-@image{lilypond/henle-flat-bw,,,png} @image{lilypond/baer-flat-bw,,,png}
-@image{lilypond/lily-flat-bw,,,png}
+@image{lilypond/henle-flat-bw,,,,png} @image{lilypond/baer-flat-bw,,,,png}
+@image{lilypond/lily-flat-bw,,,,png}
@end ifinfo
@item @tab
@cindex regular rhythms
@cindex regular spacing
+@cindex spacing, regular
Each bar in the fragment only uses notes that are played in a
constant rhythm. The spacing should reflect that. Unfortunately,
the notes of a down-stem/@/up-stem combination should be put
closer together, all depending on the combined vertical positions
of the notes. The upper two measures are printed with this
-correction, the lower two measures without, forming
+correction, the lower two measures, however, form
down-stem/@/up-stem clumps of notes.
-@cindex typography
Musicians are usually more absorbed with performing than with
-studying the looks of a piece of music, so nitpicking about
-typographical details may seem academical. But it is not. In
+studying the looks of a piece of music, so nitpicking
+typographical details may seem academic. But it is not. In
larger pieces with monotonous rhythms, spacing corrections lead to
subtle variations in the layout of every line, giving each one a
distinct visual signature. Without this signature all lines would
-look the same, and they become like a labyrinth. If a musician
-looks away once or has a lapse in concentration, the lines might
-lose their place on the page.
+look the same, and they become like a labyrinth. A distinct visual
+signature helps to keep musicians from losing their place on the
+page when they look away or have a lapse in concentration.
Similarly, the strong visual look of bold symbols on heavy staff
lines stands out better when the music is far away from the
-reader, for example, if it is on a music stand. A careful
+reader: for example, if it is on a music stand. A careful
distribution of white space allows music to be set very tightly
-without cluttering symbols together. The result minimizes the
+without crowding symbols together. The result minimizes the
number of page turns, which is a great advantage.
This is a common characteristic of typography. Layout should be
@node Automated engraving
@unnumberedsubsec Automated engraving
+@cindex engraving, automated
+@cindex automated engraving
+
How do we go about implementing typography? If craftsmen need
over ten years to become true masters, how could we simple hackers
ever write a program to take over their jobs?
@item Finally, we continually refine the formatting algorithms, so
we need a flexible approach to rules. The C++ language forces a
-certain method of grouping rules that do not match well with how
-music notation works.
+certain method of grouping rules that cannot readily be applied to
+formatting music notation.
@end itemize
+@cindex Scheme programming language
+
These problems have been addressed by integrating an interpreter
for the Scheme programming language and rewriting parts of
LilyPond in Scheme. The current formatting architecture is built
}
@end lilypond
+@cindex score formatting
+@cindex formatting a score
+@cindex formatting rules
+
@noindent
The process of formatting a score consists of reading and writing
the variables of graphical objects. Some variables have a preset
variables containing procedures. These procedures perform the
actual formatting, and by substituting different ones, we can
change the appearance of objects. In the following example, the
-rule which note head objects are used to produce their symbol is
-changed during the music fragment.
+rule governing which note head objects are used to produce the
+note head symbol is changed during the music fragment.
@lilypond[quote,ragged-right]
#(set-global-staff-size 30)
(pos (ly:grob-property grob 'staff-position)))
(if (memq 'note-head-interface interfaces)
(begin
- (ly:grob-set-property! grob 'stencil ly:text-interface::print)
- (ly:grob-set-property! grob 'font-family 'roman)
- (ly:grob-set-property! grob 'text
- (make-raise-markup -0.5
- (case pos
- ((-5) (make-simple-markup "m"))
- ((-3) (make-simple-markup "c "))
- ((-2) (make-smaller-markup (make-bold-markup "2")))
- (else (make-simple-markup "bla")))))))))
+ (ly:grob-set-property! grob 'stencil
+ (grob-interpret-markup grob
+ (make-lower-markup 0.5
+ (case pos
+ ((-5) "m")
+ ((-3) "c ")
+ ((-2) (make-smaller-markup (make-bold-markup "2")))
+ (else "bla")))))))))
\new Voice \relative c' {
- \stemUp
- \set autoBeaming = ##f
- \time 2/4
- <d f g>4
- \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
- \once \override NoteHead #'font-size = #-7
- \once \override NoteHead #'font-family = #'sans
- \once \override NoteHead #'font-series = #'bold
- <d f g>
- \once \override NoteHead #'style = #'cross
- <d f g>
- \applyOutput #'Voice #mc-squared
- <d f g>
- <<
- { d8[ es-( fis^^ g] fis2-) }
- \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
- >>
+ \stemUp
+ \set autoBeaming = ##f
+ \time 2/4
+ <d f g>4
+ \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+ \once \override NoteHead #'font-size = #-7
+ \once \override NoteHead #'font-family = #'sans
+ \once \override NoteHead #'font-series = #'bold
+ <d f g>4
+ \once \override NoteHead #'style = #'cross
+ <d f g>4
+ \applyOutput #'Voice #mc-squared
+ <d f g>4
+ <<
+ { d8[ es-( fis^^ g] fis2-) }
+ \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
+ >>
}
@end lilypond
@cindex engraving
@cindex typography
+@cindex engraver
+@cindex plug-in
The formatting process decides where to place symbols. However,
this can only be done once it is decided @emph{what} symbols
-should be printed, in other words what notation to use.
+should be printed -- in other words, what notation to use.
Common music notation is a system of recording music that has
evolved over the past 1000 years. The form that is now in common
-use dates from the early renaissance. Although the basic form
+use dates from the early Renaissance. Although the basic form
(i.e., note heads on a 5-line staff) has not changed, the details
still evolve to express the innovations of contemporary notation.
-Hence, it encompasses some 500 years of music. Its applications
-range from monophonic melodies to monstrous counterpoints for
-large orchestras.
+Hence, common music notation encompasses some 500 years of music.
+Its applications range from monophonic melodies to monstrous
+counterpoints for a large orchestra.
-How can we get a grip on such a many-headed beast, and force it
+How can we get a grip on such a seven-headed beast, and force it
into the confines of a computer program? Our solution is to break
up the problem of notation (as opposed to engraving, i.e.,
typography) into digestible and programmable chunks: every type of
@code{engraver}s, by analogy with craftsmen who translate musical
ideas to graphic symbols.
-In the following example, we see how we start out with a plug-in
-for note heads, the @code{Note_heads_engraver}.
+In the following example, we start out with a plug-in for note
+heads, the @code{Note_heads_engraver}.
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
@end lilypond
@noindent
-Then a @code{Staff_symbol_engraver} adds the staff
+Then a @code{Staff_symbol_engraver} adds the staff,
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
@end lilypond
@noindent
-the @code{Clef_engraver} defines a reference point for the staff
+the @code{Clef_engraver} defines a reference point for the staff,
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score { \topVoice }
@end lilypond
+@cindex polyphony
+@cindex engraving multiple voices
+@cindex contexts
+
This system works well for monophonic music, but what about
polyphony? In polyphonic notation, many voices can share a staff.
Staff contexts can be put into a single Score context. The Score
context is the top level notation context.
-@seealso
+@seealso
Internals Reference: @rinternals{Contexts}.
+
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
@node Music representation
@unnumberedsubsec Music representation
+@cindex syntax
+@cindex recursive structures
+
Ideally, the input format for any high-level formatting system is
an abstract description of the content. In this case, that would
be the music itself. This poses a formidable problem: how can we
@end example
@noindent
-to create a quarter note C1 (middle C) and an eighth note D1 (D
-above middle C).
+to create a quarter note on middle C (C1) and an eighth note on
+the D above middle C (D1).
@lilypond[quote]
{
and unambiguously defined.
User-interfaces and syntax are what people see and deal with most.
-They are partly a matter of taste, and also subject of much
+They are partly a matter of taste, and also the subject of much
discussion. Although discussions on taste do have their merit,
they are not very productive. In the larger picture of LilyPond,
the importance of input syntax is small: inventing neat syntax is
@node Example applications
@unnumberedsubsec Example applications
+@cindex simple examples
+@cindex examples, simple
+
We have written LilyPond as an experiment of how to condense the
art of music engraving into a computer program. Thanks to all
that hard work, the program can now be used to perform useful
@lilypond[quote,ragged-right]
<<
\chords { c2 c f2 c }
- \new Staff \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
- \new Lyrics \lyricmode { twin4 kle twin kle lit tle star2 }
+ \new Staff
+ \relative c' {
+ \time 2/4
+ c4 c g' g a a g2
+ }
+ \addlyrics { twin -- kle twin -- kle lit -- tle star }
>>
@end lilypond
<< {
\revert Stem #'direction
\change Staff = down
- \set subdivideBeams = ##t
+ \set subdivideBeams = ##t
g16.[
\change Staff = up
c'''32
\override Beam #'thickness = #0.3
\override Stem #'thickness = #4.0
g'16[ b16 fis16 g16]
- << \makeClusters {
+ << \makeClusters {
as16 <as b>
<g b>
<g cis>
This section explains the different portions of the documentation.
+@cindex Learning Manual
+@cindex Music Glossary
+@cindex Notation Reference
+@cindex Application Usage
+@cindex Snippet List
+@cindex Internals Reference
+
@c leave these lines wrapping around. It's some texinfo 4.12 thing. -gp
@c This is actually a limitation of texi2html. -jm
@menu
-* About the Learning Manual (LM):: this manual introduces LilyPond, giving in-depth explanations of how to create notation.
-
-* About the Music Glossary (MG):: this manual explains musical terms and gives translations of terms in other languages.
-
-* About the Notation Reference (NR):: this manual is the main portion of the documentation. It provides detailed information about creating notation. This book assumes that the reader knows basic material covered in the LM and is familiar with the English musical terms presented in the MG.
-
-* About the Application Usage (AU):: this discusses the actual programs and operating system-specific issues.
-
-* About the Snippet List (SL):: this is a collection of short LilyPond examples.
-
-* About the Internals Reference (IR):: this document gives reference information about LilyPond's internal structures, which is required for constructing tweaks.
-
+* About the Learning Manual:: this manual introduces LilyPond, giving in-depth explanations of how to create notation.
+* About the Music Glossary:: this manual explains musical terms and gives translations of terms in other languages.
+* About the Notation Reference:: this manual is the main portion of the documentation. It provides detailed information about creating notation. This book assumes that the reader knows basic material covered in the Learning Manual and is familiar with the English musical terms presented in the Musical Glossary.
+* About the Application Usage:: this discusses the actual programs and operating system-specific issues.
+* About the Snippet List:: this is a collection of short LilyPond examples.
+* About the Internals Reference:: this document gives reference information about LilyPond's internal structures, which is required for constructing tweaks.
* Other documentation:: there are a few other portions of the documentation, such as News items and the mailist archives.
-
@end menu
-@node About the Learning Manual (LM)
-@unnumberedsubsec About the Learning Manual (LM)
+@node About the Learning Manual
+@unnumberedsubsec About the Learning Manual
+
+@cindex Learning Manual
This book explains how to begin learning LilyPond, as well as
explaining some key concepts in easy terms. You should read these
chapters in a linear fashion.
+There is a paragraph @strong{See also} at the end of each section,
+which contains cross-references to other sections: you should not
+follow these cross-references at first reading; when you have read all
+of the Learning Manual, you may want to read some sections again and
+follow cross-references for further reading.
+
@itemize
@item
@end itemize
-The LM also contains appendices which are not part of the
+The Learning Manual also contains appendices which are not part of the
recommended linear reading. They may be useful for later
viewing:
@end itemize
-@node About the Music Glossary (MG)
-@unnumberedsubsec About the Music Glossary (MG)
+@node About the Music Glossary
+@unnumberedsubsec About the Music Glossary
+@cindex Music Glossary
@cindex idiom
@cindex jargon
@cindex terminology
it is highly advisable to consult the glossary.
-@node About the Notation Reference (NR)
-@unnumberedsubsec About the Notation Reference (NR)
+@node About the Notation Reference
+@unnumberedsubsec About the Notation Reference
+
+@cindex Notation Reference
+@cindex appendices
+@cindex reference charts
+@cindex charts, reference
This book explains all the LilyPond commands which produce
notation. It assumes that readers are familiar with the concepts
-in the Learning manual.
+in the Learning Manual.
@itemize
@end itemize
-The NR also contains appendices with useful reference charts.
+The Notation Reference also contains appendices with useful
+reference charts.
@itemize
@end itemize
-@node About the Application Usage (AU)
-@unnumberedsubsec About the Application Usage (AU)
+@node About the Application Usage
+@unnumberedsubsec About the Application Usage
+
+@cindex Application Usage
+@cindex integrating LilyPond with other programs
This book explains how to execute the programs and how to integrate
LilyPond notation with other programs.
@item
@rprogram{Install}:
-explains how to install LilyPond (including compilation if
-desired).
+explains how to install LilyPond, including compilation if
+desired.
@item
@rprogram{Setup}:
@end itemize
-@node About the Snippet List (SL)
-@unnumberedsubsec About the Snippet List (SL)
+@node About the Snippet List
+@unnumberedsubsec About the Snippet List
@cindex snippets
@cindex LSR
+@cindex Snippet List
+@cindex LilyPond Snippet Repository
@rlsrnamed{Top,LilyPond Snippet List}: this shows a
selected set of LilyPond snippets from the
separately. These are stored in @file{input/new/} in the LilyPond
source tree.
-The list of snippets for each subsection of the Notation Reference
-(NR) are also linked from the @strong{See also} portion.
+The list of snippets for each subsection of the Notation Reference are
+also linked from the @strong{See also} portion.
-@node About the Internals Reference (IR)
-@unnumberedsubsec About the Internals Reference (IR)
+@node About the Internals Reference
+@unnumberedsubsec About the Internals Reference
+
+@cindex Internals Reference
@rinternalsnamed{Top,Internals Reference}: this is a set
of heavily cross linked HTML pages which document the nitty-gritty
@itemize
-@item News: This is a summary of important changes
+@item
+@ifhtml
+@ifset bigpage
+@uref{../topdocs/NEWS.html,News}:
+@end ifset
+@ifclear bigpage
+@uref{../../topdocs/NEWS.html,News}:
+@end ifclear
+@end ifhtml
+@ifnothtml
+News:
+@end ifnothtml
+this is a summary of important changes
and new features in LilyPond since the previous version.
@item @uref{http://lists.gnu.org/archive/html/lilypond-user/, The
music fragments embedded, the exact LilyPond input that was used
to produce that image can be viewed by clicking the image.
-@item Init files: The location of the documentation files that are
+@item Init files: the location of the documentation files that are
mentioned here can vary from system to system. On occasion, this
-manual refers to initialization and example files. Throughout
-this manual, we refer to input files relative to the top-directory
-of the source archive. For example,
-@file{input/@/lsr/@/dirname/@/bla@/.ly} may refer to the file
-@file{lilypond@/2.x.y/@/input/@/lsr/@/dirname/@/bla@/.ly}. On
-binary packages for the UNIX platform, the documentation and
-examples can typically be found somewhere below
+manual refers to initialization and example files. Throughout this
+manual, we refer to input files relative to the top-directory of the
+source archive. For example, @file{input/@/lsr/@/dirname/@/bla@/.ly}
+may refer to the file
+@file{lilypond@/2.x.y/@/input/@/lsr/@/dirname/@/bla@/.ly}. On binary
+packages for the UNIX platform, the documentation and examples can
+typically be found somewhere below
@file{/usr/@/share/@/doc/@/lilypond/}. Initialization files, for
-example @file{scm/@/lily@/.scm}, or
-@file{ly/@/engraver@/-init@/.ly}, are usually found in the
-directory @file{/usr/@/share/@/lilypond/}.
+example @file{scm/@/lily@/.scm}, or @file{ly/@/engraver@/-init@/.ly},
+are usually found in the directory @file{/usr/@/share/@/lilypond/}.
+For more details, see @ref{Other sources of information}.
@end itemize
-