]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/introduction.itely
(Introduction): new node.
[lilypond.git] / Documentation / user / introduction.itely
1 @c -*-texinfo-*-
2
3 @node Introduction
4 @chapter Introduction
5
6 LilyPond is a system for formatting music prettily.  This chapter
7 discusses the backgrounds of LilyPond. It explains the problem of
8 printing music with computers, and our approach to solving those
9 problems.
10
11
12 @menu
13 * Engraving::                   
14 * Automated engraving::         
15 * What symbols to engrave?::    
16 * Music representation::        
17 * Example applications::        
18 * About this manual::           
19 @end menu
20
21
22 @node Engraving
23 @section Engraving
24
25 The art of music typography is called @emph{(plate) engraving}. The
26 term derives from the traditional process of music printing. Only a
27 few decades ago, sheet music was made by cutting and stamping the
28 music into zinc or pewter plates in mirror image. The plate would be
29 inked, and the depressions caused by the cutting and stamping would
30 hold ink. An image was formed by pressing paper to the plate. The
31 stamping and cutting was completely done by hand. Making corrections
32 was cumbersome, so engraving had to be done correctly in one go. Of
33 course, this was a highly specialized skill, and a craftsman had to
34 complete around 10 years of practical training before he could be a
35 master engraver.
36
37
38 Nowadays, all newly printed music is produced on computers. This has
39 obvious advantages: prints are cheaper to make, and editorial work can
40 be done over e-mail. Unfortunately, the pervasive use of computers has
41 also decreased the graphical quality of scores. Computer printouts
42 have a bland, mechanical look, which makes them unpleasant to play
43 from.
44
45 The images below illustrate the difference between traditional
46 engraving and typical computer output, and the third picture shows how
47 LilyPond mimics the traditional look. The left picture shows a scan
48 of a flat symbol from a Henle edition published in 2000. In the center
49 show symbol from a hand engraved B@"{a}renreiter edition of the same
50 music. The left scan illustrates typical flaws of computer print: the
51 staff line are thin, the weight of the symbol matches the light lines,
52 and the glyph has a straight layout with sharp corners. By contrast,
53 the B@"{a}renreiter has a bold and almost voluptuous rounded look.
54 Our flat symbol is designed after, among others, this one.  It is
55 rounded, and its weight harmonizes with the thickness of our staff
56 lines, which are also much thicker than Henle's lines.
57
58 @multitable @columnfractions  .1 .3 .3 .3
59 @item @tab
60 @ifnotinfo
61 @iftex
62 @image{henle-flat-bw,4cm}
63 @end iftex
64 @ifnottex
65 @image{henle-flat-bw,,,png}
66 @end ifnottex
67
68 @tab
69 @iftex
70 @image{baer-flat-bw,4cm}
71 @end iftex
72 @ifnottex
73 @image{baer-flat-bw,,,png}
74 @end ifnottex
75
76 @tab
77 @iftex
78 @image{lily-flat-bw,4cm}
79 @end iftex
80 @ifnottex
81 @image{lily-flat-bw,,,png}
82 @end ifnottex
83 @end ifnotinfo
84 @ifinfo
85 @c workaround for makeinfo-4.6: line breaks and multi-column cookies
86 @image{henle-flat-bw,,,png} @image{baer-flat-bw,,,png} @image{lily-flat-bw,,,png}
87 @end ifinfo
88
89 @item @tab
90 Henle (2000)
91 @tab
92 B@"{a}renreiter (1950)
93 @tab
94 LilyPond Feta font (2003)
95
96 @end multitable
97
98
99 @cindex musical symbols
100 @cindex font
101 @cindex blackness
102 @cindex balance
103
104 In spacing, the distribution of space should reflect the durations
105 between notes.  However, many modern scores adhere to the durations
106 with mathematical precision, and that leads to a poor result. In the
107 next example, a motive is printed twice. It is printed using exact
108 mathematical spacing, and with some corrections. Can you spot which
109 fragment is which?
110
111 @cindex optical spacing
112 @lilypond[noindent]
113     \score { \notes {
114       \override Staff.NoteSpacing   #'stem-spacing-correction
115      = #0.6
116       c'4 e''4 e'4 b'4 |
117        \stemDown b'4 e''4 a'4 e''4| \stemBoth
118        \bar "||"
119       \override Staff.NoteSpacing   #'stem-spacing-correction
120    = #0.0
121       \override Staff.StaffSpacing   #'stem-spacing-correction
122    = #0.0
123       c'4 e''4 e'4 b'4 |
124       \stemDown b'4 e''4 a'4 e''4|
125     }
126     \paper { raggedright = ##t } }
127 @end lilypond
128
129 @cindex regular rhythms
130 @cindex regular spacing
131
132 The fragment only uses quarter notes: notes that are played in a
133 constant rhythm. The spacing should reflect that. Unfortunately, the
134 eye deceives us a little: not only does it notice the distance between
135 note heads, it also takes into account the distance between
136 consecutive stems. As a result, the notes of an up-stem/down-stem
137 combination should be put farther apart, and the notes of a down-up
138 combination should be put closer together, all depending on the
139 combined vertical positions of the notes. The first two measures are
140 printed with this correction, the last two measures without. The notes
141 in the last two measures form down-stem/up-stem clumps of notes.
142
143 @cindex typography
144
145 Musicians are usually more absorbed with performing the music than
146 with studying its looks, so this nitpicking about typographical
147 details may seem academical. That is not justified. In larger pieces
148 with monotonous rhythms, spacing corrections lead to subtle variations
149 in the layout of every line, giving each one a distinct visual
150 signature. Without this signature, all lines would look the same, they
151 become like a labyrinth. If the musician looks away once or has a
152 lapse in his concentration, he will be lost on the page.
153
154 Similarly, the strong visual look of bold symbols on heavy staff lines
155 stands out better when music is far away from reader, for example, if
156 it is on a music stand.  A careful distribution of white space allows
157 music to be set very tightly without cluttering symbols together.  The
158 result minimizes the number of page turns,
159
160 This is a common characteristic of typography. Layout should be
161 pretty, not only for its own sake, but especially because it helps the
162 reader in his task. For performance material like sheet music, this is
163 doubly important: musicians have a limited amount of attention. The
164 less attention they need for reading, the more they can focus on
165 playing itself. In other words, better typography translates to better
166 performances.
167
168 Hopefully, these examples also demonstrate that music typography is an
169 art that is subtle and complex, and to produce it requires
170 considerable expertise, which musicians usually do not have.  LilyPond
171 is our effort to bring the graphical excellence of hand-engraved music
172 to the computer age, and make it available to normal musicians.  We
173 have tuned our algorithms, font-designs, and program settings to
174 produce prints that match the quality of the old editions we love to
175 see and love to play from.
176
177
178
179
180 @node Automated engraving
181 @section Automated engraving
182
183 How do we go about implementing typography?  If craftsmen need over
184 ten years to become true masters, how could we simple hackers ever
185 write a program to take over their jobs?
186
187 The answer is: we cannot. Typography relies on human judgment of
188 appearance, so people cannot be replaced ultimately. However, much of
189 the dull work can be automated. If LilyPond solves most of the common
190 situations correctly, then this will be a huge improvement over
191 existing software. The remaining cases can be tuned by hand. Over the
192 course of years, the software can be refined to do more and more
193 automatically, so manual overrides are less and less necessary.
194
195 When we started, we wrote the program in C++. With this design, the
196 program functionality was set in stone stone by us developers. That
197 proved to be unsatisfactory:
198
199
200 @itemize @bullet
201 @item When LilyPond makes mistakes,
202  users need to override formatting decisions.  Therefore, the user
203 must access to the formatting engine. Hence, rules and settings cannot
204 be fixed by us at compile time, but they must be accessible for users
205 at run-time.
206
207 @item Engraving is a matter of visual judgment, and therefore a matter of
208 taste. As knowledgeable as we are, users can disagree with our
209 personal decisions. Therefore, the definitions of typographical style
210 must also be accessible to the user.
211
212 @item  Finally, we continually refine the formatting algorithms, so we
213 need a flexible approach to rules. The C++ language forces a certain
214 method of grouping rules that do not match well with how music
215 notation works.
216
217 @end itemize
218
219 The formatting architecture of LilyPond addresses these needs.  It is
220 built around the notion graphical objects, carrying variables.  The
221 architecture encompasses formatting rules, typographical style and
222 individual formatting decisions.
223
224 Variables control layout decisions. For example, many objects have a
225 direction variable that encodes the choice between up and down (or
226 left and right). Here you see two chords, with accents and
227 arpeggio. In the first chord, the objects have all directions down (or
228 left). The second chord has all directions up (right).
229
230 @lilypond[raggedright,relative=1]
231 \new Score \with {
232          \override SpacingSpanner #'spacing-increment = #3
233          \override TimeSignature #'transparent = ##t 
234 } {
235         \stemDown 
236         <e g b>4_>-\arpeggio
237
238         \override Arpeggio #'direction = #RIGHT
239         \stemUp
240         <e g b>4^>-\arpeggio
241 }
242 @end lilypond
243
244 The process of formatting a score consists of reading and
245 writing object variables.
246
247 Some variables have a preset value. For example, the thickness of many
248 lines ---a characteristic of typographical style--are preset
249 variables. Changing them gives a different typographical impression:
250
251 @lilypond[]
252 frag= \notes {
253     \clef bass f8 as8
254     c'4-~ c'16 as g f e16 g bes c' des'4
255     }
256 \paper { raggedright = ##t }
257
258 \score {
259 <<   \new Staff \frag
260    \new Staff \with {
261         \override Beam #'thickness = #0.3
262         \override Stem #'thickness = #0.5
263         \override Bar #'thickness = #3.6
264         \override Tie #'thickness = #2.2
265         \override StaffSymbol #'thickness = #3.0
266         \override Tie #'extra-offset = #'(0 . 0.3)
267    } \frag
268    >>
269 }
270 @end lilypond
271
272 Formatting rules are also preset variables: each object has variables
273 containing procedures. These procedure perform the actual formatting,
274 and by substituting different ones, we can change behavior. In the
275 following example, the rule that note head objects use to produce
276 their symbol is changed during the music fragment:
277
278
279 @lilypond[raggedright]
280 #(define  (mc-squared gr org cur)
281   (let*
282       ((ifs (ly:grob-property gr 'interfaces))
283        (sp (ly:grob-property gr 'staff-position)) )
284   (if (and (memq 'note-head-interface ifs)
285            (memq sp '(-2 -3 -5)))
286       (begin
287         (ly:grob-set-property! gr 'print-function brew-new-markup-stencil)
288         (ly:grob-set-property! gr 'font-family 'roman)
289         (ly:grob-set-property!
290          gr 'text
291          (make-raise-markup -0.5
292                             (case sp
293                               ((-5) (make-simple-markup "m"))
294                               ((-3) (make-simple-markup "c "))
295                               ((-2) (make-smaller-markup (make-bold-markup "2")))
296                               (else (make-simple-markup "bla"))
297                               ))))
298       )))
299
300 \score {
301        \notes \context Voice \relative  c'
302        {
303        \stemUp
304        \set autoBeaming = ##f
305        \time 2/4 
306           { <d f g>4
307      \once \override NoteHead #'print-function 
308        = #Note_head::brew_ez_stencil
309      <d f g>
310      \once \override NoteHead #'style
311        = #'cross
312      <d f g>
313      \applyoutput #mc-squared
314      <d f g>
315      << { d8[ es-( fis^^ g] fis2-) }
316        \repeat unfold 5 { \applyoutput #mc-squared s8 }  >>
317
318    }
319               
320    }
321 }
322 @end lilypond
323
324
325
326 @node What symbols to engrave?
327 @section What symbols to engrave?
328
329 @cindex engraving
330 @cindex typography
331
332 The formatting process in LilyPond decides where to place
333 symbols. However, this can only be done once it is decided @emph{what}
334 symbols should be printed, in other words what notation to use.
335
336 Common music notation is a system of recording music that has evolved
337 over the past 1000 years. The form that is now in common use, dates
338 from the early renaissance. Although, the basic form (i.e. note heads on a
339 5-line staff) has not changed, the details still change to express the
340 innovations of contemporary notation.  Hence, it encompasses some 500
341 years of music. Its applications range from monophonic melodies to
342 monstrous counterpoint for large orchestras.
343
344 How can we get a grip on such a many-headed beast, and force it into
345 the confines of a computer program?  We have broken up the problem of
346 notation (as opposed to engraving, i.e. typography) into digestible
347 and programmable chunks: every type of symbol is handled by a separate
348 module, a so-called plug-in.  Each plug-in is completely modular and
349 independent, so each can be developed and improved separately.  People
350 that translate musical ideas to graphic symbols are called copyists or
351 engravers, so by analogy, each plug-in is called @code{engraver}.
352
353 In the following example, we see how we start out with a plug-in for
354 note heads, the @code{Note_heads_engraver}.
355
356 @lilypond[]
357 \include "engraver-example.lyinc"
358
359 \score { \topVoice
360 \paper {
361        \context { \VoiceContext
362        \remove "Stem_engraver"
363        \remove "Phrasing_slur_engraver"
364        \remove "Slur_engraver"
365        \remove "Script_engraver"
366        \remove "Beam_engraver"
367        \remove "Auto_beam_engraver"
368        
369        }
370        \context { \StaffContext
371        \remove "Accidental_engraver"
372        \remove "Key_engraver"
373        \remove "Clef_engraver"
374        \remove "Bar_engraver"
375        \remove "Time_signature_engraver"
376        \remove "Staff_symbol_engraver"
377        \consists "Pitch_squash_engraver"
378         }
379        
380
381 }
382 @end lilypond
383
384 Then a @code{Staff_symbol_engraver} adds the staff:
385
386 @lilypond[]
387 \include "engraver-example.lyinc"
388
389 \score { \topVoice
390 \paper {
391        \context { \VoiceContext
392        \remove "Stem_engraver"
393        \remove "Phrasing_slur_engraver"
394        \remove "Slur_engraver"
395        \remove "Script_engraver"
396        \remove "Beam_engraver"
397        \remove "Auto_beam_engraver"
398        
399        }
400        \context { \StaffContext
401        \remove "Accidental_engraver"
402        \remove "Key_engraver"
403        \remove "Clef_engraver"
404        \remove "Bar_engraver"
405        \consists "Pitch_squash_engraver"
406        \remove "Time_signature_engraver"
407         }
408        
409
410 }
411 @end lilypond
412
413  The @code{Clef_engraver} defines a reference point for the staff:
414
415 @lilypond[]
416 \include "engraver-example.lyinc"
417
418 \score { \topVoice
419 \paper {
420        \context { \VoiceContext
421        \remove "Stem_engraver"
422        \remove "Phrasing_slur_engraver"
423        \remove "Slur_engraver"
424        \remove "Script_engraver"
425        \remove "Beam_engraver"
426        \remove "Auto_beam_engraver"
427        }
428        \context { \StaffContext
429        \remove "Accidental_engraver"
430        \remove "Key_engraver"
431        \remove "Bar_engraver"
432        \remove "Time_signature_engraver"
433         }
434        
435
436 }
437 @end lilypond
438
439 And the @code{Stem_engraver} adds stems:
440
441 @lilypond[]
442 \include "engraver-example.lyinc"
443
444 \score { \topVoice
445 \paper {
446        \context { \VoiceContext
447        \remove "Phrasing_slur_engraver"
448        \remove "Slur_engraver"
449        \remove "Script_engraver"
450        \remove "Beam_engraver"
451        \remove "Auto_beam_engraver"
452        }
453        \context { \StaffContext
454        \remove "Accidental_engraver"
455        \remove "Key_engraver"
456        \remove "Bar_engraver"
457        \remove "Time_signature_engraver"
458         }
459
460 }
461 @end lilypond
462
463 The @code{Stem_engraver} is notified of any note head coming along.
464 Every time one (or more, for a chord) note head is seen, a stem
465 object is created and connected to the note head.
466
467 By adding engravers for beams, slurs, accents, accidentals, bar lines,
468 time signature, and key signature, we get a complete piece of
469 notation.
470
471 @lilypond[]
472 \include "engraver-example.lyinc"
473
474 \score { \topVoice }
475 @end lilypond
476
477
478
479 This system works well for monophonic music, but what about
480 polyphony? In polyphonic notation, many voices can share a staff.
481
482 @lilypond[]
483 \include "engraver-example.lyinc"
484 \score { \context Staff << \topVoice \\ \botVoice >> }
485 @end lilypond
486
487 In this situation, the accidentals and staff are shared, but the
488 stems, slurs, beams, etc. are private to each voice. Hence, engravers
489 should be grouped. The engravers for note heads, stems, slurs, etc. go
490 into a group called ``Voice context,'' while the engravers for key,
491 accidental, bar, etc. go into a group called ``Staff context.'' In the
492 case of polyphony, a single Staff context contains more than one Voice
493 context.  In polyphonic notation, many voices can share a staff:
494 Similarly, more Staff contexts can be put into a single Score context.
495
496 @lilypond[]
497 \include "engraver-example.lyinc"
498 \score {
499 << \new Staff << \topVoice \\ \botVoice >>
500 \new Staff << \pah \\ \hoom >>
501   >>
502 }
503 @end lilypond
504
505 @node Music representation
506 @section Music representation
507
508 Ideally, the input format for any high-level formatting system is an
509 abstract description of the content. In this case, that would be the
510 music itself. This poses a formidable problem: how can we define what
511 music really is? Instead of trying to find an answer, we have reversed
512 the question.  We write a program capable of producing sheet music,
513 and adjust the format to be as lean as possible. When the format can
514 no longer be trimmed down, by definition we are left with content
515 itself.  Our program serves as a formal definition of a music
516 document.
517
518
519 The syntax is also the user-interface for LilyPond, hence it is easily typable, e.g.,
520 @example
521   c'4 d'8
522 @end example
523 Are a quarter note C (middle C) and eighth note D1 (D above middle C),
524 as in this example:
525
526 @lilypond[fragment]
527   c'4 d'8
528 @end lilypond
529
530 On a microscopic scale, such syntax is easy to use. On a larger scale,
531 syntax also needs structure. How else can you enter complex pieces
532 like symphonies and operas? The structure is formed by the concept of
533 music expressions: by combining small fragments of music into larger
534 ones, more complex music can be expressed. For example,
535
536 @lilypond[verbatim,fragment,relative=1]
537 c4
538 @end lilypond
539
540 Combine this simultaneously with two other notes by enclosing in << and >>.
541
542
543 @lilypond[verbatim,fragment,relative=1]
544   <<c4 d4 e4>>
545 @end lilypond
546
547
548         
549 This expression is put in sequence by enclosing it in braces, i.e.,
550
551 @verbatim
552    { <<c4 d4 e4>> f4  }
553 @end verbatim
554
555 @lilypond[relative=1]
556    \new Voice { <<c4 d4 e4>> f4  }
557 @end lilypond
558         
559 The above is another expression, and therefore, it many combined again
560 with a simultaneous expression (in this case, a half note).
561
562 @verbatim
563   << { <<c4 d4 e4>> f4 } g2 >> 
564 @end verbatim
565 @lilypond[fragment,relative=1]
566 << g2 \\ { <c d e>4 f4 }  >> 
567 @end lilypond
568         
569
570 Such recursive structures can be specified neatly and formally in a
571 context-free grammar. The parsing code is also generated from this
572 grammar. In other words, the syntax of LilyPond is clearly and
573 unambiguously defined.
574
575 User-interfaces and syntax are what people see and deal with
576 most. They are partly a matter of taste, and also subject of much
577 discussion. Although discussions on taste do have their merit, they
578 are not very productive. In the larger picture of LilyPond, the
579 importance of input syntax is small: inventing neat syntax is easy,
580 writing decent formatting code is much harder. This is also
581 illustrated by the line-counts for the respective components: parsing
582 and representation take up less than 10% of the code.
583
584
585 @node Example applications
586 @section Example applications
587
588 We have written LilyPond as an experiment of how to condense the art
589 of music engraving into a computer program. Thanks to all that hard
590 work, the program can now be used to perform useful tasks.  The
591 simplest application is printing notes:
592
593 @lilypond[relative=1]
594   \time 2/4 c4 c g'4 g a4 a g2  
595 @end lilypond
596
597 By adding chord names and lyrics we obtain a lead sheet:
598
599 @lilypond[raggedright]
600 \score { <<
601   \context ChordNames \chords  { c2 c f2 c }
602   \new Staff \notes \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
603   \context Lyrics \lyrics  { twin4 kle twin kle lit tle star2 } >> }
604 @end lilypond
605
606 Polyphonic notation and piano music can also be printed. The following
607 example combines some more exotic constructs:
608
609 @lilypondfile{screech-boink.ly}
610
611 The fragments shown above have all been written by hand, but that is
612 not a requirement. Since the formatting engine is mostly automatic, it
613 can serve as an output means for other programs that manipulate
614 music. For example, it can also be used to convert databases of
615 musical fragments to images for use on websites and multimedia
616 presentations.
617
618 This manual also shows an application: the input format is plain text,
619 and can therefore be easily embedded in other text-based formats, such
620 as La@TeX{}, HTML or in the case of this manual, Texinfo.  By means of a
621 special program, the input fragments can be replaced by music images in
622 the resulting PostScript or HTML output files. This makes it easy to
623 mix music and text in documents.
624
625
626
627 @node About this manual
628 @section About this manual
629
630 The manual is divided into the following chapters:
631 @itemize @bullet
632 @item
633 @ifhtml The 
634 @end ifhtml
635 @emph{@ref{Tutorial}}
636 gives a  gentle introduction to typesetting music.
637 First time users should start here. 
638 @item
639 @ifhtml
640 The
641 @end ifhtml
642 @emph{@ref{Notation manual}}
643 discusses topics grouped by notation construct. Once you master the
644 basics, this is the place to look up details.
645 @item
646 @ifhtml
647 The
648 @end ifhtml
649 @emph{@ref{Literature list}}
650  contains a set of useful reference books, for those who wish to know
651  more  on notation and engraving. 
652 @item
653 @ifhtml
654  The
655  @end ifhtml
656 @emph{@ref{Changing defaults}}
657 @c
658 Explains how to fine tune layout.
659 @item
660 @ifhtml
661 The chapter
662 @end ifhtml
663 @emph{@ref{Invoking LilyPond}}  explains how to run LilyPond and its helper
664 programs.
665
666 @item
667 @ifhtml
668 The 
669 @end ifhtml
670 @emph{@ref{lilypond-book manual}}
671 explains  the details behind creating documents with in-line music
672 examples (like this manual).
673
674
675 @item
676 @ifhtml
677 The chapter 
678 @end ifhtml
679 @emph{@ref{Converting from other formats}}
680 explains how to run the conversion programs. These programs
681 are supplied with the LilyPond package, and convert a variety of music
682 formats to the @code{.ly}  format. In addition, this section explains
683 how to upgrade input files from previous versions of LilyPond.
684
685 @end itemize
686
687 Once you are an experienced user, you can use the manual as reference:
688 there is an extensive index@footnote{If you are looking for something,
689 and you cannot find it in the manual, that is considered a bug.  In
690 that case, please file a bug report.}, but the document is also
691 available in
692 @ifnothtml
693 a big HTML page,
694 @end ifnothtml 
695 @ifhtml
696 @uref{../lilypond.html, a big HTML page}
697 @end ifhtml
698 which can be searched easily using the search facility of a web
699 browser.
700 @cindex search in manual
701 @cindex using the manual
702
703
704 If you are not familiar with music notation or music terminology
705 (especially if you are a non-native English speaker), then it is
706 advisable to consult the glossary as well. The glossary explains
707 musical terms, and includes translations to various languages. It is a
708 @ifhtml
709 @uref{../music-glossary.html,separate document}.
710 @end ifhtml
711 @ifnothtml
712 separate document, available in HTML and PDF.
713 @end ifnothtml
714 @cindex idiom
715 @cindex jargon
716 @cindex terminology
717 @cindex foreign languages
718 @cindex language
719
720
721 This manual is not complete without a number of other documents. They
722 are not available in print, but should be included with the
723 documentation package for your platform:
724
725 @itemize @bullet
726 @item
727 Program reference
728 @ifhtml
729 (available @uref{../lilypond-internals/lilypond-internals.html,here})
730 @end ifhtml
731
732 The program reference is a set of heavily cross linked HTML pages,
733 which documents the nit-gritty details of each and every LilyPond
734 class, object and function.  It is produced directly from the
735 formatting definitions used.
736
737 Almost all formatting functionality that is used internally, is
738 available directly to the user. For example, all variables that
739 control thicknesses, distances, etc, can be changed in input
740 files. There are a huge number of formatting options, and all of them
741 are described in the generated documentation.  Each section of the
742 notation manual has a @b{See also} subsection, which refers to the
743 the generated documentation.  In the HTML document, these subsections
744 have clickable links.
745
746 @item
747   Templates
748 @ifhtml
749 (available @uref{../../../input/template/out-www/collated-files.html,here})
750 @end ifhtml
751
752 After you have gone through the tutorial, you should be able to write
753 input files. In practice, writing files from scratch turns out to be
754 intimidating.  To give you a head start, we have collected a number of
755 often-used formats in example files.  These files can be used as a
756 start: simply copy the template, and add notes in the appropriate
757 places.
758
759 @item
760   Various input examples
761 @ifhtml
762 (available @uref{../../../../input/test/out-www/collated-files.html,here})
763 @end ifhtml
764 @cindex snippets
765
766 These small files show various tips and tricks, and are available as a
767 big HTML document, with pictures and explanatory texts included.
768
769
770 @item
771   The regression tests
772 @ifhtml
773 (available @uref{../../../input/regression/out-www/collated-files.html,here})
774 @end ifhtml
775
776 This collection of files tests each notation and engraving feature of
777 LilyPond in one file. The collection is primarily there to help us
778 debug problems, but it can be instructive to see how we exercise the
779 program. The format is like the tips and tricks document.
780
781 @end itemize
782
783
784 In all HTML documents that have music fragments embedded, the LilyPond
785 input that was used to produce that image can be viewed by clicking
786 the image.
787
788 The location of the documentation files that are mentioned here can
789 vary from system to system.  On occasion, this manual refers to
790 initialization and example files.  Throughout this manual, we refer to
791 input files relative to the top-directory of the source archive. For
792 example, @file{input/test/bla.ly} may refer to the file
793 @file{lilypond-1.7.19/input/test/bla.ly}.  On binary packages for the
794 Unix platform, the documentation and examples can typically be found
795 somewhere below @file{/usr/share/doc/lilypond/}. Initialization files,
796 for example @file{scm/lily.scm}, or @file{ly/engraver-init.ly}, are
797 usually found in the directory @file{/usr/share/lilypond/}.
798
799 @cindex adjusting output
800 @cindex variables
801 @cindex properties
802 @cindex lilypond-internals
803 @cindex internal documentation
804 @cindex Scheme
805 @cindex extending lilypond
806 @cindex bug report
807 @cindex index
808
809 Finally, this and all other manuals, are available online both as PDF
810 files and HTML from the web site, which can be found at
811 @uref{http://www.lilypond.org/}.
812
813 @cindex website 
814 @cindex URL