@item
-@emph{@ref{Running LilyPond}}
+@emph{@rprogram{Running LilyPond}}
zeigt, wie LilyPond und die Hilfsprogramme gestartet werden. Zusätzlich
wird hier gezeigt, wie Quelldateien von älteren LilyPond-Versionen
aktualisiert werden können.
@item
-@emph{@ref{LilyPond-book}}
+@emph{@rprogram{LilyPond-book}}
zeigt die Details der Integration von Noten in Texte wie etwa dieses
Handbuch.
@item
-@emph{@ref{Converting from other formats}}
+@emph{@rprogram{Converting from other formats}}
erklärt die Funktionsweise der Konvertierungsprogramme. Diese Programme
sind im LilyPond-Paket enthalten und können ein ganze Anzahl von Formaten
in das @code{.ly}-Format umwandeln.
@ref{\NAME\,,,music-glossary-big-page}
@end macro
+@macro rprogram{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-program-big-page}
+@end macro
+
+@macro ruser{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-big-page}
+@end macro
+
@end ifset
@ref{\NAME\,,,music-glossary}
@end macro
+@macro rprogram{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-program}
+@end macro
+
+@macro ruser{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond}
+@end macro
+
@end ifclear
@ref{\NAME\,,,music-glossary}
@end macro
+@macro rprogram{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-program}
+@end macro
+
+@macro ruser{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond}
+@end macro
+
@c to get decent German quotes in `foo'
@macro q{TEXT}
@html
@inforef{\NAME\,,,music-glossary}
@end macro
+@macro rprogram{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-program}
+@end macro
+
+@macro ruser{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond}
+@end macro
+
@macro usermanref{NAME}
@inforef{\NAME\}
@end macro
user manual, @internalsref{\NAME\}
@end macro
+@macro rprogram{NAME}
+program usage manual, @internalsref{\NAME\}
+@end macro
+
+@alias ruser=usermanref
+
@c to get decent German quotes in `foo'
@macro q{TEXT}
@quotesinglbase{}\TEXT\`
diese Datei.
Es gibt einige andere Editoren mit besserer Unterstützung für LilyPond; Einzelheiten
-dazu können Sie im Kapitel @ref{Editor support} nachlesen.
+dazu können Sie im Kapitel @rprogram{Editor support} nachlesen.
@subsubheading Unix
und es gibt einen @code{LilyPond-Modus} für Emacs. Wenn diese noch
nicht installiert sind, lesen Sie die Datei @file{INSTALL.txt}.}
Die einfachste Bearbeitunsumgebung ist das @file{LilyPondTool}.
-Siehe auch @ref{Editor support} für mehr Information. Geben Sie
+Siehe auch @rprogram{Editor support} für mehr Information. Geben Sie
folgendes in Ihrem Editor ein und speichern Sie die Datei als @file{test.ly}:
@verbatim
Durch diese Versionsmarkierung werden zukünftige Aktualisierungen
des LilyPond-Programmes einfacher gemacht. Syntax-Änderungen
zwischen den Programmversionen werden von einem speziellen
-Programm, @file{convert-ly}, vorgenommen (siehe @ref{Updating
+Programm, @file{convert-ly}, vorgenommen (siehe @rprogram{Updating
files with convert-ly}). Dieses Programm braucht @code{\version},
um zu entscheiden, welche Regeln angewandt werden müssen.
LilyPond stellt ein Programm bereit, das Aktualisierungen
vereinfacht: @code{convert-ly}. Einzelheiten zur Programmbenutzung
-finden sich in @ref{Updating files with convert-ly}.
-
-Leider kann @code{convert-ly} nicht alle Veränderungen der Syntax
-berücksichtigen. Hier werden einfache @qq{Suchen und
-Ersetzen}-Veränderungen
-vorgenommen (wie etwa @code{raggedright} zu becoming @code{ragged-right}),
-aber einige Veränderungen sind zu kompliziert. Die
-Syntax-Veränderungen,
-die das Programm nicht berücksichtigt, sind im Kapitel @ref{Updating
-files with convert-ly} aufgelistet.
+finden sich in @rprogram{Updating files with convert-ly}.
+
+Leider kann @code{convert-ly} nicht alle Veränderungen der Syntax
+berücksichtigen. Hier werden einfache @qq{Suchen und
+Ersetzen}-Veränderungen vorgenommen (wie etwa @code{raggedright} zu
+becoming @code{ragged-right}), aber einige Veränderungen sind zu
+kompliziert. Die Syntax-Veränderungen, die das Programm nicht
+berücksichtigt, sind im Kapitel @rprogram{Updating files with
+convert-ly} aufgelistet.
Zum Beispiel wurden in LilyPond 2.4 und früheren Versionen
Akzente und Umlaute mit LaTeX-Befehlen eingegeben, ein
@end ignore
@setfilename lilypond.info
@settitle Manual del usuario de GNU LilyPond
-@documentencoding utf-8
+@documentencoding UTF-8
@documentlanguage es
@iftex
sino también un archivo @file{.log} que contiene cierta información acerca de lo que
LilyPond ha hecho con el archivo. Si se produce algún error, examine este archivo de registro.
-Tenga en cuenta que hay disponibles varios editores de texto alternativos con un mejor
-apoyo para la realización de documentos de LilyPond, consulte @ref{Editor support} para ver más información.
+Tenga en cuenta que hay disponibles varios editores de texto
+alternativos con un mejor apoyo para la realización de documentos de
+LilyPond, consulte @rprogram{Editor support} para ver más información.
@subsubheading Unix
<a class="title" href="user/lilypond/index.html">User manual</a>
(in <a class="title" href="user/lilypond-big-page.html">one big page</a> ~ 4 Mb,
in <a class="title" href="user/lilypond.pdf">PDF</a>)
- <br>(everything about LilyPond)
+ <br>(writing music in LilyPond)
<li>
<a class="title" href="user/lilypond-internals/index.html">Program reference</a>
else
-$(INSTALL) -d $(DESTDIR)$(package_infodir)
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
+ -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
install-info --info-dir=$(infodir) $(outdir)/lilypond.info
@echo
@echo "***************************************************************"
@lilypond[fragment,verbatim,relative=1,ragged-right,quote]
\set tieWaitForNote = ##t
\grace { c16[~ e~ g]~ } <c, e g>2
-\repeat "tremolo" 8 { c32~ c'~ } <c c,>1
+\repeat tremolo 8 { c32~ c'~ } <c c,>1
e8~ c~ a~ f~ <e' c a f>2
@end lilypond
This can be remedied by inserting grace skips of the corresponding
durations in the other staves. For the above example
-@example
-\new Staff @{ c4 \bar "|:" \grace s16 d4 @}
-@end example
+@lilypond[quote,ragged-right,relative=2,verbatim,fragment]
+<< \new Staff { e4 \bar "|:" \grace c16 d4 }
+ \new Staff { c4 \bar "|:" \grace s16 d4 } >>
+@end lilypond
Grace sections should only be used within sequential music
expressions. Nesting or juxtaposing grace sections is not supported,
\time 3/4
c c c
\set Staff.voltaSpannerDuration = #(ly:make-moment 3 4)
- \repeat "volta" 5 { d d d }
+ \repeat volta 5 { d d d }
\alternative { { e e e f f f }
{ g g g } }
}
style
@lilypond[quote,verbatim,ragged-right]
\new Voice \relative c' {
- \repeat "tremolo" 8 { c16 d16 }
- \repeat "tremolo" 4 { c16 d16 }
- \repeat "tremolo" 2 { c16 d16 }
+ \repeat tremolo 8 { c16 d16 }
+ \repeat tremolo 4 { c16 d16 }
+ \repeat tremolo 2 { c16 d16 }
}
@end lilypond
Tremolo marks can also be put on a single note. In this case, the
note should not be surrounded by braces.
@lilypond[quote,verbatim,ragged-right]
-\repeat "tremolo" 4 c'16
+\repeat tremolo 4 c'16
@end lilypond
Similar output is obtained using the tremolo subdivision, described in
@lilypond[quote,verbatim,ragged-right]
\new Voice \relative c' {
- \repeat "percent" 4 { c4 }
- \repeat "percent" 2 { c2 es2 f4 fis4 g4 c4 }
+ \repeat percent 4 { c4 }
+ \repeat percent 2 { c2 es2 f4 fis4 g4 c4 }
}
@end lilypond
@lilypond[relative=2,fragment,quote,verbatim,ragged-right]
\new Voice {
\set countPercentRepeats = ##t
- \repeat "percent" 4 { c1 }
+ \repeat percent 4 { c1 }
}
@end lilypond
+++ /dev/null
-%future
-%
-
-There are a few things that the convert-ly cannot handle. Here's a list of limitations
-that the community has complained about.
-
-This bug report structure has been chosen because convert-ly has a structure that doesn't
-allow to smoothly implement all needed changes. Thus this is just a wishlist, placed
-here for reference.
-
-1.6->2.0:
- Doesn't always convert figured bass correctly, specifically things like {< >}. Mats' comment on working around this:
- To be able to run convert-ly
- on it, I first replaced all occurencies of '{<' to some dummy like '{#'
- and similarly I replaced '>}' with '&}'. After the conversion, I could
- then change back from '{ #' to '{ <' and from '& }' to '> }'.
- Doesn't convert all text markup correctly. In the old markup syntax,
- it was possible to group a number of markup commands together within parentheses, e.g.
- -#'((bold italic) "string")
- This will incorrectly be converted into
- -\markup{{\bold italic} "string"}
- instead of the correct
- -\markup{\bold \italic "string"}
-2.0->2.2:
- Doesn't handle \partcombine
- Doesn't do \addlyrics => \lyricsto, this breaks some scores with multiple stanzas.
-2.0->2.4:
- \magnify isn't changed to \fontsize.
- - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
- remove-tag isn't changed.
- - \applymusic #(remove-tag '. . .) => \keepWithTag #'. . .
- firstpagenumber isn't changed.
- - firstpagenumber no => printfirstpagenumber = ##f
- Line breaks in header strings aren't converted.
- - \\\\ as line break in \header strings => \markup \center-align <
- "First Line" "Second Line" >
- Crescendo and decrescendo terminators aren't converted.
- - \rced => \!
- - \rc => \!
-2.2->2.4:
- \turnOff (used in \set Staff.VoltaBracket = \turnOff) is not properly converted.
-2.4.2->2.5.9
- \markup{ \center-align <{ ... }> } should be converted to:
- \markup{ \center-align {\line { ... }} }
- but now, \line is missing.
-2.4->2.6
- Special LaTeX characters such as $~$ in text are not converted to UTF8.
@uref{http://@/lilypond@/.org,website} for more details.
These are separate programs from lilypond itself, and are run
-on the command-line. By @q{command-line}, we mean the command
-line in the operating system. Windows users
-might be more familiar with the terms @q{DOS shell} or
-@q{command shell}; OSX users might be more familiar with the
-terms @q{terminal} or @q{console}. OSX users should also
-consult @ref{Notes for the MacOS X app}.
-
-Describing how to use
-this part of an operating system is outside the scope of this
-manual; please consult other documentation on this topic if
-you are unfamiliar with the command-line.
+on the command-line; see @ref{Command-line usage} for more information.
+@refbugs
+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 etf2ly:: Importing Finale.
-* Invoking musicxml2ly::
+* Invoking musicxml2ly:: Importing MusicXML.
* Invoking abc2ly:: Importing ABC.
-* Generating LilyPond files::
+* Invoking etf2ly:: Importing Finale.
+* Generating LilyPond files:: GUIs, transcribers, and algorithmic composition programs.
@end menu
to a single duration and add phrase markings or pedal indicators.
-@node Invoking etf2ly
-@section Invoking @command{etf2ly}
-
-@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=FILE
-set output filename to FILE
-@item -v,--version
-version information
-@end table
-
-
-@refbugs
-
-The list of articulation scripts is incomplete. Empty measures
-confuse @command{etf2ly}. Sequences of grace notes are ended improperly.
-
@node Invoking musicxml2ly
@section Invoking @code{musicxml2ly}
print version information.
@end table
+
@node Invoking abc2ly
@section Invoking @code{abc2ly}
@command{abc2ly} ignores the ABC beaming.
+@node Invoking etf2ly
+@section Invoking @command{etf2ly}
+
+@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=FILE
+set output filename to FILE
+@item -v,--version
+version information
+@end table
+
+
+@refbugs
+
+The list of articulation scripts is incomplete. Empty measures
+confuse @command{etf2ly}. Sequences of grace notes are ended improperly.
+
@node Generating LilyPond files
@section Generating LilyPond files
@end example
+@c TRANSLATORS:
+@c Please **do not** translate anything below this line. Users
+@c should not be compiling LilyPond themselves; if they really
+@c want to do so, they should be able to read the English docs,
+@c because they'll probably need to ask questions in English
+@c on the -devel list. -gp
@node Compiling from source
@section Compiling from source
@node Building LilyPond
@subsection Building LilyPond
-@subsubsection Compiling
+@unnumberedsubsubsec Compiling
To install GNU LilyPond, type
@end example
-@subsubsection Compiling for multiple platforms
+@unnumberedsubsubsec Compiling for multiple platforms
If you want to build multiple versions of LilyPond with different
configuration settings, you can use the @code{--enable-config=CONF}
./autogen.sh % ignore any warning messages
cp GNUmakefile.in GNUmakefile
make -C python
-nice make LILYPOND_EXTERNAL_BINARY=~/Apps/LilyPond.app/Contents/Resources/bin/lilypond web
+nice make LILYPOND_EXTERNAL_BINARY=/path/to/bin/lilypond web
% change the lilypond directory as appropriate
@end example
@end example
-@unnumberedsubsubsec MacOS X
-
-For Fink, use the following command to compile.
-
-@verbatim
-export GUILE=guile-1.6
-export GUILE_CONFIG=guile-1.6-config
-export PKG_CONFIG_PATH=/sw/lib/freetype219/lib/pkgconfig/:/sw/lib/fontconfig2/lib/pkgconfig/
-./configure
-@end verbatim
-
@unnumberedsubsubsec Solaris
Solaris7, ./configure
@end ignore
-@ignore
-
-TODO: cleanup
-
-** AARGH. We also have tutorial.itely: Integrating text and music.
-
- Could also do with a cleanup. Lost inspiration to fix this manual
- where to describe what?
-
-@end ignore
-
-
@c Note: keep this node named so that `info lilypond-book' brings you here.
@node LilyPond-book
@chapter @command{lilypond-book}: Integrating text and music
substituted for the music. The line width and font size definitions for
the music are adjusted to match the layout of your document.
+This is a separate programs from lilypond itself, and is run
+on the command-line; see @ref{Command-line usage} for more information.
+
This procedure may be applied to @LaTeX{}, HTML, Texinfo or DocBook documents.
+@cindex texinfo
+@cindex latex
+@cindex texinfo
+@cindex texi
+@cindex html
+@cindex docbook
+@cindex documents, adding music to
+@cindex HTML, music in
+@cindex Texinfo, music in
+@cindex DocBook, music in
+@cindex @LaTeX{}, music in
+
@menu
* An example of a musicological document::
-* Integrating LaTeX and music::
-* Integrating Texinfo and music::
-* Integrating HTML and music::
-* Integrating DocBook and music::
+* Integrating music and text::
* Music fragment options::
* Invoking lilypond-book::
* Filename extensions::
-* Many quotes of a large score::
-* Inserting LilyPond output into OpenOffice.org::
-* Inserting LilyPond output into other programs::
+* Alternate methods of mixing text and music::
@end menu
@section An example of a musicological document
@cindex musicology
-@cindex @LaTeX{}, music in
-@cindex HTML, music in
-@cindex Texinfo, music in
-@cindex DocBook, music in
Some texts contain music examples. These texts are musicological
treatises, songbooks, or manuals like this. Such texts can be made by
hand, simply by importing a PostScript figure into the word processor.
example for use with @LaTeX{}. The example also contains explanatory
text, so we will not comment on it further.
+@subheading Input
+
@quotation
@verbatim
\documentclass[a4paper]{article}
@end verbatim
@end quotation
+@subheading Processing
+
Under Unix, you can view the results as follows
@example
@page
+@subheading Output
+
Documents for @command{lilypond-book} may freely mix music and text.
For example,
@lilypondfile[quote,noindent]{screech-boink.ly}
+
@page
-@cindex texinfo
-@cindex latex
-@cindex texinfo
-@cindex texi
-@cindex html
-@cindex docbook
-@cindex documents, adding music to
+@node Integrating music and text
+@section Integrating music and text
+
+Here we explain how to integrate LilyPond with various output formats.
+@menu
+* LaTeX::
+* Texinfo::
+* HTML::
+* DocBook::
+@end menu
-@node Integrating LaTeX and music
-@section Integrating @LaTeX{} and music
+@node LaTeX
+@subsection @LaTeX{}
@LaTeX{} is the de-facto standard for publishing layouts in the exact
sciences. It is built on top of the @TeX{} typesetting engine,
@end example
-@node Integrating Texinfo and music
-@section Integrating Texinfo and music
+@node Texinfo
+@subsection Texinfo
Texinfo is the standard format for documentation of the GNU project. An
example of a Texinfo document is this manual. The HTML, PDF, and Info
document with embedded music.
-@node Integrating HTML and music
-@section Integrating HTML and music
+@node HTML
+@subsection HTML
Music is entered using
@cindex preview image
@cindex thumbnail
-@node Integrating DocBook and music
-@section Integrating DocBook and music
+@node DocBook
+@subsection DocBook
For inserting LilyPond snippets it is good to keep the conformity of
our DocBook document, thus allowing us to use DocBook editors,
validation etc. So we don't use custom tags, only specify a convention
based on the standard DocBook elements.
-@unnumberedsubsec Common conventions
+@subheading Common conventions
For inserting all type of snippets we use the @code{mediaobject} and @code{inlinemediaobject} element, so our snippets can be
formatted inline or not inline.
chosen to allow DocBook editors format the content gracefully.
The DocBook files to be processed with @command{lilypond-book} should have the extension @file{.lyxml}.
-@unnumberedsubsec Including a LilyPond file
+@subheading Including a LilyPond file
This is the most simple case. We must use the @file{.ly} extension for the included file, and insert it as a standard @code{imageobject},
with the following structure:
Note that you can use mediaobject or inlinemediaobject as the outermost element as you wish.
-@unnumberedsubsec Including LilyPond code
+@subheading Including LilyPond code
Including LilyPond code is possible by using a @code{programlisting}, where the language is set to @code{lilypond} with the following structure:
As you can see, the outermost element is a @code{mediaobject} or @code{inlinemediaobject}, and there is a @code{textobject} containing the @code{programlisting} inside.
-@unnumberedsubsec Processing the DocBook document
+@subheading Processing the DocBook document
+
+Running @command{lilypond-book} on our @file{.lyxml} file will create a
+valid DocBook document to be further processed with @file{.xml}
+extension. If you use
+@uref{http://@/dblatex@/.sourceforge@/.net@/,dblatex}, it will create a
+PDF file from this document automatically. For HTML (HTML Help,
+JavaHelp etc.) generation you can use the official DocBook XSL
+stylesheets, however, it is possible that you have to make some
+customization for it.
-Running @command{lilypond-book} on our @file{.lyxml} file will create a valid DocBook document to be further processed with @file{.xml} extension.
-If you use @uref{http://@/dblatex@/.sourceforge@/.net@/,dblatex}, it will create a PDF file from this document automatically.
-For HTML (HTML Help, JavaHelp etc.) generation you can use the official DocBook XSL stylesheets, however, it is possible that you have to make some customization for it.
@node Music fragment options
@section Music fragment options
...
@end example
-@itemx --padding=@var{amount}
+@itemx --left-padding=@var{amount}
Pad EPS boxes by this much. @var{amount} is measured in milimeters,
and is 3.0 by default. This option should be used if the lines of
music stick out of the right margin.
@end quotation
-@node Many quotes of a large score
-@section Many quotes of a large score
+@node Alternate methods of mixing text and music
+@section Alternative methods of mixing text and music
+
+@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
+@subsection Many quotes from a large score
-If you need to quote many fragments of a large score, you can also use
+If you need to quote many fragments from a large score, you can also use
the clip systems feature, see @ruser{Extracting fragments of notation}.
@node Inserting LilyPond output into OpenOffice.org
-@section Inserting LilyPond output into OpenOffice.org
+@subsection Inserting LilyPond output into OpenOffice.org
@cindex OpenOffice.org
@node Inserting LilyPond output into other programs
-@section Inserting LilyPond output into other programs
+@subsection 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
@end ignore
@setfilename lilypond-program.info
@settitle GNU LilyPond program usage
-@documentencoding utf-8
+@documentencoding UTF-8
@documentlanguage en
@iftex
@end ignore
@setfilename lilypond.info
@settitle GNU LilyPond user manual
-@documentencoding utf-8
+@documentencoding UTF-8
@documentlanguage en
@iftex
* abc2ly: (lilypond/lilypond-program)Invoking abc2ly. Importing ABC.
* convert-ly: (lilypond/lilypond-program)Invoking convert-ly. Older LilyPond versions.
* etf2ly: (lilypond/lilypond-program)Invoking etf2ly. Importing Finale.
-* lilypond-book: (lilypond/lilypond-program)LilyPond-book. Itegrating text and music.
+* lilypond-book: (lilypond/lilypond-program)LilyPond-book. Integrating text and music.
* midi2ly: (lilypond/lilypond-program)Invoking midi2ly. Importing MIDI.
@end direntry
\relative c' {
e2:32_"a"
f:32 [ e8:16 f:16 g:16 a:16 ] s4
- \repeat "tremolo" 8 { e32_"b" g }
+ \repeat tremolo 8 { e32_"b" g }
}
@end lilypond
This chapter details the technicalities of running LilyPond.
-Some of these commands are run from the command-line. By
-@q{command-line}, we mean the command
-line in the operating system. Windows users
-might be more familiar with the terms @q{DOS shell} or
-@q{command shell}; OSX users might be more familiar with the
-terms @q{terminal} or @q{console}. OSX users should also
-consult @ref{Notes for the MacOS X app}.
-
-Describing how to use
-this part of an operating system is outside the scope of this
-manual; please consult other documentation on this topic if
-you are unfamiliar with the command-line.
-
@menu
-* Invoking lilypond::
+* Normal usage::
+* Command-line usage::
+* Error messages::
* Updating files with convert-ly::
* Reporting bugs::
-* Error messages::
@end menu
-@node Invoking lilypond
-@section Invoking lilypond
+
+@node Normal usage
+@section Normal usage
+
+Most users run LilyPond through a GUI; see @ruser{First steps} if
+you have not read this already.
+
+
+@node Command-line usage
+@section Command-line usage
+
+This section contains extra information about using LilyPond on the
+command-line. This may be desirable to pass extra options to the
+program. In addition, there are certain extra @q{helper} programs (such
+as @code{midi2ly}) which are only available on the command-line.
+
+By @q{command-line}, we mean the command line in the operating system.
+Windows users might be more familiar with the terms @q{DOS shell} or
+@q{command shell}; OSX users might be more familiar with the terms
+@q{terminal} or @q{console}. OSX users should also consult @ref{MacOS X
+on the command-line}.
+
+Describing how to use this part of an operating system is outside the
+scope of this manual; please consult other documentation on this topic
+if you are unfamiliar with the command-line.
+
+
+@subsection Invoking lilypond
+
@cindex Invoking LilyPond
@cindex command line options
@cindex options, command line
@end table
+@node Error messages
+@section Error messages
+
+@cindex error messages
+Different error messages can appear while compiling a file:
+
+@table @emph
+
+@item Warning
+@cindex warning
+Something looks suspect. If you are requesting something out of the
+ordinary then you will understand the message, and can ignore it.
+However, warnings usually indicate that something is wrong with the
+input file.
+
+@item Error
+Something is definitely wrong. The current processing step (parsing,
+interpreting, or formatting) will be finished, but the next step will
+be skipped.
+
+@item Fatal error
+@cindex error
+@cindex fatal error
+Something is definitely wrong, and LilyPond cannot continue. This
+happens rarely. The most usual cause is misinstalled fonts.
+
+@item Scheme error
+@cindex trace, Scheme
+@cindex call trace
+@cindex Scheme error
+Errors that occur while executing Scheme code are caught by the Scheme
+interpreter. If running with the verbose option (@code{-V} or
+@code{--verbose}) then a call trace of the offending
+function call is printed.
+
+@item Programming error
+@cindex Programming error
+There was some internal inconsistency. These error messages are
+intended to help the programmers and debuggers. Usually, they can be
+ignored. Sometimes, they come in such big quantities that they obscure
+other output.
+
+@item Aborted (core dumped)
+This signals a serious programming error that caused the program to
+crash. Such errors are considered critical. If you stumble on one,
+send a bug-report.
+@end table
+
+@cindex errors, message format
+If warnings and errors can
+be linked to some part of the input file, then error messages have the
+following form
+
+@example
+@var{filename}:@var{lineno}:@var{columnno}: @var{message}
+@var{offending input line}
+@end example
+
+A line-break is inserted in the offending line to indicate the column
+where the error was found. For example,
+
+@example
+test.ly:2:19: error: not a duration: 5:
+ @{ c'4 e'5
+ g' @}
+@end example
+
+These locations are LilyPond's best guess about where the warning or
+error occurred, but (by their very nature) warnings and errors occur
+when something unexpected happens. If you can't see an error in the
+indicated line of your input file, try checking one or two lines
+above the indicated position.
+
+
@node Updating files with convert-ly
@section Updating with @command{convert-ly}
It uses @code{\version} statements in the input files to detect the
old version number. In most cases, to upgrade your input file it is
-sufficient to run@footnote{MacOS X users may execute this command
-under the menu entry @samp{Compile > Update syntax}.}
+sufficient to run
@example
convert-ly -e myfile.ly
@end example
+@noindent
+MacOS X users may execute this command under the menu entry
+@samp{Compile > Update syntax}.
+
If there are no changes to myfile.ly and file called myfile.ly.NEW
is created, then myfile.ly is already updated.
+@subsection Command line options
+
@command{convert-ly} always converts up to the last syntax change handled by
it. This means that the @code{\version} number left in the file is
usually lower than the version of @command{convert-ly} itself.
@end table
-@refbugs
+@menu
+* Problems with convert-ly::
+@end menu
+
+
+@node Problems with convert-ly
+@subsection Problems with @code{convert-ly}
Not all language changes are handled. Only one output option can be
specified. Automatically updating scheme and lilypond scheme
interfaces is quite unlikely; be prepared to tweak scheme code
manually.
-
-@c We might want to make this a completely new section, along with more
-@c info about how to upgrade old input files. -gp
-
-@ignore
-Copy and paste from CVS, last updated
-Aug 18, 2005
-
-http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lily-bugs/bugs/
-convert-ly.txt?rev=HEAD&content-type=text/plain
-
-NEW: not exactly copied; this list has been modified. Since we're
-changing the bug system, it doesn't make sense to copy from
-the bug CVS any more. I'll figure out something else. -gp
-@end ignore
@verbatim
+There are a few things that the convert-ly cannot handle. Here's a list
+of limitations that the community has complained about.
-There are a few things that the convert-ly cannot handle. Here's a list of
-limitations
-that the community has complained about.
-
-This bug report structure has been chosen because convert-ly has a structure
-that doesn't
-allow to smoothly implement all needed changes. Thus this is just a wishlist,
-placed
-here for reference.
+This bug report structure has been chosen because convert-ly has a
+structure that doesn't allow to smoothly implement all needed changes.
+Thus this is just a wishlist, placed here for reference.
1.6->2.0:
Doesn't always convert figured bass correctly, specifically things like {<
have the resources to investigate reports which are not as small as possible.
-@node Error messages
-@section Error messages
-
-@cindex error messages
-Different error messages can appear while compiling a file:
-
-@table @emph
-@cindex warning
-
-@item Warning
-Something looks suspect. If you are requesting something out of the
-ordinary then you will understand the message, and can ignore it.
-However, warnings usually indicate that something is wrong with the
-input file.
-
-@item Error
-Something is definitely wrong. The current processing step (parsing,
-interpreting, or formatting) will be finished, but the next step will
-be skipped.
-
-@cindex error
-@cindex fatal error
-@item Fatal error
-Something is definitely wrong, and LilyPond cannot continue. This
-happens rarely. The most usual cause is misinstalled fonts.
-
-@cindex trace, Scheme
-@cindex call trace
-@cindex Scheme error
-@item Scheme error
-Errors that occur while executing Scheme code are caught by the Scheme
-interpreter. If running with the verbose option (@code{-V} or
-@code{--verbose}) then a call trace of the offending
-function call is printed.
-
-@cindex Programming error
-@item Programming error
-There was some internal inconsistency. These error messages are
-intended to help the programmers and debuggers. Usually, they can be
-ignored. Sometimes, they come in such big quantities that they obscure
-other output. In this case, file a bug-report.
-
-@item Aborted (core dumped)
-This signals a serious programming error that caused the program to
-crash. Such errors are considered critical. If you stumble on one,
-send a bug-report.
-
-
-@end table
-
-@cindex errors, message format
-If warnings and errors can
-be linked to some part of the input file, then error messages have the
-following form
-
-@example
-@var{filename}:@var{lineno}:@var{columnno}: @var{message}
-@var{offending input line}
-@end example
-
-A line-break is inserted in the offending line to indicate the column
-where the error was found. For example,
-
-@example
-test.ly:2:19: error: not a duration: 5:
- @{ c'4 e'5
- g' @}
-@end example
-
-These locations are LilyPond's best guess about where the warning or
-error occurred, but (by their very nature) warnings and errors occur
-when something unexpected happens. If you can't see an error in the
-indicated line of your input file, try checking one or two lines
-above the indicated position.
-
-
@node Setup
@chapter Setup
-This chapter discusses how to set up LilyPond to integrate with various
-programs.
+This chapter discusses various post-install configuration options for
+LilyPond and various other programs. This chapter may be safely treated
+as a reference: only read a section if it applies to you.
@menu
-* Notes for the MacOS X app::
+* Setup for specific Operating Systems::
* Text editor support::
* Point and click::
@end menu
-@node Notes for the MacOS X app
-@section Notes for the MacOS X app
+@node Setup for specific Operating Systems
+@section Setup for specific Operating Systems
+
+This section explains how to perform additional setup for specific
+operating systems.
+
+@menu
+* MacOS X on the command-line::
+@end menu
+
+
+@node MacOS X on the command-line
+@subsection MacOS X on the command-line
The scripts (such as lilypond-book, convert-ly, abc2ly, and even
-lilypond itself) are also
-included inside MacOS X .app. They can be run from the command line by
-invoking them directly, e.g.
+lilypond itself) are included inside MacOS X .app. They can be run from
+the command line by invoking them directly, e.g.
@example
@var{path/to}/LilyPond.app/Contents/Resources/bin/lilypond
}
@end lilypond
+Similarly, line breaks are normally forbidden when beams cross bar
+lines. This behavior can be changed by setting
+@code{\override Beam #'breakable = ##t}.
+
@node Page breaking
@subsection Page breaking
flower/ A simple c++ library
include/
input/ Music input examples
- lsr/ Snippets from the LilyPond Snippet Repository
+ lsr/ Snippets from the LilyPond Snippet Repository
+ (auto-generated, do not modify!)
+ manual/ Examples from the manual
mutopia/ Real music, more at www.mutopiaproject.org
+ new/ Snippets which are too new for LSR
regression/ Testing of features, one test per file
- test/ Tips and tricks
tutorial/ Examples from the tutorial
lily/ C++ sources for LilyPond (lilypond-bin)
include/
-def write_character_lisp_table (file, global_info, charmetrics):
+def character_lisp_table (global_info, charmetrics):
def conv_char_metric (charmetric):
f = 1.0
return s
+ s = ''
for c in charmetrics:
- file.write (conv_char_metric (c))
+ s += conv_char_metric (c)
+ return s
-def write_global_lisp_table (file, global_info):
+
+def global_lisp_table (global_info):
str = ''
keys = ['staffsize', 'stafflinethickness', 'staff_space',
if global_info.has_key (k):
str = str + "(%s . %s)\n" % (k,global_info[k])
- file.write (str)
+ return str
-def write_ps_encoding (name, file, global_info, charmetrics):
+def ps_encoding (name, global_info, charmetrics):
encs = ['.notdef'] * 256
for m in charmetrics:
encs[m['code']] = m['name']
- file.write ('/%s [\n' % name)
- for m in range (0, 256):
- file.write (' /%s %% %d\n' % (encs[m], m))
- file.write ('] def\n')
+ s = ('/%s [\n' % name)
+ for m in range (0, 256):
+ s += (' /%s %% %d\n' % (encs[m], m))
+ s += ('] def\n')
+ return s
-def write_deps (file, deps, targets):
+def get_deps (deps, targets):
+ s = ''
for t in targets:
t = re.sub ( '^\\./', '', t)
- file.write ('%s '% t)
- file.write (": ")
+ s += ('%s '% t)
+ s += (": ")
for d in deps:
- file.write ('%s ' % d)
- file.write ('\n')
-
+ s += ('%s ' % d)
+ s += ('\n')
+ return s
def help ():
sys.stdout.write(r"""Usage: mf-to-table [OPTIONS] LOGFILEs
elif re.search ('feta-alphabet', filenm):
enc_name = 'FetaAlphabetEncoding';
- write_ps_encoding (enc_name, open (enc_nm, 'w'), g, m)
- write_character_lisp_table (open (char_lisp_nm, 'w'), g, m)
- write_global_lisp_table (open (global_lisp_nm, 'w'), g)
+ open (enc_nm, 'w').write (ps_encoding (enc_name, g, m))
+ open (char_lisp_nm, 'w').write (character_lisp_table (g, m))
+ open (global_lisp_nm, 'w').write (global_lisp_table (g))
if depfile_nm:
- write_deps (open (depfile_nm, 'wb'), deps,
- [base + '.log', base + '.dvi', base + '.pfa',
- depfile_nm,
- base + '.pfb'])
+ open (depfile_nm, 'wb').write (get_deps (deps,
+ [base + '.log', base + '.dvi', base + '.pfa',
+ depfile_nm,
+ base + '.pfb']))
% -*-coding: utf-8 -*-
\header{
-
- composer ="J.S. Bach"
- title = "Wenn wir in hoechsten Noten sein"
- subtitle = "Analysis from Gene Biringer's Schenker Text, Ex. 5-27"
-%% "BWV641"
- enteredby = "Kris Shaffer"
-
+ composer = "J.S. Bach"
+ title = "Wenn wir in höchsten Nöten sein"
+ subtitle = "Analysis from Gene Biringer's Schenker Text, Ex. 5-27"
+% "BWV641"
+ enteredby = "Kris Shaffer"
}
+%%
%% See http://www.shaffermusic.com/doc/schenker/index.html for more information
-%%
+%%
-\version "2.10.0"
+\version "2.11.30"
staffPiano = \new PianoStaff {
\set Score.timing = ##f
\set PianoStaff.followVoice = ##t
<<
- \new Staff { % Right hand
+ \new Staff = "RH" { % Right hand
\clef treble
\key g \major
\relative c'' {
#'merge-differently-headed = ##t
<<
{
- \override Beam #'positions = #'(8 . 8)
+ \override Beam #'positions = #'(8 . 8)
\override NoteHead #'transparent = ##t
+ \override NoteHead #'duration-log = #1
s1 b8[^\markup {
\override #'(baseline-skip . 0.5)
\column { \small {^ 3} }
}
- s4. s1 a8^\markup {
- \override #'(baseline-skip . 0.5)
- \column { \small {^ 2} }
- } s4. s2 g8]^\markup {
- \override #'(baseline-skip . 0.5)
- \column {
- \small {^ 1}
- }
- }
+ s4. s1 a8^\markup {
+ \override #'(baseline-skip . 0.5)
+ \column { \small {^ 2} }
+ }
+ s4. s2 g8]^\markup {
+ \override #'(baseline-skip . 0.5)
+ \column { \small {^ 1} }
+ }
s4.
\revert Beam #'positions
\revert NoteHead #'transparent
- }
+ \revert NoteHead #'duration-log
+ }
\\
{
\override Stem #'transparent = ##t
- \slurDown
- \override Staff.Slur #'height-limit = #6
- \slurDashed
- s1
+ s1
+ \once \override Slur #'height-limit = #6
\once \override Slur #'extra-offset = #'(1.25 . 0)
- b2( s2
- \revert Staff.Slur #'height-limit
- \override NoteHead #'transparent = ##t
- b4) s
- \revert NoteHead #'transparent
- \override Staff.Slur #'height-limit = #3.25
- \once \override Slur #'extra-offset = #'(.75 . 0)
\slurDashed
- a2( s4
- \override NoteHead #'transparent = ##t
- a)
- \revert NoteHead #'transparent
- g2
+ b2_( s2
+ \once \override NoteHead #'transparent = ##t
+ b4) s
+ \once \override Slur #'height-limit = #3.25
+ \once \override Slur #'extra-offset = #'(.75 . 0)
+ a2_( s4
+ \once \override NoteHead #'transparent = ##t
+ a)
+ g2
\revert Stem #'transparent
}
\\
#'merge-differently-headed = ##t
{
\override Beam #'positions = #'(4 . -3.25)
- \stemUp
- g8[ s s4 s2
- \stemDown
- \override NoteHead #'transparent = ##t
- b8] s8
- \revert NoteHead #'transparent
- \override Beam #'positions = #'(3 . -2.75)
+ \stemUp
+ g8[ s s4 s2
+ \stemDown
+ \once \override NoteHead #'transparent = ##t
+ b8] s8
+ \override Beam #'positions = #'(3 . -2.25)
\stemUp
a8[ s s4
- \stemDown
- c8] s s2 s s
+ \stemDown
+ c8] s s2 s s
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ \override Stem #'length = #0
+ g4_\( fis^(_\markup { \tiny N } g)\)
+ a^(^\markup { \tiny P } b2)
+ b4^(^\markup { \tiny P }
+ \stemUp
+ \revert Stem #'transparent
+ \override Stem #'length = #10
+ c8)^( s
+ \override Stem #'length = #14
+ b4) s s
+ \override Stem #'length = #0
+ \override Stem #'transparent = ##t
+ \once \override Slur #'extra-offset = #'(0 . 0.35)
+ c4^\( b_(_\markup { \tiny P } a)\) s2
\revert Stem #'length
}
\\
\override Stem #'transparent = ##t
\override NoteHead #'transparent = ##t
\override Stem #'length = #0
- \phrasingSlurDown
- \slurUp
- g4\(
- \revert NoteHead #'transparent
- \once \override TextScript #'padding = #1.5
- \once\override Slur #'extra-offset = #'(0 . -0.35)
- fis(_\markup { \tiny N } g)\) \slurUp a(^\markup { \tiny P } b2)
- b4(^\markup { \tiny P }
- \stemUp
+ s1 s4 e4 s
+ \change Staff = "LH"
+ fis,4 s2
\revert Stem #'transparent
- \override Stem #'length = #10
- c8[])( s
- \override Stem #'length = #14
- b4) s s
- \override Stem #'length = #0
- \override Stem #'transparent = ##t
- \phrasingSlurUp \slurDown
- \override Slur #'extra-offset = #'(0 . 0.35)
- c4\(
- \once \override TextScript #'padding = #1.25
- b(_\markup { \tiny P } a)\) s2
- \revert Stem #'length
- \revert Slur #'extra-offset
- }
- \\
- {
- \override Stem #'transparent = ##t
- \override NoteHead #'transparent = ##t
- \override Stem #'length = #0
- s1 s4 e4 s
- \change Staff=LH
- fis,4 s2
- \revert Stem #'transparent
- \revert NoteHead #'transparent
- \revert Stem #'length
- }
- \\
- {
- \override Stem #'transparent = ##t
- \override NoteHead #'transparent = ##t
- \override Stem #'length = #0
- s1 s s2
- fis'4 s
- \change Staff=LH
- g,4 s s2
- \revert Stem #'transparent
- \revert NoteHead #'transparent
- \revert Stem #'length
- }
- >>
- \bar "|."
+ \revert NoteHead #'transparent
+ \revert Stem #'length
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ \override NoteHead #'transparent = ##t
+ \override Stem #'length = #0
+ s1 s s2
+ fis'4 s
+ \change Staff = "LH"
+ g,4 s s2
+ \revert Stem #'transparent
+ \revert NoteHead #'transparent
+ \revert Stem #'length
+ }
+ >>
+ \bar "|."
+ }
}
- }
- \new Staff { % Left hand
- \clef bass
- \key g \major
- \relative c' {
- \override Staff.NoteCollision
- #'merge-differently-headed = ##t
- <<
- {
- \override Beam #'positions = #'(-8 . -8)
- \override NoteHead #'transparent = ##t
- \stemDown
- g8[_\markup { \bold I } s4. s1 s s2
+
+ \new Staff = "LH" { % Left hand
+ \clef bass
+ \key g \major
+ \relative c' {
+ \override Staff.NoteCollision
+ #'merge-differently-headed = ##t
+ <<
+ {
+ \override Beam #'positions = #'(-8 . -8)
+ \override NoteHead #'transparent = ##t
+ \stemDown
+ g8[_\markup { \bold I } s4. s1 s s2
d8_\markup { \bold V } s4.
g,8]_\markup { \bold I } s4.
- \revert Beam #'positions
- \revert NoteHead #'transparent
- }
- \\
- {
- \override Stem #'transparent = ##t
- \stemDown
- \override TextScript #'extra-offset = #'(-11.75 . -12.25)
- g'2 s1 s s2 d2 g,2
- \revert Stem #'transparent
- }
- \\
- {
- \override Stem #'transparent = ##t
- \override NoteHead #'transparent = ##t
- \override Stem #'length = #0
- g'4
- \revert NoteHead #'transparent
- \slurDown
- \once \override TextScript #'padding = #0.25
- a4(^\markup { \tiny P } b)
- \slurUp
- fis4(^\markup { \tiny P } e)
- \override NoteHead #'transparent = ##t
- c4(
- \revert NoteHead #'transparent
- d)^\markup { \tiny N }
- \slurDown
- \override NoteHead #'transparent = ##t
- \once \override Slur #'extra-offset = #'(0 . 0.5)
- fis,4(
- \revert NoteHead #'transparent
- \revert Stem #'transparent
- \override Stem #'length = #12
- \stemDown
- g4) s
- \override Stem #'length = #10
- \once \override Slur #'extra-offset = #'(0 . 0.25)
- c8( s
- \override Stem #'transparent = ##t
- \revert Stem #'length
- a4)
- \override NoteHead #'transparent = ##t
- \slurUp
- d4(
- \revert NoteHead #'transparent
- d,4) s2
- }
- \\
- {
- \override Stem #'transparent = ##t
- \override NoteHead #'transparent = ##t
- \slurUp
- \override Staff.Slur #'height-limit = #3.5
- g'4( s b) s2
- \revert Staff.Slur #'height-limit
- \revert Stem #'transparent
- \revert NoteHead #'transparent
- \override Beam #'positions = #'(-4 . 1)
- \stemDown
- c,8[ s s4
- \stemUp
- fis,8] s
- \override Beam #'positions = #'(1 . -4)
- g8[ s
- \stemDown
- b8] s
- \revert Beam #'positions
- \override Stem #'transparent = ##t
- \override NoteHead #'transparent = ##t
- \slurUp
- c4( s d4) s s2
- }
- \\
- {
- \override Stem #'transparent = ##t
- \override NoteHead #'transparent = ##t
- \slurDown
- \override Stem #'length = #0
- \stemDown
- \override Slur #'height-limit = #3
- \once \override Slur #'extra-offset = #'(0 . 0.25)
- g4( s2. e4) s2. s2 s1 s2
- \revert Stem #'transparent
- \revert NoteHead #'transparent
- \revert Staff.Slur #'height-limit
- }
- \\
- {
- \override Stem #'transparent = ##t
- \override NoteHead #'transparent = ##t
- \slurDown \slurDashed
- \override Staff.Slur #'height-limit = #6.0
- \override Slur #'extra-offset = #'(0.5 . -0.25)
- \override Stem #'length = #0
- g4( s2. s1 g,4) s s1 s2
- \revert Stem #'transparent
- \revert NoteHead #'transparent
- \revert Staff.Slur #'height-limit
- }
- >>
- \bar "|."
- }
- }
- >>
+ \revert Beam #'positions
+ \revert NoteHead #'transparent
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ \stemDown
+ \override TextScript #'extra-offset = #'(-11.75 . -12.25)
+ g'2 s1 s s2 d2 g,2
+ \revert Stem #'transparent
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ \once \override NoteHead #'transparent = ##t
+ \override Stem #'length = #0
+ g'4
+ \once \override TextScript #'padding = #0.25
+ a4_(^\markup { \tiny P } b)
+ fis4^(^\markup { \tiny P } e)
+ \once \override NoteHead #'transparent = ##t
+ \once \override Slur #'height-limit = #1.5
+ c4^(
+ d)^\markup { \tiny N }
+ \once \override NoteHead #'transparent = ##t
+ \once \override Slur #'extra-offset = #'(0 . 0.5)
+ fis,4_(
+ \revert Stem #'transparent
+ \override Stem #'length = #10
+ \stemDown
+ g4) s
+ \once \override Slur #'extra-offset = #'(0 . 0.25)
+ c8_( s
+ \override Stem #'transparent = ##t
+ \revert Stem #'length
+ a4)
+ \once \override NoteHead #'transparent = ##t
+ d4^( d,4) s2
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ \override NoteHead #'transparent = ##t
+ g'4^( s b) s2
+ \revert Stem #'transparent
+ \revert NoteHead #'transparent
+ \override Beam #'positions = #'(-4 . 1)
+ \stemDown
+ c,8[ s s4
+ \stemUp
+ fis,8] s
+ \override Beam #'positions = #'(1 . -4)
+ g8[ s
+ \stemDown
+ b8] s
+ \revert Beam #'positions
+ \override Stem #'transparent = ##t
+ \override NoteHead #'transparent = ##t
+ c4^( s d4) s s2
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ \override NoteHead #'transparent = ##t
+ \override Stem #'length = #0
+ \stemDown
+ \once \override Slur #'height-limit = #3
+ \once \override Slur #'extra-offset = #'(0 . 0.25)
+ g4_( s2. e4) s2. s2 s1 s2
+ \revert Stem #'transparent
+ \revert NoteHead #'transparent
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ \override NoteHead #'transparent = ##t
+ \slurDashed
+ \once \override Slur #'height-limit = #6.0
+ \once \override Slur #'extra-offset = #'(0.5 . -0.25)
+ \override Stem #'length = #0
+ g4_( s2. s1 g,4) s s1 s2
+ \revert Stem #'transparent
+ \revert NoteHead #'transparent
+ }
+ >>
+ \bar "|."
+ }
+ }
+ >>
}
-
\score {
<<
\staffPiano
>>
-
+
\midi {
}
- \layout {
+ \layout {
indent = 0.0
ragged-right = ##t
\context { \Staff \remove "Time_signature_engraver" }
}
}
+
\paper {
}
-
+++ /dev/null
-%% Do not edit this file; it is auto-generated from LSR!
-\version "2.10.12"
-
-\header { texidoc = "
-If you wish to typeset \"|.\", etc, style spanbars on a ChoirStaff, you
-can add the span_bar_engraver, and instruct it to omit the \"|\"-style
-bars. In this example I create a new context, SemiChoirStaff, that does
-this.
-" }
-
-\version "2.10.12"
-
-mus = { \clef F c d e f c d e f c d e f c d e f \bar "||" c d e f c d e f c d e f \bar "|." }
-
-\layout {
- \context {
- \ChoirStaff
- \name "SemiChoirStaff"
- \consists "Span_bar_engraver"
- \override SpanBar #'stencil =
- #(lambda (a)
- (if (string=? (ly:grob-property a 'glyph-name) "|")
- (set! (ly:grob-property a 'glyph-name) ""))
- (ly:span-bar::print a))
- }
- \context {
- \Score
- \accepts SemiChoirStaff
- }
-}
-
-\score {
- \new SemiChoirStaff {
- <<
- \new Staff \mus
- \new Staff \mus
- >>
- }
-}
-
--- /dev/null
+\header {
+ texidoc = "Trill spanner can end on a grace note"
+}
+
+\version "2.10.0"
+\layout {
+ ragged-right = ##T
+}
+\relative \new Voice {
+ << { c1 \startTrillSpan }
+ { s2. \grace { d16[\stopTrillSpan e] } } >>
+ c4 }
+
\header {
- texidoc = "Trill spanner"
+ texidoc = "The trill symbol and the wavy line are neatly aligned:
+the wavy line should appear to come from the crook of the r"
+
}
-\version "2.10.0"
-\layout {
- ragged-right = ##T
+\version "2.11.30"
+\paper { ragged-right = ##t }
+\relative c'' {
+ c1\startTrillSpan
+ c\stopTrillSpan
}
-\relative \new Voice {
- << { c1 \startTrillSpan }
- { s2. \grace { d16[\stopTrillSpan e] } } >>
- c4 }
+
#include "lookup.hh"
#include "pointer-group-interface.hh"
-MAKE_SCHEME_CALLBACK (Arpeggio, print, 1);
-SCM
-Arpeggio::print (SCM smob)
+Grob *
+Arpeggio::get_common_y (Grob *me)
{
- Grob *me = unsmob_grob (smob);
-
Grob *common = me;
extract_grob_set (me, "stems", stems);
Y_AXIS);
}
+ return common;
+}
+
+MAKE_SCHEME_CALLBACK(Arpeggio, calc_positions, 1);
+SCM
+Arpeggio::calc_positions (SCM grob)
+{
+ Grob *me = unsmob_grob (grob);
+ Grob *common = get_common_y (me);
+
/*
TODO:
Using stems here is not very convenient; should store noteheads
instead, and also put them into the support. Now we will mess up
in vicinity of a collision.
-
*/
Interval heads;
Real my_y = me->relative_coordinate (common, Y_AXIS);
+ extract_grob_set (me, "stems", stems);
for (vsize i = 0; i < stems.size (); i++)
{
Grob *stem = stems[i];
- my_y);
}
+ heads *= 1/Staff_symbol_referencer::staff_space(me);
+
+ return ly_interval2scm (heads);
+}
+
+MAKE_SCHEME_CALLBACK (Arpeggio, print, 1);
+SCM
+Arpeggio::print (SCM smob)
+{
+ Grob *me = unsmob_grob (smob);
+ Interval heads = robust_scm2interval (me->get_property ("positions"),
+ Interval())
+ * Staff_symbol_referencer::staff_space (me);
+
if (heads.is_empty () || heads.length () < 0.5)
{
if (!to_boolean (me->get_property ("transparent")))
Arpeggio::brew_chord_bracket (SCM smob)
{
Grob *me = unsmob_grob (smob);
- Grob *common = me;
-
- extract_grob_set (me, "stems", stems);
- for (vsize i = 0; i < stems.size (); i++)
- {
- Grob *stem = stems[i];
- common = common->common_refpoint (Staff_symbol_referencer::get_staff_symbol (stem),
- Y_AXIS);
- }
-
- Interval heads;
- Real my_y = me->relative_coordinate (common, Y_AXIS);
-
- for (vsize i = 0; i < stems.size (); i++)
- {
- Grob *stem = stems[i];
- Grob *ss = Staff_symbol_referencer::get_staff_symbol (stem);
- Interval iv = Stem::head_positions (stem);
- iv *= Staff_symbol::staff_space (ss) / 2.0;
- heads.unite (iv + ss->relative_coordinate (common, Y_AXIS) - my_y);
- }
+ Interval heads = robust_scm2interval (me->get_property ("positions"),
+ Interval())
+ * Staff_symbol_referencer::staff_space (me);
Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
Real sp = 1.5 * Staff_symbol_referencer::staff_space (me);
/* properties */
"arpeggio-direction "
- "stems "
+ "positions "
"script-priority " // TODO: make around-note-interface
+ "stems "
);
class Arpeggio
{
public:
+ static Grob *get_common_y (Grob *);
DECLARE_SCHEME_CALLBACK (print, (SCM));
+ DECLARE_SCHEME_CALLBACK (calc_positions, (SCM));
DECLARE_SCHEME_CALLBACK (brew_chord_bracket, (SCM));
DECLARE_SCHEME_CALLBACK (width, (SCM));
DECLARE_SCHEME_CALLBACK (height, (SCM));
SCM align = ly_assoc_get (ly_symbol2scm ("stencil-align-dir-y"),
bounds[d], SCM_BOOL_F);
SCM off = ly_assoc_get (ly_symbol2scm ("stencil-offset"),
- bounds[d], SCM_BOOL_F);
+ bounds[d], SCM_BOOL_F);
if (scm_is_number (align))
s.align_to (Y_AXIS, scm_to_double (align));
#(define version-seen #f)
#(define expect-error #f)
#(define output-empty-score-list #f)
-
+#(define output-suffix #f)
#(use-modules (scm clip-region))
\maininput
%% there is a problem at the end of the input file
$(outdir)/%/index.html: $(outdir)/%.nexi $(outdir)/user-ln doc-po
mkdir -p $(dir $@)
- -$(MAKEINFO) -I$(outdir) --output=$(outdir)/$* --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
+ -$(MAKEINFO) $(MAKEINFO_FLAGS) -I$(outdir) --output=$(outdir)/$* --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
# we don't make the big page until the whole manual is translated
# if this happens, we'll have to define local-WWW differently for this language
#$(outdir)/lilypond.html: $(outdir)/lilypond.nexi
-# -$(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $<
+# -$(MAKEINFO) $(MAKEINFO_FLAGS) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $<
$(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/user-ln doc-po
$(PYTHON) $(buildscript-dir)/texi-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG) $<
whether to put a page turn at this column. Can be @code{force} or
@code{allow}.")
(parenthesized ,boolean? "Parenthesize this grob.")
- (positions ,pair? "Pair of staff coordinates @code{(@var{left}
+ (positions ,number-pair? "Pair of staff coordinates @code{(@var{left}
. @var{right})}, where both @var{left} and @var{right} are in
-@code{staff-space} units of the current staff. LilyPond uses these
-values to select which slur candidate positions to use; if extreme
-positions are requested, LilyPond selects the closest positions.")
+@code{staff-space} units of the current staff.
+
+For slurs, this value selects which slur candidate
+to use; if extreme positions are requested, the closest one is taken.")
(ratio ,number? "Parameter for slur shape. The higher this
number, the quicker the slur attains its @code{height-limit}.")
(Y-offset . ,ly:staff-symbol-referencer::callback)
(X-offset . ,ly:side-position-interface::x-aligned-side)
(direction . ,LEFT)
+ (positions . ,ly:arpeggio::calc-positions)
(padding . 0.5)
(script-priority . 0)
(side-axis . ,X)
. (
(stencil . ,ly:time-signature::print)
(break-align-symbol . time-signature)
- (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
+ (break-align-anchor
+ . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
(break-visibility . ,all-visible)
(avoid-slur . inside)
(space-alist . (
(right-bound-info . ,ly:line-spanner::calc-right-bound-info)
(bound-details . ((left . ((text . ,(make-translate-scaled-markup
- '(0.5 . -0.6)
+ '(0.0 . -1.0)
(make-musicglyph-markup "scripts.trill")))
(Y . 0)
- (padding . 0.25)
+ (stencil-offset . (-0.5 . 0))
+ (padding . 1.5)
(attach-dir . ,LEFT)
))
(right . ((Y . 0)))
# The <notation> element can have the following children (+ means implemented, ~ partially, - not):
# +tied | +slur | +tuplet | glissando | slide |
- # ornaments | technical | articulations | dynamics |
- # +fermata | arpeggiate | non-arpeggiate |
- # accidental-mark | other-notation
+ # ornaments | technical | articulations | dynamics |
+ # +fermata | arpeggiate | non-arpeggiate |
+ # accidental-mark | other-notation
if notations:
if notations.get_tuplet():
tuplet_event = notations.get_tuplet()
def musicxml_id_to_lily (id):
- digits = ['Zero', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight',
- 'Nine', 'Ten']
+ digits = ['Zero', 'One', 'Two', 'Three', 'Four', 'Five',
+ 'Six', 'Seven', 'Eight', 'Nine', 'Ten']
- for dig in digits:
- d = digits.index (dig)
- id = re.sub ('%d' % d, dig, id)
+ for digit in digits:
+ d = digits.index (digit)
+ id = re.sub ('%d' % d, digit, id)
id = re.sub ('[^a-zA-Z]', 'X', id)
return id