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.
35 Keep the temporary directory with all output
36 files. The temporary directory is created in the current directory as @code{@code{lilypond}.dir}.
37 @item -d,--dependencies
38 Write @code{Makefile} dependencies for every input file.
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}!)
89 @subsection Titling layout
91 @code{lilypond} extracts the following header fields from the LY files
92 to generate titling; an example demonstrating all these fields is in
93 @inputfileref{input/test,lilypond-testpage.ly}:
97 The title of the music. Centered on top of the first page.
99 Subtitle, centered below the title.
101 Name of the poet, left flushed below the subtitle.
103 Name of the composer, right flushed below the subtitle.
105 Meter string, left flushed below the poet.
107 Name of the opus, right flushed below the composer.
109 Name of the arranger, right flushed below the opus.
111 Name of the instrument, centered below the arranger.
113 To whom the piece is dedicated.
115 Name of the piece, left flushed below the instrument.
117 A text to print in the header of all pages. It is not called
118 @code{header}, because @code{\header} is a reserved word in LilyPond.
120 A text to print in the footer of the first page. Default is to
121 print the standard footer also on the first page. Note that if the
122 score consists of only a single page, the first page is also the
123 last page, and in this case, the tagline is printed instead of the
126 A text to print in the footer of all but the last page.
128 Line to print at the bottom of last page. The default text is ``Engraved
129 by LilyPond @var{version-number}''.
140 @subsection Additional parameters
142 The @code{lilypond} program responds to several parameters specified
143 in a @code{\paper} section of the input file. They can be overridden
144 by supplying a @code{--set} command line option.
148 Specify La@TeX{} language: the @code{babel} package will be
149 included. Default: unset.
151 Read from the @code{\header} block.
154 Specify additional La@TeX{} headers file.
156 Normally read from the @code{\header} block. Default value: empty.
159 Specify additional La@TeX{} packages file. This works cumulative,
160 so you can add multiple packages using multiple @code{-s=latexpackages} options.
161 Normally read from the @code{\header} block. Default value:
165 Specify additional options for the La@TeX{}
166 @code{\documentclass}. You can put any valid value here. This was
167 designed to allow @code{lilypond} to produce output for double-sided
168 paper, with balanced margins and page numbers on alternating sides. To
169 achieve this specify @code{twoside}.
172 Set orientation. Choices are @code{portrait} or @code{landscape}. Is
173 read from the @code{\paper} block, if set.
176 The vertical extension of the music on the page. It is normally
177 calculated automatically, based on the paper size.
180 The music line width. It is normally read from the @code{\paper}
184 The paper size (as a name, e.g. @code{a4}). It is normally read from
185 the @code{\paper} block.
188 If set to @code{no}, no page numbers will be printed. If set to a
189 positive integer, start with this value as the first page number.
193 The font encoding, should be set identical to the @code{font-encoding}
194 property in the score.
199 @node Invoking the lilypond binary
200 @section Invoking the lilypond binary
201 @cindex Invoking LilyPond
202 @cindex command line options
203 @cindex options, command line
207 The formatting system consists of two parts: a binary executable
208 (@file{lilypond-bin}), which is responsible for the formatting
209 functionality, and support scripts, which post-process the resulting
210 output. Normally, the support scripts are called, which in turn invoke
211 the @code{lilypond-bin} binary. However, @code{lilypond-bin} may be
212 called directly as follows.
215 lilypond-bin [@var{option}]@dots{} @var{file}@dots{}
219 When invoked with a filename that has no extension, the @file{.ly}
220 extension is tried first. To read input from stdin, use a
221 dash @code{-} for @var{file}.
223 When @file{filename.ly} is processed it will produce
224 @file{filename.tex} as output (or @file{filename.ps} for PostScript
225 output). If @file{filename.ly} contains more than one @code{\score}
226 block, then the rest of the scores will be output in numbered files,
227 starting with @file{filename-1.tex}. Several files can be specified;
228 they will each be processed independently. @footnote{The status of
229 GUILE is not reset across invocations, so be careful not to change any
230 system defaults from within Scheme.}
232 We strongly advise against making LilyPond formatting available
233 through a web server. That is, processing input from untrusted users,
234 and returning the resulting PDF file. LilyPond is a big and complex
235 program. It was not written with security in mind. Making it available
236 to the outside world is a huge risk; consider the security
242 c4^#(ly:export (ly:gulp-file "/etc/passwd"))
247 @section Command line options
249 The following options are supported:
253 @item -e,--evaluate=@var{expr}
254 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
255 Multiple @code{-e} options may be given, they will be evaluated
256 sequentially. The function @code{ly:set-option} allows for access to
257 some internal variables. Use @code{-e '(ly:option-usage)'} for more
260 @item -f,--format=@var{format}
263 Output format for sheet music. Choices are @code{tex} (for @TeX{}
264 output, to be processed with plain @TeX{}, or through @code{lilypond}),
265 @code{pdftex} for PDF@TeX{} input, @code{ps} (for PostScript),
266 @code{scm} (for a Scheme dump), @code{sk} (for Sketch) and @code{as}
269 @strong{This option is only for developers}. Only the @TeX{} output of
270 these is usable for real work.
273 @cindex output format, setting
274 @cindex Sketch output
275 @cindex ASCII-art output
276 @cindex PDFTeX output
277 @cindex PostScript output
281 Show a summary of usage.
282 @item --include, -I=@var{directory}
283 Add @var{directory} to the search path for input files.
284 @cindex file searching
286 @item -i,--init=@var{file}
287 Set init file to @var{file} (default: @file{init.ly}).
290 Disable @TeX{} output. If you have a @code{\midi} definition MIDI output
292 @item -M,--dependencies
293 Output rules to be included in Makefile.
294 @item -o,--output=@var{FILE}
295 Set the default output file to @var{FILE}.
299 Disallow untrusted @code{\include} directives, in-line
300 Scheme evaluation, backslashes in @TeX{}, code.
302 @strong{WARNING}: the @code{--safe} option has not been reviewed for a
303 long time. Do not rely on it for automatic invocation (e.g. over the
304 web). Volunteers are welcome to do a new audit.
308 Show version information.
310 Be verbose: show full paths of all files read, and give timing
314 Show the warranty with which GNU LilyPond comes. (It comes with
315 @strong{NO WARRANTY}!)
318 @section Environment variables
321 For processing both the @TeX{} and the PostScript output, the
322 appropriate environment variables must be set. The following scripts
326 @item @file{buildscripts/out/lilypond-profile}
328 @item @file{buildscripts/out/lilypond-login} (for C-shells)
331 They should normally be sourced as part of the login process. If these
332 scripts are not run from the system wide login process, then you must
335 @cindex installing LilyPond
337 If you use sh, bash, or a similar shell, then add the following to
338 your @file{.profile}:
340 . @var{/the/path/to/}lilypond-profile
343 If you use csh, tcsh or a similar shell, then add the following to
344 your @file{~/.login}:
346 source @var{/the/path/to/}lilypond-login
349 Of course, in both cases, you should substitute the proper location of
352 These scripts set the following variables:
355 To make sure that @TeX{} and lilypond find data files (among
356 others @file{.tex}, @file{.mf} and @file{.tfm}),
357 you have to set @code{TEXMF} to point to the lilypond data
358 file tree. A typical setting would be
360 @{/usr/share/lilypond/1.6.0,@{!!/usr/share/texmf@}@}
365 For processing PostScript output (obtained with
366 @code{-f ps}) with Ghostscript you have to set @code{GS_LIB} to
367 point to the directory containing library PS files.
370 For processing PostScript output (obtained with
371 @code{-f ps}) with Ghostscript you have to set @code{GS_FONTPATH} to
372 point to the directory containing PFA files.
374 When you print direct PS output, remember to send the PFA files to the
384 @cindex printing postscript
386 The binary itself recognizes the following environment variables:
389 This specifies a directory where locale messages and
390 data files will be looked up by default. The directory should contain
391 subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
394 This selects the language for the warning messages.
398 @cindex LILYPONDPREFIX
401 @section Error messages
403 @cindex error messages
404 Different error messages can appear while compiling a file:
410 Something looks suspect. If you are requesting something out of the
411 ordinary then you will understand the message, and can ignore it.
412 However, warnings usually indicate that something is wrong with the
416 Something is definitely wrong. The current processing step (parsing,
417 interpreting, or formatting) will be finished, but the next step will
423 Something is definitely wrong, and LilyPond cannot continue. This
424 happens rarely. The most usual cause is misinstalled fonts.
426 @cindex trace, Scheme
430 Errors that occur while executing Scheme code are caught by the Scheme
431 interpreter. If running with the verbose option (@code{-V} or
432 @code{--verbose}) then a call trace is printed of the offending
435 @cindex Programming error
436 @item Programming error
437 There was some internal inconsistency. These error messages are
438 intended to help the programmers and debuggers. Usually, they can be
439 ignored. Sometimes, they come in such big quantities that they obscure
440 other output. In this case, file a bug-report.
444 @cindex errors, message format
445 If warnings and errors can
446 be linked to some part of the input file, then error messages have the
450 @var{filename}:@var{lineno}:@var{columnno}: @var{message}
451 @var{offending input line}
454 A line-break is inserted in offending line to indicate the column
455 where the error was found. For example,
458 test.ly:2:19: error: not a duration: 5:
465 @section Reporting bugs
468 @cindex reporting bugs
470 If you have input that results in a crash or an erroneous output, then
471 that is a bug. We try respond to bug-reports promptly, and fix them as
472 soon as possible. For this, we need to reproduce and isolate the
473 problem. Help us by sending a defective input file, so we can
474 reproduce the problem. Make it small, so we can easily debug the
475 problem. Don't forget to tell which version you use, and on which
476 platform you run it. Send the report to
477 @email{bug-lilypond@@gnu.org}.
480 @section Editor support
485 @cindex modes, editor
486 @cindex syntax coloring
487 @cindex coloring, syntax
489 There is support from different editors for LilyPond.
493 Emacs has a @file{lilypond-mode}, which provides keyword
494 autocompletion, indentation, LilyPond specific parenthesis matching
495 and syntax coloring, handy compile short-cuts and reading LilyPond
496 manuals using Info. If lilypond-mode is not installed on your
497 platform, then refer to the installation instructions for more
502 For @uref{http://www.vim.org,VIM}, a vimrc is supplied, along with
503 syntax coloring tools. For more information, refer to the
505 @uref{../../../topdocs/out-www/INSTALL.html,installation instructions}.
508 installation instructions.
512 For both editors, there is also a facility to jump in the input file
513 to the source of errors in the graphical output. See @ref{Point and
518 There exists a plugin for @uref{http://www.jedit.org/,jEdit}. Refer to
519 the @uref{http://lily4jedit.sourceforge.net,plugin website} for more
524 @node Point and click
525 @section Point and click
526 @cindex point and click
528 @cindex source specials
529 @cindex specials, source
531 Point and click lets you find notes in the input by clicking on them in
532 the Xdvi window. This makes it easier to find input that causes some
533 error in the sheet music.
535 To use it, you need the following software:
537 @item a dvi viewer that supports src specials:
539 @item Xdvi, version 22.36 or newer. Available from
540 @uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,ftp.math.berkeley.edu}.
542 Most @TeX{} distributions ship with xdvik, which is always a few
543 versions behind the official Xdvi. To find out which Xdvi you are
544 running, try @code{xdvi -version} or @code{xdvi.bin -version}.
545 @item KDVI. A dvi viewer for KDE. You need KDVI from KDE 3.0 or
546 newer. Enable option @emph{Inverse search} in the menu @emph{Settings}.
548 Apparently, KDVI does not process PostScript specials correctly. Beams
549 and slurs will not be visible in KDVI.
558 @item an editor with a client/server interface (or a lightweight GUI
564 @item Emacs. Emacs is an extensible text-editor. It is available from
565 @uref{http://www.gnu.org/software/emacs/}. You need version 21 to use
568 @c move this elsewhere?
573 @cindex lilypond-mode for Emacs
574 @cindex syntax coloring
576 @item XEmacs. XEmacs is very similar to Emacs.
580 @item NEdit. NEdit runs under Windows, and Unix.
581 It is available from @uref{http://www.nedit.org}.
585 @item GVim. GVim is a GUI variant of VIM, the popular VI
586 clone. It is available from @uref{http://www.vim.org}.
595 Xdvi must be configured to find the @TeX{} fonts and music
596 fonts. Refer to the Xdvi documentation for more information.
598 To use point-and-click, add one of these lines to the top of your .ly
601 #(ly:set-point-and-click 'line)
603 @cindex line-location
605 When viewing, Control-Mousebutton 1 will take you to the originating
606 spot in the @file{.ly} file. Control-Mousebutton 2 will show all
609 If you correct large files with point-and-click, be sure to start
610 correcting at the end of the file. When you start at the top, and
611 insert one line, all following locations will be off by a line.
614 For using point-and-click with Emacs, add the following
615 In your Emacs startup file (usually @file{~/.emacs}):
620 Make sure that the environment variable @var{XEDITOR} is set to
622 emacsclient --no-wait +%l %f
624 @cindex @var{XEDITOR}
625 If you use XEmacs instead of Emacs, you use @code{(gnuserve-start)} in
626 your @file{.emacs}, and set @code{XEDITOR} to @code{gnuclient -q +%l %f}.
628 For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or
629 use this argument with Xdvi's @code{-editor} option.
632 For using NEdit, set @code{XEDITOR} to @code{nc -noask +%l %f}, or
633 use this argument with Xdvi's @code{-editor} option.
635 If can also make your editor jump to the exact location of the note
636 you clicked. This is only supported on Emacs and VIM. Users of Emacs version
637 20 must apply the patch @file{emacsclient.patch}. Users of version 21
638 must apply @file{server.el.patch} (version 21.2 and earlier). At the
639 top of the @code{ly} file, replace the @code{set-point-and-click} line
640 with the following line:
642 #(ly:set-point-and-click 'line-column)
644 @cindex line-column-location
645 and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}. Vim
646 users can set @var{XEDITOR} to @code{gvim --remote +:%l:norm%c| %f}.