]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/introduction.itely
($(outdir)/%.pdf): add DVIPS_FLAGS. This will
[lilypond.git] / Documentation / user / introduction.itely
1 \version "2.1.22"
2 @c -*-texinfo-*-
3
4
5 @node Introduction
6 @chapter Introduction
7
8 There are a lot of programs that let you print sheet music with a
9 computer, but most of them do not do good job.  Most computer
10 printouts have a bland, mechanical look, and are unpleasant to play
11 from.  If you agree with us on that, then you will like LilyPond: we
12 have tried to capture the original look of hand-engraved music.  We
13 have tuned our algorithms, font-designs, and program settings to make
14 the program produce prints that match the quality of the old editions
15 we love to see and love to play from.
16
17
18 @menu
19 * Notation in LilyPond ::       
20 * Engraving in LilyPond::       
21 * Typography and program architecture::  
22 * Music representation::        
23 * Example applications::        
24 * About this manual::           
25 @end menu
26
27
28 @node Notation in LilyPond
29 @section Notation in LilyPond
30
31
32 @cindex engraving
33 @cindex typography
34
35
36 Printing sheet music consists of two non-trivial tasks. First, one has
37 to master music notation: the science of knowing which symbols to use
38 for what. Second, one has to master music engraving: the art of
39 placing symbols such that the result looks pleasing.
40
41 Common music notation is a system of recording music that has evolved
42 over the past 1000 years. The form that is now in common use, dates
43 from the early renaissance. Although, the basic form (i.e. note heads on a
44 5-line staff) has not changed, the details still change to express the
45 innovations of contemporary notation.  Hence, it encompasses some 500
46 years of music. Its applications range from monophonic melodies to
47 monstruous counterpoint for large orchestras.
48
49 How can we get a grip on such a many-headed beast, and force it into
50 the confines of a computer program?  Our solution is to make a strict
51 distinction between notation, @emph{what} symbols to use, and
52 engraving, @emph{where} to put them.  Anything related to the second
53 question is considered ``engraving'' (i.e. typography).
54
55 For tackling the first problem, notation, we have broken up the
56 problem into digestible (and programmable) chunks: every type of
57 symbol is handled by a separate program module, a so-called plug-in.
58 Each plug-in are completely modular and independent, so each can be
59 developed and improved separately.  When put together, the plug-ins
60 can solve the music notation program in cooperation.  People that put
61 graphics to musical ideas are called copyists or engravers, so by
62 analogy, each plug-in is also called @code{engraver}.
63
64 In the following example, we see how we start out with a note head
65 engraver.
66
67 @lilypond[]
68 \include "engraver-example.lyinc"
69
70 \score { \topVoice
71 \paper {
72        \translator { \VoiceContext
73        \remove "Stem_engraver"
74        \remove "Phrasing_slur_engraver"
75        \remove "Slur_engraver"
76        \remove "Script_engraver"
77        \remove "Beam_engraver"
78        \remove "Auto_beam_engraver"
79        
80        }
81        \translator { \StaffContext
82        \remove "Accidental_engraver"
83        \remove "Key_engraver"
84        \remove "Clef_engraver"
85        \remove "Bar_engraver"
86        \remove "Time_signature_engraver"
87        \remove "Staff_symbol_engraver"
88        \consists "Pitch_squash_engraver"
89         }
90        
91
92 }
93 @end lilypond
94
95 Then a @code{Staff_symbol_engraver} adds the staff:
96
97 @lilypond[]
98 \include "engraver-example.lyinc"
99
100 \score { \topVoice
101 \paper {
102        \translator { \VoiceContext
103        \remove "Stem_engraver"
104        \remove "Phrasing_slur_engraver"
105        \remove "Slur_engraver"
106        \remove "Script_engraver"
107        \remove "Beam_engraver"
108        \remove "Auto_beam_engraver"
109        
110        }
111        \translator { \StaffContext
112        \remove "Accidental_engraver"
113        \remove "Key_engraver"
114        \remove "Clef_engraver"
115        \remove "Bar_engraver"
116        \consists "Pitch_squash_engraver"
117        \remove "Time_signature_engraver"
118         }
119        
120
121 }
122 @end lilypond
123
124  The @code{Clef_engraver} defines a reference point for the staff:
125
126 @lilypond[]
127 \include "engraver-example.lyinc"
128
129 \score { \topVoice
130 \paper {
131        \translator { \VoiceContext
132        \remove "Stem_engraver"
133        \remove "Phrasing_slur_engraver"
134        \remove "Slur_engraver"
135        \remove "Script_engraver"
136        \remove "Beam_engraver"
137        \remove "Auto_beam_engraver"
138        }
139        \translator { \StaffContext
140        \remove "Accidental_engraver"
141        \remove "Key_engraver"
142        \remove "Bar_engraver"
143        \remove "Time_signature_engraver"
144         }
145        
146
147 }
148 @end lilypond
149
150 And the @code{Stem_engraver} adds stems:
151
152 @lilypond[]
153 \include "engraver-example.lyinc"
154
155 \score { \topVoice
156 \paper {
157        \translator { \VoiceContext
158        \remove "Phrasing_slur_engraver"
159        \remove "Slur_engraver"
160        \remove "Script_engraver"
161        \remove "Beam_engraver"
162        \remove "Auto_beam_engraver"
163        }
164        \translator { \StaffContext
165        \remove "Accidental_engraver"
166        \remove "Key_engraver"
167        \remove "Bar_engraver"
168        \remove "Time_signature_engraver"
169         }
170
171 }
172 @end lilypond
173
174 The @code{Stem_engraver} is notified of any note head coming along.
175 Every time one (or more, for a chord) note head(s) is seen, a stem
176 object is created, and attached to the note head.
177
178 By adding engravers for beams, slurs, accents, accidentals, bar lines,
179 time signature, and key signature, we get a complete piece of
180 notation.
181
182 @lilypond[]
183 \include "engraver-example.lyinc"
184
185 \score { \topVoice }
186 @end lilypond
187
188
189
190 This system works well for monophonic music, but what about
191 polyphony? In polyphonic notation, many voices can share a staff.
192
193 @lilypond[]
194 \include "engraver-example.lyinc"
195 \score { \context Staff << \topVoice \\ \botVoice >> }
196 @end lilypond
197
198 In this situation, the accidentals and staff are shared, but the
199 stems, slurs, beams, etc. are private to each voice. Hence, engravers
200 should be grouped. The engravers for note head, stems, slurs, etc. go
201 into a group called ``Voice context,'' while the engravers for key,
202 accidental, bar, etc. go into a group called ``Staff context.'' In the
203 case of polyphony, a single Staff context contains more than one Voice
204 context.  In polyphonic notation, many voices can share a staff:
205 Similarly, more Staff contexts can be put into a single Score context.
206
207 @lilypond[]
208 \include "engraver-example.lyinc"
209 \score {
210 << \new Staff << \topVoice \\ \botVoice >>
211 \new Staff << \pah \\ \hoom >>
212   >>
213 }
214 @end lilypond
215
216
217
218 @node Engraving in LilyPond
219 @section Engraving in LilyPond
220
221
222 The term music engraving derives from the traditional process of music
223 printing.  Only a few decades ago, sheet music was made by cutting and
224 stamping the music into zinc or pewter plates, in mirror image. The plate
225 would be inked, and the depressions caused by the cutting and stamping
226 would hold ink.  An image was formed by pressing paper to the
227 plate. The stamping and cutting was completely done by hand. Making
228 corrections was cumbersome, so engraving had to be done correctly in
229 one go. Of course, this was a highly specialized skill, much more so
230 than the traditional process of printing books.
231 @cindex craftsmanship
232 @cindex master
233 In the traditional German system of craftsmanship six years of full-time
234 training, more than any other craft, were required before a student
235 could call himself a master of the art. After that many more years of
236 practical experience were needed to become an established music
237 engraver.  Even today, with the use of high-speed computers and
238 advanced software, music requires lots of manual fine tuning before it
239 is acceptable for publication.
240
241
242 Sheet music is performance material: everything is done to aid the
243 musician in letting him perform better.  Music often is far away from
244 its reader---it might be on a music stand. To make it clearly
245 readable, traditionally printed sheet music always uses bold symbols,
246 on heavy staff lines, and is printed on large sheets of paper.  This
247 ``strong'' look is also present in the horizontal spacing.  To
248 minimize the number of page breaks, (hand-engraved) sheet music is
249 spaced very tightly. Yet, by a careful distribution of white space,
250 the feeling of balance is retained, and a clutter of symbols is
251 avoided.
252
253
254 We have used these observations in designing LilyPond.  The images
255 below show the flat symbol. On the left, a scan from a Henle edition,
256 which was made by a computer, and in the center is the flat from a
257 hand engraved B@"{a}renreiter edition of the same music. The left scan
258 illustrates typical flaws of computer print: the symbol is much
259 lighter, the staff lines are thinner, and the glyph has a straight
260 layout with sharp corners. By contrast, the B@"{a}renreiter has a bold
261 and almost voluptuous rounded look.  Our flat symbol is designed
262 after, among others, this one.  It is tuned it to harmonize with the
263 thickness of our staff lines, which are also much thicker than Henle's
264 lines.
265
266 @multitable @columnfractions  .1 .3 .3 .3
267 @item @tab
268 @iftex
269 @image{henle-flat-bw,4cm}
270 @end iftex
271 @html
272 <img src=henle-flat-bw.png>
273 @end html
274
275 @tab
276 @iftex
277 @image{baer-flat-bw,4cm}
278 @end iftex
279 @html
280 <img  src=baer-flat-bw.png>
281 @end html
282
283 @tab
284 @iftex
285 @image{lily-flat-bw,4cm}
286 @end iftex
287 @html
288 <img src=lily-flat-bw.png>
289 @end html
290
291 @item @tab
292 Henle (2000)
293 @tab
294 B@"{a}renreiter (1950)
295 @tab
296 LilyPond Feta font (2003)
297
298 @end multitable
299
300
301 @cindex musical symbols
302 @cindex font
303 @cindex blackness
304 @cindex balance
305
306 In spacing, the distribution of space should reflect the durations
307 between notes.  However, adhering with mathematical precision to the
308 duration will lead to a poor result. Shown here is an example of a
309 motive, printed twice. It is printed using exact mathematical spacing,
310 and with some corrections. Can you spot which fragment is which?
311
312 @cindex optical spacing
313 @lilypond[noindent]
314     \score { \notes {
315       \override Staff.NoteSpacing   #'stem-spacing-correction
316         = #0.6
317       c'4 e''4 e'4 b'4 |
318        \stemDown b'4 e''4 a'4 e''4| \stemBoth
319        \bar "||"
320       \override Staff.NoteSpacing   #'stem-spacing-correction
321       = #0.0
322       \override Staff.StaffSpacing   #'stem-spacing-correction
323       = #0.0
324       c'4 e''4 e'4 b'4 |
325       \stemDown b'4 e''4 a'4 e''4|
326     }
327     \paper { raggedright = ##t } }
328 @end lilypond
329
330 @cindex regular rhythms
331 @cindex regular spacing
332
333 The fragment only uses quarter notes: notes that are played in a
334 constant rhythm. The spacing should reflect that. Unfortunately, the
335 eye deceives us a little: not only does it notice the distance between
336 note heads, it also takes into account the distance between
337 consecutive stems. As a result, the notes of an up-stem/down-stem
338 combination should be put farther apart, and the notes of a down-up
339 combination should be put closer together, all depending on the
340 combined vertical positions of the notes. The first two measures are
341 printed with this correction, the last two measures without. The notes
342 in the last two measures form down-stem/up-stems clumps of notes.
343
344 @node Typography and program architecture
345 @section Typography and program architecture
346
347 Producing good engraving requires skill and knowledge.  As the
348 previous examples show, there is a lot of subtlety involved in music
349 engraving, and unfortunately, only a small fraction of these details
350 are documented.  Master engravers must learn all these details from
351 experience or from other engravers, which is why it takes so long to
352 become a master.  As an engraver gets older and wiser, he will be able
353 to produce better and more complex pieces.  A similar situation is
354 present when putting typographical knowledge into a computer program.
355 It is not possible to come up with a definitive solution for a problem
356 at the first try. Instead, we start out with simple solution that
357 might cover 75% of the cases, and gradually refine that solution over
358 the course of months or years, so 90 or 95 % of the cases are
359 handled.
360
361 This has an important implication for the design of the program: at
362 any time, almost every piece of formatting code must be considered as
363 temporary. When the need arises, it is to be replaced a solution that
364 will cover even more cases.  A ``plug-in'' architecture is a clean
365 way to accomplish this. This is an architecture where new pieces of
366 code can be inserted in the program dynamically.  In such a program, a
367 new solution can be developed along-side the existing code. For
368 testing, it is plugged in, but for production use, the old solution is
369 used. The new module can be perfected separately until it is better
370 than the existing solution, at which point it replaces the old one.
371
372 Until that time, users must have a way to deal with imperfections:
373 these 25%, 10% or 5% of the cases that are not handled
374 automatically. In these cases, a user must be able to override
375 formatting decisions. To accomplish this we store decisions in generic
376 variables, and let the user manipulate thosed.  For example, consider
377 the following fragment of notation:
378
379 @lilypond
380 \score { \notes \relative c'' {
381 \stemUp
382     a4_\f f,8
383         }
384 \paper { raggedright = ##t }
385      }
386 @end lilypond
387
388 @noindent
389 The position of the forte symbol is slightly awkward, because it is
390 next to the low note, whereas dynamics should be below notes in
391 general. This may be remedied by inserting extra space between the
392 high note and the `f', as shown in this example:
393
394 @lilypond
395 \score { \notes \relative c'' {
396 \stemUp
397     \once\override DynamicLineSpanner    #'padding = #4.0 
398     a4_\f f,8
399         }
400 \paper { raggedright = ##t }
401      }
402 @end lilypond
403
404 This was achieved with the following input statement:
405 @example
406    \once \override DynamicLineSpanner    #'padding = #4.0 
407 @end example
408 It increases the amount of space (@code{padding}) between the note and
409 the dynamic symbol to 4.0 (which is measured in staff space, so 4.0
410 equals the height of a staff). The keyword @code{\once} indicates that
411 this is a tweak: it is only done one time.
412
413 Both design aspects, a plug-in architecture, and formatting variables,
414 are built on top of GUILE, an interpreter for the programming language
415 Scheme, which is a member of the LISP family. Variables are stored as
416 Scheme objects, and attached to graphical objects such as note heads
417 and stems. The variables are a means to adjust formatting details in
418 individual cases, but they are used in a more general manner.
419
420 Consider the case of a publisher that is not satisfied with the in the
421 default layout, and wants heavier stems. Normally, they are @code{1.3}
422 times the thickness of staff lines, but suppose that their editions
423 require them to be twice the thickness of the staff lines. The same
424 mechanism can be used to adjust a setting globally. By issuing the
425 following command, the entire piece is now formatted with thicker stems:
426 @example
427     \override Score.Stem   #'thickness = #3.0 
428 @end example
429
430 @lilypond
431 \score { \notes \relative c'' {
432     \override Score.Stem   #'thickness = #3.0 
433     \once\override DynamicLineSpanner    #'padding = #4.0 
434 \stemUp
435     a4_\f f,8
436         }
437 \paper { raggedright = ##t }
438      }
439 @end lilypond
440
441 @noindent
442 In effect, by setting these variables, users can define their own
443 layout styles.
444
445 ``Plug-ins'' are also implemented using Scheme.  A formatting
446 ``plug-in'' takes the form of a function written in Scheme (or a C++
447 function made available as a Scheme function), and it is also stored
448 in a variable.  For example, the placement of the forte symbol in the
449 example above is calculated by the function
450 @code{Side_position_interface::aligned_side}.  If we want to replace
451 this function by a more advanced one, we could issue
452 @example
453     \override DynamicLineSpanner   #'Y-offset-callbacks
454        = #(list gee-whiz-gadget)
455 @end example
456
457 @noindent
458 Now, the formatting process will trigger a call to our new
459 @code{gee-whiz-gadget} function when the position of the f symbol has
460 to be determined.
461
462 The full scope of this functionality certainly is intimidating, but
463 there is no need to fear: normally, it is not necessary to define
464 style-sheets or rewrite formatting functions. In fact, LilyPond gets a
465 lot of formatting right automatically, so adjusting individual layout
466 situations is not needed  often at all.
467
468
469 @node Music representation
470 @section Music representation
471
472
473 Our premise is that LilyPond is a system that does music formatting
474 completely automatically. Under this assumption, the output does not
475 have to be touched up. Consequently, an interactive display of the
476 output, where it is possible to reposition notation elements, is
477 superfluous.  This implies that the program should be a batch program:
478 the input is entered in a file, which then is @emph{compiled}, i.e.
479 put through the program.  The final output is produced as a file ready
480 to view or print. The compiler fills in all the details of the
481 notation, those details should be left out of the input file. In other
482 words, the input should mirror the content as closely as possible. In
483 the case of music notation the content is the music itself, so that is
484 what the input should consist of.
485
486 On paper this theory sounds very good. In practice, it opens a can of
487 worms. What really @emph{is} music? Many philosophical treatises must
488 have been written on the subject.  Instead of losing ourselves in
489 philosophical arguments over the essence of music, we have reversed
490 the question to yield a more practical approach. Our assumption is
491 that the printed score contains all of the music of piece. We build a
492 program that uses some input format to produce such a score. Over the
493 course of time, the program evolves. While this happens, we can remove
494 more and more elements of the input format: as the program improves,
495 it can fill in irrelevant details of the input by itself. At some
496 (hypothetical) point, the program is finished: there is no possibility
497 to remove any more elements from the syntax.  What we have left is by
498 definition exactly the musical meaning of the score.
499
500 There are also more practical concerns.  Our users have to key in the
501 music into the file directly, so the input format should have a
502 friendly syntax: a quarter note C is entered as @code{c4}, the code
503 @code{r8.}  signifies a dotted eighth rest.
504
505 Notes and rests form the simplest musical expressions in the input
506 syntax.  More complex constructs are produced by combining them into
507 compound structures. This is done in much the same way that complex
508 mathematical formulas are built from simple expressions such as
509 numbers and operators.
510
511 In effect, the input format is a language, and the rules of that
512 language can be specified succinctly with a so-called context-free
513 grammar.  The grammar formally specificies what types of input form
514 valid `sentences'.  Reading such languages, and splitting them into
515 grammatical structures is a problem with standard solutions.
516 Moreover, rigid definitions make the format easier to understand: a
517 concise formal definition permits a simple informal description.
518
519 The user-interface of LilyPond is its syntax.  That part is what users
520 see most.  As a results, some users think that music representation is
521 a very important or interesting problem. In reality, less than 10% of
522 the source code of the program handles reading and representing the
523 input, and they form the easy bits of the program.  In our opinion,
524 producing music notation, and formatting it prettily are much more
525 interesting and important than music representation: solving
526 these problems takes up most of the bulk of the code, and they are the
527 most difficult things to get right.
528
529 @node Example applications
530 @section Example applications
531
532 We have written LilyPond as an experiment of how to condense the art
533 of music engraving into a computer program. Thanks to all that hard
534 work, the program can now be used to perform useful tasks.  The
535 simplest application is printing notes:
536
537 @lilypond[relative=1]
538   \time 2/4 c4 c g'4 g a4 a g2  
539 @end lilypond
540
541 By adding chord names and lyrics we obtain a lead sheet:
542
543 @lilypond[raggedright]
544 \score { <<
545   \context ChordNames \chords  { c2 c f2 c }
546   \notes \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
547   \context Lyrics \lyrics  { twin4 kle twin kle lit tle star2 } >> }
548 @end lilypond
549
550 Polyphonic notation and piano music can also be printed. The following
551 example combines some more exotic constructs:
552
553 @lilypondfile{screech-boink.ly}
554
555 The fragments shown above have all been written by hand, but that is
556 not a requirement. Since the formatting engine is mostly automatic, it
557 can serve as an output means for other programs that manipulate
558 music. For example, it can also be used to convert databases of
559 musical fragments to images for use on websites and multimedia
560 presentations.
561
562 This manual also shows an application: the input format is plain text,
563 and can therefore be easily embedded in other text-based formats, such
564 as La@TeX{}, HTML or in the case of this manual, Texinfo.  By means of a
565 special program, the input fragments can be replaced by music images in
566 the resulting PostScript or HTML output files. This makes it easy to
567 mix music and text in documents.
568
569
570
571 @node About this manual
572 @section About this manual
573
574 The manual is divided into the following chapters:
575 @itemize @bullet
576 @item
577 @ifhtml The 
578 @end ifhtml
579 @emph{@ref{Tutorial}}
580 gives a  gentle introduction to typesetting music.
581 First time users should start here. 
582 @item
583 @ifhtml
584 The
585 @end ifhtml
586 @emph{@ref{Notation manual}}
587 discusses topics grouped by notation construct. Once you master the
588 basics, this is the place to look up details.
589 @item
590 @ifhtml
591 The
592 @end ifhtml
593 @emph{@ref{Literature list}}
594  contains a set of useful reference books, for those who wish to know
595  more  on notation and engraving. 
596 @item
597 @ifhtml
598  The
599  @end ifhtml
600 @emph{@ref{Technical manual}}
601 @c
602 discusses the general design of the program, and how to extend its
603 functionality.
604 @item
605 @ifhtml
606 The chapter
607 @end ifhtml
608 @emph{@ref{Invoking LilyPond}}  explains how to run LilyPond and its helper
609 programs.
610
611 @item
612 @ifhtml
613 The 
614 @end ifhtml
615 @emph{@ref{lilypond-book manual}}
616 explains  the details behind creating documents with in-line music
617 examples (like this manual).
618
619
620 @item
621 @ifhtml
622 The chapter 
623 @end ifhtml
624 @emph{@ref{Converting from other formats}}
625 explains how to run the conversion programs. These programs
626 are supplied with the LilyPond package, and convert a variety of music
627 formats to the @code{.ly}  format. In addition, this section explains
628 how to upgrade input files from previous versions of LilyPond.
629
630 @end itemize
631
632 Once you are an experienced user, you can use the manual as reference:
633 there is an extensive index@footnote{If you are looking for something,
634 and you cannot find it in the manual, that is considered a bug.  In
635 that case, please file a bug report.}, but the document is also
636 available in
637 @ifnothtml
638 a big HTML page,
639 @end ifnothtml 
640 @ifhtml
641 @uref{../lilypond.html, a big HTML page}
642 @end ifhtml
643 which can be searched easily using the search facility of a web
644 browser.
645 @cindex search in manual
646 @cindex using the manual
647
648
649 If you are not familiar with music notation or music terminology
650 (especially if you are a non-native English speaker), then it is
651 advisable to consult the glossary as well. The glossary explains
652 musical terms, and includes translations to various languages. It is a
653 @ifhtml
654 @uref{../music-glossary.html,separate document}.
655 @end ifhtml
656 @ifnothtml
657 separate document, available in HTML and PDF.
658 @end ifnothtml
659 @cindex idiom
660 @cindex jargon
661 @cindex terminology
662 @cindex foreign languages
663 @cindex language
664
665
666 This manual is not complete without a number of other documents. They
667 are not available in print, but should be included with the
668 documentation package for your platform:
669
670 @itemize @bullet
671 @item
672 Program reference
673 @ifhtml
674 (available @uref{../lilypond-internals/lilypond-internals.html,here})
675 @end ifhtml
676
677 The program reference is a set of heavily crosslinked HTML pages,
678 which documents the nit-gritty details of each and every LilyPond
679 class, object and function.  It is produced directly from the
680 formatting definitions used.
681
682 Almost all formatting functionality that is used internally, is
683 available directly to the user. For example, all variables that
684 control thicknesses, distances, etc, can be changed in input
685 files. There are a huge number of formatting options, and all of them
686 are described in the generated documentation.  Each section of the
687 notation manual has a @b{See also} subsection, which refers to the
688 the generated documentation.  In the HTML document, these subsections
689 have clickable links.
690
691 @item
692   Templates
693 @ifhtml
694 (available @uref{../../../input/template/out-www/collated-files.html,here})
695 @end ifhtml
696
697 After you have gone through the tutorial, you should be able to write
698 input files. In practice, writing files from scratch turns out to be
699 intimidating.  To give you a headstart, we have collected a number of
700 often-used formats in example files.  These files can be used as a
701 start: simply copy the template, and add notes in the appropriate
702 places.
703
704 @item
705   Various input examples
706 @ifhtml
707 (available @uref{../../../../input/test/out-www/collated-files.html,here})
708 @end ifhtml
709 @cindex snippets
710
711 These small files show various tips and tricks, and are available as a
712 big HTML document, with pictures and explanatory texts included.
713
714
715 @item
716   The regression tests
717 @ifhtml
718 (available @uref{../../../input/regression/out-www/collated-files.html,here})
719 @end ifhtml
720
721 This collection of files tests each notation and engraving feature of
722 LilyPond in one file. The collection is primarily there to help us
723 debug problems, but it can be instructive to see how we excercise the
724 program. The format is like the tips and tricks document.
725
726 @end itemize
727
728
729 In all HTML documents that have music fragments embedded, the LilyPond
730 input that was used to produce that image can be viewed by clicking
731 the image.
732
733 The location of the documentation files that are mentioned here can
734 vary from system to system.  On occasion, this manual refers to
735 initialization and example files.  Throughout this manual, we refer to
736 input files relative to the top-directory of the source archive. For
737 example, @file{input/test/bla.ly} may refer to the file
738 @file{lilypond-1.7.19/input/test/bla.ly}.  On binary packages for the
739 Unix platform, the documentation and examples can typically be found
740 somewhere below @file{/usr/share/doc/lilypond/}. Initialization files,
741 for example @file{scm/lily.scm}, or @file{ly/engraver-init.ly}, are
742 usually found in the directory @file{/usr/share/lilypond/}.
743
744 @cindex adjusting output
745 @cindex variables
746 @cindex properties
747 @cindex lilypond-internals
748 @cindex internal documentation
749 @cindex Scheme
750 @cindex extending lilypond
751 @cindex bugreport
752 @cindex index
753
754 Finally, this and all other manuals, are available online both as PDF
755 files and HTML from the web site, which can be found at
756 @uref{http://www.lilypond.org/}.
757
758 @cindex website 
759 @cindex URL