]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/notation/input.itely
Merge branch 'master' into translation
[lilypond.git] / Documentation / notation / input.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 @c \version "2.19.22"
12
13 @node General input and output
14 @chapter General input and output
15
16 This section deals with general LilyPond input and output issues,
17 rather than specific notation.
18
19 @menu
20 * Input structure::
21 * Titles and headers::
22 * Working with input files::
23 * Controlling output::
24 * Creating MIDI output::
25 * Extracting musical information::
26 @end menu
27
28
29 @node Input structure
30 @section Input structure
31
32 The main format of input for LilyPond are text files.  By convention,
33 these files end with @file{.ly}.
34
35 @menu
36 * Structure of a score::
37 * Multiple scores in a book::
38 * Multiple output files from one input file::
39 * Output file names::
40 * File structure::
41 @end menu
42
43
44 @node Structure of a score
45 @subsection Structure of a score
46
47 @funindex \score
48
49 A @code{\score} block must contain a single music expression
50 delimited by curly brackets:
51
52 @example
53 \score @{
54   @dots{}
55 @}
56 @end example
57
58 @warning{There must be @strong{only one} outer music expression in
59 a @code{\score} block, and it @strong{must} be surrounded by
60 curly brackets.}
61
62 This single music expression may be of any size, and may contain
63 other music expressions to any complexity.  All of these examples
64 are music expressions:
65
66 @example
67 @{ c'4 c' c' c' @}
68 @end example
69
70 @lilypond[verbatim,quote]
71 {
72   { c'4 c' c' c' }
73   { d'4 d' d' d' }
74 }
75 @end lilypond
76
77 @lilypond[verbatim,quote]
78 <<
79   \new Staff { c'4 c' c' c' }
80   \new Staff { d'4 d' d' d' }
81 >>
82 @end lilypond
83
84 @example
85 @{
86   \new GrandStaff <<
87     \new StaffGroup <<
88       \new Staff @{ \flute @}
89       \new Staff @{ \oboe @}
90     >>
91     \new StaffGroup <<
92       \new Staff @{ \violinI @}
93       \new Staff @{ \violinII @}
94     >>
95   >>
96 @}
97 @end example
98
99 Comments are one exception to this general rule.  (For others see
100 @ref{File structure}.)  Both single-line comments and comments
101 delimited by @code{%@{ @dots{} %@}} may be placed anywhere within an
102 input file.  They may be placed inside or outside a @code{\score}
103 block, and inside or outside the single music expression within a
104 @code{\score} block.
105
106 Remember that even in a file containing only a @code{\score} block, it
107 is implicitly enclosed in a \book block.  A \book block in a source
108 file produces at least one output file, and by default the name of the
109 output file produced is derived from the name of the input file, so
110 @file{fandangoforelephants.ly} will produce
111 @file{fandangoforelephants.pdf}.
112
113 (For more details  about @code{\book} blocks, see
114 @ref{Multiple scores in a book},
115 @ref{Multiple output files from one input file} @ref{File structure}.)
116
117 @seealso
118 Learning Manual:
119 @rlearning{Working on input files},
120 @rlearning{Music expressions explained},
121 @rlearning{Score is a (single) compound musical expression}.
122
123
124 @node Multiple scores in a book
125 @subsection Multiple scores in a book
126
127 @funindex \book
128 @cindex movements, multiple
129
130 A document may contain multiple pieces of music and text.  Examples
131 of these are an etude book, or an orchestral part with multiple
132 movements.  Each movement is entered with a @code{\score} block,
133
134 @example
135 \score @{
136   @var{@dots{}music@dots{}}
137 @}
138 @end example
139
140 and texts are entered with a @code{\markup} block,
141
142 @example
143 \markup @{
144   @var{@dots{}text@dots{}}
145 @}
146 @end example
147
148 @funindex \book
149
150 All the movements and texts which appear in the same @file{.ly} file
151 will normally be typeset in the form of a single output file.
152
153 @example
154 \score @{
155   @var{@dots{}}
156 @}
157 \markup @{
158   @var{@dots{}}
159 @}
160 \score @{
161   @var{@dots{}}
162 @}
163 @end example
164
165 One important exception is within lilypond-book documents,
166 where you explicitly have to add a @code{\book} block, otherwise only
167 the first @code{\score} or @code{\markup} will appear in the output.
168
169 The header for each piece of music can be put inside the @code{\score}
170 block.  The @code{piece} name from the header will be printed before
171 each movement.  The title for the entire book can be put inside the
172 @code{\book}, but if it is not present, the @code{\header} which is at
173 the top of the file is inserted.
174
175 @example
176 \header @{
177   title = "Eight miniatures"
178   composer = "Igor Stravinsky"
179 @}
180 \score @{
181   @dots{}
182   \header @{ piece = "Romanze" @}
183 @}
184 \markup @{
185    @dots{}text of second verse@dots{}
186 @}
187 \markup @{
188    @dots{}text of third verse@dots{}
189 @}
190 \score @{
191   @dots{}
192   \header @{ piece = "Menuetto" @}
193 @}
194 @end example
195
196 @funindex \bookpart
197
198 Pieces of music may be grouped into book parts using @code{\bookpart}
199 blocks.  Book parts are separated by a page break, and can start with a
200 title, like the book itself, by specifying a @code{\header} block.
201
202 @example
203 \bookpart @{
204   \header @{
205     title = "Book title"
206     subtitle = "First part"
207   @}
208   \score @{ @dots{} @}
209   @dots{}
210 @}
211 \bookpart @{
212   \header @{
213     subtitle = "Second part"
214   @}
215   \score @{ @dots{} @}
216   @dots{}
217 @}
218 @end example
219
220 @node Multiple output files from one input file
221 @subsection Multiple output files from one input file
222
223 If you want multiple output files from the same @file{.ly} file,
224 then you can add multiple @code{\book} blocks, where each
225 such \book block will result in a separate output file.
226 If you do not specify any @code{\book} block in the
227 input file, LilyPond will implicitly treat the whole
228 file as a single \book block, see
229 @ref{File structure}.
230
231 When producing multiple files from a single source file, Lilypond
232 ensures that none of the output files from any @code{\book} block
233 overwrites the output file produced by a preceding @code{\book} from
234 the same input file.
235
236 It does this by adding a suffix to the output name for each
237 @code{\book} which uses the default output file name derived from the
238 input source file.
239
240 The default behaviour is to append a version-number suffix for each
241 name which may clash, so
242
243 @example
244 \book @{
245   \score @{ @dots{} @}
246   \paper @{ @dots{} @}
247 @}
248 \book @{
249   \score @{ @dots{} @}
250   \paper @{ @dots{} @}
251 @}
252 \book @{
253   \score @{ @dots{} @}
254   \paper @{ @dots{} @}
255 @}
256 @end example
257
258 in source file @file{eightminiatures.ly}
259 will produce
260
261 @itemize
262 @item
263 @file{eightminiatures.pdf},
264 @item
265 @file{eightminiatures-1.pdf} and
266 @item
267 @file{eightminiatures-2.pdf}.
268 @end itemize
269
270 @node Output file names
271 @subsection Output file names
272
273 @funindex \bookOutputSuffix
274 @funindex \bookOutputName
275
276 Lilypond provides facilities to allow you to control what file names
277 are used by the various back-ends when producing output files.
278
279 In the previous section, we saw how Lilypond prevents name-clashes when
280 producing several ouputs from a single source file.  You also have the
281 ability to specify your own suffixes for each @code{\book} block, so
282 for example you can produce files called
283 @file{eightminiatures-Romanze.pdf}, @file{eightminiatures-Menuetto.pdf}
284 and @file{eightminiatures-Nocturne.pdf} by adding a
285 @code{\bookOutputSuffix} declaration inside each @code{\book} block.
286
287 @example
288 \book @{
289   \bookOutputSuffix "Romanze"
290   \score @{ @dots{} @}
291   \paper @{ @dots{} @}
292 @}
293 \book @{
294   \bookOutputSuffix "Menuetto"
295   \score @{ @dots{} @}
296   \paper @{ @dots{} @}
297 @}
298 \book @{
299   \bookOutputSuffix "Nocturne"
300   \score @{ @dots{} @}
301   \paper @{ @dots{} @}
302 @}
303 @end example
304
305 You can also specify a different output filename for @code{book} block,
306 by using @code{\bookOutputName} declarations
307
308 @example
309 \book @{
310   \bookOutputName "Romanze"
311   \score @{ @dots{} @}
312   \paper @{ @dots{} @}
313 @}
314 \book @{
315   \bookOutputName "Menuetto"
316   \score @{ @dots{} @}
317   \paper @{ @dots{} @}
318 @}
319 \book @{
320   \bookOutputName "Nocturne"
321   \score @{ @dots{} @}
322   \paper @{ @dots{} @}
323 @}
324 @end example
325
326 The file above will produce these output files:
327
328 @itemize
329 @item
330 @file{Romanze.pdf},
331 @item
332 @file{Menuetto.pdf} and
333 @item
334 @file{Nocturne.pdf}.
335 @end itemize
336
337
338 @node File structure
339 @subsection File structure
340
341 @funindex \paper
342 @funindex \midi
343 @funindex \layout
344 @funindex \header
345 @funindex \score
346 @funindex \book
347 @funindex \bookpart
348
349 A @file{.ly} file may contain any number of toplevel expressions, where a
350 toplevel expression is one of the following:
351
352 @itemize
353 @item
354 An output definition, such as @code{\paper}, @code{\midi}, and
355 @code{\layout}.  Such a definition at the toplevel changes the default
356 book-wide settings.  If more than one such definition of the same type
357 is entered at the top level the definitions are combined, but in
358 conflicting situations the later definitions take precedence.  For
359 details of how this affects the @code{\layout} block see
360 @ref{The layout block,,The @code{@bs{}layout} block}.
361
362 @item
363 A direct scheme expression, such as
364 @code{#(set-default-paper-size "a7" 'landscape)} or
365 @code{#(ly:set-option 'point-and-click #f)}.
366
367 @item
368 A @code{\header} block.  This sets the global (i.e. the top of
369 file) header block.  This is the block containing the default
370 settings of titling fields like composer, title, etc. for all
371 books within the file (see @ref{Titles explained}).
372
373 @item
374 A @code{\score} block.  This score will be collected with other
375 toplevel scores, and combined as a single @code{\book}.
376 This behavior can be changed by setting the variable
377 @code{toplevel-score-handler} at toplevel.  The default handler is
378 defined in the init file @file{../scm/lily.scm}.
379
380 @item
381 A @code{\book} block logically combines multiple movements
382 (i.e., multiple @code{\score} blocks) in one document.  If there
383 are a number of @code{\score}s, one output file will be created
384 for each @code{\book} block, in which all corresponding movements
385 are concatenated.  The only reason to explicitly specify
386 @code{\book} blocks in a @file{.ly} file is if you wish to create
387 multiple output files from a single input file.  One exception is
388 within lilypond-book documents, where you explicitly have to add
389 a @code{\book} block if you want more than a single @code{\score}
390 or @code{\markup} in the same example.  This behavior can be
391 changed by setting the variable @code{toplevel-book-handler} at
392 toplevel.  The default handler is defined in the init file
393 @file{../scm/lily.scm}.
394
395 @item
396 A @code{\bookpart} block.  A book may be divided into several parts,
397 using @code{\bookpart} blocks, in order to ease the page breaking,
398 or to use different @code{\paper} settings in different parts.
399
400 @item
401 A compound music expression, such as
402 @example
403 @{ c'4 d' e'2 @}
404 @end example
405
406 This will add the piece in a @code{\score} and format it in a
407 single book together with all other toplevel @code{\score}s and music
408 expressions.  In other words, a file containing only the above
409 music expression will be translated into
410
411 @example
412 \book @{
413   \score @{
414     \new Staff @{
415       \new Voice @{
416         @{ c'4 d' e'2 @}
417       @}
418     @}
419     \layout @{ @}
420   @}
421   \paper @{ @}
422   \header @{ @}
423 @}
424 @end example
425
426 This behavior can be changed by setting the variable
427 @code{toplevel-music-handler} at toplevel.  The default handler is
428 defined in the init file @file{../scm/lily.scm}.
429
430 @item
431 A markup text, a verse for example
432 @example
433 \markup @{
434    2.  The first line verse two.
435 @}
436 @end example
437
438 Markup texts are rendered above, between or below the scores or music
439 expressions, wherever they appear.
440
441 @cindex variables
442
443 @item
444 A variable, such as
445 @example
446 foo = @{ c4 d e d @}
447 @end example
448
449 This can be used later on in the file by entering @code{\foo}.  The
450 name of a variable should have alphabetic characters only; no
451 numbers, underscores or dashes.
452
453 @end itemize
454
455 The following example shows three things that may be entered at
456 toplevel
457
458 @example
459 \layout @{
460   % Don't justify the output
461   ragged-right = ##t
462 @}
463
464 \header @{
465    title = "Do-re-mi"
466 @}
467
468 @{ c'4 d' e2 @}
469 @end example
470
471
472 At any point in a file, any of the following lexical instructions can
473 be entered:
474
475 @itemize
476 @item @code{\version}
477 @item @code{\include}
478 @item @code{\sourcefilename}
479 @item @code{\sourcefileline}
480 @item
481 A single-line comment, introduced by a leading @code{%} sign.
482
483 @item
484 A multi-line comment delimited by @code{%@{ @dots{} %@}}.
485
486 @end itemize
487
488 @cindex whitespace
489
490 Whitespace between items in the input stream is generally ignored,
491 and may be freely omitted or extended to enhance readability.
492 However, whitespace should always be used in the following
493 circumstances to avoid errors:
494
495 @itemize
496
497 @item Around every opening and closing curly bracket.
498
499 @item After every command or variable, i.e. every item that
500 begins with a @code{\} sign.
501
502 @item After every item that is to be interpreted as a Scheme
503 expression, i.e. every item that begins with a @code{#}@tie{}sign.
504
505 @item To separate all elements of a Scheme expression.
506
507 @item In @code{lyricmode} before and after @code{\set} and
508 @code{\override} commands.
509
510 @end itemize
511
512 @seealso
513 Learning Manual:
514 @rlearning{How LilyPond input files work}.
515
516 Notation Reference:
517 @ref{Titles explained},
518 @ref{The layout block,,The @code{@bs{}layout} block}.
519
520
521 @node Titles and headers
522 @section Titles and headers
523
524 @cindex titles
525 @cindex headers
526 @cindex footers
527
528 Almost all printed music includes a title and the composer's name;
529 some pieces include a lot more information.
530
531 @menu
532 * Creating titles headers and footers::
533 * Custom titles headers and footers::
534 * Creating PDF metadata::
535 * Creating footnotes::
536 * Reference to page numbers::
537 * Table of contents::
538 @end menu
539
540
541 @node Creating titles headers and footers
542 @subsection Creating titles headers and footers
543
544 @menu
545 * Titles explained::
546 * Default layout of bookpart and score titles::
547 * Default layout of headers and footers::
548 @end menu
549
550
551 @node Titles explained
552 @unnumberedsubsubsec Titles explained
553
554 Each @code{\book} block in a single input file produces a separate
555 output file, see @ref{File structure}.  Within each output file
556 three types of titling areas are provided: @emph{Book Titles} at the
557 beginning of each book, @emph{Bookpart Titles} at the beginning of
558 each bookpart and @emph{Score Titles} at the beginning of each score.
559
560 Values of titling fields such as @code{title} and @code{composer}
561 are set in @code{\header} blocks.  (For the syntax of @code{\header}
562 blocks and a complete list of the fields available by default see
563 @ref{Default layout of bookpart and score titles}).  Book Titles,
564 Bookpart Titles and Score Titles can all contain the same fields,
565 although by default the fields in Score Titles are limited to
566 @code{piece} and @code{opus}.
567
568 @code{\header} blocks may be placed in four different places to form
569 a descending hierarchy of @code{\header} blocks:
570
571 @itemize
572
573 @item
574 At the top of the input file, before all @code{\book},
575 @code{\bookpart}, and @code{\score} blocks.
576
577 @item
578 Within a @code{\book} block but outside all the @code{\bookpart} and
579 @code{\score} blocks within that book.
580
581 @item
582 Within a @code{\bookpart} block but outside all @code{\score} blocks
583 within that bookpart.
584
585 @item
586 After the music expression in a @code{\score} block.
587
588 @end itemize
589
590 The values of the fields filter down this hierarchy, with the values
591 set higher in the hierarchy persisting unless they are over-ridden
592 by a value set lower in the hierarchy, so:
593
594 @itemize
595
596 @item
597 A Book Title is derived from fields set at the top of the input file,
598 modified by fields set in the @code{\book} block.  The resulting
599 fields are used to print the Book Title for that book, providing that
600 there is other material which generates a page at the start of the
601 book, before the first bookpart.  A single @code{\pageBreak} will
602 suffice.
603
604 @item
605 A Bookpart Title is derived from fields set at the top of the input
606 file, modified by fields set in the @code{\book} block, and further
607 modified by fields set in the @code{\bookpart} block.  The resulting
608 values are used to print the Bookpart Title for that bookpart.
609
610 @item
611 A Score Title is derived from fields set at the top of the input
612 file, modified by fields set in the @code{\book} block, further
613 modified by fields set in the @code{\bookpart} block and finally
614 modified by fields set in the @code{\score} block.  The resulting
615 values are used to print the Score Title for that score.  Note,
616 though, that only @code{piece} and @code{opus} fields are printed
617 by default in Score Titles unless the @code{\paper} variable,
618 @code{print-all-headers}, is set to @code{#t}.
619
620 @end itemize
621
622 @warning{Remember when placing a @bs{}@code{header} block inside a
623 @bs{}@code{score} block, that the music expression must come before the
624 @bs{}@code{header} block.}
625
626 It is not necessary to provide @code{\header} blocks in all four
627 places: any or even all of them may be omitted.  Similarly, simple
628 input files may omit the @code{\book} and @code{\bookpart} blocks,
629 leaving them to be created implicitly.
630
631 If the book has only a single score, the @code{\header} block should
632 normally be placed at the top of the file so that just a Bookpart
633 Title is produced, making all the titling fields available for use.
634
635 If the book has multiple scores a number of different arrangements
636 of @code{\header} blocks are possible, corresponding to the various
637 types of musical publications.  For example, if the publication
638 contains several pieces by the same composer a @code{\header} block
639 placed at the top of the file specifying the book title and the
640 composer with @code{\header} blocks in each @code{\score} block
641 specifying the @code{piece} and/or @code{opus} would be most
642 suitable, as here:
643
644 @lilypond[papersize=a5,quote,verbatim,noragged-right]
645 \header {
646   title = "SUITE I."
647   composer = "J. S. Bach."
648 }
649
650 \score {
651   \new Staff \relative {
652     \clef bass
653     \key g \major
654     \repeat unfold 2 { g,16( d' b') a b d, b' d, } |
655     \repeat unfold 2 { g,16( e' c') b c e, c' e, } |
656   }
657   \header {
658     piece = "Prélude."
659   }
660 }
661
662 \score {
663   \new Staff \relative {
664     \clef bass
665     \key g \major
666     \partial 16 b16 |
667     <g, d' b'~>4 b'16 a( g fis) g( d e fis) g( a b c) |
668     d16( b g fis) g( e d c) b(c d e) fis( g a b) |
669   }
670   \header {
671     piece = "Allemande."
672   }
673 }
674 @end lilypond
675
676 More complicated arrangements are possible.  For example, text
677 fields from the @code{\header} block in a book can be displayed in
678 all Score Titles, with some fields over-ridden and some manually
679 suppressed:
680
681 @lilypond[papersize=a5,quote,verbatim,noragged-right]
682 \book {
683   \paper {
684     print-all-headers = ##t
685   }
686   \header {
687     title = "DAS WOHLTEMPERIRTE CLAVIER"
688     subtitle = "TEIL I"
689     % Do not display the tagline for this book
690     tagline = ##f
691   }
692   \markup { \vspace #1 }
693   \score {
694     \new PianoStaff <<
695       \new Staff { s1 }
696       \new Staff { \clef "bass" s1 }
697     >>
698     \header {
699       title = "PRAELUDIUM I"
700       opus = "BWV 846"
701       % Do not display the subtitle for this score
702       subtitle = ##f
703     }
704   }
705   \score {
706     \new PianoStaff <<
707       \new Staff { s1 }
708       \new Staff { \clef "bass" s1 }
709     >>
710     \header {
711       title = "FUGA I"
712       subsubtitle = "A 4 VOCI"
713       opus = "BWV 846"
714       % Do not display the subtitle for this score
715       subtitle = ##f
716     }
717   }
718 }
719 @end lilypond
720
721 @seealso
722 Notation Reference:
723 @ref{File structure},
724 @ref{Default layout of bookpart and score titles},
725 @ref{Custom layout for titles}.
726
727
728 @node Default layout of bookpart and score titles
729 @unnumberedsubsubsec Default layout of bookpart and score titles
730
731 This example demonstrates all printed @code{\header} variables:
732
733 @lilypond[papersize=a6landscape,quote,verbatim,noragged-right]
734 \book {
735   \header {
736       % The following fields are centered
737     dedication = "Dedication"
738     title = "Title"
739     subtitle = "Subtitle"
740     subsubtitle = "Subsubtitle"
741       % The following fields are evenly spread on one line
742       % the field "instrument" also appears on following pages
743     instrument = \markup \with-color #green "Instrument"
744     poet = "Poet"
745     composer = "Composer"
746       % The following fields are placed at opposite ends of the same line
747     meter = "Meter"
748     arranger = "Arranger"
749       % The following fields are centered at the bottom
750     tagline = "tagline goes at the bottom of the last page"
751     copyright = "copyright goes at the bottom of the first page"
752   }
753   \score {
754     { s1 }
755     \header {
756         % The following fields are placed at opposite ends of the same line
757       piece = "Piece 1"
758       opus = "Opus 1"
759     }
760   }
761   \score {
762     { s1 }
763     \header {
764         % The following fields are placed at opposite ends of the same line
765       piece = "Piece 2 on the same page"
766       opus = "Opus 2"
767     }
768   }
769   \pageBreak
770   \score {
771     { s1 }
772     \header {
773         % The following fields are placed at opposite ends of the same line
774       piece = "Piece 3 on a new page"
775       opus = "Opus 3"
776     }
777   }
778 }
779 @end lilypond
780
781 Note that
782
783 @itemize
784 @item
785 The instrument name will be repeated on every page.
786
787 @item
788 Only @code{piece} and @code{opus} are printed in a @code{\score}
789 when the paper variable @code{print-all-headers} is set to
790 @code{##f} (the default).
791
792 @item
793 @c Is the bit about \null markups true? -mp
794 Text fields left unset in a @code{\header} block are replaced with
795 @code{\null} markups so that the space is not wasted.
796
797 @item
798 The default settings for @code{scoreTitleMarkup} place the @code{piece}
799 and @code{opus} text fields at opposite ends of the same line.
800
801 @end itemize
802
803 To change the default layout see @ref{Custom layout for titles}.
804
805 @cindex breakbefore
806
807 If a @code{\book} block starts immediately with a @code{\bookpart}
808 block, no Book Title will be printed, as there is no page on which
809 to print it.  If a Book Title is required, begin the @code{\book}
810 block with some markup material or a @code{\pageBreak} command.
811
812 Use the @code{breakbefore} variable inside a @code{\header} block
813 that is itself in a @code{\score} block, to make the higher-level
814 @code{\header} block titles appear on the first page on their own, with
815 the music (defined in the @code{\score} block) starting on the next.
816
817 @lilypond[papersize=c7landscape,verbatim,noragged-right]
818 \book {
819   \header {
820     title = "This is my Title"
821     subtitle = "This is my Subtitle"
822     copyright = "This is the bottom of the first page"
823   }
824   \score {
825     \repeat unfold 4 { e'' e'' e'' e'' }
826     \header {
827       piece = "This is the Music"
828       breakbefore = ##t
829     }
830   }
831 }
832 @end lilypond
833
834 @seealso
835 Learning Manual:
836 @rlearning{How LilyPond input files work},
837
838 Notation Reference:
839 @ref{Custom layout for titles},
840 @ref{File structure}.
841
842 Installed Files:
843 @file{ly/titling-init.ly}.
844
845
846 @node Default layout of headers and footers
847 @unnumberedsubsubsec Default layout of headers and footers
848
849 @emph{Headers} and @emph{footers} are lines of text appearing at
850 the top and bottom of pages, separate from the main text of a book.
851 They are controlled by the following @code{\paper} variables:
852
853 @itemize
854 @item @code{oddHeaderMarkup}
855 @item @code{evenHeaderMarkup}
856 @item @code{oddFooterMarkup}
857 @item @code{evenFooterMarkup}
858 @end itemize
859
860 These markup variables can only access text fields from top-level
861 @code{\header} blocks (which apply to all scores in the book) and are
862 defined in @file{ly/titling-init.ly}.  By default:
863
864 @itemize
865
866 @item
867 page numbers are automatically placed on the top far left (if even) or
868 top far right (if odd), starting from the second page.
869
870 @item
871 the @code{instrument} text field is placed in the center of every
872 page, starting from the second page.
873
874 @item
875 the @code{copyright} text is centered on the bottom of the first page.
876
877 @item
878 the @code{tagline} is centered on the bottom of the last page, and below
879 the @code{copyright} text if there is only a single page.
880
881 @end itemize
882
883 The default tagline can be changed by adding a @code{tagline} in the
884 top-level @code{\header} block.
885
886 @lilypond[papersize=a8landscape,verbatim]
887 \book {
888   \header {
889     tagline = "... music notation for Everyone"
890   }
891   \score {
892     \relative {
893       c'4 d e f
894     }
895   }
896 }
897 @end lilypond
898
899 To remove the @code{tagline} set the value to @code{##f}.
900
901
902 @node Custom titles headers and footers
903 @subsection Custom titles headers and footers
904
905 @c TODO: somewhere put a link to header spacing info
906 @c       (you'll have to explain it more in NR 4).
907
908 @menu
909 * Custom text formatting for titles::
910 * Custom layout for titles::
911 * Custom layout for headers and footers::
912 @end menu
913
914
915 @node Custom text formatting for titles
916 @unnumberedsubsubsec Custom text formatting for titles
917
918 Standard @code{\markup} commands can be used to customize any header,
919 footer and title text within the @code{\header} block.
920
921 @lilypond[quote,verbatim,noragged-right]
922 \score {
923   { s1 }
924   \header {
925     piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
926     opus = \markup { \italic "BWV 846" }
927   }
928 }
929 @end lilypond
930
931 @seealso
932 Notation Reference:
933 @ref{Formatting text}.
934
935
936 @node Custom layout for titles
937 @unnumberedsubsubsec Custom layout for titles
938
939 @cindex bookTitleMarkup
940 @cindex scoreTitleMarkup
941 @funindex bookTitleMarkup
942 @funindex scoreTitleMarkup
943
944 @code{\markup} commands in the @code{\header} block are useful for
945 simple text formatting, but they do not allow precise control over the
946 placement of titles.  To customize the placement of the text fields,
947 change either or both of the following @code{\paper} variables:
948
949 @itemize
950 @item @code{bookTitleMarkup}
951 @item @code{scoreTitleMarkup}
952 @end itemize
953
954 The placement of titles when using the default values of these
955 @code{\markup} variables is shown in the examples in
956 @ref{Default layout of bookpart and score titles}.
957
958 The default settings for @code{scoreTitleMarkup} as defined in
959 @file{ly/titling-init.ly} are:
960
961 @example
962 scoreTitleMarkup = \markup @{ \column @{
963   \on-the-fly \print-all-headers @{ \bookTitleMarkup \hspace #1 @}
964   \fill-line @{
965     \fromproperty #'header:piece
966     \fromproperty #'header:opus
967   @}
968 @}
969 @}
970 @end example
971
972 This places the @code{piece} and @code{opus} text fields at opposite
973 ends of the same line:
974
975 @lilypond[quote,verbatim,noragged-right]
976 \score {
977   { s1 }
978   \header {
979     piece = "PRAELUDIUM I"
980     opus = "BWV 846"
981   }
982 }
983 @end lilypond
984
985 This example redefines @code{scoreTitleMarkup} so that the @code{piece}
986 text field is centered and in a large, bold font.
987
988 @lilypond[papersize=a5,quote,verbatim,noragged-right]
989 \book {
990   \paper {
991     indent = 0\mm
992     scoreTitleMarkup = \markup {
993       \fill-line {
994         \null
995         \fontsize #4 \bold \fromproperty #'header:piece
996         \fromproperty #'header:opus
997       }
998     }
999   }
1000   \header { tagline = ##f }
1001   \score {
1002     { s1 }
1003     \header {
1004       piece = "PRAELUDIUM I"
1005       opus = "BWV 846"
1006     }
1007   }
1008 }
1009 @end lilypond
1010
1011 Text fields not normally effective in score @code{\header} blocks
1012 can be printed in the Score Title area if @code{print-all-headers} is
1013 placed inside the @code{\paper} block.  A disadvantage of using this
1014 method is that text fields that are intended specifically for the
1015 Bookpart Title area need to be manually suppressed in every
1016 @code{\score} block.  See @ref{Titles explained}.
1017
1018 To avoid this, add the desired text field to the @code{scoreTitleMarkup}
1019 definition.  In the following example, the @code{composer} text field
1020 (normally associated with @code{bookTitleMarkup}) is added to
1021 @code{scoreTitleMarkup}, allowing each score to list a different
1022 composer:
1023
1024 @lilypond[papersize=a5,quote,verbatim,noragged-right]
1025 \book {
1026   \paper {
1027     indent = 0\mm
1028     scoreTitleMarkup = \markup {
1029       \fill-line {
1030         \null
1031         \fontsize #4 \bold \fromproperty #'header:piece
1032         \fromproperty #'header:composer
1033       }
1034     }
1035   }
1036   \header { tagline = ##f }
1037   \score {
1038     { s1 }
1039     \header {
1040       piece = "MENUET"
1041       composer = "Christian Petzold"
1042     }
1043   }
1044   \score {
1045     { s1 }
1046     \header {
1047       piece = "RONDEAU"
1048       composer = "François Couperin"
1049     }
1050   }
1051 }
1052 @end lilypond
1053
1054 It is also possible to create your own custom text fields, and refer to
1055 them in the markup definition.
1056
1057 @lilypond[papersize=a5,quote,verbatim,noragged-right]
1058 \book {
1059   \paper {
1060     indent = 0\mm
1061     scoreTitleMarkup = \markup {
1062       \fill-line {
1063         \null
1064         \override #`(direction . ,UP) {
1065           \dir-column {
1066             \center-align \fontsize #-1 \bold
1067               \fromproperty #'header:mycustomtext %% User-defined field
1068             \center-align \fontsize #4 \bold
1069               \fromproperty #'header:piece
1070           }
1071         }
1072         \fromproperty #'header:opus
1073       }
1074     }
1075   }
1076   \header { tagline = ##f }
1077   \score {
1078     { s1 }
1079     \header {
1080       piece = "FUGA I"
1081       mycustomtext = "A 4 VOCI" %% User-defined field
1082       opus = "BWV 846"
1083     }
1084   }
1085 }
1086 @end lilypond
1087
1088 @seealso
1089 Notation Reference:
1090 @ref{Titles explained}.
1091
1092
1093 @node Custom layout for headers and footers
1094 @unnumberedsubsubsec Custom layout for headers and footers
1095
1096 @c can make-header and make-footer be removed from
1097 @c paper-defaults-init.ly? -mp
1098
1099 @code{\markup} commands in the @code{\header} block are useful for
1100 simple text formatting, but they do not allow precise control over the
1101 placement of headers and footers.  To customize the placement of
1102 the text fields, use either or both of the following @code{\paper}
1103 variables:
1104
1105 @itemize
1106 @item @code{oddHeaderMarkup}
1107 @item @code{evenHeaderMarkup}
1108 @item @code{oddFooterMarkup}
1109 @item @code{evenFooterMarkup}
1110 @end itemize
1111
1112 @cindex markup, conditional
1113 @cindex on-the-fly
1114 @funindex \on-the-fly
1115
1116 The @code{\markup} command @code{\on-the-fly} can be used to add
1117 markup conditionally to header and footer text defined within the
1118 @code{\paper} block, using the following syntax:
1119
1120 @example
1121 @code{variable} = @code{\markup} @{
1122   @dots{}
1123   @code{\on-the-fly}  \@var{procedure}  @var{markup}
1124   @dots{}
1125 @}
1126 @end example
1127
1128 The @var{procedure} is called each time the @code{\markup} command
1129 in which it appears is evaluated.  The @var{procedure} should test
1130 for a particular condition and interpret (i.e. print) the
1131 @var{markup} argument if and only if the condition is true.
1132
1133 A number of ready-made procedures for testing various conditions are
1134 provided:
1135
1136 @quotation
1137 @multitable {print-page-number-check-first-----} {should this page be printed-----}
1138
1139 @headitem  Procedure name           @tab  Condition tested
1140
1141 @item print-page-number-check-first @tab  should this page number be printed?
1142 @item create-page-number-stencil    @tab  print-page-numbers true?
1143 @item print-all-headers             @tab  print-all-headers true?
1144 @item first-page                    @tab  first page in the book?
1145 @item (on-page nmbr)                @tab  page number = nmbr?
1146 @item last-page                     @tab  last page in the book?
1147 @item not-first-page                @tab  not first page in the book?
1148 @item part-first-page               @tab  first page in the book part?
1149 @item part-last-page                @tab  last page in the book part?
1150 @item not-single-page               @tab  pages in book part > 1?
1151
1152 @end multitable
1153 @end quotation
1154
1155 The following example centers page numbers at the bottom of every
1156 page.  First, the default settings for @code{oddHeaderMarkup} and
1157 @code{evenHeaderMarkup} are removed by defining each as a @emph{null}
1158 markup.  Then, @code{oddFooterMarkup} is redefined with the page
1159 number centered.  Finally, @code{evenFooterMarkup} is given the
1160 same layout by defining it as @code{\oddFooterMarkup}:
1161
1162 @lilypond[papersize=a8,quote,verbatim,noragged-right]
1163 \book {
1164   \paper {
1165     print-page-number = ##t
1166     print-first-page-number = ##t
1167     oddHeaderMarkup = \markup \null
1168     evenHeaderMarkup = \markup \null
1169     oddFooterMarkup = \markup {
1170       \fill-line {
1171         \on-the-fly \print-page-number-check-first
1172         \fromproperty #'page:page-number-string
1173       }
1174     }
1175     evenFooterMarkup = \oddFooterMarkup
1176   }
1177   \score {
1178     \new Staff { s1 \break s1 \break s1 }
1179   }
1180 }
1181 @end lilypond
1182
1183 Several @code{\on-the-fly} conditions can be combined with an
1184 @q{and} operation, for example,
1185
1186 @example
1187   @code{\on-the-fly \first-page}
1188   @code{\on-the-fly \last-page}
1189   @code{@{ \markup @dots{} \fromproperty #'header: @dots{} @}}
1190 @end example
1191
1192 determines if the output is a single page.
1193
1194 @seealso
1195 Notation Reference:
1196 @ref{Titles explained},
1197 @ref{Default layout of bookpart and score titles}.
1198
1199 Installed Files:
1200 @file{../ly/titling-init.ly}.
1201
1202 @node Creating PDF metadata
1203 @subsection Creating PDF metadata
1204
1205 @cindex PDF metadata
1206
1207 In addition to being shown in the printed output, @code{\header} variables
1208 are also used to set PDF metadata (the information displayed by PDF readers
1209 as the @code{properties} of the PDF file).  For example, setting the
1210 @code{title} property of the @code{header} block @q{Symphony I} will also give
1211 this title to the PDF document.
1212
1213 @example
1214   @code{\header@{}
1215     @code{title = "Symphony I"}
1216   @code{@}}
1217 @end example
1218
1219 If you want to set the title of the printed output to one value, but have the
1220 title property of the PDF to have a different value, you can use
1221 @code{pdftitle}, as below.
1222
1223 @example
1224   @code{\header@{}
1225     @code{title = "Symphony I"}
1226     @code{pdftitle = "Symphony I by Beethoven"}
1227   @code{@}}
1228 @end example
1229
1230 The variables @code{title}, @code{subject}, @code{keywords},
1231 @code{subtitle}, @code{composer}, @code{arranger}, @code{poet}, @code{author}
1232 and @code{copyright} all set PDF properties and can all be prefixed with
1233 @q{pdf} to set a PDF property to a value different from the printed output.
1234
1235 The PDF property @code{Creator} is automatically set to @q{LilyPond} plus
1236 the current LilyPond version, and @code{CreationDate} and @code{ModDate} are
1237 both set to the current date and time.  @code{ModDate} can be overridden by
1238 setting the header variable @code{moddate} (or @code{pdfmoddate}) to a
1239 valid PDF date string.
1240
1241 @node Creating footnotes
1242 @subsection Creating footnotes
1243
1244 @cindex footnotes
1245
1246 Footnotes may be used in many different situations.  In all cases,
1247 a @q{footnote mark} is placed as a reference in text or music, and
1248 the corresponding @q{footnote text} appears at the bottom of the
1249 same page.
1250
1251 Footnotes within music expressions and footnotes in stand-alone text
1252 outside music expressions are created in different ways.
1253
1254 @menu
1255 * Footnotes in music expressions::
1256 * Footnotes in stand-alone text::
1257 @end menu
1258
1259 @node Footnotes in music expressions
1260 @unnumberedsubsubsec Footnotes in music expressions
1261
1262 @cindex footnotes in music expressions
1263 @funindex \footnote
1264
1265 @subsubsubheading Music footnotes overview
1266
1267 Footnotes in music expressions fall into two categories:
1268
1269 @table @emph
1270 @item Event-based footnotes
1271 are attached to a particular event.  Examples for such events are
1272 single notes, articulations (like fingering indications, accents,
1273 dynamics), and post-events (like slurs and manual beams).  The
1274 general form for event-based footnotes is as follows:
1275
1276 @example
1277 [@var{direction}] \footnote [@var{mark}] @var{offset} @var{footnote} @var{music}
1278 @end example
1279
1280 @item Time-based footnotes
1281 are bound to a particular point of time in a musical context.  Some
1282 commands like @code{\time} and @code{\clef} don't actually use events
1283 for creating objects like time signatures and clefs.  Neither does a
1284 chord create an event of its own: its stem or flag is created at the
1285 end of a time step (nominally through one of the note events inside).
1286 Exactly which of a chord's multiple note events will be deemed the
1287 root cause of a stem or flag is undefined.  So for annotating those,
1288 time-based footnotes are preferable as well.
1289
1290 A time-based footnote allows such layout objects to be annotated
1291 without referring to an event.  The general form for Time-based
1292 footnotes is:
1293
1294 @example
1295 \footnote [@var{mark}] @var{offset} @var{footnote} [@var{Context}].@var{GrobName}
1296 @end example
1297
1298 @end table
1299
1300 The elements for both forms are:
1301
1302 @table @var
1303
1304 @item direction
1305 If (and only if) the @code{\footnote} is being applied to a
1306 post-event or articulation, it must be preceded with a direction
1307 indicator (@code{-, _, ^}) in order to attach @var{music} (with
1308 a footnote mark) to the preceding note or rest.
1309
1310 @item mark
1311 is a markup or string specifying the footnote mark which is used for
1312 marking both the reference point and the footnote itself at the
1313 bottom of the page.  It may be omitted (or equivalently replaced with
1314 @code{\default}) in which case a number in sequence will be generated
1315 automatically.  Such numerical sequences restart on each page
1316 containing a footnote.
1317
1318 @item offset
1319 is a number pair such as @samp{#(2 . 1)} specifying the X and
1320 Y@tie{}offsets in units of staff-spaces from the boundary of the
1321 object where the mark should be placed.  Positive values of the
1322 offsets are taken from the right/top edge, negative values from the
1323 left/bottom edge and zero implies the mark is centered on the edge.
1324
1325 @item Context
1326 is the context in which the grob being footnoted is created.  It
1327 may be omitted if the grob is in a bottom context, e.g. a
1328 @code{Voice} context.
1329
1330 @item GrobName
1331 specifies a type of grob to mark (like @samp{Flag}).  If it is
1332 specified, the footnote is not attached to a music expression in
1333 particular, but rather to all grobs of the type specified which
1334 occur at that moment of musical time.
1335
1336 @item footnote
1337 is the markup or string specifying the footnote text to use at the
1338 bottom of the page.
1339
1340 @item music
1341 is the music event or post-event or articulation
1342 that is being annotated.
1343
1344 @end table
1345
1346 @subsubsubheading Event-based footnotes
1347
1348 @cindex footnotes, event-based
1349
1350 A footnote may be attached to a layout object directly caused
1351 by the event corresponding to @var{music} with the syntax:
1352
1353 @example
1354 \footnote [@var{mark}] @var{offset} @var{footnote} @var{music}
1355 @end example
1356
1357 @lilypond[quote,verbatim,papersize=a8landscape]
1358 \book {
1359   \header { tagline = ##f }
1360   \relative c'' {
1361     \footnote #'(-1 . 3) "A note" a4
1362     a4
1363     \footnote #'(2 . 2) "A rest" r4
1364     a4
1365   }
1366 }
1367 @end lilypond
1368
1369 Marking a @emph{whole} chord with an event-based footnote is not
1370 possible: a chord, even one containing just a single note, does
1371 not produce an actual event of its own.  However, individual
1372 notes @emph{inside} of the chord can be marked:
1373
1374 @lilypond[quote,verbatim,papersize=a8landscape]
1375 \book {
1376   \header { tagline = ##f }
1377   \relative c'' {
1378     \footnote #'(2 . 3) "Does not work" <a-3>2
1379     <\footnote #'(-2 . -3) "Does work" a-3>4
1380     <a-3 \footnote #'(3 . 1/2) "Also works" c-5>4
1381   }
1382 }
1383 @end lilypond
1384
1385 If the footnote is to be attached to a post-event or articulation
1386 the @code{\footnote} command @emph{must} be preceded by a direction
1387 indicator, @code{-, _, ^}, and followed by the post-event or
1388 articulation to be annotated as the @var{music} argument.  In this
1389 form the @code{\footnote} can be considered to be simply a copy of
1390 its last argument with a footnote mark attached to it.  The syntax
1391 is:
1392
1393 @example
1394 @var{direction} \footnote [@var{mark}] @var{offset} @var{footnote} @var{music}
1395 @end example
1396
1397 @lilypond[quote,verbatim,papersize=a8landscape]
1398 \book {
1399   \header { tagline = ##f }
1400   \relative {
1401     a'4_\footnote #'(0 . -1) "A slur forced down" (
1402     b8^\footnote #'(1 . 0.5) "A manual beam forced up" [
1403     b8 ]
1404     c4 )
1405     c-\footnote #'(1 . 1) "Tenuto" --
1406   }
1407 }
1408 @end lilypond
1409
1410 @subsubsubheading Time-based footnotes
1411
1412 @cindex footnotes, time-based
1413
1414 If the layout object being footmarked is @emph{indirectly} caused by
1415 an event (like an @code{Accidental} or @code{Stem} caused by a
1416 @code{NoteHead} event), the @var{GrobName} of the layout object
1417 is required after the footnote text instead of @var{music}:
1418
1419 @lilypond[quote,verbatim,papersize=a8landscape]
1420 \book {
1421   \header { tagline = ##f }
1422   \relative c'' {
1423     \footnote #'(-1 . -3) "A flat" Accidental
1424     aes4 c
1425     \footnote #'(-1 . 0.5) "Another flat" Accidental
1426     ees
1427     \footnote #'(1 . -2) "A stem" Stem
1428     aes
1429   }
1430 }
1431 @end lilypond
1432
1433 Note, however, that when a GrobName is specified, a footnote
1434 will be attached to all grobs of that type at the current time step:
1435
1436 @lilypond[quote,verbatim,papersize=a8landscape]
1437 \book {
1438   \header { tagline = ##f }
1439   \relative c' {
1440     \footnote #'(-1 . 3) "A flat" Accidental
1441     <ees ges bes>4
1442     \footnote #'(2 . 0.5) "Articulation" Script
1443     c'->-.
1444   }
1445 }
1446 @end lilypond
1447
1448 A note inside of a chord can be given an individual (event-based)
1449 footnote.  A @samp{NoteHead} is the only grob directly caused
1450 from a chord note, so an event-based footnote command is
1451 @emph{only} suitable for adding a footnote to the @samp{NoteHead}
1452 within a chord.  All other chord note grobs are indirectly caused.
1453 The @code{\footnote} command itself offers no syntax for
1454 specifying @emph{both} a particular grob type @emph{as well as} a
1455 particular event to attach to.  However, one can use a time-based
1456 @code{\footnote} command for specifying the grob type, and then
1457 prefix this command with @code{\single} in order to have it
1458 applied to just the following event:
1459
1460 @lilypond[quote,verbatim,papersize=a8landscape]
1461 \book {
1462   \header { tagline = ##f }
1463   \relative c'' {
1464     < \footnote #'(1 . -2) "An A" a
1465       \single \footnote #'(-1 . -1) "A sharp" Accidental
1466       cis
1467       \single \footnote #'(0.5 . 0.5) "A flat" Accidental
1468       ees fis
1469     >2
1470   }
1471 }
1472 @end lilypond
1473
1474 @warning {When footnotes are attached to several musical elements at
1475 the same musical moment, as they are in the example above, the
1476 footnotes are numbered from the higher to the lower elements as they
1477 appear in the printed output, not in the order in which they are
1478 written in the input stream.}
1479
1480 Layout objects like clefs and key-change signatures are mostly caused
1481 as a consequence of changed properties rather than actual events.
1482 Others, like bar lines and bar numbers, are a direct consequence of
1483 timing.  For this reason, footnotes on such objects have to be based
1484 on their musical timing.  Time-based footnotes are also preferable
1485 when marking features like stems and beams on @emph{chords}: while
1486 such per-chord features are nominally assigned to @emph{one} event
1487 inside the chord, relying on a particular choice would be imprudent.
1488
1489 The layout object in question must always be explicitly specified
1490 for time-based footnotes, and the appropriate context must be
1491 specified if the grob is created in a context other than the bottom
1492 context.
1493
1494 @lilypond[quote,verbatim,papersize=a8landscape]
1495 \book {
1496   \header { tagline = ##f }
1497   \relative c'' {
1498     r1 |
1499     \footnote #'(-0.5 . -1) "Meter change" Staff.TimeSignature
1500     \time 3/4
1501     \footnote #'(1 . -1) "Chord stem" Stem
1502     <c e g>4 q q
1503     \footnote #'(-0.5 . 1) "Bar line" Staff.BarLine
1504     q q
1505     \footnote #'(0.5 . -1) "Key change" Staff.KeySignature
1506     \key c \minor
1507     q
1508   }
1509 }
1510 @end lilypond
1511
1512 Custom marks can be used as alternatives to numerical marks, and the
1513 annotation line joining the marked object to the mark can be
1514 suppressed:
1515
1516 @lilypond[quote,verbatim,papersize=a8landscape]
1517 \book {
1518   \header { tagline = ##f }
1519   \relative c' {
1520     \footnote "*" #'(0.5 . -2) \markup { \italic "* The first note" } a'4
1521     b8
1522     \footnote \markup { \super "$" } #'(0.5 . 1)
1523       \markup { \super "$" \italic " The second note" } e
1524     c4
1525     \once \override Score.FootnoteItem.annotation-line = ##f
1526     b-\footnote \markup \tiny "+" #'(0.1 . 0.1)
1527       \markup { \super "+" \italic " Editorial" } \p
1528   }
1529 }
1530 @end lilypond
1531
1532 More examples of custom marks are shown in
1533 @ref{Footnotes in stand-alone text}.
1534
1535
1536 @node Footnotes in stand-alone text
1537 @unnumberedsubsubsec Footnotes in stand-alone text
1538
1539 @cindex footnotes in stand-alone text
1540
1541 These are for use in markup outside of music expressions.  They do
1542 not have a line drawn to their point of reference: their marks simply
1543 follow the referenced markup.  Marks can be inserted automatically,
1544 in which case they are numerical.  Alternatively, custom marks can be
1545 provided manually.
1546
1547 Footnotes to stand-alone text with automatic and custom marks are
1548 created in different ways.
1549
1550 @subsubsubheading Footnotes in stand-alone text with automatic marks
1551
1552 The syntax of a footnote in stand-alone text with automatic marks is
1553
1554 @example
1555 \markup @{ @dots{} \auto-footnote @var{text} @var{footnote} @dots{} @}
1556 @end example
1557
1558 The elements are:
1559
1560 @table @var
1561
1562 @item text
1563 is the markup or string to be marked.
1564
1565 @item footnote
1566 is the markup or string specifying the footnote text to use at the bottom
1567 of the page.
1568
1569 @end table
1570
1571 For example:
1572
1573 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1574 \book {
1575   \header { tagline = ##f }
1576   \markup {
1577     "A simple"
1578     \auto-footnote "tune" \italic " By me"
1579     "is shown below.  It is a"
1580     \auto-footnote "recent" \italic " Aug 2012"
1581     "composition."
1582   }
1583   \relative {
1584     a'4 b8 e c4 d
1585   }
1586 }
1587 @end lilypond
1588
1589 @subsubsubheading Footnotes in stand-alone text with custom marks
1590
1591 The syntax of a footnote in stand-alone text with custom marks is
1592
1593 @example
1594 \markup @{ @dots{} \footnote @var{mark} @var{footnote} @dots{} @}
1595 @end example
1596
1597 The elements are:
1598
1599 @table @var
1600
1601 @item mark
1602 is a markup or string specifying the footnote mark which is used for
1603 marking the reference point.  Note that this mark is @emph{not}
1604 inserted automatically before the footnote itself.
1605
1606 @item footnote
1607 is the markup or string specifying the footnote text to use at the
1608 bottom of the page, preceded by the @var{mark}.
1609
1610 @end table
1611
1612 Any easy-to-type character such as * or + may be used as a mark, as
1613 shown in @ref{Footnotes in music expressions}.  Alteratively, ASCII
1614 aliases may be used (see @ref{ASCII aliases}):
1615
1616 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1617 \book {
1618   \paper { #(include-special-characters) }
1619   \header { tagline = ##f }
1620   \markup {
1621     "A simple tune"
1622     \footnote "*" \italic "* By me"
1623     "is shown below.  It is a recent"
1624     \footnote \super &dagger; \concat {
1625       \super &dagger; \italic " Aug 2012"
1626     }
1627     "composition."
1628   }
1629   \relative {
1630     a'4 b8 e c4 d
1631   }
1632 }
1633 @end lilypond
1634
1635 Unicode character codes may also be used to specify marks
1636 (see @ref{Unicode}):
1637
1638 @lilypond[verbatim,quote,ragged-right,papersize=a8]
1639 \book {
1640   \header { tagline = ##f }
1641   \markup {
1642     "A simple tune"
1643     \footnote \super \char##x00a7 \concat {
1644       \super \char##x00a7 \italic " By me"
1645     }
1646     "is shown below.  It is a recent"
1647     \footnote \super \char##x00b6 \concat {
1648       \super \char##x00b6 \italic " Aug 2012"
1649     }
1650     "composition."
1651   }
1652   \relative {
1653     a'4 b8 e c4 d
1654   }
1655 }
1656 @end lilypond
1657
1658 @seealso
1659 Learning Manual:
1660 @rlearning{Objects and interfaces}.
1661
1662 Notation Reference:
1663 @ref{ASCII aliases},
1664 @ref{Balloon help},
1665 @ref{List of special characters},
1666 @ref{Text marks},
1667 @ref{Text scripts},
1668 @ref{Unicode}.
1669
1670 Internals Reference:
1671 @rinternals{FootnoteEvent},
1672 @rinternals{FootnoteItem},
1673 @rinternals{FootnoteSpanner},
1674 @rinternals{Footnote_engraver}.
1675
1676 @knownissues
1677 Multiple footnotes for the same page can only be stacked, one above
1678 the other; they cannot be printed on the same line.
1679
1680 Footnotes cannot be attached to @code{MultiMeasureRests} or
1681 automatic beams or lyrics.
1682
1683 Footnote marks may collide with staves, @code{\markup} objects, other
1684 footnote marks and annotation lines.
1685
1686
1687 @node Reference to page numbers
1688 @subsection Reference to page numbers
1689
1690 A particular place of a score can be marked using the @code{\label}
1691 command, either at top-level or inside music.  This label can then be
1692 referred to in a markup, to get the number of the page where the marked
1693 point is placed, using the @code{\page-ref} markup command.
1694
1695 @lilypond[verbatim,papersize=a8landscape]
1696 \header { tagline = ##f }
1697 \book {
1698   \label #'firstScore
1699   \score {
1700     {
1701       c'1
1702       \pageBreak \mark A \label #'markA
1703       c'1
1704     }
1705   }
1706   \markup { The first score begins on page \page-ref #'firstScore "0" "?" }
1707   \markup { Mark A is on page \page-ref #'markA "0" "?" }
1708 }
1709 @end lilypond
1710
1711 The @code{\page-ref} markup command takes three arguments:
1712 @enumerate
1713 @item the label, a scheme symbol, eg. @code{#'firstScore};
1714 @item a markup that will be used as a gauge to estimate the dimensions
1715 of the markup;
1716 @item a markup that will be used in place of the page number if the label
1717 is not known;
1718 @end enumerate
1719
1720 The reason why a gauge is needed is that, at the time markups are
1721 interpreted, the page breaking has not yet occurred, so the page numbers
1722 are not yet known.  To work around this issue, the actual markup
1723 interpretation is delayed to a later time; however, the dimensions of
1724 the markup have to be known before, so a gauge is used to decide these
1725 dimensions.  If the book has between 10 and 99 pages, it may be "00",
1726 ie. a two digit number.
1727
1728
1729 @predefined
1730 @funindex \label
1731 @code{\label},
1732 @funindex \page-ref
1733 @code{\page-ref}.
1734 @endpredefined
1735
1736
1737 @node Table of contents
1738 @subsection Table of contents
1739 A table of contents is included using the @code{\markuplist \table-of-contents}
1740 command.  The elements which should appear in the table of contents are
1741 entered with the @code{\tocItem} command, which may be used either at
1742 top-level, or inside a music expression.
1743
1744 @verbatim
1745 \markuplist \table-of-contents
1746 \pageBreak
1747
1748 \tocItem \markup "First score"
1749 \score {
1750   {
1751     c'4  % ...
1752     \tocItem \markup "Some particular point in the first score"
1753     d'4  % ...
1754   }
1755 }
1756
1757 \tocItem \markup "Second score"
1758 \score {
1759   {
1760     e'4 % ...
1761   }
1762 }
1763 @end verbatim
1764
1765 The markups which are used to format the table of contents are defined
1766 in the @code{\paper} block.  The default ones are @code{tocTitleMarkup},
1767 for formatting the title of the table, and @code{tocItemMarkup}, for
1768 formatting the toc elements, composed of the element title and page
1769 number.  These variables may be changed by the user:
1770
1771 @verbatim
1772 \paper {
1773   %% Translate the toc title into French:
1774   tocTitleMarkup = \markup \huge \column {
1775     \fill-line { \null "Table des matières" \null }
1776     \hspace #1
1777   }
1778   %% use larger font size
1779   tocItemMarkup = \markup \large \fill-line {
1780     \fromproperty #'toc:text \fromproperty #'toc:page
1781   }
1782 }
1783 @end verbatim
1784
1785 Note how the toc element text and page number are referred to in
1786 the @code{tocItemMarkup} definition.
1787
1788 New commands and markups may also be defined to build more elaborated
1789 table of contents:
1790 @itemize
1791 @item first, define a new markup variable in the @code{\paper} block
1792 @item then, define a music function which aims at adding a toc element
1793 using this markup paper variable.
1794 @end itemize
1795
1796 In the following example, a new style is defined for entering act names
1797 in the table of contents of an opera:
1798
1799 @verbatim
1800 \paper {
1801   tocActMarkup = \markup \large \column {
1802     \hspace #1
1803     \fill-line { \null \italic \fromproperty #'toc:text \null }
1804     \hspace #1
1805   }
1806 }
1807
1808 tocAct =
1809 #(define-music-function (text) (markup?)
1810    (add-toc-item! 'tocActMarkup text))
1811 @end verbatim
1812
1813 @lilypond[line-width=10.0\cm]
1814 \header { tagline = ##f }
1815 \paper {
1816   tocActMarkup = \markup \large \column {
1817     \hspace #1
1818     \fill-line { \null \italic \fromproperty #'toc:text \null }
1819     \hspace #1
1820   }
1821 }
1822
1823 tocAct =
1824 #(define-music-function (text) (markup?)
1825    (add-toc-item! 'tocActMarkup text))
1826
1827 \book {
1828   \markuplist \table-of-contents
1829   \tocAct \markup { Atto Primo }
1830   \tocItem \markup { Coro. Viva il nostro Alcide }
1831   \tocItem \markup { Cesare. Presti omai l'Egizzia terra }
1832   \tocAct \markup { Atto Secondo }
1833   \tocItem \markup { Sinfonia }
1834   \tocItem \markup { Cleopatra. V'adoro, pupille, saette d'Amore }
1835   \markup \null
1836 }
1837 @end lilypond
1838
1839 Dots can be added to fill the line between an item and its page number:
1840
1841 @lilypond[verbatim,line-width=10.0\cm]
1842 \header { tagline = ##f }
1843 \paper {
1844   tocItemMarkup = \tocItemWithDotsMarkup
1845 }
1846
1847 \book {
1848   \markuplist \table-of-contents
1849   \tocItem \markup { Allegro }
1850   \tocItem \markup { Largo }
1851   \markup \null
1852 }
1853 @end lilypond
1854
1855 @seealso
1856 Installed Files:
1857 @file{ly/toc-init.ly}.
1858
1859 @predefined
1860 @funindex \table-of-contents
1861 @code{\table-of-contents},
1862 @funindex \tocItem
1863 @code{\tocItem}.
1864 @endpredefined
1865
1866
1867 @node Working with input files
1868 @section Working with input files
1869
1870 @menu
1871 * Including LilyPond files::
1872 * Different editions from one source::
1873 * Special characters::
1874 @end menu
1875
1876
1877 @node Including LilyPond files
1878 @subsection Including LilyPond files
1879
1880 @funindex \include
1881 @cindex including files
1882
1883 A large project may be split up into separate files.  To refer to
1884 another file, use
1885
1886 @example
1887 \include "otherfile.ly"
1888 @end example
1889
1890 The line @code{\include "otherfile.ly"} is equivalent to pasting the
1891 contents of @file{otherfile.ly} into the current file at the place
1892 where the @code{\include} appears.  For example, in a large
1893 project you might write separate files for each instrument part
1894 and create a @qq{full score} file which brings together the
1895 individual instrument files.  Normally the included file will
1896 define a number of variables which then become available
1897 for use in the full score file.  Tagged sections can be
1898 marked in included files to assist in making them usable in
1899 different places in a score, see @ref{Different editions from
1900 one source}.
1901
1902 Files in the current working directory may be referenced by
1903 specifying just the file name after the @code{\include} command.
1904 Files in other locations may be included by giving either a full
1905 path reference or a relative path reference (but use the UNIX
1906 forward slash, /, rather than the DOS/Windows back slash, \, as the
1907 directory separator.)  For example, if @file{stuff.ly} is located
1908 one directory higher than the current working directory, use
1909
1910 @example
1911 \include "../stuff.ly"
1912 @end example
1913
1914 @noindent
1915 or if the included orchestral parts files are all located in a
1916 subdirectory called @file{parts} within the current directory, use
1917
1918 @example
1919 \include "parts/VI.ly"
1920 \include "parts/VII.ly"
1921 @dots{} etc
1922 @end example
1923
1924 Files which are to be included can also contain @code{\include}
1925 statements of their own.  By default, these second-level
1926 @code{\include} statements are not interpreted until they have
1927 been brought into the main file, so the file names they specify
1928 must all be relative to the directory containing the main file,
1929 not the directory containing the included file.  However,
1930 this behavior can be changed globally by passing the option
1931 @option{-drelative-includes} option at the command line
1932 (or by adding @code{#(ly:set-option 'relative-includes #t)}
1933 at the top of the main input file).
1934
1935 When @code{relative-includes} is set to @code{#t}, the path for each
1936 @code{\include} command will be taken relative to the file containing
1937 that command.  This behavior is recommended and it will become the
1938 default behavior in a future version of lilypond.
1939
1940 Files relative to the main directory and files relative to some other
1941 directory may both be @code{\include}d by setting
1942 @code{relative-includes} to @code{#t} or @code{#f} at appropriate
1943 places in the files.  For example, if a general library, libA, has
1944 been created which itself uses sub-files which are @code{\include}d
1945 by the entry file of that library, those @code{\include} statements
1946 will need to be preceded by
1947 @code{#(ly:set-option #relative-includes #t)} so they are interpreted
1948 correctly when brought into the main @code{.ly} file, like this:
1949
1950 @example
1951 libA/
1952   libA.ly
1953   A1.ly
1954   A2.ly
1955   @dots{}
1956 @end example
1957
1958 @noindent
1959 then the entry file, @code{libA.ly}, will contain
1960
1961 @example
1962 #(ly:set-option 'relative-includes #t)
1963 \include "A1.ly"
1964 \include "A2.ly"
1965 @dots{}
1966 % return to default setting
1967 #(ly:set-option 'relative-includes #f)
1968 @end example
1969
1970 Any @file{.ly} file can then include the entire library simply with
1971
1972 @example
1973 \include "~/libA/libA.ly"
1974 @end example
1975
1976 More complex file structures may be devised by switching at
1977 appropriate places.
1978
1979 Files can also be included from a directory in a search path
1980 specified as an option when invoking LilyPond from the command
1981 line.  The included files are then specified using just their
1982 file name.  For example, to compile @file{main.ly} which includes
1983 files located in a subdirectory called @file{parts} by this method,
1984 cd to the directory containing @file{main.ly} and enter
1985
1986 @example
1987 lilypond --include=parts main.ly
1988 @end example
1989
1990 and in main.ly write
1991
1992 @example
1993 \include "VI.ly"
1994 \include "VII.ly"
1995 @dots{} etc
1996 @end example
1997
1998 Files which are to be included in many scores may be placed in
1999 the LilyPond directory @file{../ly}.  (The location of this
2000 directory is installation-dependent - see
2001 @rlearning{Other sources of information}).  These files can then
2002 be included simply by naming them on an @code{\include} statement.
2003 This is how the language-dependent files like @file{english.ly} are
2004 included.
2005
2006 LilyPond includes a number of files by default when you start
2007 the program.  These includes are not apparent to the user, but the
2008 files may be identified by running @code{lilypond --verbose} from
2009 the command line.  This will display a list of paths and files that
2010 LilyPond uses, along with much other information.  Alternatively,
2011 the more important of these files are discussed in
2012 @rlearning{Other sources of information}.  These files may be
2013 edited, but changes to them will be lost on installing a new
2014 version of LilyPond.
2015
2016 Some simple examples of using @code{\include} are shown in
2017 @rlearning{Scores and parts}.
2018
2019 @seealso
2020 Learning Manual:
2021 @rlearning{Other sources of information},
2022 @rlearning{Scores and parts}.
2023
2024 @knownissues
2025 If an included file is given a name which is the same as one in
2026 LilyPond's installation files, LilyPond's file from the
2027 installation files takes precedence.
2028
2029
2030 @node Different editions from one source
2031 @subsection Different editions from one source
2032
2033 Several methods can be used to generate different versions of a score
2034 from the same music source.  Variables are perhaps the most useful for
2035 combining lengthy sections of music and/or annotation.  Tags are more
2036 useful for selecting one section from several alternative shorter
2037 sections of music, and can also be used for splicing pieces of music
2038 together at different points.
2039
2040 Whichever method is used, separating the notation from the structure of
2041 the score will make it easier to change the structure while leaving the
2042 notation untouched.
2043
2044 @menu
2045 * Using variables::
2046 * Using tags::
2047 * Using global settings::
2048 @end menu
2049
2050 @node Using variables
2051 @unnumberedsubsubsec Using variables
2052
2053 @cindex variables, use of
2054
2055 If sections of the music are defined in variables they can be
2056 reused in different parts of the score, see @rlearning{Organizing
2057 pieces with variables}.  For example, an @notation{a cappella}
2058 vocal score frequently includes a piano reduction of the parts
2059 for rehearsal purposes which is identical to the vocal music, so
2060 the music need be entered only once.  Music from two variables
2061 may be combined on one staff, see @ref{Automatic part combining}.
2062 Here is an example:
2063
2064 @lilypond[verbatim,quote]
2065 sopranoMusic = \relative { a'4 b c b8( a) }
2066 altoMusic = \relative { e'4 e e f }
2067 tenorMusic = \relative { c'4 b e d8( c) }
2068 bassMusic = \relative { a4 gis a d, }
2069 allLyrics = \lyricmode {King of glo -- ry }
2070 <<
2071   \new Staff = "Soprano" \sopranoMusic
2072   \new Lyrics \allLyrics
2073   \new Staff = "Alto" \altoMusic
2074   \new Lyrics \allLyrics
2075   \new Staff = "Tenor" {
2076     \clef "treble_8"
2077     \tenorMusic
2078   }
2079   \new Lyrics \allLyrics
2080   \new Staff = "Bass" {
2081     \clef "bass"
2082     \bassMusic
2083   }
2084   \new Lyrics \allLyrics
2085   \new PianoStaff <<
2086     \new Staff = "RH" {
2087       \set Staff.printPartCombineTexts = ##f
2088       \partcombine
2089       \sopranoMusic
2090       \altoMusic
2091     }
2092     \new Staff = "LH" {
2093       \set Staff.printPartCombineTexts = ##f
2094       \clef "bass"
2095       \partcombine
2096       \tenorMusic
2097       \bassMusic
2098     }
2099   >>
2100 >>
2101 @end lilypond
2102
2103 Separate scores showing just the vocal parts or just the piano
2104 part can be produced by changing just the structural statements,
2105 leaving the musical notation unchanged.
2106
2107 For lengthy scores, the variable definitions may be placed in
2108 separate files which are then included, see @ref{Including
2109 LilyPond files}.
2110
2111 @node Using tags
2112 @unnumberedsubsubsec Using tags
2113
2114 @funindex \tag
2115 @funindex \keepWithTag
2116 @funindex \removeWithTag
2117 @cindex tag
2118 @cindex keep tagged music
2119 @cindex remove tagged music
2120
2121 The @code{\tag #'@var{partA}} command marks a music expression
2122 with the name @var{partA}.
2123 Expressions tagged in this way can be selected or filtered out by
2124 name later, using either @code{\keepWithTag #'@var{name}} or
2125 @code{\removeWithTag #'@var{name}}.  The result of applying these filters
2126 to tagged music is as follows:
2127 @multitable @columnfractions .5 .5
2128 @headitem Filter
2129   @tab Result
2130 @item
2131 Tagged music preceded by @code{\keepWithTag #'@var{name}} or
2132        @code{\keepWithTag #'(@var{name1} @var{name2}@dots{})}
2133 @tab Untagged music and music tagged with any of the given tag
2134      names is included;
2135      music tagged with any other tag name is excluded.
2136 @item
2137 Tagged music preceded by @code{\removeWithTag #'@var{name}} or
2138        @code{\removeWithTag #'(@var{name1} @var{name2}@dots{})}
2139 @tab Untagged music and music not tagged with any of the given tag names
2140      is included; music tagged with any of the given tag names is
2141      excluded.
2142 @item
2143 Tagged music not preceded by either @code{\keepWithTag} or
2144 @code{\removeWithTag}
2145 @tab All tagged and untagged music is included.
2146 @end multitable
2147
2148 The arguments of the @code{\tag}, @code{\keepWithTag} and
2149 @code{\removeWithTag} commands should be a symbol or list of
2150 symbols (such as @code{#'score} or @code{#'(violinI violinII}),
2151 followed by a music expression.  If @emph{and only if} the symbols
2152 are valid LilyPond identifiers (alphabetic characters only, no
2153 numbers, underscores, or dashes) which cannot be confused with notes,
2154 the @code{#'} may be omitted and, as a shorthand, a list of symbols
2155 can use the dot separator: i.e. @code{\tag #'(violinI violinII)} can
2156 be written @code{\tag violinI.violinII}.  The same applies to
2157 @code{\keepWithTag} and @code{\removeWithTag}.
2158
2159 In the following example, we see two versions of a piece of music,
2160 one showing trills with the usual notation, and one with trills
2161 explicitly expanded:
2162
2163 @lilypond[verbatim,quote]
2164 music = \relative {
2165   g'8. c32 d
2166   \tag #'trills { d8.\trill }
2167   \tag #'expand { \repeat unfold 3 { e32 d } }
2168   c32 d
2169  }
2170
2171 \score {
2172   \keepWithTag #'trills \music
2173 }
2174 \score {
2175   \keepWithTag #'expand \music
2176 }
2177 @end lilypond
2178
2179 @noindent
2180 Alternatively, it is sometimes easier to exclude sections of music:
2181
2182 @lilypond[verbatim,quote]
2183 music = \relative {
2184   g'8. c32 d
2185   \tag #'trills { d8.\trill }
2186   \tag #'expand {\repeat unfold 3 { e32 d } }
2187   c32 d
2188  }
2189
2190 \score {
2191   \removeWithTag #'expand
2192   \music
2193 }
2194 \score {
2195   \removeWithTag #'trills
2196   \music
2197 }
2198 @end lilypond
2199
2200 Tagged filtering can be applied to articulations, texts, etc. by
2201 prepending
2202
2203 @example
2204 -\tag #'@var{your-tag}
2205 @end example
2206
2207 to an articulation.  For example, this would define a note with a
2208 conditional fingering indication and a note with a conditional
2209 annotation:
2210
2211 @example
2212 c1-\tag #'finger ^4
2213 c1-\tag #'warn ^"Watch!"
2214 @end example
2215
2216 Multiple tags may be placed on expressions with multiple
2217 @code{\tag} entries, or by combining multiple tags into one symbol
2218 list:
2219
2220 @lilypond[quote,verbatim]
2221 music = \relative c'' {
2222   \tag #'a \tag #'both { a4 a a a }
2223   \tag #'(b both) { b4 b b b }
2224 }
2225 <<
2226 \keepWithTag #'a \music
2227 \keepWithTag #'b \music
2228 \keepWithTag #'both \music
2229 >>
2230 @end lilypond
2231
2232 Multiple @code{\removeWithTag} filters may be applied to a single
2233 music expression to remove several differently named tagged
2234 sections.  Alternatively, you can use a single
2235 @code{\removeWithTag} with a list of tags.
2236
2237 @lilypond[verbatim,quote]
2238 music = \relative c'' {
2239   \tag #'A { a4 a a a }
2240   \tag #'B { b4 b b b }
2241   \tag #'C { c4 c c c }
2242   \tag #'D { d4 d d d }
2243 }
2244 \new Voice {
2245   \removeWithTag #'B
2246   \removeWithTag #'C
2247   \music
2248   \removeWithTag #'(B C)
2249   \music
2250 }
2251 @end lilypond
2252
2253 Two or more @code{\keepWithTag} filters applied to a single music
2254 expression will cause @emph{all} tagged sections to be removed, as
2255 the first filter will remove all tagged sections except the one
2256 named, and the second filter will remove even that tagged section.
2257 Usually you would rather want to use a single @code{\keepWithTag}
2258 command with a list of multiple tags: this will only remove tagged
2259 sections not given in @emph{any} of the tags.
2260
2261 @cindex tag groups
2262 @funindex \tagGroup
2263 While @code{\keepWithTag} is convenient when dealing with
2264 @emph{one} set of alternatives, the removal of music tagged with
2265 @emph{unrelated} tags is problematic when using tags for more than
2266 one purpose.  For that reason, @q{tag groups} of related tags can
2267 be declared:
2268
2269 @example
2270 \tagGroup #'(violinI violinII viola cello)
2271 @end example
2272
2273 declares the respective tags as belonging to one tag group.
2274
2275 @example
2276 \keepWithTag #'violinI @dots{}
2277 @end example
2278
2279 will then only be concerned with tags from @code{violinI}'s tag
2280 group: any element of the included music that is tagged with one
2281 or more of tags from this set but @emph{not} with @code{violinI}
2282 will get removed.
2283
2284 To any @code{\keepWithTag} command, only tags from the tag groups
2285 of the tags given in the command are visible.
2286
2287 Tags cannot be members of more than one tag group.
2288
2289 @funindex \pushToTag
2290 @funindex \appendToTag
2291 @cindex splice into tagged music
2292
2293 Sometimes you want to splice some music at a particular place in an
2294 existing music expression.  You can use @code{\pushToTag} and
2295 @code{\appendToTag} for adding material at the front or end of the
2296 @code{elements} of an existing music construct.  Not every music
2297 construct has @code{elements}, but sequential and simultaneous music are
2298 safe bets:
2299
2300 @lilypond[verbatim,quote]
2301 test = { \tag #'here { \tag #'here <<c''>> } }
2302
2303 {
2304   \pushToTag #'here c'
2305   \pushToTag #'here e'
2306   \pushToTag #'here g' \test
2307   \appendToTag #'here c'
2308   \appendToTag #'here e'
2309   \appendToTag #'here g' \test
2310 }
2311 @end lilypond
2312
2313 Both commands get a tag, the material to splice in at every occurence of
2314 the tag, and the tagged expression.
2315
2316 @seealso
2317 Learning Manual:
2318 @rlearning{Organizing pieces with variables}.
2319
2320 Notation Reference:
2321 @ref{Automatic part combining},
2322 @ref{Including LilyPond files}.
2323
2324 @knownissues
2325 Calling @code{\relative} on a music expression obtained by filtering
2326 music through @code{\keepWithTag} or @code{\removeWithTag} might cause
2327 the octave relations to change, as only the pitches actually
2328 remaining in the filtered expression will be considered.  Applying
2329 @code{\relative} first, before @code{\keepWithTag} or
2330 @code{\removeWithTag}, avoids this danger as @code{\relative} then
2331 acts on all the pitches as-input.
2332
2333
2334 @node Using global settings
2335 @unnumberedsubsubsec Using global settings
2336
2337 @cindex include-settings
2338
2339 Global settings can be included from a separate file:
2340
2341 @example
2342 lilypond -dinclude-settings=MY_SETTINGS.ly MY_SCORE.ly
2343 @end example
2344
2345 Groups of settings such as page size, font or type face can be stored
2346 in separate files. This allows different editions from the same score
2347 as well as standard settings to be applied to many scores, simply by
2348 specifying the proper settings file.
2349
2350 This technique also works well with the use of style sheets, as
2351 discussed in @rlearning{Style sheets}.
2352
2353 @seealso
2354 Learning Manual:
2355 @rlearning{Organizing pieces with variables},
2356 @rlearning{Style sheets}.
2357
2358 Notation Reference:
2359 @ref{Including LilyPond files}.
2360
2361
2362 @node Special characters
2363 @subsection Special characters
2364
2365 @cindex special characters
2366 @cindex non-ASCII characters
2367
2368 @menu
2369 * Text encoding::
2370 * Unicode::
2371 * ASCII aliases::
2372 @end menu
2373
2374
2375 @node Text encoding
2376 @unnumberedsubsubsec Text encoding
2377
2378 @cindex UTF-8
2379
2380 LilyPond uses the character repertoire defined by the Unicode
2381 consortium and ISO/IEC 10646.  This defines a unique name and
2382 code point for the character sets used in virtually all modern
2383 languages and many others too.  Unicode can be implemented using
2384 several different encodings.  LilyPond uses the UTF-8 encoding
2385 (UTF stands for Unicode Transformation Format) which represents
2386 all common Latin characters in one byte, and represents other
2387 characters using a variable length format of up to four bytes.
2388
2389 The actual appearance of the characters is determined by the
2390 glyphs defined in the particular fonts available - a font defines
2391 the mapping of a subset of the Unicode code points to glyphs.
2392 LilyPond uses the Pango library to layout and render multi-lingual
2393 texts.
2394
2395 LilyPond does not perform any input-encoding conversions.  This
2396 means that any text, be it title, lyric text, or musical
2397 instruction containing non-ASCII characters, must be encoded in
2398 UTF-8.  The easiest way to enter such text is by using a
2399 Unicode-aware editor and saving the file with UTF-8 encoding.  Most
2400 popular modern editors have UTF-8 support, for example, vim, Emacs,
2401 jEdit, and GEdit do.  All MS Windows systems later than NT use
2402 Unicode as their native character encoding, so even Notepad can
2403 edit and save a file in UTF-8 format.  A more functional
2404 alternative for Windows is BabelPad.
2405
2406 If a LilyPond input file containing a non-ASCII character is not
2407 saved in UTF-8 format the error message
2408
2409 @example
2410 FT_Get_Glyph_Name () error: invalid argument
2411 @end example
2412
2413 will be generated.
2414
2415 Here is an example showing Cyrillic, Hebrew and Portuguese
2416 text:
2417
2418 @lilypond[quote]
2419 %c No verbatim here as the code does not display correctly in PDF
2420 % Font settings for Cyrillic and Hebrew
2421 % Linux Libertine fonts contain Cyrillic and Hebrew glyphs.
2422 \paper {
2423   #(define fonts
2424     (set-global-fonts
2425      #:roman "Linux Libertine O,serif"
2426      #:sans "Linux Biolinum O,sans-serif"
2427      #:typewriter "Linux Libertine Mono O,monospace"
2428    ))
2429 }
2430
2431 % Cyrillic
2432 bulgarian = \lyricmode {
2433   Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.
2434 }
2435
2436 % Hebrew
2437 hebrew = \lyricmode {
2438   זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן.
2439 }
2440
2441 % Portuguese
2442 portuguese = \lyricmode {
2443   à vo -- cê uma can -- ção legal
2444 }
2445
2446 \relative {
2447   c'2 d e f g f e
2448 }
2449 \addlyrics { \bulgarian }
2450 \addlyrics { \hebrew }
2451 \addlyrics { \portuguese }
2452 @end lilypond
2453
2454
2455 @node Unicode
2456 @unnumberedsubsubsec Unicode
2457
2458 @cindex Unicode
2459
2460 To enter a single character for which the Unicode code point is
2461 known but which is not available in the editor being used, use
2462 either @code{\char ##xhhhh} or @code{\char #dddd} within a
2463 @code{\markup} block, where @code{hhhh} is the hexadecimal code for
2464 the character required and @code{dddd} is the corresponding decimal
2465 value.  Leading zeroes may be omitted, but it is usual to specify
2466 all four characters in the hexadecimal representation.  (Note that
2467 the UTF-8 encoding of the code point should @emph{not} be used
2468 after @code{\char}, as UTF-8 encodings contain extra bits indicating
2469 the number of octets.)  Unicode code charts and a character name
2470 index giving the code point in hexadecimal for any character can be
2471 found on the Unicode Consortium website,
2472 @uref{http://www.unicode.org/}.
2473
2474 For example, @code{\char ##x03BE} and @code{\char #958} would both
2475 enter the Unicode U+03BE character, which has the Unicode name
2476 @qq{Greek Small Letter Xi}.
2477
2478 Any Unicode code point may be entered in this way and if all special
2479 characters are entered in this format it is not necessary to save
2480 the input file in UTF-8 format.  Of course, a font containing all
2481 such encoded characters must be installed and available to LilyPond.
2482
2483 The following example shows Unicode hexadecimal values being entered
2484 in four places -- in a rehearsal mark, as articulation text, in
2485 lyrics and as stand-alone text below the score:
2486
2487 @lilypond[quote,verbatim]
2488 \score {
2489   \relative {
2490     c''1 \mark \markup { \char ##x03EE }
2491     c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
2492   }
2493   \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
2494 }
2495 \markup { "Copyright 2008--2015" \char ##x00A9 }
2496 @end lilypond
2497
2498 @cindex copyright sign
2499
2500 To enter the copyright sign in the copyright notice use:
2501
2502 @example
2503 \header @{
2504   copyright = \markup @{ \char ##x00A9 "2008" @}
2505 @}
2506 @end example
2507
2508
2509 @node ASCII aliases
2510 @unnumberedsubsubsec ASCII aliases
2511
2512 A list of ASCII aliases for special characters can be included:
2513
2514 @lilypond[quote,verbatim]
2515 \paper {
2516   #(include-special-characters)
2517 }
2518
2519 \markup "&flqq; &ndash; &OE;uvre incomplète&hellip; &frqq;"
2520
2521 \score {
2522   \new Staff { \repeat unfold 9 a'4 }
2523   \addlyrics {
2524     This is al -- so wor -- kin'~in ly -- rics: &ndash;_&OE;&hellip;
2525   }
2526 }
2527
2528 \markup \column {
2529   "The replacement can be disabled:"
2530   "&ndash; &OE; &hellip;"
2531   \override #'(replacement-alist . ()) "&ndash; &OE; &hellip;"
2532 }
2533 @end lilypond
2534
2535 You can also make your own aliases, either globally:
2536
2537 @lilypond[quote,verbatim]
2538 \paper {
2539   #(add-text-replacements!
2540     '(("100" . "hundred")
2541       ("dpi" . "dots per inch")))
2542 }
2543 \markup "A 100 dpi."
2544 @end lilypond
2545
2546 or locally:
2547
2548 @lilypond[quote,verbatim]
2549 \markup \replace #'(("100" . "hundred")
2550                     ("dpi" . "dots per inch")) "A 100 dpi."
2551 @end lilypond
2552
2553 @seealso
2554 Notation Reference:
2555 @ref{List of special characters}.
2556
2557 Installed Files:
2558 @file{ly/text-replacements.ly}.
2559
2560
2561 @node Controlling output
2562 @section Controlling output
2563
2564 @menu
2565 * Extracting fragments of music::
2566 * Skipping corrected music::
2567 * Alternative output formats::
2568 * Replacing the notation font::
2569 @end menu
2570
2571 @funindex clip-regions
2572 @cindex Fragments, music
2573 @cindex Music fragments
2574
2575 @node Extracting fragments of music
2576 @subsection Extracting fragments of music
2577
2578 It is possible to output one or more fragments of a score by defining
2579 the explicit location of the music to be extracted within the
2580 @code{\layout} block of the the input file using the @code{clip-regions}
2581 function, and then running LilyPond with the @option{-dclip-systems}
2582 option;
2583
2584 @example
2585 \layout @{
2586   clip-regions
2587   = #(list
2588       (cons
2589        (make-rhythmic-location 5 1 2)
2590        (make-rhythmic-location 7 3 4)))
2591 @}
2592 @end example
2593
2594 @noindent
2595 This example will extract a single fragment of the input file
2596 @emph{starting} after a half-note duration in fifth measure
2597 (@code{5 1 2}) and @emph{ending} after the third quarter-note in the
2598 seventh measure (@code{7 3 4}).
2599
2600 Additional fragments can be extracted by adding more pairs of
2601 @code{make-rhythmic-location} entries to the @code{clip-regions} list in
2602 the @code{\layout} block.
2603
2604 By default, each music fragment will be output as a separate @code{EPS}
2605 file, but other formats such as @code{PDF} or @code{PNG} can also be
2606 created if required.  The extracted music is output as if had been
2607 literally @q{cut} from the original printed score so if a fragment runs
2608 over one or more lines, a separate ouput file for each line will be
2609 generated.
2610
2611 @seealso
2612 Notation Reference:
2613 @ref{The layout block}.
2614
2615 Application Usage
2616 @rprogram{Command-line usage}.
2617
2618
2619
2620 @node Skipping corrected music
2621 @subsection Skipping corrected music
2622
2623
2624 @funindex skipTypesetting
2625 @funindex showFirstLength
2626 @funindex showLastLength
2627
2628 When entering or copying music, usually only the music near the end (where
2629 you
2630 are adding notes) is interesting to view and correct.  To speed up
2631 this correction process, it is possible to skip typesetting of all but
2632 the last few measures.  This is achieved by putting
2633
2634 @example
2635 showLastLength = R1*5
2636 \score @{ @dots{} @}
2637 @end example
2638
2639 @noindent
2640 in your source file.  This will render only the last 5 measures
2641 (assuming 4/4 time signature) of every @code{\score} in the input
2642 file.  For longer pieces, rendering only a small part is often an order
2643 of magnitude quicker than rendering it completely.  When working on the
2644 beginning of a score you have already typeset (e.g. to add a new part),
2645 the @code{showFirstLength} property may be useful as well.
2646
2647 Skipping parts of a score can be controlled in a more fine-grained
2648 fashion with the property @code{Score.skipTypesetting}.  When it is
2649 set, no typesetting is performed at all.
2650
2651 This property is also used to control output to the MIDI file.  Note that
2652 it skips all events, including tempo and instrument changes.  You have
2653 been warned.
2654
2655 @lilypond[quote,ragged-right,verbatim]
2656 \relative c' {
2657   c1
2658   \set Score.skipTypesetting = ##t
2659   \tempo 4 = 80
2660   c4 c c c
2661   \set Score.skipTypesetting = ##f
2662   d4 d d d
2663 }
2664 @end lilypond
2665
2666 In polyphonic music, @code{Score.skipTypesetting} will affect all
2667 voices and staves, saving even more time.
2668
2669 @node Alternative output formats
2670 @subsection Alternative output formats
2671
2672 @cindex scalable vector graphics output
2673 @cindex SVG output
2674 @cindex encapsulated postscript output
2675 @cindex EPS output
2676
2677 The default output formats for the printed score are Portable
2678 Document Format (PDF) and PostScript (PS).  Scalable Vector
2679 Graphics (SVG), Encapsulated PostScript (EPS) and Portable
2680 Network Graphics (PNG) output formats are also available through
2681 command line options, see
2682 @rprogram{Basic command line options for LilyPond}.
2683
2684
2685 @node Replacing the notation font
2686 @subsection Replacing the notation font
2687
2688 Gonville is an alternative to the Feta font used in LilyPond and can
2689 be downloaded from:
2690 @example
2691 @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/}
2692 @end example
2693
2694 Here are a few sample bars of music set in Gonville:
2695
2696 @c NOTE: these images are a bit big, but that's important
2697 @c       for the font comparison.  -gp
2698 @sourceimage{Gonville_after,15cm,,}
2699
2700 Here are a few sample bars of music set in LilyPond's Feta font:
2701
2702 @sourceimage{Gonville_before,15cm,,}
2703
2704 @subsubheading Installation Instructions for MacOS
2705
2706 Download and extract the zip file.  Copy the @code{lilyfonts}
2707 directory to @file{@var{SHARE_DIR}/lilypond/current}; for more
2708 information, see @rlearning{Other sources of information}.  Rename the
2709 existing @code{fonts} directory to @code{fonts_orig} and the
2710 @code{lilyfonts} directory to @code{fonts}.  To revert back to Feta,
2711 reverse the process.
2712
2713 @seealso
2714 Learning Manual:
2715 @rlearning{Other sources of information}.
2716
2717 @knownissues
2718 Gonville cannot be used to typeset @q{Ancient Music} notation and it is
2719 likely newer glyphs in later releases of LilyPond may not exist in the
2720 Gonville font family.  Please refer to the author's website for more
2721 information on these and other specifics, including licensing of
2722 Gonville.
2723
2724
2725 @node Creating MIDI output
2726 @section Creating MIDI output
2727
2728 @cindex Sound
2729 @cindex MIDI
2730
2731 LilyPond can produce files that conform to the MIDI (Musical Instrument
2732 Digital Interface) standard and so allow for the checking of the music
2733 output aurally (with the help of an application or device that
2734 understands MIDI).  Listening to MIDI output may also help in spotting
2735 errors such as notes that have been entered incorrectly or are missing
2736 accidentals and so on.
2737
2738 MIDI files do not contain sound (like AAC, MP3 or Vorbis files) but
2739 require additional software to produce sound from them.
2740
2741 @menu
2742 * Supported notation for MIDI::
2743 * Unsupported notation for MIDI::
2744 * The MIDI block::
2745 * Controlling MIDI dynamics::
2746 * Using MIDI instruments::
2747 * Using repeats with MIDI::
2748 * MIDI channel mapping::
2749 * Context properties for MIDI effects::
2750 * Enhancing MIDI output::
2751 @end menu
2752
2753 @cindex MIDI, Supported notation
2754
2755 @node Supported notation for MIDI
2756 @subsection Supported notation for MIDI
2757
2758 The following musical notation can be used with LilyPond's default
2759 capabilities to produce MIDI output;
2760
2761 @itemize
2762 @item Breath marks
2763 @item Chords entered as chord names
2764 @item Crescendi, decrescendi over multiple notes.  The volume is altered
2765 linearly between the two extremes
2766 @item Dynamic markings from @code{ppppp} to @code{fffff}, including
2767 @code{mp}, @code{mf} and @code{sf}
2768 @item Microtones but @emph{not} microtonal chords.  A MIDI player that
2769 supports pitch bending will also be required.
2770 @item Lyrics
2771 @item Pitches
2772 @item Rhythms entered as note durations, including tuplets
2773 @item @q{Simple} articulations; staccato, staccatissimo, accent, marcato
2774 and portato
2775 @item Tempo changes using the @code{\tempo} function
2776 @item Ties
2777 @item Tremolos that are @emph{not} entered with a
2778 @q{@code{:}[@var{number}]} value
2779 @end itemize
2780
2781 Panning, balance, expression, reverb and chorus effects can also be
2782 controlled by setting context properties,
2783 see @ref{Context properties for MIDI effects}.
2784
2785 When combined with the @file{articulate} script the following,
2786 additional musical notation can be output to MIDI;
2787
2788 @itemize
2789 @item Appogiaturas.  These are made to take half the value of the note
2790 following (without taking dots into account).  For example;
2791
2792 @example
2793 \appoggiatura c8 d2.
2794 @end example
2795
2796 @noindent
2797 The c will take the value of a crotchet.
2798
2799 @item Ornaments (i.e. mordents, trills and turns et al.)
2800 @item Rallentando, accelerando, ritardando and a tempo
2801 @item Slurs, including phrasing slurs
2802 @item Tenuto
2803 @end itemize
2804
2805 @noindent
2806 See @ref{Enhancing MIDI output}.
2807
2808 @cindex MIDI, Unsupported notation
2809
2810 @node Unsupported notation for MIDI
2811 @subsection Unsupported notation for MIDI
2812
2813 The following items of musical notation cannot be output to MIDI;
2814
2815 @itemize
2816 @item Articulations other than staccato, staccatissimo, accent, marcato
2817 and portato
2818 @item Crescendi and decrescendi over a @emph{single} note
2819 @item Fermata
2820 @item Figured bass
2821 @item Glissandi
2822 @item Falls and doits
2823 @item Microtonal chords
2824 @item Rhythms entered as annotations, e.g. swing
2825 @item Tempo changes without @code{\tempo} (e.g. entered as annotations)
2826 @item Tremolos that @emph{are} entered with a @q{@code{:}[@var{number}]}
2827 value
2828 @end itemize
2829
2830
2831 @node The MIDI block
2832 @subsection The MIDI block
2833
2834 @cindex MIDI block
2835
2836 To create a MIDI output file from a LilyPond input file, insert a
2837 @code{\midi} block, which can be empty, within the @code{\score} block;
2838
2839 @example
2840 \score @{
2841   @var{@dots{} music @dots{}}
2842   \layout @{ @}
2843   \midi @{ @}
2844 @}
2845 @end example
2846
2847 @warning{ A @code{@bs{}score} block that, as well as the music, contains
2848 only a @code{@bs{}midi} block (i.e. @emph{without} the @code{@bs{}layout}
2849 block), will only produce MIDI output files.  No notation will be
2850 printed.}
2851
2852 The default output file extension (@code{.midi}) can be changed by using
2853 the @code{-dmidi-extension} option with the @code{lilypond} command:
2854
2855 @example
2856 lilypond -dmidi-extension=mid MyFile.ly
2857 @end example
2858
2859 Alternatively, add the following Scheme expression before the start of
2860 either the @code{\book}, @code{\bookpart} or @code{\score} blocks.  See
2861 @ref{File structure}.
2862
2863 @example
2864 #(ly:set-option 'midi-extension "mid")
2865 @end example
2866
2867 @seealso
2868 Notation Reference:
2869 @ref{File structure}.
2870
2871 Installed Files:
2872 @file{scm/midi.scm}.
2873
2874 @knownissues
2875 There are fifteen MIDI channels available and one additional channel
2876 (#10) for drums.  Staves are assigned to channels in sequence, so a
2877 score that contains more than fifteen staves will result in the extra
2878 staves sharing (but not overwriting) the same MIDI channel.  This may be
2879 a problem if the sharing staves have conflicting, channel-based, MIDI
2880 properties -- such as different MIDI instruments -- set.
2881
2882
2883 @node Controlling MIDI dynamics
2884 @subsection Controlling MIDI dynamics
2885
2886 It is possible to control the overall MIDI volume, the relative volume
2887 of dynamic markings and the relative volume of different instruments.
2888
2889 Dynamic marks translate automatically into volume levels in the
2890 available MIDI volume range whereas crescendi and decrescendi vary the
2891 volume linearly between their two extremes.  It is possible to control
2892 the relative volume of dynamic markings, and the overall volume levels
2893 of different instruments.
2894
2895 @menu
2896 * Dynamic marks in MIDI::
2897 * Setting MIDI volume::
2898 * Setting MIDI block properties::
2899 @end menu
2900
2901 @cindex MIDI volume
2902 @cindex MIDI equalization
2903 @cindex MIDI dynamics
2904 @cindex Dynamics in MIDI
2905
2906
2907 @node Dynamic marks in MIDI
2908 @unnumberedsubsubsec Dynamic marks in MIDI
2909
2910 Only the dynamic markings from @code{ppppp} to @code{fffff}, including
2911 @code{mp}, @code{mf} and @code{sf} have values assigned to them.  This
2912 value is then applied to the value of the overall MIDI volume range to
2913 obtain the final volume included in the MIDI output for that particular
2914 dynamic marking.  The default fractions range from 0.25 for
2915 @notation{ppppp} to 0.95 for @notation{fffff}. The complete set of
2916 dynamic marks and their associated fractions can be found in
2917 @file{scm/midi.scm}.
2918
2919
2920 @snippets
2921 @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
2922 {creating-custom-dynamics-in-midi-output.ly}
2923
2924 Installed Files:
2925 @file{ly/script-init.ly}
2926 @file{scm/midi.scm}.
2927
2928 Snippets:
2929 @rlsr{MIDI}.
2930
2931 Internals Reference:
2932 @rinternals{Dynamic_performer}.
2933
2934
2935 @node Setting MIDI volume
2936 @unnumberedsubsubsec Setting MIDI volume
2937
2938 The minimum and maximum overall volume of MIDI dynamic markings is
2939 controlled by setting the properties @code{midiMinimumVolume} and
2940 @code{midiMaximumVolume} at the @code{Score} level.  These properties
2941 have an effect only at the start of a voice and on dynamic marks.  The
2942 fraction corresponding to each dynamic mark is modified with this
2943 formula
2944
2945 @example
2946 midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction
2947 @end example
2948
2949 In the following example the dynamic range of the overall MIDI
2950 volume is limited to the range @code{0.2} - @code{0.5}.
2951
2952 @example
2953 \score @{
2954   <<
2955     \new Staff @{
2956       \set Staff.midiInstrument = #"flute"
2957       @var{@dots{} music @dots{}}
2958     @}
2959     \new Staff @{
2960       \set Staff.midiInstrument = #"clarinet"
2961       @var{@dots{} music @dots{}}
2962     @}
2963   >>
2964   \midi @{
2965     \context @{
2966       \Score
2967       midiMinimumVolume = #0.2
2968       midiMaximumVolume = #0.5
2969     @}
2970   @}
2971 @}
2972 @end example
2973
2974 Simple MIDI instrument equalization can be achieved by setting
2975 @code{midiMinimumVolume} and @code{midiMaximumVolume} properties within
2976 the @code{Staff} context.
2977
2978 @example
2979 \score @{
2980   \new Staff @{
2981     \set Staff.midiInstrument = #"flute"
2982     \set Staff.midiMinimumVolume = #0.7
2983     \set Staff.midiMaximumVolume = #0.9
2984     @var{@dots{} music @dots{}}
2985   @}
2986   \midi @{ @}
2987 @}
2988 @end example
2989
2990 For scores with multiple staves and multiple MIDI instruments, the
2991 relative volumes of each instrument can be set individually;
2992
2993 @example
2994 \score @{
2995   <<
2996     \new Staff @{
2997       \set Staff.midiInstrument = #"flute"
2998       \set Staff.midiMinimumVolume = #0.7
2999       \set Staff.midiMaximumVolume = #0.9
3000       @var{@dots{} music @dots{}}
3001     @}
3002     \new Staff @{
3003       \set Staff.midiInstrument = #"clarinet"
3004       \set Staff.midiMinimumVolume = #0.3
3005       \set Staff.midiMaximumVolume = #0.6
3006       @var{@dots{} music @dots{}}
3007     @}
3008   >>
3009   \midi @{ @}
3010 @}
3011 @end example
3012
3013 In this example the volume of the clarinet is reduced relative to the
3014 volume of the flute.
3015
3016 If these volumes properties are not set then LilyPond still applies a
3017 @q{small degree} of equalization to certain instruments.  See
3018 @file{scm/midi.scm}.
3019
3020 Installed Files:
3021 @file{scm/midi.scm}.
3022
3023 @seealso
3024 Notation Reference:
3025 @ref{Score layout}.
3026
3027 Internals Reference:
3028 @rinternals{Dynamic_performer}.
3029
3030 @snippets
3031 @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
3032 {replacing-default-midi-instrument-equalization.ly}
3033
3034 @knownissues
3035 Changes in the MIDI volume take place only on starting a note, so
3036 crescendi and decrescendi cannot affect the volume of a single note.
3037
3038
3039 @node Setting MIDI block properties
3040 @unnumberedsubsubsec Setting MIDI block properties
3041
3042 The @code{\midi} block can contain context rearrangements, new context
3043 definitions or code that sets the values of certain properties.
3044
3045 @example
3046 \score @{
3047   @var{@dots{} music @dots{}}
3048   \midi @{
3049     \tempo 4 = 72
3050   @}
3051 @}
3052 @end example
3053
3054 Here the tempo is set to 72 quarter-note beats per minute.  The tempo
3055 mark in the @code{\midi} block will not appear in the printed score.
3056 Although any other @code{\tempo} indications specified within the
3057 @code{\score} block will also be reflected in the MIDI output.
3058
3059 In a @code{\midi} block the @code{\tempo} command is setting properties
3060 during the interpretation of the music and in the context of output
3061 definitions; so it is interpreted @emph{as if} it were a context
3062 modification.
3063
3064 @cindex MIDI context definitions
3065 @cindex context definitions with MIDI
3066
3067 Context definitions follow the same syntax as those in a @code{\layout}
3068 block;
3069
3070 @example
3071 \score @{
3072   @var{@dots{} music @dots{}}
3073   \midi @{
3074     \context @{
3075       \Voice
3076       \remove "Dynamic_performer"
3077     @}
3078   @}
3079 @}
3080 @end example
3081
3082 This example removes the effect of dynamics from the MIDI output.  Note:
3083 LilyPond's translation modules used for sound are called @q{performers}.
3084
3085 @seealso
3086 Learning Manual:
3087 @rlearning{Other sources of information}.
3088
3089 Notation Reference:
3090 @ref{Expressive marks},
3091 @ref{Score layout}.
3092
3093 Installed Files:
3094 @file{ly/performer-init.ly}.
3095
3096 Snippets:
3097 @rlsr{MIDI}.
3098
3099 Internals Reference:
3100 @rinternals{Dynamic_performer}.
3101
3102 @knownissues
3103 Some MIDI players do not always correctly handle tempo changes in the
3104 midi output.
3105
3106 Changes to the @code{midiInstrument}, as well as some MIDI options, at
3107 the @emph{beginning} of a staff may appear twice in the MIDI output.
3108
3109
3110
3111 @node Using MIDI instruments
3112 @subsection Using MIDI instruments
3113
3114 MIDI instruments are set using the @code{midiInstrument} property within
3115 a @code{Staff} context.
3116
3117 @example
3118 \score @{
3119   \new Staff @{
3120     \set Staff.midiInstrument = #"glockenspiel"
3121     @var{@dots{} music @dots{}}
3122   @}
3123   \midi @{ @}
3124 @}
3125 @end example
3126
3127 or
3128
3129 @example
3130 \score @{
3131   \new Staff \with @{midiInstrument = #"cello"@} @{
3132     @var{@dots{} music @dots{}}
3133   @}
3134   \midi @{ @}
3135 @}
3136 @end example
3137
3138 If the instrument name does not match any of the instruments listed in
3139 the @q{MIDI instruments} section, the @code{acoustic grand} instrument
3140 will be used instead. See @ref{MIDI instruments}.
3141
3142 @seealso
3143 Learning Manual:
3144 @rlearning{Other sources of information}.
3145
3146 Notation Reference:
3147 @ref{MIDI instruments},
3148 @ref{Score layout}.
3149
3150 Installed Files:
3151 @file{scm/midi.scm}.
3152
3153 @knownissues
3154 Percussion instruments that are notated in a @code{DrumStaff}
3155 context will be output, correctly, to MIDI channel@tie{}10 but some
3156 pitched, percussion instruments like the xylophone, marimba, vibraphone
3157 or timpani, are treated as @qq{normal} instruments so the music for
3158 these should be entered in a @code{Staff} (not @code{DrumStaff}) context
3159 to obtain correct MIDI output.  A full list of
3160 @code{channel 10 drum-kits} entries can be found in @file{scm/midi.scm}.
3161 See @rlearning{Other sources of information}.
3162
3163
3164 @node Using repeats with MIDI
3165 @subsection Using repeats with MIDI
3166
3167 @cindex repeats in MIDI
3168 @cindex MIDI using repeats
3169 @funindex \unfoldRepeats
3170
3171 Repeats can be represented in the MIDI output by applying the
3172 @code{\unfoldRepeats} command.
3173
3174 @example
3175 \score @{
3176   \unfoldRepeats @{
3177     \repeat tremolo 8 @{ c'32 e' @}
3178     \repeat percent 2 @{ c''8 d'' @}
3179     \repeat volta 2 @{ c'4 d' e' f' @}
3180     \alternative @{
3181       @{ g' a' a' g' @}
3182       @{ f' e' d' c' @}
3183     @}
3184   @}
3185   \midi @{ @}
3186 @}
3187 @end example
3188
3189 In order to restrict the effect of @code{\unfoldRepeats} to the MIDI
3190 output only, while also generating printable scores, it is necessary to
3191 make @emph{two} @code{\score} blocks; one for MIDI (with unfolded
3192 repeats) and one for the notation (with volta, tremolo, and percent
3193 repeats);
3194
3195 @example
3196 \score @{
3197   @var{@dots{} music @dots{}}
3198   \layout @{ @}
3199 @}
3200 \score @{
3201   \unfoldRepeats @{
3202     @var{@dots{} music @dots{}}
3203   @}
3204   \midi @{ @}
3205 @}
3206 @end example
3207
3208 When using multiple voices, each of the voices must contain completely
3209 unfolded repeats for correct MIDI output.
3210
3211 @seealso
3212 Notation Reference:
3213 @ref{Repeats}.
3214
3215
3216 @node MIDI channel mapping
3217 @subsection MIDI channel mapping
3218
3219 @cindex MIDI Channels
3220 @cindex MIDI Tracks
3221 @funindex midiChannelMapping
3222
3223 When generating a MIDI file from a score, LilyPond will automatically
3224 assign every note in the score to a MIDI channel, the one on which it
3225 should be played when it is sent to a MIDI device.  A MIDI channel has
3226 a number of controls available to select, for example, the instrument
3227 to be used to play the notes on that channel, or to request the MIDI
3228 device to apply various effects to the sound produced on the channel.
3229 At all times, every control on a MIDI channel can have only a single
3230 value assigned to it (which can be modified, however, for example,
3231 to switch to another instrument in the middle of a score).
3232
3233 The MIDI standard supports only 16 channels per MIDI device.  This
3234 limit on the number of channels also limits the number of different
3235 instruments which can be played at the same time.
3236
3237 LilyPond creates separate MIDI tracks for each staff, (or discrete
3238 instrument or voice, depending on the value of
3239 @code{Score.midiChannelMapping}), and also for each lyrics context.
3240 There is no limit to the number of tracks.
3241
3242 To work around the limited number of MIDI channels, LilyPond supports
3243 a number of different modes for MIDI channel allocation, selected using
3244 the @code{Score.midiChannelMapping} context property.  In each case,
3245 if more MIDI channels than the limit are required, the allocated
3246 channel numbers wrap around back to 0, possibly causing the incorrect
3247 assignment of instruments to some notes.  This context property can be
3248 set to one of the following values:
3249
3250 @table @var
3251
3252 @item @code{'staff}
3253
3254 Allocate a separate MIDI channel to each staff in the score (this is
3255 the default).  All notes in all voices contained within each staff will
3256 share the MIDI channel of their enclosing staff, and all are encoded
3257 in the same MIDI track.
3258
3259 The limit of 16 channels is applied to the total number of staff and
3260 lyrics contexts, even though MIDI lyrics do not take up a MIDI channel.
3261
3262 @item @code{'instrument}
3263
3264 Allocate a separate MIDI channel to each distinct MIDI instrument
3265 specified in the score.  This means that all the notes played with the
3266 same MIDI instrument will share the same MIDI channel (and track), even
3267 if the notes come from different voices or staves.
3268
3269 In this case the lyrics contexts do not count towards the MIDI channel
3270 limit of 16 (as they will not be assigned to a MIDI instrument), so
3271 this setting may allow a better allocation of MIDI channels when the
3272 number of staves and lyrics contexts in a score exceeds 16.
3273
3274 @item @code{'voice}
3275
3276 Allocate a separate MIDI channel to each voice in the score that has a
3277 unique name among the voices in its enclosing staff.  Voices in
3278 different staves are always assigned separate MIDI channels, but any two
3279 voices contained within the same staff will share the same MIDI channel
3280 if they have the same name.  Because @code{midiInstrument} and the
3281 several MIDI controls for effects are properties of the staff context,
3282 they cannot be set separately for each voice.  The first voice will be
3283 played with the instrument and effects specified for the staff, and
3284 voices with a different name from the first will be assigned the default
3285 instrument and effects.
3286
3287 Note: different instruments and/or effects can be assigned to several
3288 voices on the same staff by moving the @code{Staff_performer} from the
3289 @code{Staff} to the @code{Voice} context, and leaving
3290 @code{midiChannelMapping} to default to @code{'staff} or set to
3291 @code{'instrument}; see the snippet below.
3292
3293 @end table
3294
3295 For example, the default MIDI channel mapping of a score can be changed
3296 to the @code{'instrument} setting as shown:
3297
3298 @example
3299 \score @{
3300   ...music...
3301   \midi @{
3302     \context @{
3303       \Score
3304       midiChannelMapping = #'instrument
3305     @}
3306   @}
3307 @}
3308 @end example
3309
3310 @snippets
3311 @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
3312 {changing-midi-output-to-one-channel-per-voice.ly}
3313
3314
3315 @node Context properties for MIDI effects
3316 @subsection Context properties for MIDI effects
3317
3318 @cindex Effects in MIDI
3319 @cindex Pan position in MIDI
3320 @cindex Stereo balance in MIDI
3321 @cindex Balance in MIDI
3322 @cindex Expression in MIDI
3323 @cindex Reverb in MIDI
3324 @cindex Chorus level in MIDI
3325 @funindex midiPanPosition
3326 @funindex midiBalance
3327 @funindex midiExpression
3328 @funindex midiReverbLevel
3329 @funindex midiChorusLevel
3330
3331 The following context properties can be used to apply various MIDI
3332 effects to notes played on the MIDI channel associated with the
3333 current staff, MIDI instrument or voice (depending on the value of the
3334 @code{Score.midiChannelMapping} context property and the context in
3335 which the @code{Staff_performer} is located; see
3336 @ref{MIDI channel mapping}).
3337
3338 Changing these context properties will affect all notes played on the
3339 channel after the change, however some of the effects may even apply
3340 also to notes which are already playing (depending on the
3341 implementation of the MIDI output device).
3342
3343 The following context properties are supported:
3344
3345 @table @var
3346
3347 @item @code{Staff.midiPanPosition}
3348
3349 The pan position controls how the sound on a MIDI channel is
3350 distributed between left and right stereo outputs.  The context
3351 property accepts a number between -1.0 (@code{#LEFT}) and 1.0
3352 (@code{#RIGHT}); the value -1.0 will put all sound power to the left
3353 stereo output (keeping the right output silent), the value 0.0
3354 (@code{#CENTER}) will distribute the sound evenly between the left and
3355 right stereo outputs, and the value 1.0 will move all sound to the
3356 right stereo output.  Values between -1.0 and 1.0 can be used to obtain
3357 mixed distributions between left and right stereo outputs.
3358
3359 @item @code{Staff.midiBalance}
3360
3361 The stereo balance of a MIDI channel.  Similarly to the pan position,
3362 this context property accepts a number between -1.0 (@code{#LEFT}) and
3363 1.0 (@code{#RIGHT}).  It varies the relative volume sent to the two
3364 stereo speakers without affecting the distribution of the stereo
3365 signals.
3366
3367 @item @code{Staff.midiExpression}
3368
3369 Expression level (as a fraction of the maximum available level) to
3370 apply to a MIDI channel.  A MIDI device combines the MIDI channel's
3371 expression level with a voice's current dynamic level (controlled using
3372 constructs such as @code{\p} or @code{\ff}) to obtain the total volume
3373 of each note within the voice.  The expression control could be used, for
3374 example, to implement crescendo or decrescendo effects over single
3375 sustained notes (not supported automatically by LilyPond).
3376
3377 @c Issue 4059 contains an attached snippet which shows how this might
3378 @c be done, but this is too large and complex for the NR, even as a
3379 @c referenced snippet.  It could be added to the LSR.
3380
3381 The expression level ranges from 0.0 (no expression, meaning zero
3382 volume) to 1.0 (full expression).
3383
3384 @item @code{Staff.midiReverbLevel}
3385
3386 Reverb level (as a fraction of the maximum available level) to apply
3387 to a MIDI channel.  This property accepts numbers between 0.0 (no
3388 reverb) and 1.0 (full effect).
3389
3390 @item @code{Staff.midiChorusLevel}
3391
3392 Chorus level (as a fraction of the maximum available level) to apply to
3393 a MIDI channel.  This property accepts numbers between 0.0 (no chorus
3394 effect) and 1.0 (full effect).
3395
3396 @end table
3397
3398
3399 @knownissues
3400
3401 As MIDI files do not contain any actual audio data, changes in these
3402 context properties translate only to requests for changing MIDI channel
3403 controls in the outputted MIDI files.  Whether a particular MIDI device
3404 (such as a software MIDI player) can actually handle any of these
3405 requests in a MIDI file is entirely up to the implementation of the
3406 device: a device may choose to ignore some or all of these requests.
3407 Also, how a MIDI device will interpret different values for these
3408 controls (generally, the MIDI standard fixes the behavior only at the
3409 endpoints of the value range available for each control), and whether a
3410 change in the value of a control will affect notes already playing on
3411 that MIDI channel or not, is also specific to the MIDI device
3412 implementation.
3413
3414 When generating MIDI files, LilyPond will simply transform the
3415 fractional values within each range linearly into values in a
3416 corresponding (7-bit, or 14-bit for MIDI channel controls which support
3417 fine resolution) integer range (0-127 or 0-32767, respectively),
3418 rounding fractional values towards the nearest integer away from zero.
3419 The converted integer values are stored as-is in the generated MIDI
3420 file.  Please consult the documentation of your MIDI device for
3421 information about how the device interprets these values.
3422
3423
3424 @node Enhancing MIDI output
3425 @subsection Enhancing MIDI output
3426
3427 @menu
3428 * The articulate script::
3429 @end menu
3430
3431 The default MIDI output is basic but can be improved by setting MIDI
3432 instruments, @code{\midi} block properties and/or using the
3433 @file{articulate} script.
3434
3435 @cindex instrument names
3436 @cindex MIDI, instruments
3437 @cindex articulate script
3438 @cindex articulate.ly
3439 @funindex Staff.midiInstrument
3440
3441
3442 @node The articulate script
3443 @unnumberedsubsubsec The @file{articulate} script
3444
3445 To use the @file{articulate} script add the appropriate @code{\include}
3446 command at the top of the input file;
3447
3448 @example
3449 \include "articulate.ly"
3450 @end example
3451
3452 The script creates MIDI output into appropriately @q{time-scaled} notes
3453 to match many articulation and tempo indications.  Engraved output
3454 however, will also be altered to literally match the MIDI output.
3455
3456 @example
3457 \score @{
3458   \articulate <<
3459     @var{@dots{} music @dots{}}
3460   >>
3461   \midi @{ @}
3462 @}
3463 @end example
3464
3465 The @code{\articulate} command enables abbreviatures (such as trills and
3466 turns) to be processed.  A full list of supported items can be found in
3467 the script itself.  See @file{ly/articulate.ly}.
3468
3469 @seealso
3470 Learning Manual:
3471 @rlearning{Other sources of information}.
3472
3473 Notation Reference:
3474 @ref{Score layout}.
3475
3476 Installed Files:
3477 @file{ly/articulate.ly}.
3478
3479 @warning{The @file{articulate} script may shorten chords, which might
3480 not be appropriate for some types of instrument, such as organ music.
3481 Notes that do not have any articulations attached to them may also be
3482 shortened; so to compensate for this, restrict the use of the
3483 @code{\articulate} function to shorter segments of music or modify the
3484 values of the variables defined in the @file{articulate} script to
3485 compenstate for the note-shortening behavior.}
3486
3487
3488
3489 @node Extracting musical information
3490 @section Extracting musical information
3491
3492 In addition to creating graphical output and MIDI, LilyPond can
3493 display musical information as text.
3494
3495 @menu
3496 * Displaying LilyPond notation::
3497 * Displaying scheme music expressions::
3498 * Saving music events to a file::
3499 @end menu
3500
3501 @node Displaying LilyPond notation
3502 @subsection Displaying LilyPond notation
3503
3504 @funindex \displayLilyMusic
3505 Displaying a music expression in LilyPond notation can be
3506 done with the music function @code{\displayLilyMusic}.  To see the
3507 output, you will typically want to call LilyPond using the command
3508 line.  For example,
3509
3510 @example
3511 @{
3512   \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
3513 @}
3514 @end example
3515
3516 will display
3517
3518 @example
3519 @{ a,4 cis4 e4 fis4 g4 @}
3520 @end example
3521
3522 By default, LilyPond will print these messages to the console
3523 along with all the other LilyPond compilation messages.  To split
3524 up these messages and save the results of @code{\displayLilyMusic},
3525 redirect the output to a file.
3526
3527 @example
3528 lilypond file.ly >display.txt
3529 @end example
3530
3531 @funindex \void
3532 Note that Lilypond does not just display the music expression, but
3533 also interprets it (since @code{\displayLilyMusic} returns it in
3534 addition to displaying it).  This is convenient since you can just
3535 insert @code{\displayLilyMusic} into existing music in order to get
3536 information about it.  If you don't actually want Lilypond to
3537 interpret the displayed music as well as display it, use @code{\void}
3538 in order to have it ignored:
3539
3540 @example
3541 @{
3542   \void \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
3543 @}
3544 @end example
3545
3546
3547 @node Displaying scheme music expressions
3548 @subsection Displaying scheme music expressions
3549
3550 See @rextend{Displaying music expressions}.
3551
3552
3553 @node Saving music events to a file
3554 @subsection Saving music events to a file
3555
3556 Music events can be saved to a file on a per-staff basis by
3557 including a file in your main score.
3558
3559 @example
3560 \include "event-listener.ly"
3561 @end example
3562
3563 This will create file(s) called @file{FILENAME-STAFFNAME.notes} or
3564 @file{FILENAME-unnamed-staff.notes} for each staff.  Note that if
3565 you have multiple unnamed staves, the events for all staves will
3566 be mixed together in the same file.  The output looks like this:
3567
3568 @example
3569 0.000   note     57       4   p-c 2 12
3570 0.000   dynamic  f
3571 0.250   note     62       4   p-c 7 12
3572 0.500   note     66       8   p-c 9 12
3573 0.625   note     69       8   p-c 14 12
3574 0.750   rest     4
3575 0.750   breathe
3576 @end example
3577
3578 The syntax is a tab-delimited line, with two fixed fields on each
3579 line followed by optional parameters.
3580
3581 @example
3582 @var{time}  @var{type}  @var{@dots{}params@dots{}}
3583 @end example
3584
3585 This information can easily be read into other programs such as
3586 python scripts, and can be very useful for researchers wishing to
3587 perform musical analysis or playback experiments with LilyPond.
3588
3589
3590 @knownissues
3591
3592 Not all lilypond music events are supported by
3593 @file{event-listener.ly}.  It is intended to be a well-crafted
3594 @qq{proof of concept}.  If some events that you want to see are
3595 not included, copy @file{event-listener.ly} into your lilypond
3596 directory and modify the file so that it outputs the information
3597 you want.