PDF_FILES = $(TEXINFO_MANUALS:%=$(outdir)/%.pdf)
-TOPDIR_HTML_MANUALS =
+TOPDIR_HTML_MANUALS =
UNSPLITTED_HTML_MANUALS =
SPLITTED_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\
$(if $(findstring $(manual), $(UNSPLITTED_HTML_MANUALS)),,$(manual)))
lilypond-essay lilypond-learning lilypond-notation music-glossary \
lilypond-web lilypond-extending
ifeq ($(out),www)
-INFO_DOCS += lilypond-snippets
+INFO_DOCS += lilypond-snippets
endif
INFO_FILES = $(INFO_DOCS:%=$(outdir)/%.info)
local-help: extra-local-help
extra-local-help:
- @echo -e "\
- check-xrefs [ISOLANG=LL] validate Texinfo cross-references\n\
- fix-xrefs [ISOLANG=LL] interactively fix Texinfo cross-references (use with caution)\n\
- info update info pages\n\
- xml update Docbook xml documentation\n\
-\n\
-Translations specific targets (see TRANSLATION for details):\n\
- new-lang ISOLANG=LL create and initialize subdirectory \'LL' for language \'LL\n\
-(if \'LL exists, update missing file)\n\
- po-update update and replace PO files for documentation with msgmerged versions\n\
- check-translation ISOLANG=LL show changes in English docs since last translation update\n\
- update-translation ISOLANG=LL call $$$$EDITOR to help updating the translation\n\
- skeleton-update ISOLANG=LL update Texinfo skeleton files\n\
- snippet-update ISOLANG=LL update ly snippets in Texinfo translation according to\n\
- docs in English (use with caution)\n\
-\n\
-LL refers to the desired locale (most often only the ISO 639 language code).\n"
+ @echo " check-xrefs [ISOLANG=LL] validate Texinfo cross-references"
+ @echo " fix-xrefs [ISOLANG=LL] interactively fix Texinfo cross-references"
+ @echo " (use with caution)"
+ @echo " info update info pages"
+ @echo " xml update Docbook xml documentation"
+ @echo
+ @echo "Translations specific targets (see TRANSLATION for details):"
+ @echo " new-lang ISOLANG=LL create and initialize"
+ @echo " subdirectory \'LL' for language \'LL"
+ @echo " (if \'LL exists, update missing file)"
+ @echo " po-update update and replace PO files for"
+ @echo " documentation with msgmerged versions"
+ @echo " check-translation ISOLANG=LL show changes in English docs since"
+ @echo " last translation update"
+ @echo " update-translation ISOLANG=LL call $$$$EDITOR to help updating"
+ @echo " the translation"
+ @echo " skeleton-update ISOLANG=LL update Texinfo skeleton files"
+ @echo " snippet-update ISOLANG=LL update ly snippets in Texinfo translation"
+ @echo " according to docs in English"
+ @echo " (use with caution)"
+ @echo
+ @echo " LL refers to the desired locale"
+ @echo " (most often only the ISO 639 language code)."
+ @echo
info: $(INFO_FILES)
@echo export LILYPOND_DATADIR=$(LILYPOND_DATADIR)
ttf-kochi-gothic ttf-kochi-mincho \
xfonts-bolkhov-75dpi xfonts-cronyx-100dpi xfonts-cronyx-75dpi
@end verbatim
+
+
+@unnumberedsubsubsec Using lilypond python libraries
+
+If you want to use lilypond's python libraries (either running
+certain build scripts manually, or using them in other programs),
+set @code{PYTHONPATH} to @file{python/out} in your build
+directory, or @file{.../usr/lib/lilypond/current/python} in the
+installation directory structure.
+
+
git config branch.master.rebase true
@end example
+If pull fails because of a message like
+
+@example
+error: Your local changes to 'Documentation/learning/tutorial.itely'
+would be overwritten by merge. Aborting.
+@end example
+
+@noindent
+or
+
+@example
+Documentation/learning/tutorial.itely: needs update
+refusing to pull with rebase: your working tree is not up-to-date
+@end example
+
+@noindent
+it means that you have modified some files in you working tree
+without committing changes (see @ref{Commits and patches}); you
+can use the @command{git@tie{}stash} command to work around this:
+
+@example
+git stash # save uncommitted changes
+git pull -r # pull using rebase (translators omit "-r")
+git stash pop # reapply previously saved changes
+@end example
+
+Note that @command{git@tie{}stash@tie{}pop} will try to apply a
+patch, and this may create a conflict. If this happens, see
+@ref{Resolving conflicts}.
+
FIXME: I think the next paragraph is confusing. Perhaps prepare
the reader for new terms `committish' and `head'? -mp
@code{AccidentalSuggestion},
@example
-(X-offset .
+`(X-offset .
,(ly:make-simple-closure
`(,+
,(ly:make-simple-closure
@example
\paper @{
- between-system-padding = #0.1
- between-system-space = #0.1
+ between-system-spacing = #'((padding . 0) (space . 0.1))
ragged-last-bottom = ##f
ragged-bottom = ##f
@}
* Running lilypond:: Operation.
* Updating files with convert-ly:: Updating input files.
* lilypond-book:: Integrating text and music.
-* Converting from other formats:: Converting to lilypond source format.
+* External programs:: Mixing LilyPond and other programs.
* Suggestions for writing files:: Best practices and effective bug-fixing.
Appendices
@include usage/running.itely
@include usage/updating.itely
@include usage/lilypond-book.itely
-@include usage/converters.itely
+@include usage/external.itely
@include usage/suggestions.itely
@include fdl.itexi
+++ /dev/null
-@c -*- coding: utf-8; mode: texinfo; -*-
-
-@ignore
- Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
- When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
-@end ignore
-
-@c \version "2.12.0"
-
-@node Converting from other formats
-@chapter Converting from other formats
-
-Music can be entered also by importing it from other formats. This
-chapter documents the tools included in the distribution to do so.
-There are other tools that produce LilyPond input, for example GUI
-sequencers and XML converters. Refer to the
-@uref{http://@/lilypond@/.org,website} for more details.
-
-These are separate programs from @command{lilypond} itself, and are
-run on the command line; see @ref{Command-line usage} for more
-information. If you have MacOS 10.3 or 10.4 and you have trouble
-running some of these scripts, e.g. @code{convert-ly}, see
-@rweb{MacOS X}.
-
-
-@knownissues
-We unfortunately do not have the resources to maintain these
-programs; please consider them @qq{as-is}. Patches are appreciated, but
-bug reports will almost certainly not be resolved.
-
-@menu
-* Invoking midi2ly:: Importing MIDI.
-* Invoking musicxml2ly:: Importing MusicXML.
-* Invoking abc2ly:: Importing ABC.
-* Invoking etf2ly:: Importing Finale.
-* Other formats::
-@end menu
-
-
-
-@node Invoking midi2ly
-@section Invoking @command{midi2ly}
-
-@cindex MIDI
-
-@command{midi2ly} translates a Type@tie{}1 MIDI file to a LilyPond source
-file.
-
-MIDI (Music Instrument Digital Interface) is a standard for digital
-instruments: it specifies cabling, a serial protocol and a file
-format. The MIDI file format is a de facto standard format for
-exporting music from other programs, so this capability may come in
-useful when importing files from a program that has a converter for a
-direct format.
-
-@command{midi2ly} converts tracks into @rinternals{Staff} and
-channels into @rinternals{Voice} contexts. Relative mode is used
-for pitches, durations are only written when necessary.
-
-It is possible to record a MIDI file using a digital keyboard, and
-then convert it to @file{.ly}. However, human players are not
-rhythmically exact enough to make a MIDI to LY conversion trivial.
-When invoked with quantizing (@code{-s} and @code{-d} options)
-@command{midi2ly} tries to compensate for these timing errors, but is not
-very good at this. It is therefore not recommended to use @command{midi2ly}
-for human-generated midi files.
-
-
-It is invoked from the command-line as follows,
-@example
-midi2ly [@var{option}]@dots{} @var{midi-file}
-@end example
-
-Note that by @q{command-line}, we mean the command line of the
-operating system. See @ref{Converting from other formats}, for
-more information about this.
-
-The following options are supported by @command{midi2ly}.
-
-@table @code
-@item -a, --absolute-pitches
-Print absolute pitches.
-
-@item -d, --duration-quant=@var{DUR}
-Quantize note durations on @var{DUR}.
-
-@item -e, --explicit-durations
-Print explicit durations.
-
-@item -h,--help
-Show summary of usage.
-
-@item -k, --key=@var{acc}[:@var{minor}]
-Set default key. @math{@var{acc} > 0} sets number of sharps;
-@math{@var{acc} < 0} sets number of flats. A minor key is indicated by
-@code{:1}.
-
-@item -o, --output=@var{file}
-Write output to @var{file}.
-
-@item -s, --start-quant=@var{DUR}
-Quantize note starts on @var{DUR}.
-
-@item -t, --allow-tuplet=@var{DUR}*@var{NUM}/@var{DEN}
-Allow tuplet durations @var{DUR}*@var{NUM}/@var{DEN}.
-
-@item -v, --verbose
-Be verbose.
-
-@item -V, --version
-Print version number.
-
-@item -w, --warranty
-Show warranty and copyright.
-
-@item -x, --text-lyrics
-Treat every text as a lyric.
-@end table
-
-
-@knownissues
-
-Overlapping notes in an arpeggio will not be correctly rendered. The
-first note will be read and the others will be ignored. Set them all
-to a single duration and add phrase markings or pedal indicators.
-
-
-@node Invoking musicxml2ly
-@section Invoking @code{musicxml2ly}
-
-@cindex MusicXML
-
-@uref{http://@/www.@/musicxml@/.org/,MusicXML} is an XML dialect
-for representing music notation.
-
-@command{musicxml2ly} extracts the notes, articulations, score structure,
-lyrics, etc. from part-wise MusicXML files, and writes them to a .ly
-file. It is invoked from the command-line.
-
-
-It is invoked from the command-line as follows,
-@example
-musicxml2ly [@var{option}]@dots{} @var{xml-file}
-@end example
-
-Note that by @q{command-line}, we mean the command line of the
-operating system. See @ref{Converting from other formats}, for
-more information about this.
-
-If the given filename is @file{-}, @command{musicxml2ly} reads input
-from the command line.
-
-The following options are supported by @command{musicxml2ly}:
-
-@table @code
-@item -a, --absolute
-convert pitches in absolute mode.
-
-@item -h,--help
-print usage and option summary.
-
-@item -l, --language=LANG
-use a different language file 'LANG.ly' and corresponding pitch names,
-e.g. 'deutsch' for deutsch.ly and German note names.
-
-@item --lxml
-use the lxml.etree Python package for XML-parsing; uses less memory and cpu time.
-
-@item --nd --no-articulation-directions
-do not convert directions (@code{^}, @code{_} or @code{-}) for
-articulations, dynamics, etc.
-
-@item --no-beaming
-do not convert beaming information, use LilyPond's automatic
-beaming instead.
-
-@item -o,--output=@var{file}
-set output filename to @var{file}. If @var{file} is @file{-}, the output
-will be printed on stdout. If not given, @var{xml-file}@file{.ly} will
-be used.
-
-@item -r,--relative
-convert pitches in relative mode (default).
-
-@item -v,--verbose
-be verbose.
-
-@item --version
-print version information.
-
-@item -z,--compressed
-input file is a zip-compressed MusicXML file.
-@end table
-
-
-@node Invoking abc2ly
-@section Invoking @code{abc2ly}
-
-@warning{This program is not supported, and may be remove from
-future versions of LilyPond.}
-
-@cindex ABC
-
-ABC is a fairly simple ASCII based format. It is described at the ABC site:
-
-@quotation
-@uref{http://@/www@/.walshaw@/.plus@/.com/@/abc/@/learn@/.html}.
-@end quotation
-
-@command{abc2ly} translates from ABC to LilyPond. It is invoked as follows:
-
-@example
-abc2ly [@var{option}]@dots{} @var{abc-file}
-@end example
-
-The following options are supported by @command{abc2ly}:
-
-@table @code
-@item -b,--beams=None
-preserve ABC's notion of beams
-@item -h,--help
-this help
-@item -o,--output=@var{file}
-set output filename to @var{file}.
-@item -s,--strict
-be strict about success
-@item --version
-print version information.
-@end table
-
-There is a rudimentary facility for adding LilyPond code to the ABC
-source file. If you say:
-
-@example
-%%LY voices \set autoBeaming = ##f
-@end example
-
-This will cause the text following the keyword @q{voices} to be inserted
-into the current voice of the LilyPond output file.
-
-Similarly,
-
-@example
-%%LY slyrics more words
-@end example
-
-will cause the text following the @q{slyrics} keyword to be inserted
-into the current line of lyrics.
-
-
-@knownissues
-
-The ABC standard is not very @q{standard}. For extended features
-(e.g., polyphonic music) different conventions exist.
-
-Multiple tunes in one file cannot be converted.
-
-ABC synchronizes words and notes at the beginning of a line;
-@command{abc2ly} does not.
-
-@command{abc2ly} ignores the ABC beaming.
-
-
-@node Invoking etf2ly
-@section Invoking @command{etf2ly}
-
-@warning{This program is not supported, and may be remove from
-future versions of LilyPond.}
-
-@cindex ETF
-@cindex enigma
-@cindex Finale
-@cindex Coda Technology
-
-ETF (Enigma Transport Format) is a format used by Coda Music
-Technology's Finale product. @command{etf2ly} will convert part of an ETF
-file to a ready-to-use LilyPond file.
-
-It is invoked from the command-line as follows.
-
-@example
-etf2ly [@var{option}]@dots{} @var{etf-file}
-@end example
-
-Note that by @q{command-line}, we mean the command line of the
-operating system. See @ref{Converting from other formats}, for
-more information about this.
-
-The following options are supported by @command{etf2ly}:
-
-@table @code
-@item -h,--help
-this help
-@item -o,--output=@var{FILE}
-set output filename to @var{FILE}
-@item --version
-version information
-@end table
-
-
-@knownissues
-
-The list of articulation scripts is incomplete. Empty measures
-confuse @command{etf2ly}. Sequences of grace notes are ended improperly.
-
-
-@node Other formats
-@section Other formats
-
-@cindex External programs, generating LilyPond files
-
-LilyPond itself does not come with support for any other formats,
-but some external tools can also generate LilyPond files. These
-are listed in @rweb{Alternate editors}.
-
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+@ignore
+ Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@c \version "2.12.0"
+
+@node External programs
+@chapter External programs
+
+FIXME: blah blah
+
+
+@menu
+* Point and click::
+* Text editor support::
+* Converting from other formats::
+* LilyPond output in other programs::
+* Independent includes::
+@end menu
+
+
+@node Point and click
+@section Point and click
+
+@cindex point and click
+
+Point and click lets you find notes in the input by clicking on them
+in the PDF viewer. This makes it easier to find input that causes
+some error in the sheet music.
+
+When this functionality is active, LilyPond adds hyperlinks to the PDF
+file. These hyperlinks are sent to the web-browser, which opens a
+text-editor with the cursor in the right place.
+
+To make this chain work, you should configure your PDF viewer to
+follow hyperlinks using the @file{lilypond-invoke-editor} script
+supplied with LilyPond.
+
+For Xpdf on UNIX, the following should be present in
+@file{xpdfrc}@footnote{On UNIX, this file is found either in
+@file{/etc/xpdfrc} or as @file{.xpdfrc} in your home directory.}
+
+@example
+urlCommand "lilypond-invoke-editor %s"
+@end example
+
+The program @file{lilypond-invoke-editor} is a small helper
+program. It will invoke an editor for the special @code{textedit}
+URIs, and run a web browser for others. It tests the environment
+variable @code{EDITOR} for the following patterns,
+
+@table @code
+@item emacs
+ this will invoke
+@example
+emacsclient --no-wait +@var{line}:@var{column} @var{file}
+@end example
+@item gvim
+ this will invoke
+@example
+gvim --remote +:@var{line}:norm@var{column} @var{file}
+@end example
+
+@item nedit
+this will invoke
+@example
+ nc -noask +@var{line} @var{file}'
+@end example
+@end table
+
+The environment variable @code{LYEDITOR} is used to override this. It
+contains the command line to start the editor, where @code{%(file)s},
+@code{%(column)s}, @code{%(line)s} is replaced with the file, column
+and line respectively. The setting
+
+@example
+emacsclient --no-wait +%(line)s:%(column)s %(file)s
+@end example
+
+@noindent
+for @code{LYEDITOR} is equivalent to the standard emacsclient
+invocation.
+
+
+@cindex file size, output
+
+The point and click links enlarge the output files significantly. For
+reducing the size of PDF and PS files, point and click may be switched
+off by issuing
+
+@example
+\pointAndClickOff
+@end example
+
+@noindent
+in a @file{.ly} file. Point and click may be explicitly enabled with
+
+@example
+\pointAndClickOn
+@end example
+
+Alternately, you may disable point and click with a command-line
+option:
+
+@example
+lilypond -dno-point-and-click file.ly
+@end example
+
+@warning{You should always turn off point and click in any LilyPond
+files to be distributed to avoid including path information about
+your computer in the .pdf file, which can pose a security risk.}
+@node Text editor support
+@section Text editor support
+
+@cindex editors
+@cindex vim
+@cindex emacs
+@cindex modes, editor
+@cindex syntax coloring
+@cindex coloring, syntax
+
+There is support for different text editors for LilyPond.
+
+@menu
+* Emacs mode::
+* Vim mode::
+* Other editors::
+@end menu
+
+@node Emacs mode
+@unnumberedsubsec Emacs mode
+
+Emacs has a @file{lilypond-mode}, which provides keyword
+autocompletion, indentation, LilyPond specific parenthesis matching
+and syntax coloring, handy compile short-cuts and reading LilyPond
+manuals using Info. If @file{lilypond-mode} is not installed on your
+platform, see below.
+
+An Emacs mode for entering music and running LilyPond is contained in
+the source archive in the @file{elisp} directory. Do @command{make
+install} to install it to @var{elispdir}. The file @file{lilypond-init.el}
+should be placed to @var{load-path}@file{/site-start.d/} or appended
+to your @file{~/.emacs} or @file{~/.emacs.el}.
+
+As a user, you may want add your source path (e.g. @file{~/site-lisp/}) to
+your @var{load-path} by appending the following line (as modified) to your
+@file{~/.emacs}
+
+@c any reason we do not advise: (push "~/site-lisp" load-path)
+@example
+(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
+@end example
+
+
+@node Vim mode
+@unnumberedsubsec Vim mode
+
+For @uref{http://@/www@/.vim@/.org,VIM}, a @file{vimrc} is supplied,
+along with syntax coloring tools. A Vim mode for entering music and
+running LilyPond is contained in the source archive in @code{$VIM}
+directory.
+
+The LilyPond file type is detected if the file
+@file{~/.vim/filetype.vim} has the following content
+
+@example
+if exists("did_load_filetypes")
+ finish
+endif
+augroup filetypedetect
+ au! BufNewFile,BufRead *.ly,*.ily setf lilypond
+augroup END
+@end example
+
+Please include this path by appending the following line to your
+@file{~/.vimrc}
+
+@example
+set runtimepath+=/usr/local/share/lilypond/$@{LILYPOND_VERSION@}/vim/
+@end example
+
+@noindent
+where $@{LILYPOND_VERSION@} is your LilyPond version. If LilyPond was not
+installed in @file{/usr/local/}, then change this path accordingly.
+The path may differ significantly. In Fedora the path leads to the
+current version of Vim instead of Lilypond:
+
+@example
+set runtimepath+=/usr/share/vim/vim72/
+@end example
+
+
+@node Other editors
+@unnumberedsubsec Other editors
+
+Other editors (both text and graphical) support LilyPond, but
+their special configuration files are not distributed with
+LilyPond. Consult their documentation for more information. Such
+editors are listed in @rweb{Alternate editors}.
+
+
+@node Converting from other formats
+@section Converting from other formats
+
+Music can be entered also by importing it from other formats. This
+chapter documents the tools included in the distribution to do so.
+There are other tools that produce LilyPond input, for example GUI
+sequencers and XML converters. Refer to the
+@uref{http://@/lilypond@/.org,website} for more details.
+
+These are separate programs from @command{lilypond} itself, and are
+run on the command line; see @ref{Command-line usage} for more
+information. If you have MacOS 10.3 or 10.4 and you have trouble
+running some of these scripts, e.g. @code{convert-ly}, see
+@rweb{MacOS X}.
+
+
+@knownissues
+We unfortunately do not have the resources to maintain these
+programs; please consider them @qq{as-is}. Patches are appreciated, but
+bug reports will almost certainly not be resolved.
+
+@menu
+* Invoking midi2ly:: Importing MIDI.
+* Invoking musicxml2ly:: Importing MusicXML.
+* Invoking abc2ly:: Importing ABC.
+* Invoking etf2ly:: Importing Finale.
+* Other formats::
+@end menu
+
+
+
+@node Invoking midi2ly
+@subsection Invoking @command{midi2ly}
+
+@cindex MIDI
+
+@command{midi2ly} translates a Type@tie{}1 MIDI file to a LilyPond source
+file.
+
+MIDI (Music Instrument Digital Interface) is a standard for digital
+instruments: it specifies cabling, a serial protocol and a file
+format. The MIDI file format is a de facto standard format for
+exporting music from other programs, so this capability may come in
+useful when importing files from a program that has a converter for a
+direct format.
+
+@command{midi2ly} converts tracks into @rinternals{Staff} and
+channels into @rinternals{Voice} contexts. Relative mode is used
+for pitches, durations are only written when necessary.
+
+It is possible to record a MIDI file using a digital keyboard, and
+then convert it to @file{.ly}. However, human players are not
+rhythmically exact enough to make a MIDI to LY conversion trivial.
+When invoked with quantizing (@code{-s} and @code{-d} options)
+@command{midi2ly} tries to compensate for these timing errors, but is not
+very good at this. It is therefore not recommended to use @command{midi2ly}
+for human-generated midi files.
+
+
+It is invoked from the command-line as follows,
+@example
+midi2ly [@var{option}]@dots{} @var{midi-file}
+@end example
+
+Note that by @q{command-line}, we mean the command line of the
+operating system. See @ref{Converting from other formats}, for
+more information about this.
+
+The following options are supported by @command{midi2ly}.
+
+@table @code
+@item -a, --absolute-pitches
+Print absolute pitches.
+
+@item -d, --duration-quant=@var{DUR}
+Quantize note durations on @var{DUR}.
+
+@item -e, --explicit-durations
+Print explicit durations.
+
+@item -h,--help
+Show summary of usage.
+
+@item -k, --key=@var{acc}[:@var{minor}]
+Set default key. @math{@var{acc} > 0} sets number of sharps;
+@math{@var{acc} < 0} sets number of flats. A minor key is indicated by
+@code{:1}.
+
+@item -o, --output=@var{file}
+Write output to @var{file}.
+
+@item -s, --start-quant=@var{DUR}
+Quantize note starts on @var{DUR}.
+
+@item -t, --allow-tuplet=@var{DUR}*@var{NUM}/@var{DEN}
+Allow tuplet durations @var{DUR}*@var{NUM}/@var{DEN}.
+
+@item -v, --verbose
+Be verbose.
+
+@item -V, --version
+Print version number.
+
+@item -w, --warranty
+Show warranty and copyright.
+
+@item -x, --text-lyrics
+Treat every text as a lyric.
+@end table
+
+
+@knownissues
+
+Overlapping notes in an arpeggio will not be correctly rendered. The
+first note will be read and the others will be ignored. Set them all
+to a single duration and add phrase markings or pedal indicators.
+
+
+@node Invoking musicxml2ly
+@subsection Invoking @code{musicxml2ly}
+
+@cindex MusicXML
+
+@uref{http://@/www.@/musicxml@/.org/,MusicXML} is an XML dialect
+for representing music notation.
+
+@command{musicxml2ly} extracts the notes, articulations, score structure,
+lyrics, etc. from part-wise MusicXML files, and writes them to a .ly
+file. It is invoked from the command-line.
+
+
+It is invoked from the command-line as follows,
+@example
+musicxml2ly [@var{option}]@dots{} @var{xml-file}
+@end example
+
+Note that by @q{command-line}, we mean the command line of the
+operating system. See @ref{Converting from other formats}, for
+more information about this.
+
+If the given filename is @file{-}, @command{musicxml2ly} reads input
+from the command line.
+
+The following options are supported by @command{musicxml2ly}:
+
+@table @code
+@item -a, --absolute
+convert pitches in absolute mode.
+
+@item -h,--help
+print usage and option summary.
+
+@item -l, --language=LANG
+use a different language file 'LANG.ly' and corresponding pitch names,
+e.g. 'deutsch' for deutsch.ly and German note names.
+
+@item --lxml
+use the lxml.etree Python package for XML-parsing; uses less memory and cpu time.
+
+@item --nd --no-articulation-directions
+do not convert directions (@code{^}, @code{_} or @code{-}) for
+articulations, dynamics, etc.
+
+@item --no-beaming
+do not convert beaming information, use LilyPond's automatic
+beaming instead.
+
+@item -o,--output=@var{file}
+set output filename to @var{file}. If @var{file} is @file{-}, the output
+will be printed on stdout. If not given, @var{xml-file}@file{.ly} will
+be used.
+
+@item -r,--relative
+convert pitches in relative mode (default).
+
+@item -v,--verbose
+be verbose.
+
+@item --version
+print version information.
+
+@item -z,--compressed
+input file is a zip-compressed MusicXML file.
+@end table
+
+
+@node Invoking abc2ly
+@subsection Invoking @code{abc2ly}
+
+@warning{This program is not supported, and may be remove from
+future versions of LilyPond.}
+
+@cindex ABC
+
+ABC is a fairly simple ASCII based format. It is described at the ABC site:
+
+@quotation
+@uref{http://@/www@/.walshaw@/.plus@/.com/@/abc/@/learn@/.html}.
+@end quotation
+
+@command{abc2ly} translates from ABC to LilyPond. It is invoked as follows:
+
+@example
+abc2ly [@var{option}]@dots{} @var{abc-file}
+@end example
+
+The following options are supported by @command{abc2ly}:
+
+@table @code
+@item -b,--beams=None
+preserve ABC's notion of beams
+@item -h,--help
+this help
+@item -o,--output=@var{file}
+set output filename to @var{file}.
+@item -s,--strict
+be strict about success
+@item --version
+print version information.
+@end table
+
+There is a rudimentary facility for adding LilyPond code to the ABC
+source file. If you say:
+
+@example
+%%LY voices \set autoBeaming = ##f
+@end example
+
+This will cause the text following the keyword @q{voices} to be inserted
+into the current voice of the LilyPond output file.
+
+Similarly,
+
+@example
+%%LY slyrics more words
+@end example
+
+will cause the text following the @q{slyrics} keyword to be inserted
+into the current line of lyrics.
+
+
+@knownissues
+
+The ABC standard is not very @q{standard}. For extended features
+(e.g., polyphonic music) different conventions exist.
+
+Multiple tunes in one file cannot be converted.
+
+ABC synchronizes words and notes at the beginning of a line;
+@command{abc2ly} does not.
+
+@command{abc2ly} ignores the ABC beaming.
+
+
+@node Invoking etf2ly
+@subsection Invoking @command{etf2ly}
+
+@warning{This program is not supported, and may be remove from
+future versions of LilyPond.}
+
+@cindex ETF
+@cindex enigma
+@cindex Finale
+@cindex Coda Technology
+
+ETF (Enigma Transport Format) is a format used by Coda Music
+Technology's Finale product. @command{etf2ly} will convert part of an ETF
+file to a ready-to-use LilyPond file.
+
+It is invoked from the command-line as follows.
+
+@example
+etf2ly [@var{option}]@dots{} @var{etf-file}
+@end example
+
+Note that by @q{command-line}, we mean the command line of the
+operating system. See @ref{Converting from other formats}, for
+more information about this.
+
+The following options are supported by @command{etf2ly}:
+
+@table @code
+@item -h,--help
+this help
+@item -o,--output=@var{FILE}
+set output filename to @var{FILE}
+@item --version
+version information
+@end table
+
+
+@knownissues
+
+The list of articulation scripts is incomplete. Empty measures
+confuse @command{etf2ly}. Sequences of grace notes are ended improperly.
+
+
+@node Other formats
+@subsection Other formats
+
+@cindex External programs, generating LilyPond files
+
+LilyPond itself does not come with support for any other formats,
+but some external tools can also generate LilyPond files. These
+are listed in @rweb{Alternate editors}.
+
+
+
+@node LilyPond output in other programs
+@section LilyPond output in other programs
+
+This section shows methods to integrate text and music, different than
+the automated method with @command{lilypond-book}.
+
+@menu
+* Many quotes from a large score::
+* Inserting LilyPond output into OpenOffice.org::
+* Inserting LilyPond output into other programs::
+@end menu
+
+@node Many quotes from a large score
+@unnumberedsubsec Many quotes from a large score
+
+If you need to quote many fragments from a large score, you can also use
+the clip systems feature, see @ruser{Extracting fragments of music}.
+
+
+@node Inserting LilyPond output into OpenOffice.org
+@unnumberedsubsec Inserting LilyPond output into OpenOffice.org
+
+@cindex OpenOffice.org
+
+LilyPond notation can be added to OpenOffice.org with
+@uref{http://@/ooolilypond@/.sourceforge@/.net@/,OOoLilyPond}.
+
+
+@node Inserting LilyPond output into other programs
+@unnumberedsubsec Inserting LilyPond output into other programs
+
+To insert LilyPond output in other programs, use @code{lilypond}
+instead of @code{lilypond-book}. Each example must be created
+individually and added to the document; consult the documentation for
+that program. Most programs will be able to insert LilyPond output in
+@file{PNG}, @file{EPS}, or @file{PDF} formats.
+
+To reduce the white space around your LilyPond score, use
+the following options
+
+@example
+\paper@{
+ indent=0\mm
+ line-width=120\mm
+ oddFooterMarkup=##f
+ oddHeaderMarkup=##f
+ bookTitleMarkup = ##f
+ scoreTitleMarkup = ##f
+@}
+
+@{ c1 @}
+@end example
+
+To produce a useful @file{EPS} file, use
+
+@example
+lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts myfile.ly
+
+@file{PNG}:
+lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png myfile.ly
+@end example
+
+
+@node Independent includes
+@section Independent @code{include}s
+
+FIXME: blah blah
+
+@menu
+* MIDI articulation::
+@end menu
+
+
+@node MIDI articulation
+@subsection MIDI articulation
+
+stub for info about Dr. Peter Chubb's @file{articulate.ly}
+
+
@node Alternate methods of mixing text and music
@section Alternative methods of mixing text and music
-This section shows methods to integrate text and music, different than
-the automated method with @command{lilypond-book}.
+Other means of mixing text and music (without
+@command{lilypond-book}) are discussed in
+@ref{LilyPond output in other programs}.
-@menu
-* Many quotes from a large score::
-* Inserting LilyPond output into OpenOffice.org::
-* Inserting LilyPond output into other programs::
-@end menu
-
-@node Many quotes from a large score
-@unnumberedsubsec Many quotes from a large score
-
-If you need to quote many fragments from a large score, you can also use
-the clip systems feature, see @ruser{Extracting fragments of music}.
-
-
-@node Inserting LilyPond output into OpenOffice.org
-@unnumberedsubsec Inserting LilyPond output into OpenOffice.org
-
-@cindex OpenOffice.org
-
-LilyPond notation can be added to OpenOffice.org with
-@uref{http://@/ooolilypond@/.sourceforge@/.net@/,OOoLilyPond}.
-
-
-@node Inserting LilyPond output into other programs
-@unnumberedsubsec Inserting LilyPond output into other programs
-
-To insert LilyPond output in other programs, use @code{lilypond}
-instead of @code{lilypond-book}. Each example must be created
-individually and added to the document; consult the documentation for
-that program. Most programs will be able to insert LilyPond output in
-@file{PNG}, @file{EPS}, or @file{PDF} formats.
-
-To reduce the white space around your LilyPond score, use
-the following options
-
-@example
-\paper@{
- indent=0\mm
- line-width=120\mm
- oddFooterMarkup=##f
- oddHeaderMarkup=##f
- bookTitleMarkup = ##f
- scoreTitleMarkup = ##f
-@}
-
-@{ c1 @}
-@end example
-
-To produce a useful @file{EPS} file, use
-
-@example
-lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts myfile.ly
-
-@file{PNG}:
-lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png myfile.ly
-@end example
* Command-line usage::
* Error messages::
* Common errors::
-* Point and click::
-* Text editor support::
@end menu
UTF-8 encoding. For details, see @ruser{Text encoding}.
-@node Point and click
-@section Point and click
-
-@cindex point and click
-
-Point and click lets you find notes in the input by clicking on them
-in the PDF viewer. This makes it easier to find input that causes
-some error in the sheet music.
-
-When this functionality is active, LilyPond adds hyperlinks to the PDF
-file. These hyperlinks are sent to the web-browser, which opens a
-text-editor with the cursor in the right place.
-
-To make this chain work, you should configure your PDF viewer to
-follow hyperlinks using the @file{lilypond-invoke-editor} script
-supplied with LilyPond.
-
-For Xpdf on UNIX, the following should be present in
-@file{xpdfrc}@footnote{On UNIX, this file is found either in
-@file{/etc/xpdfrc} or as @file{.xpdfrc} in your home directory.}
-
-@example
-urlCommand "lilypond-invoke-editor %s"
-@end example
-
-The program @file{lilypond-invoke-editor} is a small helper
-program. It will invoke an editor for the special @code{textedit}
-URIs, and run a web browser for others. It tests the environment
-variable @code{EDITOR} for the following patterns,
-
-@table @code
-@item emacs
- this will invoke
-@example
-emacsclient --no-wait +@var{line}:@var{column} @var{file}
-@end example
-@item gvim
- this will invoke
-@example
-gvim --remote +:@var{line}:norm@var{column} @var{file}
-@end example
-
-@item nedit
-this will invoke
-@example
- nc -noask +@var{line} @var{file}'
-@end example
-@end table
-
-The environment variable @code{LYEDITOR} is used to override this. It
-contains the command line to start the editor, where @code{%(file)s},
-@code{%(column)s}, @code{%(line)s} is replaced with the file, column
-and line respectively. The setting
-
-@example
-emacsclient --no-wait +%(line)s:%(column)s %(file)s
-@end example
-
-@noindent
-for @code{LYEDITOR} is equivalent to the standard emacsclient
-invocation.
-
-
-@cindex file size, output
-
-The point and click links enlarge the output files significantly. For
-reducing the size of PDF and PS files, point and click may be switched
-off by issuing
-
-@example
-\pointAndClickOff
-@end example
-
-@noindent
-in a @file{.ly} file. Point and click may be explicitly enabled with
-
-@example
-\pointAndClickOn
-@end example
-
-Alternately, you may disable point and click with a command-line
-option:
-
-@example
-lilypond -dno-point-and-click file.ly
-@end example
-
-@warning{You should always turn off point and click in any LilyPond
-files to be distributed to avoid including path information about
-your computer in the .pdf file, which can pose a security risk.}
-@node Text editor support
-@section Text editor support
-
-@cindex editors
-@cindex vim
-@cindex emacs
-@cindex modes, editor
-@cindex syntax coloring
-@cindex coloring, syntax
-
-There is support for different text editors for LilyPond.
-
-@menu
-* Emacs mode::
-* Vim mode::
-* Other editors::
-@end menu
-
-@node Emacs mode
-@unnumberedsubsec Emacs mode
-
-Emacs has a @file{lilypond-mode}, which provides keyword
-autocompletion, indentation, LilyPond specific parenthesis matching
-and syntax coloring, handy compile short-cuts and reading LilyPond
-manuals using Info. If @file{lilypond-mode} is not installed on your
-platform, see below.
-
-An Emacs mode for entering music and running LilyPond is contained in
-the source archive in the @file{elisp} directory. Do @command{make
-install} to install it to @var{elispdir}. The file @file{lilypond-init.el}
-should be placed to @var{load-path}@file{/site-start.d/} or appended
-to your @file{~/.emacs} or @file{~/.emacs.el}.
-
-As a user, you may want add your source path (e.g. @file{~/site-lisp/}) to
-your @var{load-path} by appending the following line (as modified) to your
-@file{~/.emacs}
-
-@c any reason we do not advise: (push "~/site-lisp" load-path)
-@example
-(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
-@end example
-
-
-@node Vim mode
-@unnumberedsubsec Vim mode
-
-For @uref{http://@/www@/.vim@/.org,VIM}, a @file{vimrc} is supplied,
-along with syntax coloring tools. A Vim mode for entering music and
-running LilyPond is contained in the source archive in @code{$VIM}
-directory.
-
-The LilyPond file type is detected if the file
-@file{~/.vim/filetype.vim} has the following content
-
-@example
-if exists("did_load_filetypes")
- finish
-endif
-augroup filetypedetect
- au! BufNewFile,BufRead *.ly,*.ily setf lilypond
-augroup END
-@end example
-
-Please include this path by appending the following line to your
-@file{~/.vimrc}
-
-@example
-set runtimepath+=/usr/local/share/lilypond/$@{LILYPOND_VERSION@}/vim/
-@end example
-
-@noindent
-where $@{LILYPOND_VERSION@} is your LilyPond version. If LilyPond was not
-installed in @file{/usr/local/}, then change this path accordingly.
-The path may differ significantly. In Fedora the path leads to the
-current version of Vim instead of Lilypond:
-
-@example
-set runtimepath+=/usr/share/vim/vim72/
-@end example
-
-
-@node Other editors
-@unnumberedsubsec Other editors
-
-Other editors (both text and graphical) support LilyPond, but
-their special configuration files are not distributed with
-LilyPond. Consult their documentation for more information. Such
-editors are listed in @rweb{Alternate editors}.
the manual is split between many HTML pages.
@*@ @ @emph{(small download for each page)}
-@item @docLinkBig{\name\,\base\,\split\} @minus{}
+@item @docLinkBig{\name\,\base\,\big\} @minus{}
read this manual as one huge HTML page.
@*@ @ @emph{(large single download, \bigsize\)}
@divEnd
@divClass{column-right-bottom}
+@subheading Read it
-@docLinks{Web, web,
- @ref{Top,,,,Web},
- @manualStableWebSplit,
- @manualStableWebBig, 1 MB,
- @manualStableWebPdf, 2 MB}
+@subsubheading Lastest manual
+
+@divClass{keep-bullets}
+@itemize
+@ref{Top,Web}
+@end itemize
+@divEnd
+
+@subsubheading Web manual in @versionDevel
+
+@docLinksBare{Web, web,
+ @ref{Top,Web},
+ @manualDevelWebSplit,
+ @manualDevelWebBig, 1 MB,
+ @manualDevelWebPdf, 2 MB}
@divEnd
include $(depth)/make/stepmake.make
-local-dist: refresh-release-files dist-toplevel-txt-files
+local-dist: refresh-release-files dist-toplevel-txt-files
all: $(outdir)/VERSION
PO_FILES = $(call src-wildcard,$(src-depth)/po/*.po)
HELP_CATALOGS = $(PO_FILES:po/%.po=%)
-CATALOGS = $(HELP_CATALOGS:lilypond=)
+CATALOGS = $(HELP_CATALOGS:lilypond=)
-$(tree-share-prefix)/lilypond-force link-tree: GNUmakefile $(outdir)/VERSION
+$(tree-share-prefix)/lilypond-force link-tree: GNUmakefile $(outdir)/VERSION
# Preparing LilyPond tree for build-dir exec
cd $(top-build-dir)/$(outbase) && rm -rf bin lib share
mkdir -p $(tree-bin)
test:
- @echo -en 'For tracking crashes: use\n\n\t'
- @echo 'grep sourcefilename `grep -L systems.texi out/lybook-db/*/*log|sed s/log/ly/g`'
+ @echo 'For tracking crashes: use'
+ @echo
+ @echo ' grep sourcefilename `grep -L systems.texi out/lybook-db/*/*log|sed s/log/ly/g`'
@echo
$(MAKE) -C input/regression/ out=test local-test
$(MAKE) -C input/regression/musicxml out=test local-test
$(MAKE) -C input/regression/abc2ly out=test local-test
-test-baseline:
+test-baseline:
@if test -d .git ; then \
$(if $(shell git diff), echo "commit before base lining" && false,true) ; \
fi
- $(MAKE)
+ $(MAKE)
$(MAKE) test
$(MAKE) out=test -C input/regression/ local-test-baseline
$(MAKE) out=test -C input/regression/musicxml local-test-baseline
rm -rf $(RESULT_DIR)
mkdir -p $(RESULT_DIR)
$(buildscript-dir)/output-distance --create-images --output-dir $(RESULT_DIR) input/regression/out-test-baseline input/regression/out-test/
- @find input ly -name '*.ly' -print |grep -v 'out.*/' | xargs grep '\\version' -L | grep -v "standard input" |sed 's/^/**** Missing version: /g'
+ @find input ly -name '*.ly' -print |grep -v 'out.*/' | xargs grep '\\version' -L | grep -v "standard input" |sed 's/^/**** Missing version: /g'
test-redo:
| |
| |
| | TRANSLATED MANUALS:
+| | Each language's directory can contain...
+| | 1) translated versions of:
+| | * top sources for manuals
+| | * individual chapters for each manual
+| | 2) a texidocs/ directory for snippet translations
| |
| |-- de/ German
| |-- es/ Spanish
\layout { ragged-right = ##t }
\relative c'' {
- \override Hairpin #'circled-tip = ##t
- c1\< d\! d\> c\! e\> c\< d\! \break
- c\< \break
- e d\! c\> \break
- e d\!
+ \override Hairpin #'circled-tip = ##t
+ c1\< d\! d\> c\!
+ \override Hairpin #'to-barline = ##f
+ e\> c\< d\! \break
+ c\< \break
+ e d\! c\> \break
+ e d\!
}
\version "2.13.5"
\header {
- texidoc = "If only line-width is given, systems are vertically centered."
+ texidoc = "If only line-width is given, systems are horizontally centered."
}
someNotes = \relative c' { \repeat unfold 40 { c4 d e f } }
+\version "2.12.0"
\header {
-
- texidoc = "Two quoted voices may refer to each other. In this
+ texidoc = "Two quoted voices may refer to each other. In this
example, there are notes with each full-bar rest."
-
-
}
-\version "2.12.0"
A = \relative c' { c4 d e f | \cueDuring #"qB" #1 { R1 } | }
-B = \relative c' { \cueDuring #"qA" #1 { R1 } | f4 e d c | }
+B = \new Voice \relative c' { \cueDuring #"qA" #1 { R1 } | f4 e d c | }
\addQuote "qA" \A
\addQuote "qB" \B
-\layout { ragged-right = ##t }
-
<<
- \new Staff \A
- \new Staff \B
+ \new Staff \A
+ \new Staff \B
>>
fermataMarkup =
#(make-music 'MultiMeasureTextEvent
- 'tweaks (list
- ; Set the 'text based on the 'direction
- (cons 'text (lambda (grob)
- (if (eq? (ly:grob-property grob 'direction) DOWN)
- (markup #:musicglyph "scripts.dfermata")
- (markup #:musicglyph "scripts.ufermata"))))
- (cons 'outside-staff-priority 40)))
-
+ 'tweaks (list
+ ;; Set the 'text based on the 'direction
+ (cons 'text (lambda (grob)
+ (if (eq? (ly:grob-property grob 'direction) DOWN)
+ (markup #:musicglyph "scripts.dfermata")
+ (markup #:musicglyph "scripts.ufermata"))))
+ (cons 'outside-staff-priority 40)
+ (cons 'outside-staff-padding 0)))
%% font sizes
(direction . ,UP)
(extra-spacing-width . (+inf.0 . -inf.0))
(font-series . bold)
+ (outside-staff-priority . 450)
(padding . 0.5)
(script-priority . 200)
(side-axis . ,Y)
generic-help:
- @echo -e "\
-Makefile for $(PACKAGE_NAME) $(TOPLEVEL_VERSION)\n\
-Usage: make ["VARIABLE=value"]... [TARGET]\n\
-\n\
-Targets specific to current directory:\n"
+ @echo "Makefile for $(PACKAGE_NAME) $(TOPLEVEL_VERSION)"
+ @echo "Usage: make ["VARIABLE=value"]... [TARGET]"
+ @echo
+ @echo "Targets specific to current directory:"
help: generic-help local-help
- @echo -e "Generic targets:\n\
- all * update everything except documentation with images\n\
- clean * remove all generated stuff in $(outdir)\n\
- bin-clean * same as clean, except that mf/out is preserved\n\
- default same as the empty target\n\
- doc * update documentation with images in directory \`out-www'\n\
- doc-stage-1 * update only PDF and Info documentation in directory \`out-www'\n\
- doc-clean * clean \`out-www' directory\n\
- exe update all executables\n\
- help this help\n\
- install * install programs and data (prefix=$(prefix))\n\
- lib update all libraries\n\
- uninstall* uninstall programs and data\n\
- TAGS generate tagfiles\n\
-\n\
-\`make' may be invoked from any subdirectory.\n\
-Note that all commands marked with a star (*) recurse into subdirectories;\n\
-prepend \`local-' to restrict operation to the current directory.\n\
-Example: \`local-clean'."
+ @echo "Generic targets that recurse into subdirectories*:"
+ @echo " all update everything except documentation with images"
+ @echo " clean remove all generated stuff in $(outdir)"
+ @echo " bin-clean same as clean, except that mf/out is preserved"
+ @echo " doc update documentation with images in directory \`out-www'"
+ @echo " doc-stage-1 update only PDF and Info documentation in directory \`out-www'"
+ @echo " doc-clean clean \`out-www' directory"
+ @echo " install install programs and data (prefix=$(prefix))"
+ @echo " uninstall uninstall programs and data"
+ @echo
+ @echo " *Note: Prepend \`local-' (eg. \`local-clean') to restrict"
+ @echo " any of the above commands to the current directory."
+ @echo
+ @echo "Other generic targets:"
+ @echo " default same as the empty target"
+ @echo " exe update all executables"
+ @echo " help this help"
+ @echo " lib update all libraries"
+ @echo " TAGS generate tagfiles"
+ @echo
+ @echo "\`make' may be invoked from any subdirectory."
local-help:
local-help: local-texinfo-help
local-texinfo-help:
- @echo -e "\
- info [out=www] update Info documentation (use \`out=www' for having images)\n\
- install-info [out=www] install Info documentation (idem)\n\
- texinfo-all-menus-update update node menus in Texinfo source files (use with caution)\n"
+ @echo " info [out=www] update Info documentation"
+ @echo " (use \`out=www' for having images)"
+ @echo " install-info [out=www] install Info documentation (idem)"
+ @echo " texinfo-all-menus-update update node menus in Texinfo source files"
+ @echo " (use with caution)"
rm -rf $(distdir)/
local-help:
- @echo -e "\
- config rerun configure\n\
- dist roll tarball: $(depth)/$(outdir)/$(distname).tar.gz\n\
- distclean also remove configure output\n\
- cvs-clean also remove out directories and generated files\n\
- maintainerclean also remove distributed generated files\n\
- po make new translation Portable Object database\n\
- po-replace do po-update and replace catalogs with msgmerged versions\n\
- po-update update translation Portable Object database\n\
-\n\
- install-doc install website documentation in (webdir=$(webdir))\n\
- and Info documentation with images\n\
- uninstall-doc remove installed documentation with images\n\
- info build Info documentation with images\n\
- install-info install Info documentation with images\n\
-\n\
-Some more targets are available for testing changes:\n\
- test-baseline check test-redo test-clean\n\
-For more information on these targets, see Testing LilyPond\n\
-in Application Usage documentation.\n"
+ @echo " config rerun configure"
+ @echo " dist roll tarball: $(depth)/$(outdir)/$(distname).tar.gz"
+ @echo " distclean also remove configure output"
+ @echo " cvs-clean also remove out directories and generated files"
+ @echo " maintainerclean also remove distributed generated files"
+ @echo " po make new translation Portable Object database"
+ @echo " po-replace do po-update and replace catalogs with msgmerged versions"
+ @echo " po-update update translation Portable Object database"
+ @echo
+ @echo " install-doc install website documentation in"
+ @echo " (webdir=$(webdir))"
+ @echo " and Info documentation with images"
+ @echo " uninstall-doc remove installed documentation with images"
+ @echo " info build Info documentation with images"
+ @echo " install-info install Info documentation with images"
+ @echo
+ @echo "Some more targets are available for testing changes:"
+ @echo " test-baseline"
+ @echo " check"
+ @echo " test-redo"
+ @echo " test-clean"
+ @echo
+ @echo " For more information on these targets, see"
+ @echo " \`Testing LilyPond' in the Contributor's Guide."
+ @echo