2 @node Invoking LilyPond
3 @chapter Invoking LilyPond
5 This chapter details the technicalities of running LilyPond.
9 * Invoking lilypond:: Titling LilyPond scores.
10 * Invoking the lilypond binary::
17 @node Invoking lilypond
18 @section Invoking lilypond
20 Nicely titled output is created through a separate program:
21 @file{@code{lilypond}} is a script that uses the LilyPond formatting
22 engine (which is in a separate program) and La@TeX{} to create a
23 nicely titled piece of sheet music, in PDF (Portable Document Format)
27 @code{lilypond} [@var{option}]@dots{} @var{file}@dots{}
30 To have @code{lilypond} read from stdin, use a dash @code{-} for @var{file}.
32 The @code{lilypond} program supports the following options:
36 Keep the temporary directory with all output
37 files. The temporary directory is created in the current directory as @code{@code{lilypond}.dir}.
38 @item -d,--dependencies
39 Write @code{Makefile} dependencies for every input file.
42 @item -I,--include=@var{dir}
43 Add @var{dir} to LilyPond's include path.
45 Produce MIDI output only.
47 Do not run @file{lilypond-bin}. Useful for debugging @code{lilypond}.
48 @item -o,--output=@var{file}
49 Generate output to @var{file}. The extension of @var{file} is ignored.
51 Do not generate (PDF) or PS.
54 @cindex Scalable fonts
56 @c why is this comment here? --hwn
58 If you use lilypond-book or your own wrapper files, do not use
59 @code{\usepackage[[T1]@{fontenc@}} in the file header but do not forget
60 @code{\usepackage[latin1]@{inputenc@}} if you use any other
61 non-anglosaxian characters.
64 Also generate pictures of each page, in PNG format.
66 Gzip the postscript file.
68 Make a .HTML file with links to all output files.
70 Also generate a picture of the first system of the score.
79 @item -s,--set=@var{key}=@var{val}
80 Add @var{key}= @var{val} to the settings, overriding those specified
81 in the files. Possible keys: @code{language}, @code{latexheaders},
82 @code{latexpackages}, @code{latexoptions}, @code{papersize},
83 @code{pagenumber}, @code{linewidth}, @code{orientation},
86 Show version information.
88 Be verbose. This prints out commands as they are executed, and more
89 information about the formatting process is printed.
91 Print even more information. This is useful when generating bugreports.
93 Show the warranty with which GNU LilyPond comes. (It comes with
94 @strong{NO WARRANTY}!)
97 @subsection Titling layout
99 @code{lilypond} extracts the following header fields from the LY files
100 to generate titling; an example demonstrating all these fields is in
101 @inputfileref{input/test,lilypond-testpage.ly}:
105 The title of the music. Centered on top of the first page.
107 Subtitle, centered below the title.
109 Name of the poet, left flushed below the subtitle.
111 Name of the composer, right flushed below the subtitle.
113 Meter string, left flushed below the poet.
115 Name of the opus, right flushed below the composer.
117 Name of the arranger, right flushed below the opus.
119 Name of the instrument, centered below the arranger.
121 To whom the piece is dedicated.
123 Name of the piece, left flushed below the instrument.
125 A text to print in the header of all pages. It is not called
126 @code{header}, because @code{\header} is a reserved word in LilyPond.
128 A text to print in the footer of the first page. Default is to
129 print the standard footer also on the first page. Note that if the
130 score consists of only a single page, the first page is also the
131 last page, and in this case, the tagline is printed instead of the
134 A text to print in the footer of all but the last page.
136 Line to print at the bottom of last page. The default text is ``Engraved
137 by LilyPond @var{version-number}''.
148 @subsection Additional parameters
150 The @code{lilypond} program responds to several parameters specified
151 in a @code{\paper} section of the input file. They can be overridden
152 by supplying a @code{--set} command line option.
156 Specify La@TeX{} language: the @code{babel} package will be
157 included. Default: unset.
159 Read from the @code{\header} block.
162 Specify additional La@TeX{} headers file.
164 Normally read from the @code{\header} block. Default value: empty.
167 Specify additional La@TeX{} packages file. This works cumulative,
168 so you can add multiple packages using multiple @code{-s=latexpackages} options.
169 Normally read from the @code{\header} block. Default value:
173 Specify additional options for the La@TeX{}
174 @code{\documentclass}. You can put any valid value here. This was
175 designed to allow @code{lilypond} to produce output for double-sided
176 paper, with balanced margins and pagenumbers on alternating sides. To
177 achieve this specify @code{twoside}.
180 Set orientation. Choices are @code{portrait} or @code{landscape}. Is
181 read from the @code{\paper} block, if set.
184 The vertical extension of the music on the page. It is normally
185 calculated automatically, based on the paper size.
188 The music line width. It is normally read from the @code{\paper}
192 The paper size (as a name, e.g. @code{a4}). It is normally read from
193 the @code{\paper} block.
196 If set to @code{no}, no page numbers will be printed. If set to a
197 positive integer, start with this value as the first page number.
201 The font encoding, should be set identical to the @code{font-encoding}
202 property in the score.
207 @node Invoking the lilypond binary
208 @section Invoking the lilypond binary
209 @cindex Invoking LilyPond
210 @cindex command line options
211 @cindex options, command line
215 The LilyPond system consists of two parts: a binary executable, which
216 is responsible for the formatting functionality, and support scripts,
217 which post-process the resulting output. Normally, the support scripts
218 are called, which in turn invoke the @code{lilypond-bin}
219 binary. However, @code{lilypond-bin} may be called directly as
223 lilypond-bin [@var{option}]@dots{} @var{file}@dots{}
227 When invoked with a filename that has no extension, the @file{.ly}
228 extension is tried first. To read input from stdin, use a
229 dash @code{-} for @var{file}.
231 When @file{filename.ly} is processed it will produce
232 @file{filename.tex} as output (or @file{filename.ps} for PostScript
233 output). If @file{filename.ly} contains more than one @code{\score}
234 block, then the rest of the scores will be output in numbered files,
235 starting with @file{filename-1.tex}. Several files can be specified;
236 they will each be processed independently. @footnote{The status of
237 GUILE is not reset across invocations, so be careful not to change any
238 system defaults from within Scheme.}
241 @section Command line options
243 The following options are supported:
247 @item -e,--evaluate=@var{expr}
248 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
249 Multiple @code{-e} options may be given, they will be evaluated
250 sequentially. The function @code{ly:set-option} allows for access to
251 some internal variables. Use @code{-e '(ly:option-usage')} for more
254 @item -f,--format=@var{format}
257 Output format for sheet music. Choices are @code{tex} (for @TeX{}
258 output, to be processed with plain @TeX{}, or through @code{lilypond}),
259 @code{pdftex} for PDF@TeX{} input, @code{ps} (for PostScript),
260 @code{scm} (for a Scheme dump), @code{sk} (for Sketch) and @code{as}
263 @strong{This option is only for developers}. Only the @TeX{} output of
264 these is usable for real work.
267 @cindex output format, setting
268 @cindex Sketch output
269 @cindex ASCII-art output
270 @cindex PDFTeX output
271 @cindex PostScript output
275 Show a summary of usage.
276 @item --include, -I=@var{directory}
277 Add @var{directory} to the search path for input files.
278 @cindex file searching
280 @item -i,--init=@var{file}
281 Set init file to @var{file} (default: @file{init.ly}).
284 Disable @TeX{} output. If you have a @code{\midi} definition MIDI output
286 @item -M,--dependencies
287 Output rules to be included in Makefile.
288 @item -o,--output=@var{FILE}
289 Set the default output file to @var{FILE}.
293 Disallow untrusted @code{\include} directives, in-line
294 Scheme evaluation, backslashes in @TeX{}, code.
296 @strong{WARNING}: the @code{--safe} option has not been reviewed for a
297 long time. Do not rely on it for automatic invocation (e.g. over the
298 web). Volunteers are welcome to do a new audit.
302 Show version information.
304 Be verbose: show full paths of all files read, and give timing
308 Show the warranty with which GNU LilyPond comes. (It comes with
309 @strong{NO WARRANTY}!)
312 @section Environment variables
315 For processing both the @TeX{} and the PostScript output, the
316 appropriate environment variables must be set. The following scripts
320 @item @file{buildscripts/out/lilypond-profile}
322 @item @file{buildscripts/out/lilypond-login} (for C-shells)
325 They should normally be sourced as part of the login process. If these
326 scripts are not run from the system wide login process, then you must
329 @cindex installing LilyPond
331 If you use sh, bash, or a similar shell, then add the following to
332 your @file{.profile}:
334 . @var{/the/path/to/}lilypond-profile
337 If you use csh, tcsh or a similar shell, then add the following to
338 your @file{~/.login}:
340 source @var{/the/path/to/}lilypond-login
343 Of course, in both cases, you should substitute the proper location of
346 These scripts set the following variables:
349 To make sure that @TeX{} and lilypond find data files (among
350 others @file{.tex}, @file{.mf} and @file{.tfm}),
351 you have to set @code{TEXMF} to point to the lilypond data
352 file tree. A typical setting would be
354 @{/usr/share/lilypond/1.6.0,@{!!/usr/share/texmf@}@}
359 For processing PostScript output (obtained with
360 @code{-f ps}) with Ghostscript you have to set @code{GS_LIB} to
361 point to the directory containing library PS files.
364 For processing PostScript output (obtained with
365 @code{-f ps}) with Ghostscript you have to set @code{GS_FONTPATH} to
366 point to the directory containing PFA files.
368 When you print direct PS output, remember to send the PFA files to the
378 @cindex printing postscript
380 The binary itself recognizes the following environment variables:
383 This specifies a directory where locale messages and
384 data files will be looked up by default. The directory should contain
385 subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
388 This selects the language for the warning messages.
392 @cindex LILYPONDPREFIX
395 @section Error messages
397 @cindex error messages
398 Different error messages can appear while compiling a file:
404 Something looks suspect. If you are requesting something out of the
405 ordinary then you will understand the message, and can ignore it.
406 However, warnings usually indicate that something is wrong with the
410 Something is definitely wrong. The current processing step (parsing,
411 interpreting, or formatting) will be finished, but the next step will
417 Something is definitely wrong, and LilyPond cannot continue. This
418 happens rarely. The most usual cause is misinstalled fonts.
423 Errors that occur while executing Scheme code are caught by the Scheme
424 interpreter. If running with the verbose option (@code{-V} or
425 @code{--verbose}) then a call trace is printed of the offending
428 @cindex Programming error
429 @item Programming error
430 There was some internal inconsistency. These error messages are
431 intended to help the programmers and debuggers. Usually, they can be
432 ignored. Sometimes, they come in such big quantities that they obscure
433 other output. In this case, a bug-report should be filed.
437 @cindex errors, message format
438 If warnings and errors can
439 be linked to some part of the input file, then error messages have the
443 @var{filename}:@var{lineno}:@var{columnno}: @var{message}
444 @var{offending input line}
447 A line-break is inserted in offending line to indicate the column
448 where the error was found. For example,
451 test.ly:2:19: error: not a duration: 5:
458 @section Reporting bugs
461 @cindex reporting bugs
463 If you have input that results in a crash or an erroneous output, then
464 that is a bug. We try respond to bug-reports promptly, and fix them as
465 soon as possible. For this, we need to reproduce and isolate the
466 problem. Help us by sending a defective input file, so we can
467 reproduce the problem. Make it small, so we can easily debug the
468 problem. Don't forget to tell which version you use, and on which
469 platform you run it. Send the report to
470 @email{bug-lilypond@@gnu.org}.
473 @section Editor support
478 @cindex modes, editor
479 @cindex syntax coloring
480 @cindex coloring, syntax
482 There is support from different editors for LilyPond.
484 Emacs has a @file{lilypond-mode}, which provides keyword
485 autocompletion, indentation, LilyPond specific parenthesis matching
486 and syntax coloring, handy compile short-cuts and reading LilyPond
487 manuals using Info. If lilypond-mode is not installed on your
488 platform, then refer to the installation instructions for more
491 For @uref{http://www.vim.org,VIM}, a vimrc is supplied, along with
492 syntax coloring tools. For more information, refer to the
494 @uref{../../../topdocs/out-www/INSTALL.html,installation instructions}.
498 installation instructions.
501 For both editors, there is also a facility to jump in the input file
502 to the source of errors in the graphical output. See @ref{Point and
505 There exists a plugin for @uref{http://www.jedit.org/,jEdit}. Refer to
506 the @uref{http://lily4jedit.sourceforge.net,plugin website} for more
510 @node Point and click
511 @section Point and click
512 @cindex poind and click
514 @cindex source specials
515 @cindex specials, source
517 Point and click lets you find notes in the input by clicking on them in
518 the Xdvi window. This makes it easier to find input that causes some
519 error in the sheet music.
521 To use it, you need the following software:
523 @item a dvi viewer that supports src specials:
525 @item Xdvi, version 22.36 or newer. Available from
526 @uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,ftp.math.berkeley.edu}.
528 Most @TeX{} distributions ship with xdvik, which is always a few
529 versions behind the official Xdvi. To find out which Xdvi you are
530 running, try @code{xdvi -version} or @code{xdvi.bin -version}.
531 @item KDVI. A dvi viewer for KDE. You need KDVI from KDE 3.0 or
532 newer. Enable option @emph{Inverse search} in the menu @emph{Settings}.
534 Apparently, KDVI does not process PostScript specials correctly. Beams
535 and slurs will not be visible in KDVI.
544 @item an editor with a client/server interface (or a lightweight GUI
550 @item Emacs. Emacs is an extensible text-editor. It is available from
551 @uref{http://www.gnu.org/software/emacs/}. You need version 21 to use
554 @c move this elsewhere?
559 @cindex lilypond-mode for Emacs
560 @cindex syntax coloring
562 @item XEmacs. XEmacs is very similar to Emacs.
566 @item NEdit. NEdit runs under Windows, and Unix.
567 It is available from @uref{http://www.nedit.org}.
571 @item GVim. GVim is a GUI variant of VIM, the popular VI
572 clone. It is available from @uref{http://www.vim.org}.
581 Xdvi must be configured to find the @TeX{} fonts and music
582 fonts. Refer to the Xdvi documentation for more information.
584 To use point-and-click, add one of these lines to the top of your .ly
587 #(ly:set-point-and-click 'line)
589 @cindex line-location
591 When viewing, Control-Mousebutton 1 will take you to the originating
592 spot in the @file{.ly} file. Control-Mousebutton 2 will show all
595 If you correct large files with point-and-click, be sure to start
596 correcting at the end of the file. When you start at the top, and
597 insert one line, all following locations will be off by a line.
600 For using point-and-click with Emacs, add the following
601 In your Emacs startup file (usually @file{~/.emacs}):
606 Make sure that the environment variable @var{XEDITOR} is set to
608 emacsclient --no-wait +%l %f
610 @cindex @var{XEDITOR}
611 If you use XEmacs instead of Emacs, you use @code{(gnuserve-start)} in
612 your @file{.emacs}, and set @code{XEDITOR} to @code{gnuclient -q +%l %f}.
614 For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or
615 use this argument with Xdvi's @code{-editor} option.
618 For using NEdit, set @code{XEDITOR} to @code{nc -noask +%l %f}, or
619 use this argument with Xdvi's @code{-editor} option.
621 If can also make your editor jump to the exact location of the note
622 you clicked. This is only supported on Emacs and VIM. Users of Emacs version
623 20 must apply the patch @file{emacsclient.patch}. Users of version 21
624 must apply @file{server.el.patch} (version 21.2 and earlier). At the
625 top of the @code{ly} file, replace the @code{set-point-and-click} line
626 with the following line:
628 #(ly:set-point-and-click 'line-column)
630 @cindex line-colomn-location
631 and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}. Vim
632 users can set @var{XEDITOR} to @code{gvim --remote +:%l:norm%c| %f}.
638 When you convert the @TeX{} file to PostScript using @code{dvips}, it
639 will complain about not finding @code{src:X:Y} files. These complaints
640 are harmless, and can be ignored.