31
26
ink. An image was formed by pressing paper to the plate. The
32
27
stamping and cutting was completely done by hand. Making a correction
33
28
was cumbersome, if possible at all, so the engraving had to be perfect
34
in one go. Engraving was a highly specialized skill, a craftsman had
35
to complete around ten years of practical training before he could be
29
in one go. Engraving was a highly specialized skill; a craftsman had
30
to complete around five years of training before earning the title of
31
master engraver, and another five years of experience were
32
necessary to become truly skilled.
38
34
Nowadays, all newly printed music is produced with computers. This
39
has obvious advantages; prints are cheaper to make, editorial work can
40
be delivered by email. Unfortunately, the pervasive use of computers
41
has also decreased the graphical quality of scores. Computer
42
printouts have a bland, mechanical look, which makes them unpleasant
35
has obvious advantages; prints are cheaper to make, and editorial work
36
can be delivered by email. Unfortunately, the pervasive use of
37
computers has also decreased the graphical quality of scores.
38
Computer printouts have a bland, mechanical look, which makes them
39
unpleasant to play from.
46
42
@c introduce illustrating aspects of engraving, font...
47
43
The images below illustrate the difference between traditional
48
44
engraving and typical computer output, and the third picture shows how
49
45
LilyPond mimics the traditional look. The left picture shows a scan
50
of a flat symbol from a Henle edition published in 2000. In the
51
center show symbol from a hand engraved B@"{a}renreiter edition of the
46
of a flat symbol from an edition published in 2000. The center
47
depicts a symbol from a hand-engraved B@"{a}renreiter edition of the
52
48
same music. The left scan illustrates typical flaws of computer
53
49
print: the staff lines are thin, the weight of the flat symbol matches
54
50
the light lines and it has a straight layout with sharp corners. By
55
51
contrast, the B@"{a}renreiter flat has a bold, almost voluptuous
56
52
rounded look. Our flat symbol is designed after, among others, this
57
53
one. It is rounded, and its weight harmonizes with the thickness of
58
our staff lines, which are also much thicker than Henle's lines.
54
our staff lines, which are also much thicker than lines in the
60
@multitable @columnfractions .05 .3 .3 .3 .05
57
@multitable @columnfractions .05 .3 .3 .3 .05
64
@image{henle-flat-bw,4cm}
67
@image{henle-flat-bw,,,png}
72
@image{baer-flat-bw,4cm}
75
@image{baer-flat-bw,,,png}
80
@image{lily-flat-bw,4cm}
61
@image{henle-flat-gray,,8cm}
64
@image{henle-flat-gray,,,png}
69
@image{baer-flat-gray,,8.4cm}
72
@image{baer-flat-gray,,,png}
77
@image{lily-flat-bw,,8cm}
83
80
@image{lily-flat-bw,,,png}
106
104
@c introduce illustrating aspects of engraving, spacing...
107
105
In spacing, the distribution of space should reflect the durations
108
106
between notes. However, many modern scores adhere to the durations
109
with mathematical precision, which leads to a poor result. In the
107
with mathematical precision, which leads to poor results. In the
110
108
next example a motive is printed twice. It is printed once using
111
109
exact mathematical spacing, and once with corrections. Can you
112
110
spot which fragment is which?
114
112
@cindex optical spacing
115
@lilypond[quote,noindent]
118
\override Staff.NoteSpacing #'stem-spacing-correction = #0.6
120
\stemDown b'4 e''4 a'4 e''4 | \bar "||"
121
\override Staff.NoteSpacing #'stem-spacing-correction = #0.0
122
\override Staff.StaffSpacing #'stem-spacing-correction = #0.0
123
\stemBoth c'4 e''4 e'4 b'4 |
124
\stemDown b'4 e''4 a'4 e''4 |
126
\paper { raggedright = ##t }
113
@c file spacing-optical.
114
@c need to include it here, because we want two images.
135
\override NoteSpacing #'stem-spacing-correction = #0.6
160
\override NoteSpacing #'stem-spacing-correction = #0.0
161
\override NoteSpacing #'same-direction-correction = #0.0
162
\override StaffSpacing #'stem-spacing-correction = #0.0
134
172
constant rhythm. The spacing should reflect that. Unfortunately, the
135
173
eye deceives us a little; not only does it notice the distance between
136
174
note heads, it also takes into account the distance between
137
consecutive stems. As a result, the notes of an up-stem/down-stem
138
combination should be put farther apart, and the notes of a down-up
175
consecutive stems. As a result, the notes of an up-stem/@/down-stem
176
combination should be put farther apart, and the notes of a
139
178
combination should be put closer together, all depending on the
140
179
combined vertical positions of the notes. The first two measures are
141
180
printed with this correction, the last two measures without. The notes
142
in the last two measures form down-stem/up-stem clumps of notes.
181
in the last two measures form down-stem/@/up-stem clumps of notes.
144
183
@cindex typography
146
185
Musicians are usually more absorbed with performing than with studying
147
the looks of piece of music; nitpicking about typographical details
186
the looks of a piece of music, so nitpicking about typographical details
148
187
may seem academical. But it is not. In larger pieces with monotonous
149
188
rhythms, spacing corrections lead to subtle variations in the layout
150
189
of every line, giving each one a distinct visual signature. Without
151
this signature all lines would look the same, they become like a
152
labyrinth. If the musician looks away once or has a lapse in his
153
concentration, he will be lost on the page.
190
this signature all lines would look the same, and they become like a
191
labyrinth. If a musician looks away once or has a lapse in
192
concentration, the lines might lose their place on the page.
156
194
Similarly, the strong visual look of bold symbols on heavy staff lines
157
stands out better when music is far away from reader, for example, if
158
it is on a music stand. A careful distribution of white space allows
195
stands out better when the music is far away from the reader, for example,
196
if it is on a music stand. A careful distribution of white space allows
159
197
music to be set very tightly without cluttering symbols together. The
160
198
result minimizes the number of page turns, which is a great advantage.
162
200
This is a common characteristic of typography. Layout should be
163
201
pretty, not only for its own sake, but especially because it helps the
164
reader in his task. For performance material like sheet music, this is
165
doubly important: musicians have a limited amount of attention. The
202
reader in her task. For performance material like sheet music, this is
203
of double importance: musicians have a limited amount of attention. The
166
204
less attention they need for reading, the more they can focus on
167
playing itself. In other words, better typography translates to better
205
playing the music. In other words, better typography translates to better
170
Hopefully, these examples also demonstrate that music typography is an
171
art that is subtle and complex, and to produce it requires
172
considerable expertise, which musicians usually do not have. LilyPond
173
is our effort to bring the graphical excellence of hand-engraved music
174
to the computer age, and make it available to normal musicians. We
175
have tuned our algorithms, font-designs, and program settings to
176
produce prints that match the quality of the old editions we love to
177
see and love to play from.
208
These examples demonstrate that music typography is an art that is
209
subtle and complex, and that producing it requires considerable
210
expertise, which musicians usually do not have. LilyPond is our
211
effort to bring the graphical excellence of hand-engraved music to the
212
computer age, and make it available to normal musicians. We have
213
tuned our algorithms, font-designs, and program settings to produce
214
prints that match the quality of the old editions we love to see and
187
225
write a program to take over their jobs?
189
227
The answer is: we cannot. Typography relies on human judgment of
190
appearance, so people cannot be replaced ultimately. However, much of
228
appearance, so people cannot be replaced completely. However, much of
191
229
the dull work can be automated. If LilyPond solves most of the common
192
230
situations correctly, this will be a huge improvement over existing
193
231
software. The remaining cases can be tuned by hand. Over the course
194
of years, the software can be refined to do more and more
232
of years, the software can be refined to do more and more things
195
233
automatically, so manual overrides are less and less necessary.
197
When we started we wrote the LilyPond program entirely in the C++
198
programming language, the program's functionality was set in stone by
235
When we started, we wrote the LilyPond program entirely in the C++
236
programming language; the program's functionality was set in stone by
199
237
the developers. That proved to be unsatisfactory for a number of
203
241
@item When LilyPond makes mistakes,
204
users need to override formatting decisions. Therefore, the user
205
must access to the formatting engine. Hence, rules and settings cannot
206
be fixed by us at compile time, but they must be accessible for users
242
users need to override formatting decisions. Therefore, the user must
243
have access to the formatting engine. Hence, rules and settings cannot
244
be fixed by us at compile-time but must be accessible for users at
209
247
@item Engraving is a matter of visual judgment, and therefore a matter of
210
248
taste. As knowledgeable as we are, users can disagree with our
211
249
personal decisions. Therefore, the definitions of typographical style
212
250
must also be accessible to the user.
214
@item Finally, we continually refine the formatting algorithms, so we
252
@item Finally, we continually refine the formatting algorithms, so we
215
253
need a flexible approach to rules. The C++ language forces a certain
216
254
method of grouping rules that do not match well with how music
221
These problems have been addressed by integrating the GUILE
222
interpreter for the Scheme programming language and rewriting parts of
223
LilyPond in Scheme. The new, flexible formatting is built around the
258
These problems have been addressed by integrating an interpreter for
259
the Scheme programming language and rewriting parts of LilyPond in
260
Scheme. The current formatting architecture is built around the
224
261
notion of graphical objects, described by Scheme variables and
225
262
functions. This architecture encompasses formatting rules,
226
263
typographical style and individual formatting decisions. The user has
229
266
Scheme variables control layout decisions. For example, many
230
267
graphical objects have a direction variable that encodes the choice
231
268
between up and down (or left and right). Here you see two chords,
232
with accents and arpeggio. In the first chord, the graphical objects
269
with accents and arpeggios. In the first chord, the graphical objects
233
270
have all directions down (or left). The second chord has all
234
271
directions up (right).
236
@lilypond[quote,raggedright,relative=1]
273
@lilypond[quote,ragged-right]
237
274
\new Score \with {
238
\override SpacingSpanner #'spacing-increment = #3
239
\override TimeSignature #'transparent = ##t
241
\stemDown <e g b>4_>-\arpeggio
242
\override Arpeggio #'direction = #RIGHT
243
\stemUp <e g b>4^>-\arpeggio
275
\override SpacingSpanner #'spacing-increment = #3
276
\override TimeSignature #'transparent = ##t
278
\stemDown <e g b>4_>-\arpeggio
279
\override Arpeggio #'direction = #RIGHT
280
\stemUp <e g b>4^>-\arpeggio
247
285
The process of formatting a score consists of reading and writing the
248
variables of graphical objects.
250
Some variables have a preset value. For example, the thickness of many
251
lines---a characteristic of typographical style---are preset
252
variables. Changing them gives a different typographical impression
254
@lilypond[quote,raggedright]
257
c'4-~ c'16 as g f e16 g bes c' des'4
286
variables of graphical objects. Some variables have a preset value. For
287
example, the thickness of many lines -- a characteristic of typographical
288
style -- is a variable with a preset value. You are free to alter this
289
value, giving your score a different typographical impression.
291
@lilypond[quote,ragged-right]
294
c'4-~ c'16 as g f e16 g bes c' des'4
263
299
\override Beam #'thickness = #0.3
264
300
\override Stem #'thickness = #0.5
265
301
\override Bar #'thickness = #3.6
266
302
\override Tie #'thickness = #2.2
267
303
\override StaffSymbol #'thickness = #3.0
268
304
\override Tie #'extra-offset = #'(0 . 0.3)
274
310
Formatting rules are also preset variables: each object has variables
275
containing procedures. These procedure perform the actual formatting,
276
and by substituting different ones, we can change behavior. In the
277
following example, the rule that note head objects use to produce
278
their symbol is changed during the music fragment
311
containing procedures. These procedures perform the actual
312
formatting, and by substituting different ones, we can change the
313
appearance of objects. In the following example, the rule which note
314
head objects are used to produce their symbol is changed during the music
280
@lilypond[quote,raggedright]
317
@lilypond[quote,ragged-right]
281
318
#(define (mc-squared grob orig current)
282
319
(let ((interfaces (ly:grob-property grob 'interfaces))
283
(pos (ly:grob-property grob 'staff-position)))
320
(pos (ly:grob-property grob 'staff-position)))
284
321
(if (and (memq 'note-head-interface interfaces)
285
(memq pos '(-2 -3 -5)))
287
(ly:grob-set-property! grob 'print-function brew-new-markup-stencil)
288
(ly:grob-set-property! grob 'font-family 'roman)
289
(ly:grob-set-property!
294
((-5) (make-simple-markup "m"))
295
((-3) (make-simple-markup "c "))
296
((-2) (make-smaller-markup (make-bold-markup "2")))
297
(else (make-simple-markup "bla")))))))))
322
(memq pos '(-2 -3 -5)))
324
(ly:grob-set-property! grob 'stencil ly:text-interface::print)
325
(ly:grob-set-property! grob 'font-family 'roman)
326
(ly:grob-set-property!
331
((-5) (make-simple-markup "m"))
332
((-3) (make-simple-markup "c "))
333
((-2) (make-smaller-markup (make-bold-markup "2")))
334
(else (make-simple-markup "bla")))))))))
300
\notes \context Voice \relative c' {
302
\set autoBeaming = ##f
305
\once \override NoteHead #'print-function = #Note_head::brew_ez_stencil
307
\once \override NoteHead #'style = #'cross
309
\applyoutput #mc-squared
336
\new Voice \relative c' {
338
\set autoBeaming = ##f
341
\once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
343
\once \override NoteHead #'style = #'cross
345
\applyOutput #mc-squared
312
348
{ d8[ es-( fis^^ g] fis2-) }
313
\repeat unfold 5 { \applyoutput #mc-squared s8 }
349
\repeat unfold 5 { \applyOutput #mc-squared s8 }
324
359
@cindex engraving
325
360
@cindex typography
327
The formatting process in LilyPond decides where to place
362
The formatting process decides where to place
328
363
symbols. However, this can only be done once it is decided @emph{what}
329
364
symbols should be printed, in other words what notation to use.
331
366
Common music notation is a system of recording music that has evolved
332
over the past 1000 years. The form that is now in common use, dates
333
from the early renaissance. Although, the basic form (i.e. note heads on a
334
5-line staff) has not changed, the details still change to express the
367
over the past 1000 years. The form that is now in common use dates
368
from the early renaissance. Although the basic form (i.e., note heads on a
369
5-line staff) has not changed, the details still evolve to express the
335
370
innovations of contemporary notation. Hence, it encompasses some 500
336
371
years of music. Its applications range from monophonic melodies to
337
monstrous counterpoint for large orchestras.
372
monstrous counterpoints for large orchestras.
339
374
How can we get a grip on such a many-headed beast, and force it into
340
the confines of a computer program? We have broken up the problem of
341
notation (as opposed to engraving, i.e. typography) into digestible
342
and programmable chunks: every type of symbol is handled by a separate
343
module, a so-called plug-in. Each plug-in is completely modular and
344
independent, so each can be developed and improved separately. People
345
that translate musical ideas to graphic symbols are called copyists or
346
engravers, so by analogy, each plug-in is called @code{engraver}.
375
the confines of a computer program? Our solution is to break up the
376
problem of notation (as opposed to engraving, i.e., typography) into
377
digestible and programmable chunks: every type of symbol is handled by
378
a separate module, a so-called plug-in. Each plug-in is completely
379
modular and independent, so each can be developed and improved
380
separately. Such plug-ins are called @code{engraver}s, by analogy with
381
craftsmen who translate musical ideas to graphic symbols.
348
383
In the following example, we see how we start out with a plug-in for
349
384
note heads, the @code{Note_heads_engraver}.
351
@lilypond[quote,raggedright]
352
\include "engraver-example.lyinc"
386
@lilypond[quote,ragged-right]
387
\include "engraver-example.ily"
359
394
\remove "Stem_engraver"
360
395
\remove "Phrasing_slur_engraver"
361
396
\remove "Slur_engraver"
362
397
\remove "Script_engraver"
363
398
\remove "Beam_engraver"
364
399
\remove "Auto_beam_engraver"
368
403
\remove "Accidental_engraver"
369
404
\remove "Key_engraver"
370
405
\remove "Clef_engraver"
468
503
The @code{Stem_engraver} is notified of any note head coming along.
469
504
Every time one (or more, for a chord) note head is seen, a stem
470
object is created and connected to the note head.
471
By adding engravers for beams, slurs, accents, accidentals, bar lines,
505
object is created and connected to the note head. By adding
506
engravers for beams, slurs, accents, accidentals, bar lines,
472
507
time signature, and key signature, we get a complete piece of
475
@lilypond[quote,raggedright]
476
\include "engraver-example.lyinc"
510
@lilypond[quote,ragged-right]
511
\include "engraver-example.ily"
477
512
\score { \topVoice }
480
515
This system works well for monophonic music, but what about
481
516
polyphony? In polyphonic notation, many voices can share a staff.
483
@lilypond[quote,raggedright]
484
\include "engraver-example.lyinc"
485
\score { \context Staff << \topVoice \\ \botVoice >> }
518
@lilypond[quote,ragged-right]
519
\include "engraver-example.ily"
520
\new Staff << \topVoice \\ \botVoice >>
488
In this situation, the accidentals and staff are shared, but the
489
stems, slurs, beams, etc. are private to each voice. Hence, engravers
490
should be grouped. The engravers for note heads, stems, slurs, etc. go
491
into a group called ``Voice context,'' while the engravers for key,
492
accidental, bar, etc. go into a group called ``Staff context.'' In the
493
case of polyphony, a single Staff context contains more than one Voice
494
context. In polyphonic notation, many voices can share a staff.
495
Similarly, more Staff contexts can be put into a single Score context
497
@lilypond[quote,raggedright]
498
\include "engraver-example.lyinc"
523
In this situation, the accidentals and staff are shared, but the stems,
524
slurs, beams, etc., are private to each voice. Hence, engravers should
525
be grouped. The engravers for note heads, stems, slurs, etc., go into a
526
group called `Voice context,' while the engravers for key, accidental,
527
bar, etc., go into a group called `Staff context.' In the case of
528
polyphony, a single Staff context contains more than one Voice context.
529
Similarly, multiple Staff contexts can be put into a single Score
530
context. The Score context is the top level notation context.
534
Program reference: @internalsref{Contexts}.
536
@lilypond[quote,ragged-right]
537
\include "engraver-example.ily"
501
\new Staff << \topVoice \\ \botVoice >>
502
\new Staff << \pah \\ \hoom >>
540
\new Staff << \topVoice \\ \botVoice >>
541
\new Staff << \pah \\ \hoom >>
540
Combine this simultaneously with two other notes by enclosing in << and >>
584
Chords can be constructed with @code{<<} and @code{>>} enclosing the notes
586
@c < > is not a music expression,
587
@c so we use <<>> iso. <> to drive home the point of
588
@c expressions. Don't change this back --hwn.
545
593
@lilypond[quote,fragment,relative=1]
546
\new Voice { <<c4 d4 e4>> }
594
\new Voice { <<c4 d4 e>> }
549
598
This expression is put in sequence by enclosing it in curly braces
599
@code{@{@tie{}@dots{}@tie{}@}}
553
@{ <<c4 d4 e4>> f4 @}
602
@{ f4 <<c4 d4 e4>> @}
556
@lilypond[quote,relative=1]
557
\new Voice { <<c4 d4 e4>> f4 }
605
@lilypond[quote,relative=1,fragment]
560
The above is another expression, and therefore, it many combined again
561
with a simultaneous expression; in this case, a half note
610
The above is also an expression, and so it may be combined
611
again with another simultaneous expression (a half note) using <<,
564
<< @{ <<c4 d4 e4>> f4 @} g2 >>
615
<< g2 \\ @{ f4 <<c4 d4 e4>> @} >>
566
618
@lilypond[quote,fragment,relative=2]
567
\new Voice { << g2 \\ { <c d e>4 f4 } >> }
619
\new Voice { << g2 \\ { f4 <<c d e>> } >> }
571
622
Such recursive structures can be specified neatly and formally in a
572
623
context-free grammar. The parsing code is also generated from this
589
640
We have written LilyPond as an experiment of how to condense the art
590
641
of music engraving into a computer program. Thanks to all that hard
591
642
work, the program can now be used to perform useful tasks. The
592
simplest application is printing notes
643
simplest application is printing notes.
594
@lilypond[quote,relative=1]
645
@lilypond[quote,relative=1,fragment]
595
646
\time 2/4 c4 c g'4 g a4 a g2
599
By adding chord names and lyrics we obtain a lead sheet
650
By adding chord names and lyrics we obtain a lead sheet.
601
@lilypond[quote,raggedright]
604
\context ChordNames \chords { c2 c f2 c }
605
\new Staff \notes \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
606
\context Lyrics \lyrics { twin4 kle twin kle lit tle star2 }
652
@lilypond[quote,ragged-right]
654
\chords { c2 c f2 c }
655
\new Staff \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
656
\new Lyrics \lyricmode { twin4 kle twin kle lit tle star2 }
612
660
Polyphonic notation and piano music can also be printed. The following
613
example combines some more exotic constructs
661
example combines some more exotic constructs.
615
@lilypondfile[quote,raggedright]{screech-boink.ly}
663
@lilypondfile[quote,ragged-right]{screech-boink.ly}
617
665
The fragments shown above have all been written by hand, but that is
618
666
not a requirement. Since the formatting engine is mostly automatic, it
643
691
@emph{@ref{Tutorial}}
644
gives a gentle introduction to typesetting music.
645
First time users should start here.
651
@emph{@ref{Notation manual}}
652
discusses topics grouped by notation construct. Once you master the
653
basics, this is the place to look up details.
692
gives a gentle introduction to typesetting music. First time
693
users should start here.
696
@emph{@ref{Working on LilyPond projects}}
697
demonstrates practical uses of LilyPond.
700
@emph{@ref{Running LilyPond}}
701
shows how to run LilyPond and its helper
702
programs. In addition, this section explains how to upgrade input
703
files from previous versions of LilyPond.
706
@emph{@ref{Basic notation}}
707
discusses topics grouped by notation construct. This section gives
708
details about basic notation that will be useful in almost any
712
@emph{@ref{Instrument-specific notation}}
713
discusses topics grouped by notation construct. This section gives
714
details about special notation that will only be useful for particular
715
instrument (or vocal) groups.
718
@emph{@ref{Advanced notation}}
719
discusses topics grouped by notation construct. This section gives
720
details about complicated or unusual notation.
659
723
@emph{@ref{Changing defaults}}
660
724
explains how to fine tune layout.
665
@emph{@ref{Invoking LilyPond}} shows how to run LilyPond and its helper
672
@emph{@ref{lilypond-book manual}}
673
explains the details behind creating documents with in-line music
674
examples (like this manual).
727
@emph{@ref{Global issues}}
728
discusses issues which affect the global output, such as selecting
729
paper size or which MIDI instruments to use.
732
@emph{@ref{LilyPond-book}} explains the details behind creating
733
documents with in-line music examples, like this manual.
680
736
@emph{@ref{Converting from other formats}}
681
737
explains how to run the conversion programs. These programs
682
738
are supplied with the LilyPond package, and convert a variety of music
683
formats to the @code{.ly} format. In addition, this section explains
684
how to upgrade input files from previous versions of LilyPond.
739
formats to the @code{.ly} format.
690
745
@emph{@ref{Literature list}}
691
contains a set of useful reference books, for those who wish to know
692
more on notation and engraving.
746
contains a set of useful reference books for those who wish to know
747
more on notation and engraving.
750
@emph{@ref{Example templates}}
751
provides templates of LilyPond pieces. Just cut and paste a
752
template into a file, add notes, and you're done!
696
757
Once you are an experienced user, you can use the manual as reference:
697
758
there is an extensive index@footnote{If you are looking for something,
698
759
and you cannot find it in the manual, that is considered a bug. In
699
760
that case, please file a bug report.}, but the document is also
705
@uref{../lilypond.html, a big HTML page}
766
@uref{source/Documentation/user/lilypond.html, one big page},
707
768
which can be searched easily using the search facility of a web
713
774
@c add/integrate glossary, put in list above
714
775
If you are not familiar with music notation or music terminology
715
776
(especially if you are a non-native English speaker), it is advisable
716
to consult the glossary as well. The glossary explains musical terms,
717
and includes translations to various languages. It is a
719
@uref{../music-glossary.html,separate document}.
722
separate document, available in HTML and PDF.
777
to consult the glossary as well.
779
The music glossary explains musical terms, and includes translations
780
to various languages. It is a separate document, available in HTML
784
The @ref{Top,Music glossary,,music-glossary}, explains musical terms and
785
includes translations to various languages. It is also available in
726
790
@cindex terminology
731
795
This manual is not complete without a number of other documents. They
732
796
are not available in print, but should be included with the
733
documentation package for your platform:
797
documentation package for your platform
737
802
Program reference
739
(available @uref{../lilypond-internals/lilypond-internals.html,here})
805
@ref{Top,Program reference,,lilypond-internals}.
742
808
The program reference is a set of heavily cross linked HTML pages,
743
which documents the nit-gritty details of each and every LilyPond
744
class, object and function. It is produced directly from the
809
which document the nitty-gritty details of each and every LilyPond
810
class, object, and function. It is produced directly from the
745
811
formatting definitions used.
747
813
Almost all formatting functionality that is used internally, is
748
814
available directly to the user. For example, all variables that
749
control thicknesses, distances, etc, can be changed in input
815
control thickness values, distances, etc., can be changed in input
750
816
files. There are a huge number of formatting options, and all of them
751
are described in the generated documentation. Each section of the
817
are described in this document. Each section of the
752
818
notation manual has a @b{See also} subsection, which refers to the
753
the generated documentation. In the HTML document, these subsections
819
generated documentation. In the HTML document, these subsections
754
820
have clickable links.
759
(available @uref{../../../../input/template/out-www/collated-files.html,here})
762
After you have gone through the tutorial, you should be able to write
763
input files. In practice, writing files from scratch turns out to be
764
intimidating. To give you a head start, we have collected a number of
765
often-used formats in example files. These files can be used as a
766
start; simply copy the template and add notes in the appropriate
770
Various input examples
772
(available @uref{../../../../input/test/out-www/collated-files.html,here})
825
Various input examples.
828
@c Works, but link name is not so nice; so write-out macro
829
@c @inputfileref{input/test,Various input examples}.
830
@uref{source/input/test/collated-files.html,Various input examples}.
776
833
This collection of files shows various tips and tricks, and is
777
834
available as a big HTML document, with pictures and explanatory texts
839
The regression tests.
783
(available @uref{../../../../input/regression/out-www/collated-files.html,here})
842
@c Works, but link name is not so nice; so write-out macro
843
@c @inputfileref{input/regression,The regression tests}.
844
@uref{source/input/regression/collated-files.html,The regression tests}.
786
847
This collection of files tests each notation and engraving feature of
787
848
LilyPond in one file. The collection is primarily there to help us
788
849
debug problems, but it can be instructive to see how we exercise the
789
program. The format is similar to the the tips and tricks document.
850
program. The format is similar to the tips and tricks document.
799
859
vary from system to system. On occasion, this manual refers to
800
860
initialization and example files. Throughout this manual, we refer to
801
861
input files relative to the top-directory of the source archive. For
802
example, @file{input/test/bla.ly} may refer to the file
803
@file{lilypond-1.7.19/input/test/bla.ly}. On binary packages for the
804
Unix platform, the documentation and examples can typically be found
805
somewhere below @file{/usr/share/doc/lilypond/}. Initialization files,
806
for example @file{scm/lily.scm}, or @file{ly/engraver-init.ly}, are
807
usually found in the directory @file{/usr/share/lilypond/}.
862
example, @file{input/@/test/@/bla@/.ly} may refer to the file
863
@file{lilypond@/-2.8.0/@/input/@/test/@/bla@/.ly}. On binary packages
864
for the Unix platform, the documentation and examples can typically be
865
found somewhere below @file{/usr/@/share/@/doc/@/lilypond/}.
866
Initialization files, for example @file{scm/@/lily@/.scm}, or
867
@file{ly/@/engraver@/-init@/.ly}, are usually found in the directory
868
@file{/usr/@/share/@/lilypond/}.
809
870
@cindex adjusting output
810
871
@cindex variables