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
31 @var{file}. The program supports the following options.
33 @cindex stdin, reading
37 Keep the temporary directory with all output
38 files. The temporary directory is created in the current directory as @code{@code{lilypond}.dir}.
41 @item -I,--include=@var{dir}
42 Add @var{dir} to LilyPond's include path.
44 Produce MIDI output only.
46 Do not run @file{lilypond-bin}. Useful for debugging @code{lilypond}.
47 @item -o,--output=@var{file}
48 Generate output to @var{file}. The extension of @var{file} is ignored.
50 Do not generate (PDF) or PS.
53 @cindex Scalable fonts
56 Also generate pictures of each page, in PNG format.
58 Gzip the postscript file.
60 Make a .HTML file with links to all output files.
62 Also generate a picture of the first system of the score.
71 @item -s,--set=@var{key}=@var{val}
72 Add @var{key}= @var{val} to the settings, overriding those specified
73 in the files. Possible keys: @code{language}, @code{latexheaders},
74 @code{latexpackages}, @code{latexoptions}, @code{papersize},
75 @code{pagenumber}, @code{linewidth}, @code{orientation},
78 Show version information.
80 Be verbose. This prints out commands as they are executed, and more
81 information about the formatting process is printed.
83 Print even more information. This is useful when generating bug reports.
85 Show the warranty with which GNU LilyPond comes. (It comes with
86 @strong{NO WARRANTY}!)
91 @subsection Additional parameters
93 The @code{lilypond} program responds to several parameters specified
94 in a @code{\paper} section of the input file. They can be overridden
95 by supplying a @code{--set} command line option.
99 Specify La@TeX{} language: the @code{babel} package will be
100 included. Default: unset.
102 Read from the @code{\header} block.
105 Specify additional La@TeX{} headers file.
107 Normally read from the @code{\header} block. Default value: empty.
110 Specify additional La@TeX{} packages file. This works cumulative,
111 so you can add multiple packages using multiple @code{-s=latexpackages} options.
112 Normally read from the @code{\header} block. Default value:
116 Specify additional options for the La@TeX{}
117 @code{\documentclass}. You can put any valid value here. This was
118 designed to allow @code{lilypond} to produce output for double-sided
119 paper, with balanced margins and page numbers on alternating sides. To
120 achieve this specify @code{twoside}.
123 Set orientation. Choices are @code{portrait} or @code{landscape}. Is
124 read from the @code{\paper} block, if set.
127 The vertical extension of the music on the page. It is normally
128 calculated automatically, based on the paper size.
131 The music line width. It is normally read from the @code{\paper}
135 The paper size (as a name, e.g. @code{a4}). It is normally read from
136 the @code{\paper} block.
139 The font encoding, should be set identical to the @code{font-encoding}
140 property in the score.
145 @node Invoking the lilypond binary
146 @section Invoking the lilypond binary
147 @cindex Invoking LilyPond
148 @cindex command line options
149 @cindex options, command line
153 The formatting system consists of two parts: a binary executable
154 (@file{lilypond-bin}), which is responsible for the formatting
155 functionality, and support scripts, which post-process the resulting
156 output. Normally, the support scripts are called, which in turn invoke
157 the @code{lilypond-bin} binary. However, @code{lilypond-bin} may be
158 called directly as follows.
161 lilypond-bin [@var{option}]@dots{} @var{file}@dots{}
165 When invoked with a filename that has no extension, the @file{.ly}
166 extension is tried first. To read input from stdin, use a
167 dash @code{-} for @var{file}.
169 When @file{filename.ly} is processed it will produce
170 @file{filename.tex} as output (or @file{filename.ps} for PostScript
171 output). If @file{filename.ly} contains more than one @code{\score}
172 block, then the rest of the scores will be output in numbered files,
173 starting with @file{filename-1.tex}. Several files can be specified;
174 they will each be processed independently. @footnote{The status of
175 GUILE is not reset across invocations, so be careful not to change any
176 system defaults from within Scheme.}
179 @section Command line options
181 The following options are supported:
185 @item -e,--evaluate=@var{expr}
186 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
187 Multiple @code{-e} options may be given, they will be evaluated
188 sequentially. The function @code{ly:set-option} allows for access to
189 some internal variables. Use @code{-e '(ly:option-usage)'} for more
192 @item -f,--format=@var{format}
195 A comma separated list of output formats. Choices are @code{tex} (for
196 @TeX{} output, to be processed with La@TeX{}, and @code{ps} for
199 Other output options are intended for developers.
202 @cindex output format, setting
203 @cindex PostScript output
207 Show a summary of usage.
208 @item --include, -I=@var{directory}
209 Add @var{directory} to the search path for input files.
210 @cindex file searching
212 @item -i,--init=@var{file}
213 Set init file to @var{file} (default: @file{init.ly}).
216 Disable @TeX{} output. If you have a @code{\midi} definition MIDI output
218 @item -o,--output=@var{FILE}
219 Set the default output file to @var{FILE}.
222 Do not trust the @code{.ly} input.
224 When LilyPond formatting available through a web server, the
225 @code{--safe} @b{MUST} be passed. This will prevent code like
230 c4^#(ly:export (ly:gulp-file "/etc/passwd"))
234 The @code{--safe} option works by evaluating in-line Scheme
235 expressions in a special safe module. This safe module is derived from
236 GUILE @file{safe-r5rs} module, but adds a number of functions of the
237 LilyPond API. These functions are listed in @file{safe-lily.scm}.
239 In addition, @code{--safe} disallows @code{\include} directives and
240 disables the use of backslashes in @TeX{} strings.
242 In @code{--safe} mode, it is not possible to import LilyPond variables
246 Show version information.
248 Be verbose: show full paths of all files read, and give timing
252 Show the warranty with which GNU LilyPond comes. (It comes with
253 @strong{NO WARRANTY}!)
256 @section Environment variables
259 For processing both the @TeX{} and the PostScript output, the
260 appropriate environment variables must be set. The following scripts
264 @item @file{buildscripts/out/lilypond-profile}
266 @item @file{buildscripts/out/lilypond-login} (for C-shells)
269 They should normally be sourced as part of the login process. If these
270 scripts are not run from the system wide login process, then you must
273 @cindex installing LilyPond
275 If you use sh, bash, or a similar shell, then add the following to
276 your @file{.profile}:
278 . @var{/the/path/to/}lilypond-profile
281 If you use csh, tcsh or a similar shell, then add the following to
282 your @file{~/.login}:
284 source @var{/the/path/to/}lilypond-login
287 Of course, in both cases, you should substitute the proper location of
290 These scripts set the following variables:
293 To make sure that @TeX{} and lilypond find data files (among
294 others @file{.tex}, @file{.mf} and @file{.tfm}),
295 you have to set @code{TEXMF} to point to the lilypond data
296 file tree. A typical setting would be
298 @{/usr/share/lilypond/1.6.0,@{!!/usr/share/texmf@}@}
303 For processing PostScript output (obtained with
304 @code{-f ps}) with Ghostscript you have to set @code{GS_LIB} to
305 point to the directory containing library PS files.
308 For processing PostScript output (obtained with
309 @code{-f ps}) with Ghostscript you have to set @code{GS_FONTPATH} to
310 point to the directory containing PFA files.
312 When you print direct PS output, remember to send the PFA files to the
322 @cindex printing postscript
324 The binary itself recognizes the following environment variables:
327 This specifies a directory where locale messages and
328 data files will be looked up by default. The directory should contain
329 subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
332 This selects the language for the warning messages.
336 @cindex LILYPONDPREFIX
339 @section Error messages
341 @cindex error messages
342 Different error messages can appear while compiling a file:
348 Something looks suspect. If you are requesting something out of the
349 ordinary then you will understand the message, and can ignore it.
350 However, warnings usually indicate that something is wrong with the
354 Something is definitely wrong. The current processing step (parsing,
355 interpreting, or formatting) will be finished, but the next step will
361 Something is definitely wrong, and LilyPond cannot continue. This
362 happens rarely. The most usual cause is misinstalled fonts.
364 @cindex trace, Scheme
368 Errors that occur while executing Scheme code are caught by the Scheme
369 interpreter. If running with the verbose option (@code{-V} or
370 @code{--verbose}) then a call trace is printed of the offending
373 @cindex Programming error
374 @item Programming error
375 There was some internal inconsistency. These error messages are
376 intended to help the programmers and debuggers. Usually, they can be
377 ignored. Sometimes, they come in such big quantities that they obscure
378 other output. In this case, file a bug-report.
380 @item Aborted (core dumped)
381 This signals a serious programming error that caused the program to
382 crash. Such errors are considered critical. If you stumble on one,
388 @cindex errors, message format
389 If warnings and errors can
390 be linked to some part of the input file, then error messages have the
394 @var{filename}:@var{lineno}:@var{columnno}: @var{message}
395 @var{offending input line}
398 A line-break is inserted in offending line to indicate the column
399 where the error was found. For example,
402 test.ly:2:19: error: not a duration: 5:
409 @section Reporting bugs
412 @cindex reporting bugs
414 If you have input that results in a crash or an erroneous output, then
415 that is a bug. We try respond to bug-reports promptly, and fix them as
416 soon as possible. For this, we need to reproduce and isolate the
417 problem. Help us by sending a defective input file, so we can
418 reproduce the problem. Make it small, so we can easily debug the
419 problem. Don't forget to tell which version you use, and on which
420 platform you run it. Send the report to
421 @email{bug-lilypond@@gnu.org}.
424 @section Editor support
429 @cindex modes, editor
430 @cindex syntax coloring
431 @cindex coloring, syntax
433 There is support from different editors for LilyPond.
437 Emacs has a @file{lilypond-mode}, which provides keyword
438 autocompletion, indentation, LilyPond specific parenthesis matching
439 and syntax coloring, handy compile short-cuts and reading LilyPond
440 manuals using Info. If lilypond-mode is not installed on your
441 platform, then refer to the installation instructions for more
446 For @uref{http://www.vim.org,VIM}, a vimrc is supplied, along with
447 syntax coloring tools. For more information, refer to the
449 @uref{../../../topdocs/out-www/INSTALL.html,installation instructions}.
452 installation instructions.
456 For both editors, there is also a facility to jump in the input file
457 to the source of errors in the graphical output. See @ref{Point and
462 There exists a plugin for @uref{http://www.jedit.org/,jEdit}. Refer to
463 the @uref{http://lily4jedit.sourceforge.net,plugin website} for more
468 @node Point and click
469 @section Point and click
470 @cindex point and click
472 @cindex source specials
473 @cindex specials, source
475 Point and click lets you find notes in the input by clicking on them in
476 the Xdvi window. This makes it easier to find input that causes some
477 error in the sheet music.
479 To use it, you need the following software:
481 @item a dvi viewer that supports src specials:
483 @item Xdvi, version 22.36 or newer. Available from
484 @uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,ftp.math.berkeley.edu}.
486 Most @TeX{} distributions ship with xdvik, which is always a few
487 versions behind the official Xdvi. To find out which Xdvi you are
488 running, try @code{xdvi -version} or @code{xdvi.bin -version}.
489 @item KDVI. A dvi viewer for KDE. You need KDVI from KDE 3.0 or
490 newer. Enable option @emph{Inverse search} in the menu @emph{Settings}.
492 Apparently, KDVI does not process PostScript specials correctly. Beams
493 and slurs will not be visible in KDVI.
502 @item an editor with a client/server interface (or a lightweight GUI
508 @item Emacs. Emacs is an extensible text-editor. It is available from
509 @uref{http://www.gnu.org/software/emacs/}. You need version 21 to use
512 @c move this elsewhere?
517 @cindex lilypond-mode for Emacs
518 @cindex syntax coloring
520 @item XEmacs. XEmacs is very similar to Emacs.
524 @item NEdit. NEdit runs under Windows, and Unix.
525 It is available from @uref{http://www.nedit.org}.
529 @item GVim. GVim is a GUI variant of VIM, the popular VI
530 clone. It is available from @uref{http://www.vim.org}.
539 Xdvi must be configured to find the @TeX{} fonts and music
540 fonts. Refer to the Xdvi documentation for more information.
542 To use point-and-click, add one of these lines to the top of your .ly
545 #(ly:set-point-and-click 'line)
547 @cindex line-location
549 When viewing, Control-Mousebutton 1 will take you to the originating
550 spot in the @file{.ly} file. Control-Mousebutton 2 will show all
553 If you correct large files with point-and-click, be sure to start
554 correcting at the end of the file. When you start at the top, and
555 insert one line, all following locations will be off by a line.
558 For using point-and-click with Emacs, add the following
559 In your Emacs startup file (usually @file{~/.emacs}):
564 Make sure that the environment variable @var{XEDITOR} is set to
566 emacsclient --no-wait +%l %f
568 @cindex @var{XEDITOR}
569 If you use XEmacs instead of Emacs, you use @code{(gnuserve-start)} in
570 your @file{.emacs}, and set @code{XEDITOR} to @code{gnuclient -q +%l %f}.
572 For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or
573 use this argument with Xdvi's @code{-editor} option.
576 For using NEdit, set @code{XEDITOR} to @code{nc -noask +%l %f}, or
577 use this argument with Xdvi's @code{-editor} option.
579 If can also make your editor jump to the exact location of the note
580 you clicked. This is only supported on Emacs and VIM. Users of Emacs version
581 20 must apply the patch @file{emacsclient.patch}. Users of version 21
582 must apply @file{server.el.patch} (version 21.2 and earlier). At the
583 top of the @code{ly} file, replace the @code{set-point-and-click} line
584 with the following line:
586 #(ly:set-point-and-click 'line-column)
588 @cindex line-column-location
589 and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}. Vim
590 users can set @var{XEDITOR} to @code{gvim --remote +:%l:norm%c| %f}.