]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/introduction.itely
* buildscripts/new-chords.py (help): add help text
[lilypond.git] / Documentation / user / introduction.itely
1 @c -*-texinfo-*-
2
3
4 @node Introduction
5 @chapter Introduction
6
7 There are a lot of programs that let you print sheet music with a
8 computer. Unfortunately, most of them do not do good job.  Most
9 computer printouts have a bland, mechanical look, and are unpleasant
10 to play from.  If you agree with us on that, than you will like
11 LilyPond: we have tried to capture the original look of hand-engraved
12 music in a program: we have tuned our algorithms, font-designs, and
13 program settings to make the output match that of the old editions
14 that we love to see and love to play from.
15
16
17 @menu
18 * Music notation and  engraving::  
19 * Notation and engraving in LilyPond::  
20 * Typography and program architecture::  
21 * Music representation::        
22 * Example applications::        
23 * About this manual::           
24 @end menu
25
26 @node Music notation and  engraving
27 @section Music notation and engraving
28
29
30
31 @cindex engraving
32 @cindex typography
33
34 Making sheet music may seem trivial, ``you print 5 lines, and then put
35 in the notes at different heights'', but as you learn more of it, the
36 opposite turns out to be true. One has to master two difficult
37 tasks. First, one has to master music notation: the science of knowing
38 which symbols to use when what. Second, one has to master music
39 engraving: the art of placing symbols such that the result looks
40 pleasing.
41
42 Common music notation has its roots in the medieval time. In this
43 time, monks started to write down hints that indicated how their
44 sacred music was sung. These hints, neumes, gradually became simpler,
45 and at some point became the note heads.  Lines were added to the
46 neumes, to indicate a reference pitch, which later became the staff.
47 Over many centuries, improvements and extensions were added, while
48 other concepts disappeared. For example, the neume notation did not
49 have an explicit notion of rhythm, but it did have @emph{custodes},
50 symbols at the end of the line to indicate the starting pitch of the
51 next line.  Mensural notation, a notation where each note head takes a
52 fixed amount of time, came into being together with the rise of
53 counterpoint in the early renaissance.  The graphic language of
54 notation is still under development; the innovations of contemporary
55 music require still newer and more complex notations.
56
57 The term music engraving derives from the traditional process of music
58 printing.  Only a few decades ago, sheet music was made by cutting and
59 stamping the music into zinc or pewter plates, mirrored. The plate
60 would be inked, and the depressions caused by the cutting and stamping
61 would hold ink.  An image was formed by pressing paper to the
62 plate. The stamping and cutting was completely done by hand. Making
63 corrections was cumbersome, so engraving had to be done correctly in
64 one go. Of course, this was a highly specialized skill, much more so
65 than the traditional process of printing books.
66 @cindex craftsmanship
67 @cindex master
68 In the traditional German system of  craftsmanship six years of full-time
69 training, more than any other craft, were required before a student
70 could call himself a master of the art. After that many more years of
71 practical experience were needed to become an established music
72 engraver.  Even today, with the use of high-speed computers and
73 advanced software, music requires lots of manual fine tuning before it
74 is acceptable for publication.
75
76 Sheet music is performance material: everything is done to aid the
77 musician in letting him perform better.  Music often is far away from
78 its reader---it might be on a music stand. To make it clearly
79 readable, traditionally printed sheet music always uses bold symbols,
80 on heavy staff lines, and is printed on large sheets of paper.  This
81 ``strong'' look is also present in the horizontal spacing.  To
82 minimize the number of page breaks, (hand-engraved) sheet music is
83 spaced very tightly. Yet, by a careful distribution of white space,
84 the feeling of balance is retained, and a clutter of symbols is
85 avoided.
86
87
88 @node Notation and engraving in LilyPond
89 @section Notation and engraving in LilyPond
90
91 Common music notation encompasses such a wide scope of music, and
92 therefore inherently is complex: there are many rules, and for every
93 rule there are exceptional situations where they do not apply.  The
94 result is that LilyPond cannot support each and every form of notation
95 in existence. Rather, we focus on a specific style and idiom: we take
96 inspiration from late-romantic music printed at the beginning of the
97 20th century. Most of the contemporary music after that, and most of
98 the music going back to 17th century can be written in this
99 idiom. That is not a fundamental limit, though. There is support for
100 some modern notation like clusters, and older notation, such as white
101 mensural and gregorian notation, is being worked on.
102
103 We have used these observations in designing LilyPond.  The images
104 below shows the flat symbol. On the left, a scan from a Henle edition,
105 which was made by a computer, and in the center is the flat from a
106 B@"{a}renreiter edition of the same music. The left scan illustrates
107 typical flaws of computer print: the symbol is much lighter, the staff
108 lines are thinner, and the glyph has a straight layout with sharp
109 corners. By contrast, the B@"{a}renreiter has a bold and almost
110 voluptuous rounded look.  Our flat symbol is designed after, among
111 others, this one.  It is tuned it to harmonize with the thickness of
112 our staff lines, which are also much thicker than Henle's lines.
113
114 @multitable @columnfractions  .1 .3 .3 .3
115 @item  @tab
116 @iftex
117 @image{henle-flat-bw,4cm}
118 @end iftex
119 @html
120 <img src=henle-flat-bw.png>
121 @end html
122
123 @tab
124 @iftex
125 @image{baer-flat-bw,4cm}
126 @end iftex
127 @html
128 <img  src=baer-flat-bw.png>
129 @end html
130
131 @tab
132 @iftex
133 @image{lily-flat-bw,4cm}
134 @end iftex
135 @html
136 <img src=lily-flat-bw.png>
137 @end html
138
139 @item
140 Henle (2000)
141 @tab
142 B@"{a}renreiter (1950)
143 @tab
144 LilyPond Feta font (2003)
145
146 @end multitable
147
148
149 @cindex musical symbols
150 @cindex font
151 @cindex blackness
152 @cindex balance
153
154 In spacing, the distribution of space should reflect the durations
155 between notes.  However, adhering with mathematical precision to the
156 duration will lead to a poor result. Shown here is an example of a
157 motive, printed twice. It is printed using exact mathematical spacing,
158 and with some corrections. Can you spot which fragment is which?
159
160 @cindex optical spacing
161 @lilypond[noindent]
162     \score { \notes {
163       \property Staff.NoteSpacing \set #'stem-spacing-correction
164         = #0.6
165       c'4 e''4 e'4 b'4 |
166        \stemDown b'4 e''4 a'4 e''4| \stemBoth
167        \bar "||"
168       \property Staff.NoteSpacing \override #'stem-spacing-correction
169       = #0.0
170       \property Staff.StaffSpacing \override #'stem-spacing-correction
171       = #0.0
172       c'4 e''4 e'4 b'4 |
173       \stemDown b'4 e''4 a'4 e''4|
174     }
175     \paper { raggedright = ##t } }
176 @end lilypond
177
178 @cindex regular rhythms
179 @cindex regular spacing
180
181 The fragment only uses quarter notes: notes that are played in a
182 constant rhythm. The spacing should reflect that. Unfortunately, the
183 eye deceives us a little: not only does it notice the distance between
184 note heads, it also takes into account the distance between
185 consecutive stems. As a result, the notes of an up-stem/down-stem
186 combination should be put farther apart, and the notes of a down-up
187 combination should be put closer together, all depending on the
188 combined vertical positions of the notes. The first two measures are
189 printed with this correction, the last two measures without. The notes
190 in the last two measures form down-stem/up-stems clumps of notes.
191
192 @node Typography and program architecture
193 @section Typography and program architecture
194
195 Producing good engraving requires skill and knowledge.  It was our
196 challenge to see if we could put such typographical knowledge into a
197 computer program. Capturing that knowledge has two aspects: first, it
198 has to be acquired. Then, it has to be encoded in data-structures and
199 algorithms.  As the previous examples show, there is a lot of subtlety
200 involved in music engraving, and unfortunately, only a small fraction
201 of these details are documented.
202
203 One reason for the time that it takes to become a master engraver, is
204 that all these details must be learned either from experience or from
205 other engravers: as an engraver gets older and wiser, he will be able
206 to produce better and more complex pieces.  A similar situation is
207 present when putting typography into computer programs.  It is not
208 possible to come up with a final solution for a problem at the first
209 try. Instead, we start out with simple solution that might cover 75%
210 of the cases, and gradually refine that solution over the course of
211 months or years, so that 90 or 95 % of the cases are handled.
212
213 This has an important implication for the design of the
214 program. During development, almost every piece of formatting code
215 must be considered as temporary. When the need arises, is to be
216 replaced a solution that will cover even more cases.  A clean way to
217 accomplish this, is a ``plug-in'' architecture: an architecture where
218 new pieces of code can be inserted in the program dynamically.  In
219 such a program, a new solution can be developed along-side the
220 existing code. It can be perfected separately until it is better than
221 the existing solution, at which point, the new solution is switched on
222 by default, and the old one is removed.
223
224 Until that time, users must have a way to deal with imperfections:
225 these 25%, 10% or 5% of the cases that are not handled
226 automatically. In these cases, a user must be able to override
227 formatting decisions. A way to accomplish this, is to store decisions
228 in generic variables, and let the user manipulate these variables.
229 For example, consider the following fragment of notation.
230
231 @lilypond
232 \score { \notes {
233     g'4-\f g4
234         }
235 \paper { raggedright = ##t }
236      }
237 @end lilypond
238
239 @noindent
240 The position of the forte symbol is slightly awkward, because it is
241 next to the low note, whereas dynamics should be below notes in
242 general. This may be remedied by inserting extra space between the
243 high note and the `f', as shown in this example
244
245 @lilypond
246 \score { \notes {
247     \once\property Voice. DynamicLineSpanner  \override #'padding = #4.0 
248     g'4-\f g4
249         }
250 \paper { raggedright = ##t }
251      }
252 @end lilypond
253
254 This was achieved with the input statement
255 @example
256     \property Voice. DynamicLineSpanner  \override #'padding = #4.0 
257 @end example
258 which increases the amount of space (@code{padding}) between the note
259 and the dynamic symbol to 4.0 (which is measured in staff space, so
260 4.0 equals the height of a staff).
261
262 Both design aspects, a plug-in architecture, and formatting variables,
263 are built on top of GUILE, an interpreter for the programming language
264 Scheme, which is a member of the LISP family. Variables are stored as
265 Scheme objects, and attached to graphical objects such as note heads
266 and stems. The variables are a means to adjust formatting details in
267 individual cases, but they are used in a more general manner.
268
269 Consider the case of a publisher that is not satisfied with the in the
270 default layout, and wants heavier stems. Normally, they are @code{1.3}
271 times the thickness of staff lines, but suppose that their editions
272 require them to be twice the thickness of the staff lines. The same
273 mechanism can be used to adjust a setting globally. By issuing
274 @example
275     \property Score.Stem \override #'thickness = #2.0 
276 @end example
277 the entire piece is formatted with thick stems:
278 @lilypond
279 \score { \notes {
280     \property Score.Stem \override #'thickness = #2.0 
281     \once\property Voice. DynamicLineSpanner  \override #'padding = #4.0 
282     g'4-\f g4
283         }
284 \paper { raggedright = ##t }
285      }
286 @end lilypond
287
288 @noindent
289 In effect, by setting these variables, users can define their own
290 layout styles.
291
292 ``Plug-ins'' are also implemented using Scheme.  A formatting
293 ``plug-in'' takes the form of a function written in Scheme (or a C++
294 function made available as a Scheme function), and it is also stored
295 in a variable.  For example, the placement of the forte symbol in the
296 example above is calculated by the function
297 @code{Side_position_interface::aligned_side}.  If we want to replace
298 this function by a more advanced one, we could issue
299 @example
300     \property Voice.DynamicLineSpanner \override #'Y-offset-callbacks
301        = #`(,gee-whiz-gadget)
302 @end example
303
304 @noindent
305 Now, the formatting process will trigger a call to our new
306 @code{gee-whiz-gadget} function when the position of the f symbol has
307 to be determined.
308
309 The full scope of this functionality certainly is intimidating, but
310 there is no need to fear: normally, it is not necessary to define
311 style-sheets or rewrite formatting functions. In fact, LilyPond gets a
312 lot of formatting right automatically, so adjusting individual layout
313 situations is not needed very often at all.
314
315
316 @node Music representation
317 @section Music representation
318
319
320 One of the big questions when writing batch programs, is what kind of
321 input the program should expect. Many music notation programs offer a
322 graphical interface that shows notation, and allow you to enter the
323 music by placing notes on a staff. From our point of view, this design
324 is a form of cheating. After all, the core message of a piece of music
325 notation simply is the music itself. If you start by offering notation
326 to the user, you have already skipped one conversion, even if it is
327 implicit. If we want to generate music notation from something else,
328 then the obvious candidate for the source is the music itself.
329
330 On paper this theory sounds very good. In practice, it opens a can of
331 worms. What really @emph{is} music? Many philosophical treatises must
332 have been written on the subject.  Instead of losing ourselves in
333 philosophical arguments over the essence of music, we have reversed
334 the question to yield a more practical approach. Our assumption is
335 that the printed score contains all of the music of piece. We build a
336 program that uses some input format to produce such a score. Over the
337 course of time, the program evolves. While this happens, we can remove
338 more and more elements of the input format: as the program improves,
339 it can fill in irrelevant details of the input by itself. At some
340 (hypothetical) point, the program is finished: there is no possibility
341 to remove any more elements from the syntax.  What we have left is by
342 definition exactly the musical meaning of the score.
343
344 There are also more practical concerns.  Our users have to key in the
345 music into the file directly, so the input format should have a
346 friendly syntax: a quarter note C is entered as @code{c4}, the code
347 @code{r8.}  signifies a dotted eighth rest.
348
349 As programmers and scientists, we want a clean formal
350 definition. After all, producing music notation is a difficult
351 problem, and problems can only be solved if they are
352 well-specified. Moreover, formally defined formats are easier to write
353 programs for.  We have chosen for a format that is based on music
354 expressions: complex musical constructs are built from simple entities
355 like notes and rests in much the same way that complex formulas are
356 built from simple expressions such as numbers and mathematical
357 operators.  The language is described by a context-free
358 grammar. Reading such languages robustly is a well studied problem,
359 and we use a standard solution to do it.
360
361 LilyPond is a batch program, so the syntax of the program is its
362 user-interface.  It is the part that they see most, so it is easy to
363 think that music representation is a very important or interesting
364 problem. In reality, less than 10% of the source code of the program
365 handles reading and representing the input, and they form the easy
366 bits of the program. Converting the music to notation, and calculating
367 a pretty layout is much more difficult.
368
369 @node Example applications
370 @section Example applications
371
372 We have written LilyPond as an experiment of how to condense the art
373 of music engraving into a computer program. Thanks to all that hard
374 work, the program can now be used to perform useful tasks.  The
375 simplest application is printing notes.
376
377 @lilypond[relative=1]
378   \time 2/4 c4 c g'4 g a4 a g2  
379 @end lilypond
380
381 By adding chord names and lyrics we obtain a lead sheet:
382 @lilypond[raggedright]
383 \score { <
384   \context ChordNames \chords  { c2 c f2 c }
385   \notes \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
386   \context Lyrics \lyrics  { twin4 kle twin kle lit tle star2 } > }
387 @end lilypond
388
389 Polyphonic notation and piano music can also be printed. The following
390 example combines some more exotic constructs.
391
392 @lilypondfile{screech-boink.ly}
393
394 The fragments shown above have all been written by hand, but that is not
395 a requirement. Since the formatting engine is mostly automatic, it can
396 serve as an output means for other programs that manipulate music. It
397 can also be used to convert databases of musical fragments to images for
398 use on websites on multimedia presentations.
399
400 This manual also shows an application: the input format is plain text,
401 and can therefore be easily embedded in other text-based formats, such
402 as La@TeX{}, HTML or in the case of this manual, Texinfo.  By means of a
403 special program, the input fragments can be replaced by music images in
404 the resulting PostScript or HTML output files. This makes it easy to
405 mix music and text in documents.
406
407
408
409 @node About this manual
410 @section About this manual
411
412 The manual is divided into the following chapters
413 @itemize @bullet
414 @item
415 @ifhtml The 
416 @end ifhtml
417 @emph{@ref{Tutorial}}
418 gives a  gentle introduction into typesetting music.
419 First time users should start here. 
420 @item
421 @ifhtml
422 The
423 @end ifhtml
424 @emph{@ref{Notation manual}}
425 discusses topics grouped by notation construct.
426 @item
427 @ifhtml
428  The
429  @end ifhtml
430 @emph{@ref{Technical manual}}
431 @c
432 discusses the general design of the program, and how to extend its
433 functionality.
434 @item
435 @ifhtml
436 The chapter
437 @end ifhtml
438 @emph{@ref{Invoking LilyPond}}  explains how to run LilyPond and its helper
439 programs.
440 @end itemize
441
442 Once you are an experienced user, you can use the manual as reference:
443 there is an extensive index@footnote{If you are looking for something,
444 and you cannot find it by using the index, that is considered a bug.
445 In that case, please file a bug report.}, but the document is also
446 available in
447 @ifnothtml
448 a big HTML page,
449 @end ifnothtml 
450 @ifhtml
451 @uref{../lilypond.html, a big HTML page}
452 @end ifhtml
453 which can be searched easily using the search facility of a web
454 browser.
455 @cindex search in manual
456 @cindex using the manual
457
458 @c  TODO: advise to buy a book on notation? 
459
460 If you are not familiar with music notation, or music terminology
461 (especially if you are a foreigner), then it is advisable to consult
462 the glossary as well. The glossary explains musical terms, and
463 includes translations to various languages. It is a
464 @ifhtml
465 @uref{../glossary.html,separate document}
466 @end ifhtml
467 @ifnothtml
468 separate document, available in HTML and PDF and can be printed as
469 well.
470 @end ifnothtml
471 @cindex idiom
472 @cindex jargon
473 @cindex terminology
474 @cindex foreign languages
475 @cindex language
476
477
478 This manual is not complete without a number of other documents. They
479 are not available in print, but should be included with the
480 documentation package for your platform
481
482 @itemize @bullet
483 @item
484 Generated internal documentation.
485 @ifhtml
486 available @uref{../lilypond-internals/lilypond-internals.html,here}
487 @end ifhtml
488
489 The generated internal documentation is a heavily crosslinked HTML
490 document, produced directly from the formatting definitions used.  It
491 documents the nit-gritty details of each and every LilyPond class,
492 object and function.
493
494 Almost all formatting functionality that is used internally, is
495 available directly to the user. For example, all variables that
496 control thicknesses, distances, etc, can be changed in input
497 files. There are a huge number of formatting options, and all of them
498 are described in the generated documentation.  Each section of the
499 reference manual has a @b{See also} subsection, which refers to the
500 the generated documentation.  In the HTML document, these subsections
501 have clickable links.
502
503 @item
504   Templates
505 @ifhtml
506 (available @uref{../../../input/templates/out-www/collated-files.html,here})
507 @end ifhtml
508
509 After you have gone through the tutorial, in theory you should be able
510 to write input files. In practice, writing files from scratch turns
511 out to be intimidating.  To give a headstart, we have collected a
512 number of often-used formats in example files.  These files can be
513 used as a start, by copying the template, and adding notes in the
514 appropriate places.
515
516 @item
517   Various input examples
518 @ifhtml
519 available @uref{../../../input/test/out-www/collated-files.html,here}
520 @end ifhtml
521 @cindex snippets
522
523 These small files show various tips and tricks, and are available as a
524 big HTML document, with pictures and explanatory texts included.
525
526
527 @item
528   The regression test
529 @ifhtml
530 available @uref{../../../input/regression/out-www/collated-files.html,here}
531 @end ifhtml
532
533 We strive to test each feature in one test file. This collection is
534 primarilyt there to help us debug problems, but it can be instructive
535 to see how we excercise the program. The format is like the tips and
536 tricks document.
537
538 @end itemize
539
540
541 The location of the documentation files that are mentioned here can
542 vary from system to system.  On occasion, this manual refers to
543 initialization and example files.  Throughout this manual, we refer to
544 input files relative to the top-directory of the source archive. For
545 example, @file{input/test/bla.ly} may refer to the file
546 @file{lilypond-1.7.19/input/test/bla.ly}.  On binary packages for the
547 Unix platform, the documentation and examples can typically be found
548 somewhere below @file{/usr/share/doc/lilypond/}. Initialization files,
549 for example @file{scm/lily.scm}, or @file{ly/engraver-init.ly}, are
550 usually found in the directory @file{/usr/share/lilypond/}.
551
552 @cindex adjusting output
553 @cindex variables
554 @cindex properties
555 @cindex lilypond-internals
556 @cindex internal documentation
557 @cindex Scheme
558 @cindex extending lilypond
559 @cindex bugreport
560 @cindex index
561
562 Finally, this and all other manuals, are available online both as PDF
563 files and HTML from the web site, which can be found at
564 @uref{http://www.lilypond.org/}.
565
566 @cindex website 
567 @cindex URL