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}.
39 @item -I,--include=@var{dir}
40 Add @var{dir} to LilyPond's include path.
42 Produce MIDI output only.
44 Do not run @file{lilypond-bin}. Useful for debugging @code{lilypond}.
45 @item -o,--output=@var{file}
46 Generate output to @var{file}. The extension of @var{file} is ignored.
48 Do not generate (PDF) or PS.
51 @cindex Scalable fonts
54 Also generate pictures of each page, in PNG format.
56 Gzip the postscript file.
58 Make a .HTML file with links to all output files.
60 Also generate a picture of the first system of the score.
69 @item -s,--set=@var{key}=@var{val}
70 Add @var{key}= @var{val} to the settings, overriding those specified
71 in the files. Possible keys: @code{language}, @code{latexheaders},
72 @code{latexpackages}, @code{latexoptions}, @code{papersize},
73 @code{pagenumber}, @code{linewidth}, @code{orientation},
76 Show version information.
78 Be verbose. This prints out commands as they are executed, and more
79 information about the formatting process is printed.
81 Print even more information. This is useful when generating bug reports.
83 Show the warranty with which GNU LilyPond comes. (It comes with
84 @strong{NO WARRANTY}!)
87 @subsection Titling layout
89 @code{lilypond} extracts the following header fields from the LY files
90 to generate titling; an example demonstrating all these fields is in
91 @inputfileref{input/test,lilypond-testpage.ly}:
95 The title of the music. Centered on top of the first page.
97 Subtitle, centered below the title.
99 Name of the poet, left flushed below the subtitle.
101 Name of the composer, right flushed below the subtitle.
103 Meter string, left flushed below the poet.
105 Name of the opus, right flushed below the composer.
107 Name of the arranger, right flushed below the opus.
109 Name of the instrument, centered below the arranger.
111 To whom the piece is dedicated.
113 Name of the piece, left flushed below the instrument.
115 A text to print in the header of all pages. It is not called
116 @code{header}, because @code{\header} is a reserved word in LilyPond.
118 A text to print in the footer of the first page. Default is to
119 print the standard footer also on the first page. Note that if the
120 score consists of only a single page, the first page is also the
121 last page, and in this case, the tagline is printed instead of the
124 A text to print in the footer of all but the last page.
126 Line to print at the bottom of last page. The default text is ``Engraved
127 by LilyPond @var{version-number}''.
138 @subsection Additional parameters
140 The @code{lilypond} program responds to several parameters specified
141 in a @code{\paper} section of the input file. They can be overridden
142 by supplying a @code{--set} command line option.
146 Specify La@TeX{} language: the @code{babel} package will be
147 included. Default: unset.
149 Read from the @code{\header} block.
152 Specify additional La@TeX{} headers file.
154 Normally read from the @code{\header} block. Default value: empty.
157 Specify additional La@TeX{} packages file. This works cumulative,
158 so you can add multiple packages using multiple @code{-s=latexpackages} options.
159 Normally read from the @code{\header} block. Default value:
163 Specify additional options for the La@TeX{}
164 @code{\documentclass}. You can put any valid value here. This was
165 designed to allow @code{lilypond} to produce output for double-sided
166 paper, with balanced margins and page numbers on alternating sides. To
167 achieve this specify @code{twoside}.
170 Set orientation. Choices are @code{portrait} or @code{landscape}. Is
171 read from the @code{\paper} block, if set.
174 The vertical extension of the music on the page. It is normally
175 calculated automatically, based on the paper size.
178 The music line width. It is normally read from the @code{\paper}
182 The paper size (as a name, e.g. @code{a4}). It is normally read from
183 the @code{\paper} block.
186 If set to @code{no}, no page numbers will be printed. If set to a
187 positive integer, start with this value as the first page number.
191 The font encoding, should be set identical to the @code{font-encoding}
192 property in the score.
197 @node Invoking the lilypond binary
198 @section Invoking the lilypond binary
199 @cindex Invoking LilyPond
200 @cindex command line options
201 @cindex options, command line
205 The formatting system consists of two parts: a binary executable
206 (@file{lilypond-bin}), which is responsible for the formatting
207 functionality, and support scripts, which post-process the resulting
208 output. Normally, the support scripts are called, which in turn invoke
209 the @code{lilypond-bin} binary. However, @code{lilypond-bin} may be
210 called directly as follows.
213 lilypond-bin [@var{option}]@dots{} @var{file}@dots{}
217 When invoked with a filename that has no extension, the @file{.ly}
218 extension is tried first. To read input from stdin, use a
219 dash @code{-} for @var{file}.
221 When @file{filename.ly} is processed it will produce
222 @file{filename.tex} as output (or @file{filename.ps} for PostScript
223 output). If @file{filename.ly} contains more than one @code{\score}
224 block, then the rest of the scores will be output in numbered files,
225 starting with @file{filename-1.tex}. Several files can be specified;
226 they will each be processed independently. @footnote{The status of
227 GUILE is not reset across invocations, so be careful not to change any
228 system defaults from within Scheme.}
230 We strongly advise against making LilyPond formatting available
231 through a web server. That is, processing input from untrusted users,
232 and returning the resulting PDF file. LilyPond is a big and complex
233 program. It was not written with security in mind. Making it available
234 to the outside world is a huge risk; consider the security
240 c4^#(ly:export (ly:gulp-file "/etc/passwd"))
245 @section Command line options
247 The following options are supported:
251 @item -e,--evaluate=@var{expr}
252 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
253 Multiple @code{-e} options may be given, they will be evaluated
254 sequentially. The function @code{ly:set-option} allows for access to
255 some internal variables. Use @code{-e '(ly:option-usage)'} for more
258 @item -f,--format=@var{format}
261 Output format for sheet music. Choices are @code{tex} (for @TeX{}
262 output, to be processed with plain @TeX{}, or through @code{lilypond}),
263 @code{pdftex} for PDF@TeX{} input, @code{ps} (for PostScript),
264 @code{scm} (for a Scheme dump), @code{sk} (for Sketch) and @code{as}
267 @strong{This option is only for developers}. Only the @TeX{} output of
268 these is usable for real work.
271 @cindex output format, setting
272 @cindex Sketch output
273 @cindex ASCII-art output
274 @cindex PDFTeX output
275 @cindex PostScript output
279 Show a summary of usage.
280 @item --include, -I=@var{directory}
281 Add @var{directory} to the search path for input files.
282 @cindex file searching
284 @item -i,--init=@var{file}
285 Set init file to @var{file} (default: @file{init.ly}).
288 Disable @TeX{} output. If you have a @code{\midi} definition MIDI output
290 @item -o,--output=@var{FILE}
291 Set the default output file to @var{FILE}.
294 Disallow untrusted @code{\include} directives, in-line
295 Scheme evaluation, backslashes in @TeX{}, code.
298 Show version information.
300 Be verbose: show full paths of all files read, and give timing
304 Show the warranty with which GNU LilyPond comes. (It comes with
305 @strong{NO WARRANTY}!)
308 @section Environment variables
311 For processing both the @TeX{} and the PostScript output, the
312 appropriate environment variables must be set. The following scripts
316 @item @file{buildscripts/out/lilypond-profile}
318 @item @file{buildscripts/out/lilypond-login} (for C-shells)
321 They should normally be sourced as part of the login process. If these
322 scripts are not run from the system wide login process, then you must
325 @cindex installing LilyPond
327 If you use sh, bash, or a similar shell, then add the following to
328 your @file{.profile}:
330 . @var{/the/path/to/}lilypond-profile
333 If you use csh, tcsh or a similar shell, then add the following to
334 your @file{~/.login}:
336 source @var{/the/path/to/}lilypond-login
339 Of course, in both cases, you should substitute the proper location of
342 These scripts set the following variables:
345 To make sure that @TeX{} and lilypond find data files (among
346 others @file{.tex}, @file{.mf} and @file{.tfm}),
347 you have to set @code{TEXMF} to point to the lilypond data
348 file tree. A typical setting would be
350 @{/usr/share/lilypond/1.6.0,@{!!/usr/share/texmf@}@}
355 For processing PostScript output (obtained with
356 @code{-f ps}) with Ghostscript you have to set @code{GS_LIB} to
357 point to the directory containing library PS files.
360 For processing PostScript output (obtained with
361 @code{-f ps}) with Ghostscript you have to set @code{GS_FONTPATH} to
362 point to the directory containing PFA files.
364 When you print direct PS output, remember to send the PFA files to the
374 @cindex printing postscript
376 The binary itself recognizes the following environment variables:
379 This specifies a directory where locale messages and
380 data files will be looked up by default. The directory should contain
381 subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
384 This selects the language for the warning messages.
388 @cindex LILYPONDPREFIX
391 @section Error messages
393 @cindex error messages
394 Different error messages can appear while compiling a file:
400 Something looks suspect. If you are requesting something out of the
401 ordinary then you will understand the message, and can ignore it.
402 However, warnings usually indicate that something is wrong with the
406 Something is definitely wrong. The current processing step (parsing,
407 interpreting, or formatting) will be finished, but the next step will
413 Something is definitely wrong, and LilyPond cannot continue. This
414 happens rarely. The most usual cause is misinstalled fonts.
416 @cindex trace, Scheme
420 Errors that occur while executing Scheme code are caught by the Scheme
421 interpreter. If running with the verbose option (@code{-V} or
422 @code{--verbose}) then a call trace is printed of the offending
425 @cindex Programming error
426 @item Programming error
427 There was some internal inconsistency. These error messages are
428 intended to help the programmers and debuggers. Usually, they can be
429 ignored. Sometimes, they come in such big quantities that they obscure
430 other output. In this case, file a bug-report.
434 @cindex errors, message format
435 If warnings and errors can
436 be linked to some part of the input file, then error messages have the
440 @var{filename}:@var{lineno}:@var{columnno}: @var{message}
441 @var{offending input line}
444 A line-break is inserted in offending line to indicate the column
445 where the error was found. For example,
448 test.ly:2:19: error: not a duration: 5:
455 @section Reporting bugs
458 @cindex reporting bugs
460 If you have input that results in a crash or an erroneous output, then
461 that is a bug. We try respond to bug-reports promptly, and fix them as
462 soon as possible. For this, we need to reproduce and isolate the
463 problem. Help us by sending a defective input file, so we can
464 reproduce the problem. Make it small, so we can easily debug the
465 problem. Don't forget to tell which version you use, and on which
466 platform you run it. Send the report to
467 @email{bug-lilypond@@gnu.org}.
470 @section Editor support
475 @cindex modes, editor
476 @cindex syntax coloring
477 @cindex coloring, syntax
479 There is support from different editors for LilyPond.
483 Emacs has a @file{lilypond-mode}, which provides keyword
484 autocompletion, indentation, LilyPond specific parenthesis matching
485 and syntax coloring, handy compile short-cuts and reading LilyPond
486 manuals using Info. If lilypond-mode is not installed on your
487 platform, then refer to the installation instructions for more
492 For @uref{http://www.vim.org,VIM}, a vimrc is supplied, along with
493 syntax coloring tools. For more information, refer to the
495 @uref{../../../topdocs/out-www/INSTALL.html,installation instructions}.
498 installation instructions.
502 For both editors, there is also a facility to jump in the input file
503 to the source of errors in the graphical output. See @ref{Point and
508 There exists a plugin for @uref{http://www.jedit.org/,jEdit}. Refer to
509 the @uref{http://lily4jedit.sourceforge.net,plugin website} for more
514 @node Point and click
515 @section Point and click
516 @cindex point and click
518 @cindex source specials
519 @cindex specials, source
521 Point and click lets you find notes in the input by clicking on them in
522 the Xdvi window. This makes it easier to find input that causes some
523 error in the sheet music.
525 To use it, you need the following software:
527 @item a dvi viewer that supports src specials:
529 @item Xdvi, version 22.36 or newer. Available from
530 @uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,ftp.math.berkeley.edu}.
532 Most @TeX{} distributions ship with xdvik, which is always a few
533 versions behind the official Xdvi. To find out which Xdvi you are
534 running, try @code{xdvi -version} or @code{xdvi.bin -version}.
535 @item KDVI. A dvi viewer for KDE. You need KDVI from KDE 3.0 or
536 newer. Enable option @emph{Inverse search} in the menu @emph{Settings}.
538 Apparently, KDVI does not process PostScript specials correctly. Beams
539 and slurs will not be visible in KDVI.
548 @item an editor with a client/server interface (or a lightweight GUI
554 @item Emacs. Emacs is an extensible text-editor. It is available from
555 @uref{http://www.gnu.org/software/emacs/}. You need version 21 to use
558 @c move this elsewhere?
563 @cindex lilypond-mode for Emacs
564 @cindex syntax coloring
566 @item XEmacs. XEmacs is very similar to Emacs.
570 @item NEdit. NEdit runs under Windows, and Unix.
571 It is available from @uref{http://www.nedit.org}.
575 @item GVim. GVim is a GUI variant of VIM, the popular VI
576 clone. It is available from @uref{http://www.vim.org}.
585 Xdvi must be configured to find the @TeX{} fonts and music
586 fonts. Refer to the Xdvi documentation for more information.
588 To use point-and-click, add one of these lines to the top of your .ly
591 #(ly:set-point-and-click 'line)
593 @cindex line-location
595 When viewing, Control-Mousebutton 1 will take you to the originating
596 spot in the @file{.ly} file. Control-Mousebutton 2 will show all
599 If you correct large files with point-and-click, be sure to start
600 correcting at the end of the file. When you start at the top, and
601 insert one line, all following locations will be off by a line.
604 For using point-and-click with Emacs, add the following
605 In your Emacs startup file (usually @file{~/.emacs}):
610 Make sure that the environment variable @var{XEDITOR} is set to
612 emacsclient --no-wait +%l %f
614 @cindex @var{XEDITOR}
615 If you use XEmacs instead of Emacs, you use @code{(gnuserve-start)} in
616 your @file{.emacs}, and set @code{XEDITOR} to @code{gnuclient -q +%l %f}.
618 For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or
619 use this argument with Xdvi's @code{-editor} option.
622 For using NEdit, set @code{XEDITOR} to @code{nc -noask +%l %f}, or
623 use this argument with Xdvi's @code{-editor} option.
625 If can also make your editor jump to the exact location of the note
626 you clicked. This is only supported on Emacs and VIM. Users of Emacs version
627 20 must apply the patch @file{emacsclient.patch}. Users of version 21
628 must apply @file{server.el.patch} (version 21.2 and earlier). At the
629 top of the @code{ly} file, replace the @code{set-point-and-click} line
630 with the following line:
632 #(ly:set-point-and-click 'line-column)
634 @cindex line-column-location
635 and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}. Vim
636 users can set @var{XEDITOR} to @code{gvim --remote +:%l:norm%c| %f}.