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
@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,
correction, the lower two measures without, forming
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
@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?
@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
(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
\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
@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
@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.
@node About the Music Glossary
@unnumberedsubsec About the Music Glossary
+@cindex Music Glossary
@cindex idiom
@cindex jargon
@cindex terminology
@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.
@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.
@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
@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
details of each and every LilyPond class, object, and function.