]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/learning/tutorial.itely
524b2876359d2bedd9afd20af803fbaac0b059e1
[lilypond.git] / Documentation / learning / tutorial.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2
3 @ignore
4     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @include included/generating-output.itexi
12
13 @c \version "2.12.0"
14
15 @node Tutorial
16 @chapter Tutorial
17
18 This chapter gives a basic introduction to working with LilyPond.
19
20 @menu
21 * Compiling a file::
22 * How to write input files::
23 * Dealing with errors::
24 * How to read the manuals::
25 @end menu
26
27 @node Compiling a file
28 @section Compiling a file
29
30 This section introduces @qq{compiling}---the processing of
31 LilyPond input files (written by you) to produce output files.
32
33 @menu
34 * Entering input::
35 * MacOS X::
36 * Windows::
37 * Command-line::
38 @end menu
39
40 @node Entering input
41 @subsection Entering input
42
43 @cindex compiling
44 @cindex first example
45 @cindex example, first
46 @cindex case sensitive
47
48 @qq{Compiling} is the term used for processing an input file in
49 LilyPond format to produce output file(s).  Output files are
50 generally PDF (for printing or viewing), MIDI (for playing), and
51 PNG (for online use).  LilyPond input files are simple text files.
52
53 This example shows a simple input file:
54
55 @example
56 \version "@w{@version{}}"
57 @{
58   c' e' g' e'
59 @}
60 @end example
61
62 The graphical output is:
63
64 @c  in this case we don't want verbatim
65 @lilypond[quote]
66 {
67   c' e' g' e'
68 }
69 @end lilypond
70
71 @warning{Notes and lyrics in LilyPond input must always be
72 surrounded by @w{@strong{@{ curly braces @}}}.  The braces
73 should also be surrounded by a space unless they are at the
74 beginning or end of a line to avoid ambiguities.  They may
75 be omitted in some examples in this manual, but don't forget them
76 in your own music!  For more information about the display of
77 examples in the manual, see @ref{How to read the manuals}.}
78
79 In addition, LilyPond input is @strong{case sensitive}.
80 @w{@code{@{ c d e @}}} is valid input; @w{@code{@{ C D E @}}} will
81 produce an error message.
82
83
84 @smallspace
85
86 @subheading Producing output
87
88 @cindex PDF file
89 @cindex viewing music
90 @cindex text editors
91
92 The method of producing output depends on your operating system
93 and the program(s) you use.
94
95 @itemize
96
97 @item
98 @ref{MacOS X, @sourceimage{logo-macosx,,,}}
99 @ref{MacOS X, MacOS X} (graphical)
100
101 @item
102 @ref{Windows, @sourceimage{logo-windows,,,}}
103 @ref{Windows, Microsoft Windows} (graphical)
104
105 @item
106 @ref{Command-line, @sourceimage{logo-linux,,,}
107 @sourceimage{logo-freebsd,,,}
108 @sourceimage{logo-macosx,,,}
109 @sourceimage{logo-windows,,,}
110 }
111 @ref{Command-line, All operating systems} (command-line)
112
113 @end itemize
114
115 There are several other text editors available with specific
116 support for LilyPond.  For more information, see
117 @rweb{Easier editing}.
118
119 @warning{The first time you ever run LilyPond, it may take a
120 minute or two because all of the system fonts have to be analyzed
121 first.  After this, LilyPond will be much faster!}
122
123
124 @node MacOS X
125 @subsection MacOS X
126
127 @cindex running LilyPond under MacOS X
128 @cindex MacOS X, running LilyPond
129
130 @lilypadOSX
131
132
133 @node Windows
134 @subsection Windows
135
136 @cindex running LilyPond under Windows
137 @cindex Windows, running LilyPond
138
139 @lilypadWindows
140
141
142 @node Command-line
143 @subsection Command-line
144
145 @cindex running LilyPond under Unix
146 @cindex Unix, running LilyPond
147
148 @lilypadCommandLine
149
150 @node How to write input files
151 @section How to write input files
152
153 This section introduces some basic LilyPond syntax to help get you
154 started writing input files.
155
156 @menu
157 * Simple notation::
158 * Working on input files::
159 @end menu
160
161
162 @node Simple notation
163 @subsection Simple notation
164
165 @cindex simple notation
166 @cindex notation, simple
167
168 LilyPond will add some notation elements automatically.  In the
169 next example, we have only specified four pitches, but LilyPond
170 has added a clef, time signature, and rhythms.
171
172 @lilypond[verbatim,quote]
173 {
174   c' e' g' e'
175 }
176 @end lilypond
177
178 @noindent
179 This behavior may be altered, but in most cases these automatic
180 values are useful.
181
182
183 @subheading Pitches
184
185 @cindex pitches
186 @cindex relative mode
187 @cindex quote, single
188 @cindex comma
189 @cindex accidentals and relative mode
190 @cindex relative mode, and accidentals
191
192 @funindex \relative
193 @funindex relative
194 @funindex '
195 @funindex ,
196
197 Music Glossary: @rglos{pitch}, @rglos{interval},
198 @rglos{scale}, @rglos{middle C}, @rglos{octave},
199 @rglos{accidental}.
200
201 The easiest way to enter notes is by using @code{\relative} mode.
202 In this mode, the octave is chosen automatically by assuming the
203 following note is always to be placed closest to the previous
204 note, i.e., it is to be placed in the octave which is within three
205 staff spaces of the previous note.  We begin by entering the most
206 elementary piece of music, a @notation{scale}, in which every note
207 is within just one staff space of the previous note.
208
209 @lilypond[verbatim,quote]
210 % set the starting point to middle C
211 \relative c' {
212   c d e f
213   g a b c
214 }
215 @end lilypond
216
217 The initial note is @notation{middle C}.  Each successive note is
218 placed closest to the previous note -- in other words, the first
219 @code{c} is the closest C to middle C.  This is followed by the
220 closest D to the previous note.  We can create melodies which have
221 larger intervals, still using only @code{\relative} mode:
222
223 @lilypond[verbatim,quote]
224 \relative c' {
225   d f a g
226   c b f d
227 }
228 @end lilypond
229
230 @noindent
231 It is not necessary for the first note of the melody to start on
232 the note which specifies the starting pitch.  In the previous
233 example, the first note -- the @code{d} -- is the closest D to
234 middle C.
235
236 By adding (or removing) quotes @code{'} or commas @code{,} from
237 the @code{@w{\relative c' @{}} command, we can change the starting
238 octave:
239
240 @lilypond[verbatim,quote]
241 % one octave above middle C
242 \relative c'' {
243   e c a c
244 }
245 @end lilypond
246
247 Relative mode can be confusing initially, but is the easiest way
248 to enter most melodies.  Let us see how this relative calculation
249 works in practice.  Starting from a B, which is on the middle line
250 in a treble clef, you can reach a C, D and E within 3 staff spaces
251 going up, and an A, G and F within 3 staff spaces going down.  So
252 if the note following a B is a C, D or E it will be assumed to be
253 above the B, and an A, G or F will be assumed to be below.
254
255 @lilypond[verbatim,quote]
256 \relative c'' {
257   b c  % c is 1 staff space up, so is the c above
258   b d  % d is 2 up or 5 down, so is the d above
259   b e  % e is 3 up or 4 down, so is the e above
260   b a  % a is 6 up or 1 down, so is the a below
261   b g  % g is 5 up or 2 down, so is the g below
262   b f  % f is 4 up or 3 down, so is the f below
263 }
264 @end lilypond
265
266 Exactly the same happens even when any of these notes are
267 sharpened or flattened.  @notation{Accidentals} are
268 @strong{totally ignored} in the calculation of relative position.
269 Precisely the same staff space counting is done from a note at any
270 other position on the staff.
271
272 To add intervals that are larger than three staff spaces, we can
273 raise the @notation{octave} by adding a single quote @code{'} (or
274 apostrophe) to the note name.  We can lower the octave by adding a
275 comma @code{,} to the note name.
276
277 @lilypond[verbatim,quote]
278 \relative c'' {
279   a a, c' f,
280   g g'' a,, f'
281 }
282 @end lilypond
283
284 @noindent
285 To change a note by two (or more!) octaves, we use multiple
286 @code{''} or @code{,,} -- but be careful that you use two single
287 quotes @code{''} and not one double quote @code{"}@tie{}!  The
288 initial value in @code{@w{\relative c'}} may also be modified like
289 this.
290 @c " - keeps quotes in order for context-sensitive editor -td
291
292 @subheading Durations (rhythms)
293
294 @cindex note durations
295 @cindex durations
296 @cindex rhythms
297 @cindex whole note
298 @cindex half note
299 @cindex quarter note
300 @cindex dotted note
301 @cindex notating durations
302
303 Music Glossary: @rglos{beam}, @rglos{duration},
304 @rglos{whole note}, @rglos{half note}, @rglos{quarter note},
305 @rglos{dotted note}.
306
307 The @notation{duration} of a note is specified by a number after
308 the note name:  @code{1} for a @notation{whole note}, @code{2} for
309 a @notation{half note}, @code{4} for a @notation{quarter note} and
310 so on.  @notation{Beams} are added automatically.
311
312 If you do not specify a duration, the previous duration is used
313 for the next note.  The duration of the first note defaults to a
314 quarter.
315
316 @lilypond[verbatim,quote]
317 \relative c'' {
318   a1
319   a2 a4 a8 a
320   a16 a a a a32 a a a a64 a a a a a a a a2
321 }
322 @end lilypond
323
324 To create @notation{dotted notes}, add a dot @code{.} to the
325 duration number.  The duration of a dotted note must be stated
326 explicitly (i.e., with a number).
327
328 @lilypond[verbatim,quote]
329 \relative c'' {
330   a a a4. a8
331   a8. a16 a a8. a8 a4.
332 }
333 @end lilypond
334
335
336 @subheading Rests
337
338 @cindex rest
339 @cindex notating rests
340
341 Music Glossary: @rglos{rest}.
342
343 A @notation{rest} is entered just like a note with the name
344 @code{r}@tie{}:
345
346 @lilypond[verbatim,quote]
347 \relative c'' {
348   a r r2
349   r8 a r4 r4. r8
350 }
351 @end lilypond
352
353
354 @subheading Time signature
355
356 @cindex time signature
357
358 @funindex \time
359 @funindex time
360
361 Music Glossary: @rglos{time signature}.
362
363 The @notation{time signature} can be set with the @code{\time}
364 command:
365
366 @lilypond[verbatim,quote]
367 \relative c'' {
368   \time 3/4
369   a4 a a
370   \time 6/8
371   a4. a
372   \time 4/4
373   a4 a a a
374 }
375 @end lilypond
376
377
378 @subheading Clef
379
380 @cindex clef
381 @cindex treble
382 @cindex alto
383 @cindex tenor
384 @cindex bass
385
386 @funindex \clef
387 @funindex clef
388
389 Music Glossary: @rglos{clef}.
390
391 The @notation{clef} can be set using the @code{\clef} command:
392
393 @lilypond[verbatim,quote]
394 \relative c' {
395   \clef treble
396   c1
397   \clef alto
398   c1
399   \clef tenor
400   c1
401   \clef bass
402   c1
403 }
404 @end lilypond
405
406
407 @subheading All together
408
409 Here is a small example showing all these elements together:
410
411 @lilypond[verbatim,quote]
412 \relative c, {
413   \time 3/4
414   \clef bass
415   c2 e8 c' g'2.
416   f4 e d c4 c, r4
417 }
418 @end lilypond
419
420
421 @seealso
422 Notation Reference: @ruser{Writing pitches},
423 @ruser{Writing rhythms}, @ruser{Writing rests},
424 @ruser{Time signature}, @ruser{Clef}.
425
426
427 @node Working on input files
428 @subsection Working on input files
429
430 @cindex curly braces
431 @cindex braces, curly
432 @cindex comments
433 @cindex line comment
434 @cindex comment, line
435 @cindex block comment
436 @cindex comment, line
437 @cindex case sensitive
438 @cindex whitespace insensitive
439 @cindex expressions
440 @cindex versioning
441 @cindex version
442 @cindex version number
443
444 @funindex \version
445 @funindex { ... }
446 @funindex %
447 @funindex %@{ ... %@}
448
449 LilyPond input files are similar to source files in many common
450 programming languages.  They contain a version statement,
451 are case sensitive, and white-space
452 is generally ignored.  Expressions are formed with curly braces
453 @{ @}, and comments are denoted with @code{%} or
454 @w{@code{%@{ ... %@}}}.
455
456 If the previous sentences sound like nonsense, don't worry!  We'll
457 explain what all these terms mean:
458
459 @itemize
460
461 @item
462 @strong{Version statement}:
463 Every LilyPond file should contain a version statement.  A version
464 statement is a line that describes the version of LilyPond for which
465 the file was written, as in the following example:
466
467 @example
468 \version "@w{@version{}}"
469 @end example
470
471 By convention, the version statement is placed at the top of the
472 LilyPond file.
473
474 The version statement is important for at least two reasons.  First,
475 it allows automatic updating of the input file as LilyPond syntax
476 changes.  Second, it describes the version of LilyPond needed to
477 compile the file.
478
479 If the version statement is omitted from an input file, LilyPond will print
480 a warning during the compilation of the file.
481
482 @item
483 @strong{Case sensitive}:
484 it matters whether you enter a letter in lower case (e.g.
485 @w{@code{a, b, s, t}}) or upper case (e.g.  @w{@code{A, B, S, T}}).
486 Notes are lower case: @w{@code{@{ c d e @}}} is valid input;
487 @w{@code{@{ C D E @}}} will produce an error message.
488
489 @item
490 @strong{Whitespace insensitive}:
491 it does not matter how many spaces (or tabs or new lines) you add.
492 @w{@code{@{ c d e @}}} means the same thing as
493 @w{@code{@{ c @tie{}} @tie{} @tie{} d e @}} and:
494
495 @example
496 @{ c                        d
497                    e   @}
498 @end example
499
500 @noindent
501 Of course, the previous example is hard to read.  A good rule of
502 thumb is to indent code blocks with either a tab or two spaces:
503
504 @example
505 @{
506   c d e
507 @}
508 @end example
509
510 However, whitespace @emph{is} required to separate many syntactical
511 elements from others.  In other words, whitespace can always be
512 @emph{added}, but it cannot be @emph{eliminated}.  As missing
513 whitespace can give rise to strange errors it is advisable to
514 always insert whitespace before and after every syntactic element,
515 for example, before and after every curly brace.
516
517 @item
518 @strong{Expressions}:
519 every piece of LilyPond input needs to have @strong{@{ curly
520 braces @}} placed around the input.  These braces tell LilyPond
521 that the input is a single music expression, just like parentheses
522 @code{()} in mathematics.  The braces should be surrounded by a
523 space unless they are at the beginning or end of a line to avoid
524 ambiguities.
525
526 A LilyPond command followed by a simple expression in braces (such
527 as @w{@code{\relative @{ @}}}) also counts as a single music
528 expression.
529
530 @cindex comments
531 @cindex line comment
532 @cindex block comment
533 @item
534 @strong{Comments}:
535 a comment is a remark for the human reader of the music input; it
536 is ignored while parsing, so it has no effect on the printed
537 output.  There are two types of comments.  The percent symbol
538 @code{%} introduces a line comment; anything after @code{%} on
539 that line is ignored.  By convention, a line comment is placed
540 @emph{above} the code it refers to.
541
542 @example
543 a4 a a a
544 % this comment refers to the Bs
545 b2 b
546 @end example
547
548 A block comment marks a whole section of music input as a comment.
549 Anything that is enclosed in @code{%@{} and @code{%@}} is ignored.
550 However, block comments do not @q{nest}.  This means that you
551 cannot place a block comment inside another block comment.  If you
552 try, the first @code{%@}} will terminate @emph{both} block
553 comments.  The following fragment shows possible uses for
554 comments:
555
556 @example
557 % notes for twinkle twinkle follow
558   c4 c g' g a a g2
559
560 %@{
561   This line, and the notes below are ignored,
562   since they are in a block comment.
563
564   f f e e d d c2
565 %@}
566 @end example
567
568 @end itemize
569
570
571 @node Dealing with errors
572 @section Dealing with errors
573
574 @cindex troubleshooting
575
576 Sometimes LilyPond doesn't produce the output you expect.  This
577 section provides some links to help you solve the problems you
578 might encounter.
579
580
581 @menu
582 * General troubleshooting tips::
583 * Some common errors::
584 @end menu
585
586 @node General troubleshooting tips
587 @subsection General troubleshooting tips
588
589 Troubleshooting LilyPond problems can be challenging for
590 people who are used to a graphical interface, because invalid
591 input files can be created.  When this happens, a logical approach
592 is the best way to identify and solve the problem.  Some guidelines
593 to help you learn to do this are provided in @rprogram{Troubleshooting}.
594
595
596 @node Some common errors
597 @subsection Some common errors
598
599 @cindex common errors
600 @cindex errors, common
601
602 There are a few common errors that are difficult to troubleshoot
603 based simply on the error messages that are displayed.  These are
604 described in @rprogram{Common errors}.
605
606
607
608 @node How to read the manuals
609 @section How to read the manuals
610
611 This section shows how to read the documentation efficiently, and
612 also introduces some useful interactive features available in the
613 online version.
614
615 @menu
616 * Omitted material::
617 * Clickable examples::
618 * Overview of manuals::
619 @end menu
620
621
622 @node Omitted material
623 @subsection Omitted material
624
625
626 @cindex how to read the manual
627 @cindex manual, reading
628 @cindex reading the manual
629 @cindex examples, clickable
630 @cindex clickable examples
631 @cindex tips for constructing files
632 @cindex templates
633 @cindex constructing files, tips
634 @cindex files, tips for constructing
635
636 LilyPond input must be surrounded by @{ @} marks or a
637 @code{@w{\relative c'' @{ ... @}}}, as we saw in @ref{Working on
638 input files}.  For the rest of this manual, most examples will
639 omit this.  To replicate the examples, you may copy and paste the
640 displayed input, but you @strong{must} add the
641 @code{@w{\relative c'' @{ @}}} like this:
642
643 @example
644 \relative c'' @{
645   ... example goes here...
646 @}
647 @end example
648
649 Why omit the braces?  Most examples in this manual can be inserted
650 into the middle of a longer piece of music.  For these examples,
651 it does not make sense to add @code{@w{\relative c'' @{ @}}} --
652 you should not place a @code{\relative} inside another
653 @code{\relative}!  If we included @code{@w{\relative c'' @{ @}}}
654 around every example, you would not be able to copy a small
655 documentation example and paste it inside a longer piece of your
656 own.  Most people want to add material to an existing piece, so we
657 format the manual this way.
658
659 Also, remember that every LilyPond file should have a @code{@bs{}version}
660 statement.  Because the examples in the manuals are snippets, not files,
661 the @code{@bs{}version} statement is omitted.  But you should make a
662 practice of including them in your files.
663
664 @node Clickable examples
665 @subsection Clickable examples
666
667 @warning{This feature is only available in the HTML manuals.}
668
669 Many people learn programs by trying and fiddling around with the
670 program.  This is also possible with LilyPond.  If you click on a
671 picture in the HTML version of this manual, you will see the exact
672 LilyPond input that was used to generate that image.  Try it on
673 this image:
674
675 @c no verbatim here
676 @lilypond[quote]
677 \relative c'' {
678   c-\markup { \bold \huge { Click here. } }
679 }
680 @end lilypond
681
682 By cutting and pasting everything in the @qq{ly snippet} section,
683 you have a starting template for experiments.  To see exactly the
684 same output (line-width and all), copy everything from @qq{Start
685 cut-&-pastable section} to the bottom of the file.
686
687
688 @ignore
689 This is item 825
690
691 @n ode Keyboard navigation
692 @s ubsection Keyboard navigation
693
694 @warning{This features is only available in the HTML manuals.}
695
696 @c TODO: once this is figured out, insert it here.
697
698 We are currently working on this feature.
699 @end ignore
700
701 @node Overview of manuals
702 @subsection Overview of manuals
703
704 There is a lot of documentation for LilyPond.  New users are
705 sometimes confused about what part(s) they should read, and
706 occasionally skip over reading vital portions.
707
708 @warning{Please do not skip over important parts of the
709 documentation.  You will find it much harder to understand later
710 sections.}
711
712 @itemize
713
714 @item
715 @strong{Before trying to do @emph{anything}}: read the Learning
716 manual's @ref{Tutorial}, and @ref{Common notation}.  If you
717 encounter musical terms which you do not recognize, please look
718 them up in the @rglosnamed{Top, Glossary}.
719
720 @item
721 @strong{Before trying to write a complete piece of music}: read
722 the Learning manual's @ref{Fundamental concepts}.  After that, you
723 may want to look in relevant sections of the
724 @rusernamed{Top, Notation reference}.
725
726 @item
727 @strong{Before trying to change the default output}: read the
728 Learning manual's @ref{Tweaking output}.
729
730 @item
731 @strong{Before undertaking a large project}: read Usage document's
732 @rprogram{Suggestions for writing files}.
733
734 @end itemize
735
736
737