NAME = documentation
LANGS = $(shell $(PYTHON) $(top-src-dir)/python/langdefs.py)
-MANUALS_SUBDIRS = application contributor essay general learning notation
-SUBDIRS = $(MANUALS_SUBDIRS) snippets bibliography logo pictures misc po $(LANGS)
+MANUALS_SUBDIRS = application automated-engraving contributor essay general learning notation
+SUBDIRS = $(MANUALS_SUBDIRS) snippets logo pictures misc po css $(LANGS)
STEPMAKE_TEMPLATES = documentation texinfo tex omf
LOCALSTEPMAKE_TEMPLATES = lilypond ly
IN_ITELY_FILES = $(call src-wildcard,snippets/*-intro.itely)
SNIPPET_LY_FILES = $(call src-wildcard,snippets/*.ly)
+EXTRA_DIST_FILES = $(call src-wildcard,*.init) $(LATEX_FILES)
+
### Out files
# Dependencies
# of the NR
TEXI_FILES_FROM_TELY = $(outdir)/internals.texi
-PDF_FILES = $(subst $(outdir)/general.pdf,,$(TEXINFO_MANUALS:%=$(outdir)/%.pdf))
+PDF_FILES = $(TEXINFO_MANUALS:%=$(outdir)/%.pdf)
UNSPLITTED_HTML_MANUALS = changes
SPLITTED_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\
## No big page
OUT_HTML_FILES := $(subst $(outdir)/general-big-page.html,,$(OUT_HTML_FILES))
-## Different init file and CSS
-$(outdir)/general/index.html: \
- TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/web-texi2html.init
+$(outdir)/essay/index.html: TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT) -D=shallow_toc
+$(outdir)/essay/index.html: TEXI2HTML_SPLIT = $(WEB_TEXI2HTML_SPLIT)
+
+$(outdir)/general/index.html: TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT)
+$(outdir)/general/index.html: TEXI2HTML_SPLIT = $(WEB_TEXI2HTML_SPLIT)
###########
### Targets
#########
### Rules
+$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+ $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+
+$(outdir)/lilypond.info: $(src-dir)/general.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+ $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+
# cd $(outdir) rule gets bit hairy for --srcdir configure builds
txt-to-html:
$(foreach a, $(README_TOP_FILES), cp $(top-src-dir)/$(a) $(outdir)/$(a).txt && ) true
$(outdir)/pictures:
$(MAKE) -C pictures WWW-1
ln -sf ../pictures/$(outdir) $@
+
+$(outdir)/general.texi: $(outdir)/examples
+
+$(outdir)/examples:
+ $(MAKE) -C general/examples
+# FIXME: who is replacing src="examples --> src="../examples" ?
+# [ugh, why do most scripts not even say they run anymore?]
+ ln -sf general/examples $@
endif
# Ugh, using '%' twice not possible
endif
ifneq ($(ISOLANG),)
-new-lang:
- @if (( $$(file -b $(ISOLANG)) == directory )) 2>/dev/null; \
- then echo "Error: $(ISOLANG) directory already exists. Exiting." ; \
- exit 3 ; \
- fi
- mkdir -p $(ISOLANG)/learning
+new-lang-dir:
+ mkdir -p $(ISOLANG)/$(DIR)
cp fr/GNUmakefile $(ISOLANG)
- cp fr/learning/GNUmakefile $(ISOLANG)/learning
- sed -i -e 's/ISOLANG *= *fr/ISOLANG = $(ISOLANG)/' $(ISOLANG)/GNUmakefile $(ISOLANG)/learning/GNUmakefile
- $(auxscript-dir)/texi-langutils.py -d $(outdir) -l $(ISOLANG) -o doc.pot --skeleton --gettext ../learning.tely
- mv $(outdir)/*.*tely $(ISOLANG)/learning
+ cp fr/$(DIR)/GNUmakefile $(ISOLANG)/$(DIR)
+ sed -i -e 's/ISOLANG *= *fr/ISOLANG = $(ISOLANG)/' $(ISOLANG)/GNUmakefile $(ISOLANG)/$(DIR)/GNUmakefile
+ rm -f $(outdir)/*.*tely $(outdir)/*.*texi
+ $(auxscript-dir)/texi-langutils.py -d $(outdir) -l $(ISOLANG) -o doc.pot --skeleton --gettext $$(cd $(ISOLANG) && ls -1 ../$(DIR).tely ../$(DIR).texi)
+ for i in $$(cd $(outdir) && ls -1 $(DIR).tely $(DIR).texi); do\
+ test -e $(ISOLANG)/$$i || mv $(outdir)/$$i $(ISOLANG)/$$i;\
+ done
+ rm -f $(outdir)/$(DIR).tely $(outdir)/$(DIR).texi
+ for i in $$(cd $(outdir) && ls -1 *.*tely *.*texi); do\
+ test -e $(ISOLANG)/$(DIR)/$$i\
+ || mv $(outdir)/$$i $(ISOLANG)/$(DIR)/$$i;\
+ done
+
+new-lang:
+# Also for updating/adding missing files
+ $(foreach i,$(TRANSLATION_DIRS),$(MAKE) new-lang-dir DIR=$(i) &&) :
+ $(foreach i, $(EXTRA_TRANSLATION_FILES), \
+ (test -e $(ISOLANG)/$(i) \
+ || cp fr/$(i) $(ISOLANG)/$(i)) && ) true
msgmerge -U po/lilypond-doc.pot $(outdir)/doc.pot
- cp po/lilypond-doc.pot po/$(ISOLANG).po
+ test -e po/$(ISOLANG).po || cp po/lilypond-doc.pot po/$(ISOLANG).po
@echo "*** Please add a language definition for $(ISOLANG) in python/langdefs.py ***"
-CHECKED_FILES = $(ISOLANG)/index.html.in $(foreach i,learning notation application, \
- $(shell find $(ISOLANG)/$(manual) -name '*.*te??' -not -wholename '*out-www*')) \
- $(shell find $(ISOLANG)/texidocs/ -name '*.texidoc')
+#TRANSLATION_DIRS = $(shell git ls-files $(ISOLANG) | $(PYTHON) $(buildscript-dir)/pytt.py '/[^/]*$$' / | sort -u )
+TRANSLATION_DIRS = application general learning notation texidocs
+TRANSLATION_FILES = $(shell git ls-files $(ISOLANG) | grep -v GNUmakefile)
+EXTRA_TRANSLATION_FILES =\
+ dedication.itely\
+ index.html.in\
+ common-macros.itexi\
+ macros.itexi\
+ translations.html.in\
+ translations.template.html.in\
+#
+
TELY_FILES = $(call src-wildcard,$(ISOLANG)/*.tely)
skeleton-update:
+ mkdir -p $(ISOLANG)
$(auxscript-dir)/texi-langutils.py -d $(outdir) -l $(ISOLANG) --skeleton $(TELY_FILES:$(ISOLANG)/%.tely=../%.tely)
$(auxscript-dir)/texi-skeleton-update.py $(ISOLANG) $(outdir)
$(DOCUMENTS_INCLUDES) $(auxpython-dir)/manuals_definitions.py
check-translation:
- ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py $(CHECK_TRANSLATION_FLAGS) $(CHECKED_FILES)
+ ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py $(CHECK_TRANSLATION_FLAGS) $(TRANSLATION_FILES)
update-translation:
- ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py --update $(CHECK_TRANSLATION_FLAGS) $(CHECKED_FILES)
+ ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py --update $(CHECK_TRANSLATION_FLAGS) $(TRANSLATION_FILES)
translation-status:
make -C po out=www messages
* Updating files with convert-ly:: Updating input files.
* lilypond-book:: Integrating text and music.
* Converting from other formats:: Converting to lilypond source format.
+* Working on LilyPond projects:: Working on non-working files.
* Suggestions for writing files:: Best practices
Appendices
@include application/updating.itely
@include application/lilypond-book.itely
@include application/converters.itely
+@include application/working.itely
@include application/suggestions.itely
@include fdl.itexi
@c and remove all stuff (menu, nodes, contents) below this line.
-@include contributor/compile.itexi
+@include contributor/basic-compile.itexi
@node Invoking lilypond
@subsection Invoking @command{lilypond}
-@cindex Invoking @command{lilypond}
-@cindex command line options for @command{lilypond}
-@cindex options, command line
-@cindex switches
-
-
The @command{lilypond} executable may be called as follows from the command line.
@example
@node Command line options for lilypond
@subsection Command line options for @command{lilypond}
+@cindex Invoking @command{lilypond}
+@cindex command line options for @command{lilypond}
+@cindex options, command line
+@cindex switches
+
The following options are supported:
@table @code
Here are a few interesting options.
+@cindex help, command line
+
@table @samp
@item help
Running @code{lilypond -dhelp} will print all of the @code{-d} options
available.
+@cindex paper-size, command line
+
@item paper-size
This option sets the default paper-size,
@example
Note that the string must be enclosed in escaped quotes ( @code{\"} ).
@c Match " in previous line to help context-sensitive editors
+@cindex safe, command line
+
@item safe
Do not trust the @code{.ly} input.
lead to huge files.
@item eps
+
+@cindex Postscript, encapulated
+@cindex EPS (Encapsulated PostScript)
+
for encapsulated PostScript. This dumps every page (system) as a separate
@file{EPS} file, without fonts, and as one collated @file{EPS} file with
all pages (systems) including fonts.
This mode is used by default by @command{lilypond-book}.
@item svg
+
@cindex SVG (Scalable Vector Graphics)
+
for SVG (Scalable Vector Graphics).
- This creates a single SVG file containing the entire music output
- with no embedded fonts. It is recommended to install the Century
+ This creates a single SVG file, without embedded fonts, for every
+ page of output. It is recommended to install the Century
Schoolbook fonts, included with your LilyPond installation, for
optimal rendering. Under UNIX, simply copy these fonts from the
LilyPond directory (typically
SVG editor or user agent.
@item scm
+
@cindex Scheme dump
+
for a dump of the raw, internal Scheme-based drawing commands.
@item null
Example: @code{lilypond -dbackend=svg @var{filename}.ly}
@item preview
+@cindex preview, command line
Generate an output file containing the titles and the first system
@item print-pages
Set the default output file to @var{FILE}. The appropriate
suffix will be added (e.g. @code{.pdf} for pdf)
+@cindex PostScript output
+
@item --ps
Generate PostScript.
+@cindex Portable Network Graphics (PNG) output
+
@item --png
Generate pictures of each page, in PNG format. This implies
@code{--ps}. The resolution in DPI of the image may be set with
-dresolution=110
@end example
+@cindex Portable Document Format (PDF) output
+
@item --pdf
Generate PDF. This implies @code{--ps}.
@node Suggestions for writing files
@chapter Suggestions for writing files
+Now you're ready to begin writing larger LilyPond input files --
+not just the little examples in the tutorial, but whole pieces.
+But how should you go about doing it?
+
+As long as LilyPond can understand your input files and produce
+the output that you want, it doesn't matter what your input files
+look like. However, there are a few other things to consider when
+writing LilyPond input files.
+
+@itemize
+@item What if you make a mistake? The structure of a LilyPond
+file can make certain errors easier (or harder) to find.
+
+@item What if you want to share your input files with somebody
+else? In fact, what if you want to alter your own input files in
+a few years? Some LilyPond input files are understandable at
+first glance; others may leave you scratching your head
+for an hour.
+
+@item What if you want to upgrade your LilyPond file for use
+with a later version of LilyPond? The input syntax changes
+occasionally as LilyPond improves. Most changes can be
+done automatically with @code{convert-ly}, but some changes
+might require manual assistance. LilyPond input files can be
+structured in order to be easier (or harder) to update.
+
+@end itemize
+
+@menu
+* General suggestions::
+* Typesetting existing music::
+* Large projects::
+@end menu
+
+
+@node General suggestions
+@section General suggestions
+
+Here are a few suggestions that can help you to avoid or fix
+problems:
+
+@itemize
+@item @strong{Include @code{\version} numbers in every file}. Note that all
+templates contain @code{\version} information. We
+highly recommend that you always include the @code{\version}, no matter
+how small your file is. Speaking from personal experience, it's
+quite frustrating to try to remember which version of LilyPond you were
+using a few years ago. @command{convert-ly} requires you to declare
+which version of LilyPond you used.
+
+@item @strong{Include checks}: @ruser{Bar and bar number checks},
+@ruser{Octave checks}. If you include checks every so often, then
+if you make a mistake, you can pinpoint it quicker. How often is
+@q{every so often}? It depends on the complexity of the music.
+For very simple music, perhaps just once or twice. For very
+complex music, perhaps every bar.
+
+@item @strong{One bar per line of text}. If there is anything complicated,
+either in the music
+itself or in the output you desire, it's often good to write only one bar
+per line. Saving screen space by cramming eight bars per line just isn't
+worth it if you have to @q{debug} your input files.
+
+@item @strong{Comment your input files}. Use either bar numbers
+(every so often) or
+references to musical themes (@q{second theme in violins,} @q{fourth
+variation,} etc.). You may not need comments when you're writing the piece
+for the first time, but if you want to go back to change something two or
+three years later, or if you pass the source over to a friend, it will
+be much more
+challenging to determine your intentions or how your file is structured if
+you didn't comment the file.
+
+@item @strong{Indent your braces}. A lot of problems are caused by an
+imbalance
+in the number of @code{@{} and @code{@}}.
+
+@item @strong{Explicitly add durations} at the beginnings of sections
+and variables. If you specify @code{c4 d e} at the beginning of a
+phrase (instead of just @code{c d e}) you can save yourself some
+problems if you rearrange your music later.
+
+@item @strong{Separate tweaks} from music definitions. See
+@rlearning{Saving typing with variables and functions}, and
+@rlearning{Style sheets}.
+
+@end itemize
+
+
+@node Typesetting existing music
+@section Typesetting existing music
+
+If you are entering music from an existing score (i.e., typesetting a
+piece of existing sheet music),
+
+@itemize
+
+@item Enter the manuscript (the physical copy of the music) into
+LilyPond one system at a time (but still only one bar per line of text),
+and check each system when you finish it. You may use the
+@code{showLastLength} or @code{showFirstLength} properties to speed up
+processing -- see @ruser{Skipping corrected music}.
+
+@item Define @code{mBreak = @{ \break @}} and insert @code{\mBreak}
+in the input file whenever the manuscript has a line break. This
+makes it much easier to compare the LilyPond music to the original
+music. When you are finished proofreading your score, you may
+define @code{mBreak = @{ @}} to remove all those line breaks. This
+will allow LilyPond to place line breaks wherever it feels are
+best.
+
+@item When entering a part for a transposing instrument into a
+variable, it is recommended that the notes are wrapped in
+
+@example
+\transpose c natural-pitch @{...@}
+@end example
+(where @code{natural-pitch} is the open pitch of the instrument) so
+that the music in the variable is effectively in C. You can transpose
+it back again when the variable is used, if required, but you might
+not want to (e.g., when printing a score in concert pitch,
+converting a trombone part from treble to bass clef, etc.)
+Mistakes in transpositions are less likely if all the music in
+variables is at a consistent pitch.
+
+Also, only ever transpose to/from C. That means that the only other
+keys you will use are the natural pitches of the instruments - bes
+for a B-flat trumpet, aes for an A-flat clarinet, etc.
+
+@end itemize
+
+
+@node Large projects
+@section Large projects
+
+When working on a large project, having a clear structure to your
+lilypond input files becomes vital.
+
+@itemize
+
+@item @strong{Use a variable for each voice}, with a minimum of
+structure inside the definition. The structure of the
+@code{\score} section is the most likely thing to change;
+the @code{violin} definition is extremely unlikely to change
+in a new version of LilyPond.
+
+@example
+violin = \relative c'' @{
+g4 c'8. e16
+@}
+...
+\score @{
+ \new GrandStaff @{
+ \new Staff @{
+ \violin
+ @}
+ @}
+@}
+@end example
+
+@item @strong{Separate tweaks from music definitions}. This
+point was made previously, but for large
+projects it is absolutely vital. We might need to change
+the definition of @code{fthenp}, but then we only need
+to do this once, and we can still avoid touching anything
+inside @code{violin}.
+
+@example
+fthenp = _\markup@{
+ \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
+violin = \relative c'' @{
+g4\fthenp c'8. e16
+@}
+@end example
+
+@end itemize
+
+
--- /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 Working on LilyPond projects
+@chapter Working on LilyPond projects
+
+This section explains how to solve or avoid certain common
+problems. If you have programming experience, many of these
+tips may seem obvious, but it is still advisable to read
+this chapter.
+
+
+@menu
+* When things don't work::
+* Make and Makefiles::
+@end menu
+
+
+@node When things don't work
+@section When things don't work
+
+@menu
+* Updating old input files::
+* Common errors::
+* Troubleshooting (taking it all apart)::
+* Minimal examples::
+@end menu
+
+@node Updating old input files
+@subsection Updating old input files
+
+@cindex convert-ly
+@cindex updating old input files
+
+The LilyPond input syntax occasionally changes. As LilyPond itself
+improves, the syntax (input language) is modified accordingly. Sometimes
+these changes are made to make the input easier to read and write or
+sometimes the changes are made to accommodate new features of LilyPond.
+
+LilyPond comes with a file that makes this updating easier:
+@code{convert-ly}. For details about how to run this program, see
+@rprogram{Updating files with convert-ly}.
+
+Unfortunately, @code{convert-ly} cannot handle all input changes. It
+takes care of simple search-and-replace changes (such as @code{raggedright}
+becoming @code{ragged-right}), but some changes are too
+complicated. The syntax changes that @code{convert-ly} cannot handle
+are listed in @rprogram{Updating files with convert-ly}.
+
+For example, in LilyPond 2.4 and earlier, accents and non-English
+letters were entered using LaTeX -- for example,
+@code{No\"el} (this would print the French word for
+@c keep "-matching straight in fancy editors
+@q{Christmas}). In LilyPond 2.6 and above, the special
+@code{ë} must be entered directly into the LilyPond file as an
+UTF-8 character. @code{convert-ly} cannot change all the LaTeX
+special characters into UTF-8 characters; you must manually update
+your old LilyPond input files.
+
+@node Common errors
+@subsection Common errors
+
+The error conditions described below occur often, yet the cause
+is not obvious or easily found. Once seen and understood, they
+are easily handled.
+
+
+@menu
+* Music runs off the page::
+* An extra staff appears::
+* Apparent error in ../ly/init.ly::
+* Error message Unbound variable %::
+* Error message FT_Get_Glyph_Name::
+@end menu
+
+@node Music runs off the page
+@unnumberedsubsubsec Music runs off the page
+
+Music running off the page over the right margin or appearing
+unduly compressed is almost always due to entering an incorrect
+duration on a note, causing the final note in a measure to extend
+over the bar line. It is not invalid if the final note in a
+measure does not end on the automatically entered bar line, as the
+note is simply assumed to carry over into the next measure. But
+if a long sequence of such carry-over measures occurs the music
+can appear compressed or may flow off the page because automatic
+line breaks can be inserted only at the end of complete measures,
+i.e., where all notes end before or at the end of the measure.
+
+@warning{An incorrect duration can cause line breaks to be
+inhibited, leading to a line of highly compressed music or
+music which flows off the page.}
+
+The incorrect duration can be found easily if bar checks are used,
+see @ruser{Bar and bar number checks}.
+
+If you actually intend to have a series of such carry-over measures
+you will need to insert an invisible bar line where you want the
+line to break. For details, see @ruser{Bar lines}.
+
+
+@node An extra staff appears
+@unnumberedsubsubsec An extra staff appears
+
+If contexts are not created explicitly with @code{\new} they will be
+silently created as soon as a command is encountered which cannot
+be applied to an existing context. In simple scores the automatic
+creation of contexts is useful, and most of the examples in the
+LilyPond manuals take advantage of this simplification. But
+occasionally the silent creation of contexts can give rise to
+unexpected new staves or scores. For example, it might be expected
+that the following code would cause all note heads within the
+following staff to be colored red, but in fact it results in two
+staves with the note heads remaining the default black in the lower
+staff.
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.NoteHead #'color = #red
+\new Staff { a }
+@end lilypond
+
+This is because a @code{Staff} context does not exist when the
+override is processed, so one is implicitly created and the override
+is applied to it, but then the @code{\new Staff} command creates
+another, separate, staff into which the notes are placed. The
+correct code to color all note heads red is
+
+@lilypond[quote,verbatim,relative=2]
+\new Staff {
+ \override Staff.NoteHead #'color = #red
+ a
+}
+@end lilypond
+
+As a second example, if a @code{\relative} command is placed inside
+a @code{\repeat} command two staves result, the second offset from
+the first, because the @code{\repeat} command generates two
+@code{\relative} blocks, which each implicitly create @code{Staff}
+and @code{Voice} blocks.
+
+@lilypond[quote,verbatim]
+\repeat unfold 2 \relative { c d e f }
+@end lilypond
+
+The correct way is to reverse the @code{\repeat} and
+@code{\relative} commands, like this:
+
+@lilypond[quote,verbatim]
+\relative {
+ \repeat unfold 2 { c d e f }
+}
+@end lilypond
+
+
+@node Apparent error in ../ly/init.ly
+@unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
+
+Various obscure error messages may appear about syntax errors in
+@code{../ly/init.ly} if the input file is not correctly formed,
+for example, if it does not contain correctly
+matched braces or quote signs.
+
+The most common error is a missing brace, (@code{@}}), at the end of
+a @code{score} block. Here the solution is obvious: check the
+@code{score} block is correctly terminated. The correct structure
+of an input file is described in @rlearning{How LilyPond input files work}.
+Using an editor which automatically highlights matching brackets and
+braces is helpful to avoid such errors.
+
+A second common cause is no white space between the last syllable
+of a lyrics block and the terminating brace, (@code{@}}). Without
+this separation the brace is taken to be part of the syllable. It
+is always advisable to ensure there is white space before and after
+@emph{every} brace. For the importance of this when using lyrics,
+see @ruser{Lyrics explained}.
+
+This error message can also appear if a terminating quote sign,
+(@code{"}), is omitted. In this case an accompanying error message
+@c keep "-matching straight in fancy editors
+should give a line number close to the line in error. The
+mismatched quote will usually be on the line one or two above.
+
+@node Error message Unbound variable %
+@unnumberedsubsubsec Error message Unbound variable %
+
+This error message will appear at the bottom of the console
+output or log file together with a @qq{GUILE signalled an error ...}
+message every time a Scheme routine is called which (invalidly)
+contains a @emph{LilyPond} rather than a @emph{Scheme} comment.
+
+LilyPond comments begin with a percent sign, (@code{%}), and must
+not be used within Scheme routines. Scheme comments begin with a
+semi-colon, (@code{;}).
+
+@node Error message FT_Get_Glyph_Name
+@unnumberedsubsubsec Error message FT_Get_Glyph_Name
+
+This error messages appears in the console output or log file if
+an input file contains a non-ASCII character and was not saved in
+UTF-8 encoding. For details, see @ruser{Text encoding}.
+
+@node Troubleshooting (taking it all apart)
+@subsection Troubleshooting (taking it all apart)
+
+Sooner or later, you will write a file that LilyPond cannot
+compile. The messages that LilyPond gives may help
+you find the error, but in many cases you need to do some
+investigation to determine the source of the problem.
+
+The most powerful tools for this purpose are the
+single line comment (indicated by @code{%}) and the block
+comment (indicated by @code{%@{ ... %@}}). If you don't
+know where a problem is, start commenting out huge portions
+of your input file. After you comment out a section, try
+compiling the file again. If it works, then the problem
+must exist in the portion you just commented. If it doesn't
+work, then keep on commenting out material until you have
+something that works.
+
+In an extreme case, you might end up with only
+
+@example
+\score @{
+ <<
+ % \melody
+ % \harmony
+ % \bass
+ >>
+ \layout@{@}
+@}
+@end example
+
+@noindent
+(in other words, a file without any music)
+
+If that happens, don't give up. Uncomment a bit -- say,
+the bass part -- and see if it works. If it doesn't work,
+then comment out all of the bass music (but leave
+@code{\bass} in the @code{\score} uncommented.
+
+@example
+bass = \relative c' @{
+%@{
+ c4 c c c
+ d d d d
+%@}
+@}
+@end example
+
+Now start slowly uncommenting more and more of the
+@code{bass} part until you find the problem line.
+
+Another very useful debugging technique is constructing
+FIXME FIXME @c @ref{Minimal examples}.
+
+
+@node Minimal examples
+@subsection Minimal examples
+
+A minimal example is an example which is as small as possible. These
+examples are much easier to understand than long examples. Minimal
+examples are used for
+
+@itemize
+@item Bug reports
+@item Sending a help request to mailing lists
+@item Adding an example to the @uref{http://lsr.dsi.unimi.it/,
+LilyPond Snippet Repository}
+@end itemize
+
+To construct an example which is as small as possible, the rule is
+quite simple: remove anything which is not necessary. When trying to
+remove unnecessary parts of a file, it is a very good idea to comment
+out lines instead of deleting them. That way, if you discover that you
+actually @emph{do} need some lines, you can uncomment them, instead of
+typing them in from scratch.
+
+There are two exceptions to the @qq{as small as possible} rule:
+
+@itemize
+@item Include the @code{\version} number.
+@item If possible, use @code{\paper@{ ragged-right=##t @}} at the
+top of your example.
+@end itemize
+
+The whole point of a minimal example is to make it easy to read:
+
+@itemize
+@item Avoid using complicated notes, keys, or time signatures, unless you
+wish to demonstrate something is about the behavior of those items.
+@item Do not use @code{\override} commands unless that is the point of the
+example.
+@end itemize
+
+
+
+@node Make and Makefiles
+@section Make and Makefiles
+
+@cindex makefiles
+@cindex make
+
+Pretty well all the platforms Lilypond can run on support a software
+facility called @code{make}. This software reads a special file called a
+@code{Makefile} that defines what files depend on what others and what
+commands you need to give the operating system to produce one file from
+another. For example the makefile would spell out how to produce
+@code{ballad.pdf} and @code{ballad.midi} from @code{ballad.ly} by
+running Lilypond.
+
+There are times when it is a good idea to create a @code{Makefile}
+for your project, either for your own convenience or
+as a courtesy to others who might have access to your source files.
+This is true for very large projects with many included files and
+different output options (e.g. full score, parts, conductor's
+score, piano reduction, etc.), or for projects that
+require difficult commands to build them (such as
+@code{lilypond-book} projects). Makefiles vary greatly in
+complexity and flexibility, according to the needs and skills of
+the authors. The program GNU Make comes installed on GNU/Linux
+distributions and on MacOS X, and it is also available for Windows.
+
+See the @strong{GNU Make Manual} for full details on using
+@code{make}, as what follows here gives only a glimpse of what it
+can do.
+
+The commands to define rules in a makefile differ
+according to platform; for instance the various forms of Linux and
+MacOS use @code{bash}, while Windows uses @code{cmd}. Note that on
+MacOS X, you need to configure the system to use the command-line
+intepreter. Here are some example makefiles, with versions for both
+Linux/MacOS and Windows.
+
+The first example is for an orchestral work in four
+movements with a directory structure as follows:
+
+@example
+Symphony/
+|-- MIDI/
+|-- Makefile
+|-- Notes/
+| |-- cello.ily
+| |-- figures.ily
+| |-- horn.ily
+| |-- oboe.ily
+| |-- trioString.ily
+| |-- viola.ily
+| |-- violinOne.ily
+| `-- violinTwo.ily
+|-- PDF/
+|-- Parts/
+| |-- symphony-cello.ly
+| |-- symphony-horn.ly
+| |-- symphony-oboes.ly
+| |-- symphony-viola.ly
+| |-- symphony-violinOne.ly
+| `-- symphony-violinTwo.ly
+|-- Scores/
+| |-- symphony.ly
+| |-- symphonyI.ly
+| |-- symphonyII.ly
+| |-- symphonyIII.ly
+| `-- symphonyIV.ly
+`-- symphonyDefs.ily
+@end example
+
+The @code{.ly} files in the @code{Scores} and
+@code{Parts} directories get their notes from @code{.ily}
+files in the @code{Notes} directory:
+
+@example
+%%% top of file "symphony-cello.ly"
+\include ../definitions.ily
+\include ../Notes/cello.ily
+@end example
+
+The makefile will have targets of @code{score} (entire piece in
+full score), @code{movements} (individual movements in full score),
+and @code{parts} (individual parts for performers). There
+is also a target @code{archive} that will create a tarball of
+the source files, suitable for sharing via web or email. Here is
+the makefile for GNU/Linux or MacOS X. It should be saved with the
+name @code{Makefile} in the top directory of the project:
+
+@warning{When a target or pattern rule is defined, the
+subsequent lines must begin with tabs, not spaces.}
+
+@example
+# the name stem of the output files
+piece = symphony
+# determine how many processors are present
+CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
+# The command to run lilypond
+LILY_CMD = lilypond -ddelete-intermediate-files \
+ -dno-point-and-click -djob-count=$(CPU_CORES)
+
+# The suffixes used in this Makefile.
+.SUFFIXES: .ly .ily .pdf .midi
+
+# Input and output files are searched in the directories listed in
+# the VPATH variable. All of them are subdirectories of the current
+# directory (given by the GNU make variable `CURDIR').
+VPATH = \
+ $(CURDIR)/Scores \
+ $(CURDIR)/PDF \
+ $(CURDIR)/Parts \
+ $(CURDIR)/Notes
+
+# The pattern rule to create PDF and MIDI files from a LY input file.
+# The .pdf output files are put into the `PDF' subdirectory, and the
+# .midi files go into the `MIDI' subdirectory.
+%.pdf %.midi: %.ly
+ $(LILY_CMD) $<; \ # this line begins with a tab
+ if test -f "$*.pdf"; then \
+ mv "$*.pdf" PDF/; \
+ fi; \
+ if test -f "$*.midi"; then \
+ mv "$*.midi" MIDI/; \
+ fi
+
+notes = \
+ cello.ily \
+ horn.ily \
+ oboe.ily \
+ viola.ily \
+ violinOne.ily \
+ violinTwo.ily
+
+# The dependencies of the movements.
+$(piece)I.pdf: $(piece)I.ly $(notes)
+$(piece)II.pdf: $(piece)II.ly $(notes)
+$(piece)III.pdf: $(piece)III.ly $(notes)
+$(piece)IV.pdf: $(piece)IV.ly $(notes)
+
+# The dependencies of the full score.
+$(piece).pdf: $(piece).ly $(notes)
+
+# The dependencies of the parts.
+$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
+$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
+$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
+$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
+$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
+$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
+
+# Type `make score' to generate the full score of all four
+# movements as one file.
+.PHONY: score
+score: $(piece).pdf
+
+# Type `make parts' to generate all parts.
+# Type `make foo.pdf' to generate the part for instrument `foo'.
+# Example: `make symphony-cello.pdf'.
+.PHONY: parts
+parts: $(piece)-cello.pdf \
+ $(piece)-violinOne.pdf \
+ $(piece)-violinTwo.pdf \
+ $(piece)-viola.pdf \
+ $(piece)-oboes.pdf \
+ $(piece)-horn.pdf
+
+# Type `make movements' to generate files for the
+# four movements separately.
+.PHONY: movements
+movements: $(piece)I.pdf \
+ $(piece)II.pdf \
+ $(piece)III.pdf \
+ $(piece)IV.pdf
+
+all: score parts movements
+
+archive:
+ tar -cvvf stamitz.tar \ # this line begins with a tab
+ --exclude=*pdf --exclude=*~ \
+ --exclude=*midi --exclude=*.tar \
+ ../Stamitz/*
+@end example
+
+
+There are special complications on the Windows platform. After
+downloading and installing GNU Make for Windows, you must set the
+correct path in the system's environment variables so that the
+DOS shell can find the Make program. To do this, right-click on
+"My Computer," then choose @code{Properties} and
+@code{Advanced}. Click @code{Environment Variables}, and then
+in the @code{System Variables} pane, highlight @code{Path}, click
+@code{edit}, and add the path to the GNU Make executable file, which
+ will look something like this:
+
+@example
+C:\Program Files\GnuWin32\bin
+@end example
+
+The makefile itself has to be altered to handle different shell
+commands and to deal with spaces that are present
+in some default system directories. The @code{archive} target
+is eliminated since Windows does not have the @code{tar} command,
+and Windows also has a different default extension for midi files.
+
+
+@example
+## WINDOWS VERSION
+##
+piece = symphony
+LILY_CMD = lilypond -ddelete-intermediate-files \
+ -dno-point-and-click \
+ -djob-count=$(NUMBER_OF_PROCESSORS)
+
+#get the 8.3 name of CURDIR (workaround for spaces in PATH)
+workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
+ do @@echo %%~sb)
+
+.SUFFIXES: .ly .ily .pdf .mid
+
+VPATH = \
+ $(workdir)/Scores \
+ $(workdir)/PDF \
+ $(workdir)/Parts \
+ $(workdir)/Notes
+
+%.pdf %.mid: %.ly
+ $(LILY_CMD) $< # this line begins with a tab
+ if exist "$*.pdf" move /Y "$*.pdf" PDF/ # begin with tab
+ if exist "$*.mid" move /Y "$*.mid" MIDI/ # begin with tab
+
+notes = \
+ cello.ily \
+ figures.ily \
+ horn.ily \
+ oboe.ily \
+ trioString.ily \
+ viola.ily \
+ violinOne.ily \
+ violinTwo.ily
+
+$(piece)I.pdf: $(piece)I.ly $(notes)
+$(piece)II.pdf: $(piece)II.ly $(notes)
+$(piece)III.pdf: $(piece)III.ly $(notes)
+$(piece)IV.pdf: $(piece)IV.ly $(notes)
+
+$(piece).pdf: $(piece).ly $(notes)
+
+$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
+$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
+$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
+$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
+$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
+$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
+
+.PHONY: score
+score: $(piece).pdf
+
+.PHONY: parts
+parts: $(piece)-cello.pdf \
+ $(piece)-violinOne.pdf \
+ $(piece)-violinTwo.pdf \
+ $(piece)-viola.pdf \
+ $(piece)-oboes.pdf \
+ $(piece)-horn.pdf
+
+.PHONY: movements
+movements: $(piece)I.pdf \
+ $(piece)II.pdf \
+ $(piece)III.pdf \
+ $(piece)IV.pdf
+
+all: score parts movements
+@end example
+
+
+The next Makefile is for a @command{lilypond-book} document done in
+LaTeX. This project has an index, which requires that the
+@command{latex} command be run twice to update links. Output files are
+all stored in the @code{out} directory for .pdf output and in the
+@code{htmlout} directory for the html output.
+
+@example
+SHELL=/bin/sh
+FILE=myproject
+OUTDIR=out
+WEBDIR=htmlout
+VIEWER=acroread
+BROWSER=firefox
+LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
+LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
+PDF=cd $(OUTDIR) && pdflatex $(FILE)
+HTML=cd $(WEBDIR) && latex2html $(FILE)
+INDEX=cd $(OUTDIR) && makeindex $(FILE)
+PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
+
+all: pdf web keep
+
+pdf:
+ $(LILYBOOK_PDF) # begin with tab
+ $(PDF) # begin with tab
+ $(INDEX) # begin with tab
+ $(PDF) # begin with tab
+ $(PREVIEW) # begin with tab
+
+web:
+ $(LILYBOOK_HTML) # begin with tab
+ $(HTML) # begin with tab
+ cp -R $(WEBDIR)/$(FILE)/ ./ # begin with tab
+ $(BROWSER) $(FILE)/$(FILE).html & # begin with tab
+
+keep: pdf
+ cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # begin with tab
+
+clean:
+ rm -rf $(OUTDIR) # begin with tab
+
+web-clean:
+ rm -rf $(WEBDIR) # begin with tab
+
+archive:
+ tar -cvvf myproject.tar \ # begin this line with tab
+ --exclude=out/* \
+ --exclude=htmlout/* \
+ --exclude=myproject/* \
+ --exclude=*midi \
+ --exclude=*pdf \
+ --exclude=*~ \
+ ../MyProject/*
+@end example
+
+TODO: make this thing work on Windows
+
+The previous makefile does not work on Windows. An alternative
+for Windows users would be to create a simple batch file
+containing the build commands. This will not
+keep track of dependencies the way a makefile does, but it at
+least reduces the build process to a single command. Save the
+following code as @command{build.bat} or @command{build.cmd}.
+The batch file can be run at the DOS prompt or by simply
+double-clicking its icon.
+
+@example
+lilypond-book --output=out --pdf myproject.lytex
+cd out
+pdflatex myproject
+makeindex myproject
+pdflatex myproject
+cd ..
+copy out\myproject.pdf MyProject.pdf
+@end example
+
+
+@seealso
+Application Usage:
+FIXME
+@c @rprogram{Setup for MacOS X},
+@rprogram{Command-line usage},
+@rprogram{lilypond-book}
--- /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
+
+@ignore
+hmm, the one big page is too big, but it was really inviting to
+ read. this is not. maybe just scrap this menu and introduction
+ to index?
+@end ignore
+
+@c @setfilename automated-engraving.info
+@c @settitle Obsessed with putting ink on paper
+@c @documentencoding UTF-8
+@c @documentlanguage en
+
+@c @set web
+@c @include macros.itexi
+
+@c @afourpaper
+
+@c @ifnottex
+@c @node Top
+@c @top
+@c @chapheading
+@c @end ifnottex
+
+@node automated-engraving
+@unnumbered Obsessed with putting ink on paper
+@c @finalout
+
+@heading What is behind LilyPond?
+
+@sourceimage{hader-collage,,,.png}
+
+LilyPond is not unique in making music notation: there are a lot of
+programs that print music, and nowadays most of the newly printed
+music is made with computers. Unfortunately, that also shows: just
+ask any musician that plays classical music: new scores do not look as
+nice as old ones.
+
+What is the difference between hand-work and machine work, and what
+has caused it? How can we improve the situation? This essay explains
+problems in music notation (software), and our approach to solving
+them.
+
+@menu
+* introduction:: Introduction -- what is wrong with computer music notation.
+* software:: What is wrong with software -- or how Finale is not the end-all of music software.
+* problem-statement:: How not to design software -- or modeling music notation.
+* divide-and-conquer:: Divide and conqueror -- a blue print for automated notation.
+* implementing-notation:: Impressive, but does it also work in theory -- a practical approach to capturing notation.
+* engraving:: Music engraving -- the art of printing music.
+* implementing-typography:: Implementing typography -- hackers attack the engraving problem.
+* formatting-architecture:: A flexible program architecture -- lets us write engraving software
+* scoring-esthetics:: Beautiful numbers -- how LilyPond participates in the Miss World contests.
+* benchmarking:: Notation benchmarking -- is a flexible architecture enough?
+* schubert:: Notation benchmarking -- project too?
+* typography-features:: Typographical features -- unique to LilyPond.
+* input-format:: Input format -- how to enter music.
+* conclusion:: Conclusion.
+@end menu
+
+@contents
+
+@c This essay is also available in @ref{big-page.html,one big page}.
+
+@include automated-engraving/introduction.itexi
+@include automated-engraving/software.itexi
+@include automated-engraving/problem-statement.itexi
+@include automated-engraving/divide-and-conquer.itexi
+@include automated-engraving/implementing-notation.itexi
+@include automated-engraving/engraving.itexi
+@include automated-engraving/implementing-typography.itexi
+@include automated-engraving/formatting-architecture.itexi
+@include automated-engraving/scoring-esthetics.itexi
+@include automated-engraving/benchmarking.itexi
+@include automated-engraving/schubert.itexi
+@include automated-engraving/typography-features.itexi
+@include automated-engraving/input-format.itexi
+@include automated-engraving/conclusion.itexi
--- /dev/null
+depth = ../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
--- /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
+
+
+
+@node benchmarking
+
+@unnumberedsec Notation benchmarking
+
+A flexible architecture is necessary for good
+formatting. Unfortunately, it is not sufficient. Only a careful
+emulation of printed matter will give a good result. We suggested in
+the introduction to compare program output with existing hand-engraved
+scores. It is exactly this technique that we use to perfect LilyPond
+output. In a way, this is a benchmarking technique: the performance of
+the program, in terms of quality, is measured in relation to a known
+quantity.
+
+Here you see parts of a benchmark piece. At the top the reference
+edition (B@"arenreiter BA 320) at the bottom the output from
+LilyPond 1.4:
+
+@divClass{float-center}
+@c @ref{baer-sarabande-hires.png,
+@sourceimage{baer-sarabande,,,.png}
+@c }
+@divEnd
+
+@divClass{float-center}
+B@"arenreiter (click to enlarge)
+@divEnd
+
+@divClass{float-center}
+@sourceimage{lily14-sarabande,,,.png}
+@divEnd
+
+@divClass{float-center}
+LilyPond 1.4
+@divEnd
+
+The LilyPond output is certainly readable, and for many people it
+would be acceptable. However, close comparison with a hand-engraved
+score showed a lot of errors in the formatting details:
+
+@divClass{float-center}
+@sourceimage{lily14-sarabande-correct,,,.png}
+@divEnd
+
+@divClass{float-center}
+@itemize
+@item
+ Lots of symbols were unbalanced. In particular the trill sign was
+too large.
+
+
+@item
+ Stems and beams were all wrong: the stems were too long, and
+beam should be slanted to cover staff lines exactly. The beam was also
+too light.
+
+
+@item
+ The spacing was irregular: some measures were too tight, other
+too wide.
+
+
+@end itemize
+@divEnd
+
+(And there were missing notes in the original version for LilyPond)
+
+By addressing the relevant algorithms, settings, and font designs, we
+were able to improve the output. The output for LilyPond 1.8 is shown
+below. Although it is not a clone of the reference edition, this
+output is very close to publication quality.
+
+@divClass{float-center}
+@sourceimage{lily17-sarabande,,,.png}
+@divEnd
+
+@divClass{float-center}
+LilyPond 1.8
+@divEnd
+
+@divClass{float-center}
+@sourceimage{baer-sarabande,,,.png}
+@divEnd
+
+@divClass{float-center}
+B@"arenreiter
+@divEnd
+
+Another example of benchmarking is our project for the 2.1 series, a
+@ref{schubert,Schubert song}.
+
+@divClass{float-right}
+Next: @ref{typography-features,Cool features},
+typographical hoops that we made LilyPond jump through.
+@divEnd
--- /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
+
+
+
+@node conclusion
+
+@unnumberedsec Conclusion
+
+We have shown you what engraved music should look like, and how we built
+our software to emulate that look. We have put a lot of effort into
+building it. Thanks to all that hard work, you can
+
+FIXME
+
+@c @ref{@DEPTH@switch/tour.html,use the program to print nice music too}.
+
+To complete the reading of this essay, you may want to have a look at
+
+FIXME
+
+@c @ref{@DEPTH@about/pubs.html,publications and articles},
+especially @uref{http://www.musicbyandrew.ca/finale-lilypond-1.html,Andrew
+Hawryluk's writings}, which include Finale and LilyPond notation
+benchmarking.
+
+@c @divClass{float-right}
+@c @divEnd
+@c Go @ref{Top,back} to the top.
--- /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
+
+
+@node divide-and-conquer
+@unnumberedsec Plan de campagne
+
+Since content and form of a score are separate, we have to match that
+in the design of software. Hence, the basic blueprint of our program
+should follow this scheme
+
+@multitable @columnfractions .3 .3 .3
+@item
+
+@sourceimage{simple-notation,,,.png}
+
+
+@tab
+
+@result{}
+
+
+@tab
+
+@code{@{ c'4 d'8 @}}
+
+
+
+
+@item
+
+1. form
+
+
+@tab
+
+2. translation
+
+
+@tab
+
+3. content
+
+
+
+
+@end multitable
+
+In effect, we are conquering the problem by dividing it into
+subproblems
+
+@enumerate 1
+@item
+Typography: @strong{where} to put symbols
+
+@item
+Notation: @strong{what} symbols to produce
+@item
+Representation: how to @strong{encode} music
+@end enumerate
+
+Finally, whenever you subdivide a problem, a new problem is created,
+@enumerate 4
+
+
+@item
+ Architecture: glue everything @strong{together}
+
+@end enumerate
+
+@divClass{float-right}
+Next: @ref{implementing-notation,Impressive, but does it also
+work in theory}? A practical approach to capturing notation.
+@divEnd
--- /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
+
+@node engraving
+@unnumberedsec Music engraving
+
+@sourceimage{hader-slaan,,,.png}
+
+
+When we know what symbols to print, we have to decide where to put
+them so the the result looks pleasing. This art is called @emph{music
+engraving}. The term derives from the traditional process of
+music printing. Only a few decades ago, sheet music was made by
+cutting and stamping the music into zinc or pewter plates in mirror
+image. The plate would be inked, and the depressions caused by the
+cutting and stamping would hold ink. An image was formed by pressing
+paper to the plate. The stamping and cutting was completely done by
+hand. Making corrections was cumbersome, so engraving had to be done
+correctly in one go. Of course, this was a highly specialized skill
+
+
+@itemize
+@item
+ Music engraving is a traditional craft, and was learned in
+practice. An accomplished master had to complete around 10 years of
+practice.
+
+
+@item
+ Most of the knowledge was passed from master to apprentice during
+practical training. Consequently, little has been explicitly laid down
+about the rules of elegant engraving.
+
+
+@item
+ Finally, engraving is about selecting proper distance and
+blackness for scores. @sourceimage{stone-distance,,,.png} The
+quality of the end result must be judged visually. This is virtually
+impossible to capture in formal rules.
+
+
+@end itemize
+
+@divClass{float-right}
+Next: @ref{implementing-typography,Stamping computer
+screens?}. Computer hackers take over the engraving business.
+@divEnd
--- /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
+
+
+
+@node formatting-architecture
+
+@unnumberedsec A flexible formatting architecture
+
+Remember the music notation problem? Its solution left us with a
+bunch of objects. The formatting architecture is built on these
+objects. Each object carries variables:
+
+@itemize
+@item
+ Variables control layout decisions. For example, many objects
+have a @code{direction} variable that encodes the choice between up
+and down (or left and right). Here you see two chords, with accents
+and arpeggio. In the first chord, the objects have all directions down
+(or left). The second chord has all directions up (right).
+
+@divClass{float-center}
+@sourceimage{directions-updown,,,.png}
+@divEnd
+
+The process of formatting a score consists of reading and writing
+object variables.
+
+
+
+@item
+Some variables have a preset value. For example, the thickness of
+ many lines – a characteristic of typographical style – are preset
+ variables. Changing them gives a different typographical impression:
+
+@divClass{float-center}
+@sourceimage{thickness-tweaks,,,.png}
+@divEnd
+
+@item
+Formatting rules are also preset variables: each object has
+variables containing procedures. These procedure perform the actual
+formatting, and by substituting different ones, we can change
+behavior. In the following example, the rule that note head objects
+use to draw their symbol is changed during the music fragment:
+
+@divClass{float-center}
+@sourceimage{mc-squared,,,.png}
+@divEnd
+
+@end itemize
+
+@divClass{float-right}
+Next:
+ @ref{scoring-esthetics,Beautiful numbers}: how
+LilyPond participates in the Miss World contests.
+@divEnd
--- /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
+
+
+
+@node implementing-notation
+
+@unnumberedsec Music notation
+
+Common music notation encompasses some 500 years of music. Its
+applications range from monophonic melodies to monstruous counterpoint
+for large orchestras. How can we get a grip on such a many-headed
+beast? Our solution is to make a strict distinction between notation,
+@emph{what} symbols to use, and engraving, @emph{where} to put
+them. For tackling notation, we have broken up the problem into
+digestible (and programmable) chunks: every type of symbol is handled
+by a separate plugin. All plugins cooperate through the LilyPond
+architecture. They are completely modular and independent, so each
+can be developed and improved separately.
+
+@itemize
+@item
+The most basic plug-in creates Note-heads:
+
+@divClass{float-center}
+@sourceimage{engraver-noteheads,,,.png}
+@divEnd
+
+This plug-in creates graphical objects from musical events. People
+that put graphics to musical ideas are called copyists or engravers,
+so by analogy, this plug-in is called @code{Note_head_engraver}.
+
+
+@item
+ The @code{Staff_symbol_engraver} generates the object
+representing the staff lines.
+
+@divClass{float-center}
+@sourceimage{engraver-staff,,,.png}
+@divEnd
+
+@item
+
+ The @code{Clef_engraver} tells @code{Note_head_engraver} how high
+each head should be placed.
+
+@divClass{float-center}
+@sourceimage{engraver-clef,,,.png}
+@divEnd
+
+
+
+@item
+
+For the flags and stems we add a @code{Stem_engraver}:
+
+@divClass{float-center}
+@sourceimage{engraver-stem,,,.png}
+@divEnd
+
+This engraver is notified of any note head coming along. Every time
+one (or more, for a chord) note head is seen, a stem object is
+created, and attached to the note head.
+
+@item
+
+Beams, slurs, accents are handled by separate engravers. Like the
+@code{Stem_engraver}, they create objects and connect them to stems,
+note heads, etc.:
+
+@divClass{float-center}
+@sourceimage{engraver-slur,,,.png}
+@divEnd
+
+
+
+@item
+
+Accidentals, bar lines, time signature, and key signature each have a
+separate
+engraver.
+
+@divClass{float-center}
+@sourceimage{engraver-acc,,,.png}
+@divEnd
+
+The @code{Accidental_engraver} is the most complex plug-in: it has
+to look at the key signature, note pitches, ties, and bar lines to
+decide when to print accidentals.
+
+
+@end itemize
+
+
+@c @unnumberedsec Polyphonic notation
+@heading Polyphonic notation
+
+The system shown in the last section works well for monophonic music,
+but what about polyphony? In polyphonic notation, many voices can
+share a staff:
+
+@divClass{float-center}
+@sourceimage{engraver-final,,,.png}
+@divEnd
+
+In this situation, the accidentals and staff are shared, but the
+stems, slurs, beams, etc. are private to each voice. Hence, engravers
+should be grouped. The engravers for note head, stems, slurs, etc. go
+into a group called "Voice context," while the engravers for key,
+accidental, bar, etc. go into a group called "Staff context." In the
+case of polyphony, a single Staff context contains more than one Voice
+context. Similarly, more Staff contexts can be put into a single
+Score context:
+
+@divClass{float-center}
+@sourceimage{engraver-score,,,.png}
+@divEnd
+
+@divClass{float-right}
+Next: @ref{engraving,The art of stamping}:
+how @emph{did} they make hand-made music?
+@divEnd
--- /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
+
+
+
+
+@node implementing-typography
+
+
+@unnumberedsec Implementing typography
+
+How do we go about implementing typography? Answering the "music
+notation" problem left us with a bunch of graphic objects
+representing note heads, the staff, stems, etc.
+
+If craftsmen need over ten years to become true masters, how could we
+simple hackers ever write a program to take over their jobs?
+
+The answer is: we cannot! Since typography relies on human judgement
+of appearance, people cannot be replaced. However, much of their dull
+work can be automated: if LilyPond solves most of the common
+situations correctly, then this will be a huge improvement over
+existing software. The remaining cases can be tuned by hand.
+Over the course of years, the software can be refined to do
+more and more automatically, so manual overrides are necessary less
+and less.
+
+How do we go about building such a system? When we started, we wrote
+the program in C++. Essentially, this means that the program
+functionality is set in stone by us developers. That proved to be
+unsatisfactory:
+
+@itemize
+@item
+ If things must be tuned by hand, then the user must access to the
+ formatting engine. Hence, rules and settings cannot be fixed at
+ compile time, but they must be accessible at run-time.
+
+
+@item
+ Engraving is a matter of visual judgement, and hence it is a
+ matter of taste. As knowledgeable as we are, users can disagree with
+ our personal decision. Therefore, the definitions of typographical
+ style must also be accessible to the user.
+
+
+@item
+ Finally, we continually refine the formatting algorithms, so we
+ need a flexible approach to rules. The C++ language forces a certain
+ method of grouping rules that does not match how music notation works.
+
+
+@end itemize
+
+Clearly, there is a need for a flexible architecture. The architecture
+should encompass formatting rules, typographical style and individual
+formatting decisions.
+
+@divClass{float-right}
+Next: @ref{formatting-architecture,Program architecture,
+your flexible friend}: tuning, tweaking and developing typography
+rules.
+@divEnd
--- /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
+
+
+
+@node input-format
+
+@unnumberedsec Input format
+
+As discussed earlier, the ideal input format for a music engraving
+system is the content: the music itself. This poses a formidable
+problem: how can we define what music really @emph{is}? Our way out
+of this problem, is to reverse it. Instead of defining what music is,
+our program serves as a definition: we write a program capable of
+producing sheet music, and adjust the format to be as lean as
+possible. When the format can no longer be trimmed down, by
+definition we are left with content itself.
+
+The syntax is also the user-interface for LilyPond, hence it is easily
+typable, e.g.,
+
+@verbatim
+
+ c'4 d'8
+
+@end verbatim
+Are a quarter note C1 and eighth note D1, as in this example:
+
+@divClass{float-center}
+@sourceimage{simple-notation,,,.png}
+@divEnd
+
+On a microscopic scale, such syntax is easy to use. On a larger scale,
+syntax also needs structure. How else can you enter complex pieces
+like symphonies and operas? The structure is formed by the concept of
+music expressions: by combining small fragments of music into larger
+ones, more complex music can be expressed. For example,
+
+@multitable @columnfractions .5 .5
+@item
+
+c4
+
+@tab
+
+@sourceimage{simultaneous-0,,,.png}
+
+
+@end multitable
+
+Combine this simultaneously with two other notes by enclosing in <<
+and >>.
+
+@multitable @columnfractions .5 .5
+
+@item
+
+@verbatim
+
+ <<c4 d4 e4>>
+
+@end verbatim
+
+
+@tab
+
+@sourceimage{simultaneous-1,,,.png}
+
+
+
+@end multitable
+
+This expression is put in sequence by enclosing it in braces, i.e.,
+@multitable @columnfractions .5 .5
+@item
+
+@verbatim
+
+ { <<c4 d4 e4>> f4 }
+@end verbatim
+
+
+@tab
+
+@sourceimage{simultaneous-2,,,.png}
+
+
+
+@end multitable
+
+The above is another expression, and therefore, it may be combined
+again with a simultaneous expression (in this case, a half note).
+
+@multitable @columnfractions .5 .5
+@item
+
+@verbatim
+
+<< { <<c4 d4 e4>> f4 } g2 >>
+
+@end verbatim
+
+
+@tab
+
+@sourceimage{simultaneous-3,,,.png}
+
+
+
+
+@end multitable
+
+Such recursive structures can be specified neatly and formally in a
+@emph{context-free grammar}. The parsing code is also generated
+from this grammar. In other words, the syntax of LilyPond is clearly
+and unambiguously defined.
+
+User-interfaces and syntax are what people see and deal with
+most. They are partly a matter of taste, and also subject of much
+discussion. Although discussions on taste do have their merit, they
+are not very productive. In the larger picture of LilyPond, the
+importance of input syntax is small: inventing neat syntax is easy,
+writing decent formatting code is much harder. This is also
+illustrated by the line-counts for the respective components: parsing
+and representation take up less than 10% of the code.
+
+@multitable @columnfractions .5 .5
+@item
+Parsing + representation
+@tab
+@item
+total
+@tab
+@item
+6000 lines C++
+@tab
+61500 lines C++
+@end multitable
+
+@ignore
+ TODO :
+
+ blurbs about lilypond today
+
+ future?
+@end ignore
+
+@divClass{float-right}
+Next: @ref{conclusion,wrapping it up}, the conclusion.
+@divEnd
--- /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
+
+
+
+@node introduction
+
+@unnumberedsec What is wrong with computer music notation?
+
+We like to call LilyPond an "automated engraving system." It will
+format music notation beautifully without requiring typographical
+expertise of its users.
+
+LilyPond is not unique in making music notation: there are a lot of
+programs that print music, and nowadays most of the newly printed
+music is made with computers. Unfortunately, that also shows: just
+ask any musician that plays classical music: new scores do not look as
+nice as old (from before, say, 1970) scores: the new ones have a
+bland, mechanical look. They are not at all pleasurable to play from.
+
+To illustrate this, take a look at the following examples. Both are
+editions of the 1st Cello Suite by J.S.Bach. The one on the left is a
+very beautifully hand-engraved edition from 1950, the one on the right
+is a typical contemporary computer product. Take a few seconds to let
+the looks of both pages sink in. Which one do you like better, and
+why?
+
+@ifnottex
+@multitable @columnfractions .5 .5
+@item
+
+@sourceimage{baer-suite1-fullpage,,,.png}
+
+@tab
+
+@sourceimage{henle-suite1-fullpage,,,.png}
+
+
+
+@item
+B@"arenreiter (BA 320, (c) 1950)
+
+@tab
+Henle (nr. 666 (c) 2000)
+
+@end multitable
+@end ifnottex
+
+The left picture looks nice: it has flowing lines and movement. It's
+music, and it's alive. Now, the picture on the right shows the same
+music, and it was written by Bach. His music surely has liveliness
+and flowing lines.... Except, the score doesn't show it: it looks
+rigid and mechanical. To understand better why that is, let's blow up
+a fragment of both pieces:
+
+@divClass{float-center}
+@sourceimage{baer-suite1-line,,,.png}
+@divEnd
+
+@divClass{float-center}
+Hand-made
+@divEnd
+
+@*
+
+@divClass{float-center}
+@sourceimage{henle-suite1-line,,,.png}
+@divEnd
+
+@divClass{float-center}
+Computer-made
+@divEnd
+
+The location of the bar lines is a giveaway. In the new edition,
+both barlines are on exactly the same horizontal location. Also, the
+note heads are on the exact same horizontal location. When you look
+back at the whole page, you can easily verify that almost all barlines
+are in the same location, as are most of the note heads. The entire
+thing is spaced as if it were put to a big grid, which is what causes
+the mechanical impression.
+
+This is not the only error on this example, and more importantly, this
+piece is not the only one with typographical errors. Sadly, almost
+all music printed nowadays is full of basic typographical mistakes.
+
+Musicians are usually more absorbed with performing the music than
+with studying its looks, so this nitpicking about typographical
+details may seem academical. That is not justified. This piece here
+has a monotonous rhythm. If all lines look the same, they become like
+a labyrinth. If the musician looks away once or has a lapse in his
+concentration, he will be lost on the page.
+
+In general, this is a common characteristic of typography. Layout
+should be pretty, not only for its own sake, but especially because it
+helps the reader in his task. For performance material like sheet
+music, this is doubly important: musicians have a limited amount of
+attention. The less attention they need for reading, the more they can
+focus on playing itself. In other words, better typography translates
+to better performances.
+
+@divClass{float-right}
+Next: @ref{software,What is wrong with software}, or how
+Finale is not the end-all of music software.
+@divEnd
--- /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
+
+
+
+
+@node problem-statement
+@unnumberedsec Designing notation software: how not to do it
+
+It would be nice if notation software didn't need any babysitting to
+produce acceptable output.
+
+Our goal with @emph{LilyPond} was to write such a system: a program
+that will produce beautiful music ("engraving") automatically.
+
+At first sight, music notation follows a straightforward hierarchical
+pattern. Consider the example below, with two staves containing two
+measures.
+
+@sourceimage{naive-notation,,,.png}
+
+Isn't writing software all about finding hierarchies and modeling the
+real world in terms of trees? In the view of a naive programmer, the
+above fragment of notation is easily abstracted to a nested set of
+boxes
+
+@sourceimage{naive-notation-uml,,,.png}
+
+It's easy to follow this model when writing software. It's obvious
+how to store this data in memory, and writing on disk can be easily
+mirrored. In an XML-file you could write something like
+
+@verbatim
+
+ <score>
+ <staff>
+ <measure id="1">
+ <chord length="1/2">
+ <pitch name="c">
+ </chord>
+ <chord>
+
+ ....
+ </measure>
+ </staff>
+ </score>
+
+@end verbatim
+
+In short, this model is obvious, simple and neat. It's the format
+used by a lot software. Unfortunately, it's also wrong. The
+hierarchical representation works for a lot of simpler music, but it
+falls apart for advanced use. Consider the following example:
+
+@sourceimage{nonnaive-notation,,,.png}
+
+In this example, several assumptions of the previous model are
+violated: staves start and stop at will, voices jump around between
+staves, and sometimes span two staves.
+
+Music notation is really different from music itself. Notation is an
+intricate symbolic diagramming language for visualizing an often much
+simpler musical concept. Hence, software should reflect that separation.
+
+@divClass{float-right}
+Next: @ref{divide-and-conquer,Divide and conqueror},
+a blue print for automated notation
+@divEnd
--- /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
+
+
+@node schubert
+@unnumberedsec S@"angers Morgenlied, by Franz Schubert
+
+The benchmarking project for the LilyPond 2.1.x series, was the
+Ed. Peters version of a Schubert song.
+
+The result of 2.1.5 was nice, but certainly not perfect,
+
+@sourceimage{bench-morgenlied,,,.png}
+
+Here is the original,
+
+@sourceimage{morgenlied-crop-2,,,png}
+
+and the result of LilyPond 2.1.35.
+
+@sourceimage{morgenlied-ly-crop2,,,.png}
+
+This is a page from a song-book, which is printed in a smaller format.
+Normal print uses 20 pt staff height, this uses 17 pt. In smaller
+print, staff lines should be relatively thicker. To match the thicker
+lines, the music symbols should also be relatively heavier. Both have
+been implemented in LilyPond 2.1. The difference is hard to see here,
+due to the limited resolution of computer screens. For a more detailed
+view, see the LilyPond PDF, available
+
+@uref{http://lilypond.org/documentation/v2.2/input/mutopia/F.Schubert/out-www/morgenlied.pdf,here}.
+
+@divClass{float-right}
+@ref{benchmarking,Back to the essay}
+@divEnd
--- /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
+
+
+@node scoring-esthetics
+@unnumberedsec Beautiful numbers
+
+How do we actually make formatting decisions? In other words, which
+of the three configurations should we choose for the following slur?
+
+@sourceimage{slur-esthetics,,,.png}
+
+There are a few books on the art of music engraving
+available. Unfortunately, they contain rules of simple thumbs and some
+examples. Such rules can be instructive, but they are a far cry from
+an algorithm that we could readily implement in a computer. Following
+the instructions from literature leads to algorithms with lots of
+handcoded exceptions. Doing all this case analysis is a lot of work,
+and often not all cases are covered completely.
+
+@divClass{float-center}
+@sourceimage{ross-beam-scan,,,.png}
+@divEnd
+
+@divClass{float-center}
+@emph{Formatting rules defined by example. Image from Ted Ross' The Art of
+Music Engraving}
+@divEnd
+
+We have developed a much easier and robust method of determining the
+best formatting solution: score based formatting. The principle is the
+same as a beauty contest: for each possible configuration, we compute an
+ugliness score. Then we choose the least ugly configuration.
+
+@sourceimage{slur-esthetics-annotate-1,,,.png}
+
+For example, in the above configuration, the slur nicely connects the
+starting and ending note of the figure, a desirable trait. However, it
+also grazes one note head closely, while staying away from the others.
+Therefore, for this configuration, we deduct a `variance' score of
+15.39.
+
+@sourceimage{slur-esthetics-annotate-2,,,.png}
+
+In this configuration, the slur keeps a uniform distance from the
+heads, but we have to deduct some points because the slur doesn't
+start and end on the note heads. For the left edge, we deduct 1.71,
+and for the right edge (which is further from the head) we deduct 9.37
+points.
+
+Furthermore, the slur goes up, while the melody goes down. This incurs
+a penalty of 2.00 points
+
+@sourceimage{slur-esthetics-annotate-3,,,.png}
+
+Finally, in this configuration, only the ending the slur is far away
+from the ending note head, at a score of 10.04 ugliness points.
+
+Adding up all scores, we notice that the third option is the least
+ugly, or most beautiful version. Hence we select that one.
+
+This technique is a general technique, and it is used in a lot of
+situations, for example
+
+@itemize
+@item
+ determining beam slopes
+
+@sourceimage{beam-scoring-example,,,.png}
+
+@item
+ formatting tied chords
+
+@sourceimage{ties-scoring-example,,,.png}
+@item
+ formatting dotted chords
+
+
+@item
+ line breaking
+
+@item
+ page breaking
+
+@end itemize
+
+This technique evaluates a lot of possibilities, which takes some time
+to compute. However, that is a worthwhile expense, because the end
+result is much better, and because it makes our lives easy.
+
+@divClass{float-right}
+Next: @ref{benchmarking,Man is the measure of things}: is a
+flexible architecture enough?
+@divEnd
--- /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
+
+
+
+@node software
+@unnumberedsec What is wrong with music notation software
+
+Computers have made music printing accessible to the masses, but they
+tend to deliver mediocre typography. Apparently, programmers have
+been doing a shoddy job on notation programs. To illustrate that, we
+had an amateur user set a piece of music in one of the most popular
+@quotedblleft{}professional@quotedblright{} notation programs sold today, Finale
+2003. It was made with all of the default settings. The music is from
+the Sarabande of the 2nd Cello Suite by J. S. Bach.
+
+@emph{
+(Finale is a registered trademark of MakeMusic! Inc.)
+}
+
+@divClass{float-center}
+@sourceimage{finale-sarabande-full,,,.png}
+@divEnd
+
+This example far surpasses the previous one when it comes to
+formatting errors: there are serious errors in literally
+@emph{every} measure. The errors come in all sizes: a big one is the
+oddly s p a c e d @ o u t last line. A smaller one is the flat in
+measure 13, which is covered by the note preceding it. Here is a
+magnification of that measure:
+
+@divClass{float-center}
+@sourceimage{finale-flat-detail,,,.png}
+@divEnd
+
+The errors go down to the teensy details: below is a blowup of the
+beam in that measure. Of course, in proper typography the beam should
+not stick out to the right of the stem, and the ribbles provide a
+telling glimpse into Coda Music Technology programmers' aptness (or
+lack thereof) with the underlying PostScript technology.
+
+@divClass{float-center}
+@sourceimage{finale-beam-detail,,,.png}
+@divEnd
+
+Now, one could refute that Finale has a graphical interface, and it
+lets you easily move about elements to correct errors, or use plug-ins
+to do so. This is certainly true: in fact, good professional
+engravers that use Finale typically spend the majority of their time
+correcting all the errors that Finale routinely makes. But do you
+want to spend your time on correcting all glaring errors? For the
+spaced out line, it is doable, but imagine that you have to correct
+each and every beam that sticks out of the stems.... by hand?
+
+There is a less obvious reason why correcting things by hand is a bad
+idea. Consider again measure 13 reproduced above. The misplaced flat
+is pretty obvious, but did you notice that repeat bar? Its lines are
+too far apart. Did you notice that the eighth rest is too far down?
+Did it occur to you that the stem of the last eighth note is too long?
+
+@divClass{float-center}
+@sourceimage{finale-flat-correct,,,.png}
+@divEnd
+
+Unless you are an expert, typographical errors will irk you without
+being obvious. Many of them will go uncorrected and will still be in the
+final print.
+
+This example may seem contrived, but in fact, it's not. All
+major producers of notation software claim to follow engraving
+standards, but we have not seen any that gets the basics right; all of
+them make systematic mistakes. If you want to assess the output of your
+favorite program, then buy a decent hand-made score from a respectable
+publisher, and try to reproduce one page of it. Then compare them:
+
+@itemize
+@item
+
+How does the page layout compare? Typically, computer scores are more
+widely spaced so they take up more pages, meaning more annoying page
+turns.
+
+
+@item
+
+How does the spacing compare? Is it as lively and flowing as the
+hand-made score? If in doubt, try measuring both with a ruler.
+
+
+@item
+
+Put both on a music stand, 1 meter away; that is not uncommon when
+performing. Can you read both pages? Almost all computer scores have
+an anemic look: they use lines which are too thin, and symbols which
+are too light. That makes them hard to read from a distance. If in
+doubt, measure the difference with a magnifying glass.
+
+
+@end itemize
+
+@divClass{float-right}
+Next: @ref{problem-statement,How not to design software},
+or: modeling music notation.
+@divEnd
--- /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
+
+
+
+@node typography-features
+
+@unnumberedsec Font design
+
+A large factor that makes LilyPond output look traditional lies in the
+blackness of the page. By using heavy stafflines, and a font design to
+match that, the overall impression is much stronger. This is also very
+clear from the following blowups:
+
+@multitable @columnfractions .3 .3 .3
+@item
+
+@sourceimage{henle-flat-gray,,,.png}
+
+@tab
+
+@sourceimage{baer-flat-gray,,,.png}
+
+@tab
+
+@sourceimage{lily-flat-bw,,,.png}
+
+
+@item
+Henle (2000)
+
+@tab
+B@"arenreiter (1950)
+
+@tab
+LilyPond (2003)
+
+
+
+@end multitable
+
+Another typical aspect of hand-engraved scores is the general look of
+the symbols. They almost never have sharp corners. This is because
+sharp corners of the punching dies are fragile and quickly wear out
+when stamping in metal. The general rounded shape of music symbols is
+also present in all glyphs of our "Feta" font.
+
+
+
+
+@c @unnumberedsec Spacing
+@heading Spacing
+
+One of the problems that the Bach piece above inspired us to attack
+is the spacing engine. One of its features is optical spacing.
+It is demonstrated in the fragment below.
+
+@divClass{float-center}
+@sourceimage{spacing-with-corr,,,.png}
+@divEnd
+
+@divClass{float-center}
+@sourceimage{spacing-no-corr,,,.png}
+@divEnd
+
+This fragment only uses quarter notes: notes that are played in a
+constant rhythm. The spacing should reflect that. Unfortunately, the
+eye deceives us a little: not only does it notice the distance between
+note heads, it also takes into account the distance between
+consecutive stems. As a result, the notes of an up-stem/down-stem
+combination should be put farther apart, and the notes of a down-up
+combination should be put closer together, all depending on the
+combined vertical positions of the notes. The top fragment is printed
+with this correction, the bottom one without. In the last case, the
+down-stem/up-stems combinations form clumps of notes.
+
+
+@c @unnumberedsec Ledger lines
+@heading Ledger lines
+
+Ledger lines are typographically difficult. They can easily blot
+together with other signs, such as ledger lines or
+accidentals. Other software prevents these collisions by spacing the
+lines wider (thus taking up more space), or shortening ledger lines
+(which hampers readability.)
+
+@multitable @columnfractions .3 .3 .3
+@item
+
+@sourceimage{henle-ledger,,,.png}
+
+@tab
+
+@sourceimage{baer-ledger,,,.png}
+
+
+
+@tab
+
+@sourceimage{lily-ledger,,,.png}
+
+
+@item
+Henle (2000)
+
+@tab
+B@"arenreiter (1950)
+
+@tab
+LilyPond (2004)
+
+
+
+@end multitable
+
+Traditional engravers would adjust the size of a ledger line,
+depending on what symbols were in the neighborhood. LilyPond does the
+same. Ledgers are shortened so they never collide with neighboring
+lines, and they are shortened when there is an accidental.
+
+@divClass{float-right}
+Next: @ref{input-format,Use the Source Luke}, or: what
+goes into LilyPond.
+@divEnd
+++ /dev/null
-# Documentation/bibliography/Makefile
-
-depth=../..
-
-OUT_BIB_FILES = $(addprefix $(outdir)/, $(BIB_FILES))
-EXTRA_DIST_FILES= $(BIB_FILES) $(call src-wildcard,*.bst)
-BIB_FILES= $(call src-wildcard,*.bib)
-
-STEPMAKE_TEMPLATES=tex documentation
-LOCALSTEPMAKE_TEMPLATES=lilypond ly
-
-include $(depth)/make/stepmake.make
-
-dvi: $(DVI_FILES) $(OUT_BIB_FILES)
-
-ps: $(PS_FILES)
-
-default:
-
-GENHTMLS = engraving colorado computer-notation
-OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html))
-
-ifeq ($(out),www)
-local-WWW-2: $(addprefix $(outdir)/, $(BIB_FILES:.bib=.html) index.html)
-endif
-
-$(outdir)/%.bib: %.bib
- ln -f $< $@
-
-$(outdir)/%.html: %.bib
- BSTINPUTS=$(src-dir) $(buildscript-dir)/bib2html -o $@ $<
-
-local-clean:
- rm -f fonts.aux fonts.log feta*.tfm feta*.*pk
+++ /dev/null
-%
-% TITLE=University of Colorado Engraving music bibliography
-% AUTHOR=Alyssa Lamb (edited & converted to bibtex by HWN)
-%
-
-@Book {jacob47:_music,
- author ={Jacob, Archibald},
- year=1947,
- title = {Musical handwriting : or, How to put music on paper : A handbook for all musicians, professional and amateur},
- address ={London},
- publisher ={Oxford University Press},
- note = {subject: Musical notation},
-}
-
-@Book{brandt:_stand_chord_symbol_notat,
- author ={Carl Brandt and Clinton Roemer},
- title = {Standardized Chord Symbol Notation},
- address={Sherman Oaks, CA},
- publisher={Roerick Music Co.},
- note ={subject: musical notation},
-}
-
-@Book{johnson46:_how,
- author = {Johnson, Harold M},
- year = 1946,
- title = {How to write music manuscript an exercise-method handbook for the music student, copyist, arranger, composer, teacher},
- publisher={Carl Fischer, Inc.},
- address= {New York},
- note = {subject: Musical notation --Handbooks, manuals},
-}
-
-@Book{sadie90:_music_print_publis,
- title = {Music Printing & Publishing},
- author ={Donald W. Krummel \& Stanley Sadie},
- year = 1990,
- publisher= {Macmillan Press},
- note ={subject: musical notation},
-}
-
-@Book{foss:_music_print,
- author={Foss, Hubert},
- title = {Music Printing},
- series = {Practical Printing and Binding},
- address={London},
- publisher={Oldhams Press Ltd., Long Acre},
- note ={subject: musical notation},
-}
-
-@Book{steele03:_earlies_englis_music_print,
- author = {Steele, Robert},
- year = 1903,
- title = {The Earliest English Music Printing},
- address={London},
- note= {subject: history of music printing and engraving},
-}
-
-@Book{austin:_story_music_print,
- author={Austin, Ernest},
- title = {The Story of Music Printing},
- address={London},
- publisher={Lowe and Brydone Printers, Ltd.},
- note= {subject: history of music printing and engraving},
-
-}
-
-
-
-@Book{?:_pictor_histor_music_print,
- author={?},
- title = {Pictoral History of Music Printing},
- address={Elhardt, Indiana},
- publisher={H. and A. Selmer, Inc.},
- note= {subject: history of music printing and engraving},
-
-}
-
-@Book{wintermitz55:_music_autog_montev_hindem,
- author = {Wintermitz, Emmanuel},
- year = 1955,
- title = {Musical Autographs from Monteverdi to Hindemith},
- address={Princeton},
- publisher={Princeton University Press},
- note= {subject: history of music printing and engraving},
-
-}
-
-
-@Book{novello47:_some_accoun_method_music_print,
-
- author = {Novello, A},
- year = 1847,
- title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters},
- address={London},
- note={ subject: history of music printing and engraving},
-}
-
-@Book{chrsander18:_sketc_histor_music,
- author={Chrsander, F.},
- year={18??},
- title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century},
- note={ subject: history of music printing and engraving},
-}
-
-@Article {squire1897,
- author = {Squire, W},
- year = 1897,
- title = {Notes on Early Music Printing},
- journal = {Bibliographica},
- volume={iii},
- number=99,
- note={ subject: history of music printing and engraving},
-
-}
-
-@Article{meyer35:_print_music,
- author = {Meyer, K. and O'Meara, J},
- year = 1935,
- title = {The Printing of Music, 1473-1934},
- journal = {The Dolphin},
- volume={ ii},
- pages={ 171--207},
- note={ subject: history of music printing and engraving},
-
-}
-%% 4th ver.,
-@Article{pattison39:_notes_early_music_print,
- author = {Pattison, B},
- year = 1939,
- title = {Notes on Early Music Printing},
- journal = {The Library},
- note={subject: history of music printing and engraving},
- volume={xix},
- pages={389-421},
-}
-
-@Book{king64:_four_hundr_years_music_print,
- author = {King, H},
- year = 1964,
- title = {Four Hundred Years of Music Printing},
- address={London},
- note={ subject: history of music printing and engraving},
-}
-
-
-%(Rev.1961).
-@Book{deutsch46:_music_number,
- author={Deutsch, O.F.},
- year =1946,
- title = {Music Publishers' Numbers},
- address={London},
- note={ subject: history of music printing and engraving},
-}
-
-@Book{marco62:_earlies_music_print_contin_europ,
- author = {Marco, G.A},
- year = 1962,
- title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work},
- address={Charlottesville, Virginia},
- note={ subject: history of music printing and engraving},
-}
-
-@Article{kinkeldey32:_music_and_music_print_incun,
- author = {Kinkeldey, O},
- year = 1932,
- title = {Music And Music Printing in Incunabula},
- journal = {Papers of the Bibliographical Society of America},
- volume={ xxvi},
- pages={89-118},
- note={ subject: history of music printing and engraving},
-}
-
-@Book{oldman34:_collec_music_first_edition,
- author = {Oldman, C.B},
- year = 1934,
- title = {Collecting Musical First Editions},
- address={London},
- note={ subject: history of music printing and engraving},
-}
-
-@Book{carter34:_new_paths_book_collec,
- author={Carter, J},
- year=1934,
- title = {New Paths in Book Collecting},
- address={London},
- note={ subject: history of music printing and engraving},
-}
-
-@Book{krummel58:_graph_analy_applic_early_americ_engrav_music,
- author={Krummel, D.W.},
- year=1958,
- month=9,
- title = {Graphic Analysis in Application to Early American Engraved Music},
- journal = {Notes},
- volume={xvi},
- pages=213,
- note={ subject: history of music printing and engraving},
-}
-
-@Book{krummel71:_oblon_format_early_music_books,
- author = {Krummel, D.W},
- year = 1971,
- title = {Oblong Format in Early Music Books},
- journal = {The Library},
- volume={5th ser., xxvi},
- pages=312,
- note={ subject: history of music printing and engraving},
-}
-
-@Book{king73:_anniv_music_print,
- author = {King, A.H},
- year = 1973,
- title = {The 50th Anniversary of Music Printing},
-}
-
-@Book{rastall82:_wester,
- author={Rastall, Richard},
- year=1982,
- title = {The notation of Western music : an introduction},
- address={New York, N.Y.},
- publisher={St. Martin's Press},
- note = {Musical notation},
-
-
-}
-
-@Book{tappolet47:_la_notat_music,
- author = {Tappolet, Willy},
- year = 1947,
- title = {La Notation Musicale},
- address={Paris},
- note={subject: general notation},
- publisher={Neuch\^atel},
-}
-
-@Book{williams03:_story_notat,
- author = {Williams, C.F. Abdy},
- year = 1903,
- title = {The Story of Notation},
- address={New York},
- publisher={Charles Scribner's Sons},
- note={subject: general notation},
-}
-
-@Book{apel53,
- author={Apel, Willi},
- year=1953,
- title = {The notation of polyphonic music, 900-1600},
- address={Cambridge, Mass},
- institution={Mediaeval Academy of America},
- note = {Musical notation},
-}
-
-@Book{berger93:_mensur,
- author={Berger, Anna Maria Busse},
- year=1993,
- title = {Mensuration and proportion signs : origins and evolution},
- address={Oxford, England},
- publisher={Clarendon Press},
- scnd_address={New York},
- scnd_publisher={Oxford University Press },
- note={subject: early notation},
-}
-
-@Book{parrish57,
- author={Parrish, Carl},
- year=1957,
- title = {The notation of medieval music},
- address={New York},
- publisher={Norton},
- note = {Musical notation},
-
-
-}
-
-@Book{parrish46:_notat_mediev_music,
- author = {Parrish, Carl},
- year = 1946,
- title = {The Notation of Medieval Music},
- address={New York},
- publisher={Carl Fischer, Inc.},
- note={subject: early notation},
-}
-
-@Book{patch49:_genes_music,
- author = {Patch, Harry},
- year = 1949,
- title = {Genesis of a Music},
- address={Madison},
- publisher={University of Wisconsin Press},
- note={subject: early notation},
-}
-
-@Book{cage69:_notat,
- author={Cage, John},
- year=1969,
- title = {Notations},
- address={New York},
- publisher={Something Else Press},
- note = {Music, Manuscripts, Facsimiles.
-
- Facsimiles of holographs from the Foundation for Contemporary
- Performance Arts, with text by 269 composers, but rearranged using
- chance operations.,V)} },
-
-@Book{gaburo77:_notat,
- author = {Gaburo, Virginia},
- year = 1977,
- title = {Notation},
- address={publisher= {Lingua Press},
- publisher={La Jolla, California}},
- note = {A Lecture about notation, new ideas about},
-}
-
-@Book{risatti75:_new_music_vocab,
- author = {Risatti, Howard},
- year = 1975,
- title = {New Music Vocabulary},
- address={Urbana, Illinois},
- publisher={University of Illinois Press},
- note = {A Guide to Notational Signs for Contemporary Music},
-}
-
-
-
-@Book{cowell30:_new_music_resour,
- author = {Cowell, Henry},
- year = 1930,
- title = {New Musical Resources},
- address={New York},
- publisher={Alfred A. Knopf, Inc.},
- note={subject: 20th century notation},
-}
-
-@Article{cowell27:_our_inadeq_notat,
- author = {Cowell, Henry},
- year = 1927,
- title = {Our Inadequate Notation},
- journal = {Modern Music},
- volume=4,
- number=3,
- note={subject: 20th century notation},
-
-}
-
-@Book{bowers92:_music_letter,
- author = {Bowers, Roger},
- year = 1992,
- title = {Music & Letters},
- volume=73,
- number=3,
- month={August},
- pages={347(52)},
- note={Some reflection upon notation and proportion in Monteverdi's mass and vespers},
-}
-
-@Book{brainard92:_curren_music,
- author = {Brainard, Paul},
- year = 1992,
- title = {Current Musicology},
- number=50,
- month={July-Dec},
- pages={21(26)},
- note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century},
-}
-
-@Book{monelle89:_compar_liter,
- author = {Monelle, Raymond},
- year = 1989,
- title = {Comparative Literature},
- volume=41, number=3,
- month={Summer},
- pages={252(18)},
-
- note={Music notation and the poetic foot},
-}
-
-@Book{pinegar93:_curren_music,
- author = {Pinegar, Sandra},
- year = 1993,
- title = {Current Musicology},
- number=53,
- month={July},
- pages={99(10)},
- note={The seeds of notation and music paleography.},
-}
-
-@Book{smith90:_curren_music,
- author = {Smith, Norman E},
- year = 1990,
- title = {Current Musicology},
- number={45-47},
- month={Jan-Dec},
- pages={283(22)},
- note={The notation of fractio modi.},
-}
-
-@Book{treitler92:_journ_music,
- author = {Treitler, Leo},
- year = 1992,
- title = {The Journal of Musicology},
- volume=10,
- number=2,
- month={Spring},
- pages={131(61)},
-
- note={ The unwritten and written transmission, of medieval chant
- and the start-up of musical notation.
-
- Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition.},
-}
-
-@Book{west94:_music_letter,
- author = {West, M.L},
- year = 1994,
- title = {Music & Letters},
- volume=75,
- number=2,
- month={May},
- pages={161(19)},
- note={The Babylonian musical notation and the Hurrian melodic texts.
-
- A new way of deciphering the ancient Babylonian musical notation.
-}
-}
-
-@Book{brown86:_music_quart,
- author = {Brown, Earle},
- year = 1986,
- title = {Musical Quarterly},
- volume=72,
- month={Spring},
- pages={180(22)},
- note={The notation and performance of new music.},
-}
-
-@Book{eggleston94:_notes,
- author = {Eggleston, Suzanne},
- year = 1994,
- title = {Notes},
- volume=51,
- number=2,
- month={Dec},
- pages={657(7)},
- journal={New periodicals},
- note={A list of new music periodicals covering the period
- Jun.-Dec. 1994. Includes aims, formats and a description of the
- contents of each listed periodical. Includes Music Notation News},
-
-}
-
-@Book{fuller89:_journ_music,
- author = {Fuller, David},
- year = 1989,
- title = {The Journal of Musicology},
- volume=7,
- number=1,
- month={Winter},
- pages={21(8)},
- note={
- Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation).
-}},
-
-@Book{jones90:_persp_new_music,
-
- author = {Jones, David Evan},
- year = 1990,
- title = {Perspectives of New Music},
- note={Speech extrapolated. (includes notation)}
-}
-
-@Book{lependorf89,
- author = {Lependorf, Jeffrey},
- year = 1989,
- journal={Perspectives of New Music},
- volume=27,
- title = {?},
- number=2,
- month={Summer},
- pages={232(20)},
- note={Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) },
-
-}
-
-@Book{rastall93:_music_letter,
- author = {Rastall, Richard},
- year = 1993,
- title = {Music & Letters},
- volume=74, number=4,
- month={November},
- pages={639(2)},
-
- note={Equal Temperament Music Notation: The Ailler-Brennink
- Chromatic Notation. Results and Conclusions of the Music Notation
- Refor by the Chroma Foundation (book reviews). },
-}
-
-@Article {Francois92,
- author={Francois, Jean-Charles},
- journal = {Perspectives of New Music},
- volume={30},
- number={1}, month={Winter},
- pages={6(15)},
- year={1992},
-
- note={subject: Modern music has outgrown notation. While the
- computer is used to write down music with accuracy never
- before achieved, the range of modern sounds has surpassed
- the relevance of the computer...},
-
- title={Writing without representation, and unreadable notation.},
-}
-
-@Book{hamel89,
- author = {Hamel, Keith A},
- year = 1989,
- journal = {Perspectives of New Music},
- volume=27,
- number=1,
- month={Winter},
- pages={70(14)},
-
- title={A design for music editing and printing software based
-on notational syntax}, }
-
+++ /dev/null
-%
-% TITLE=The music notation with computer bibliography
-% AUTHOR=Han-Wen Nienhuys
-%
-
-@String{CitH = {Computing and the Humanities}}
-@String{CMJ = {Computer Music Journal}}
-
-
-
-@Book {smith73,
- year = {1973},
- title = {Editing and Printing Music by Computer},
- author = {Leland Smith},
- totalentry = {Journal of Music Theory},
- volume={17},
- pages ={292-309},
-
- note = {Gourlay\cite{gourlay86} writes: A discussion of Smith's
-music-printing system SCORE}
-
-}
-
-@Article {byrd74,
- year = {1974},
- title = {A System for Music Printing by Computer},
- author = {Donald Byrd},
- journal = {Computers and the Humanities},
- volume ={8},
- pages ={161-72},
-}
-
-
-@Article{ericson75,
- author = {R. F. Ericson},
- title = {The DARMS Project: A status report},
- journal = {Computing in the humanities},
- year = 1975,
- volume = 9,
- number = 6,
- pages = {291--298},
- note = {Gourlay\cite{gourlay86} writes: A discussion of the design
- and potential uses of the DARMS music-description language.}
-}
-
-% Gomberg
-@PhdThesis {gomber75,
- year = {1975},
- title = {A Computer-Oriented System for Music Printing},
- author = {David A. Gomberg},
- school = {Washington University},
-}
-
-@Book {gomberg,
- title = {A Computer-oriented System for Music Printing},
- author = {David A. Gomberg},
- journal = CitH,
- volume={11},
- month = {march},
- year = {1977},
- pages = {63-80},
-
- note = {Gourlay \cite{gourlay86} writes: "A discussion of the
- problems of representing the conventions of musical notation in
- computer algorithms."}
-}
-
-
-@TechReport{Ornstein83,
- author={Ornstein, Severo M. and John Turner Maxwell III},
- title={Mockingbird: A Composer's Amanuensis},
- institution={Xerox Palo Alto Research Center},
- address={3333 Coyote Hill Road, Palo Alto, CA, 94304},
- number={CSL-83-2},
- month={January},
- year={1983}
-}
-
-@Article{Ornstein84,
- author={Ornstein, Severo M. and John Turner Maxwell III},
- title={Mockingbird: A Composer's Amanuensis},
- journal= {Byte},
- volume= 9,
- month = {January},
- year= { 1984},
-
- note={A discussion of an interactive and graphical computer system
-for music composition}
-
-}
-
-% byrd
-@PhdThesis {byrd85,
- year = {1985},
- title = {Music Notation by Computer},
- author = {Donald Byrd},
- school = {Indiana University},
-
- note = {Describes the SMUT (sic) system for automated music printout.}
-}
-
-@InProceedings{assayaag86,
- author = {G. Assayaag and D. Timis},
- title = {A Toolbox for music notation},
- booktitle = {Proceedings of the 1986 International Computer Music Conference},
- year = 1986
-}
-
-@TechReport{roush88,
- year = {1988},
- title = {Music Formatting Guidelines},
- author = {D. Roush},
- number = {OSU-CISRC-3/88-TR10},
- institution = {Department of Computer and Information Science, The Ohio State University},
-
- note = {Rules on formatting music formulated for use in
- computers. Mainly distilled from [Ross] HWN},
-
-}
-
-
-@Article{byrd94,
- author = {Donald Byrd},
- title = {Music Notation Software and Intelligence},
- journal = {Computer Music Journal},
-year = 1994,
-pages = {17--20},
- volume = 18,
- number = 1,
-
- note = {Byrd (author of Nightinggale) shows four problematic
-fragments of notation, and rants about notation programs that try to
-exhibit intelligent behaviour. HWN}
-}
-
-
-@Article{field-richards93,
- author = {H.S. Field-Richards},
- title = {Cadenza: A Music Description Language},
- journal = CMJ,
- year = 1993,
- volume = 17,
- number = 4,
-
- note = {A description through examples of a music entry language.
-Apparently it has no formal semantics. There is also no
-implementation of notation convertor. HWN}
-
-}
-
-@Article{bielawa93,
- author = {Herbert Bielawa},
- title = {Review of Sibelius 7},
- journal = CMJ,
- year = {1993?},
-
- note = {A raving review/tutorial of Sibelius 7 for Acorn. (And did
-they seriously program a RISC chip in ... assembler ?!) HWN}
-
-
-}
-
-@Article{sloan93,
- author = {Donald Sloan},
- title = {Aspects of Music Representation in HyTime/SMDL},
- journal = CMJ,
- year = 1993,
- volume = 17,
- number = 4,
-
-note = {An introduction into HyTime and its score description variant
-SMDL. With a short example that is quite lengthy in SMDL}
-
-}
-
-@Article{wiggins93,
- author = {Geraint Wiggins and Eduardo Miranda and Alaaaan Smaill and Mitch Harris},
- title = {A Framework for the evaluation of music representation systems},
- journal = CMJ,
- year = 1993,
- volume = 17,
- number = 3,
-
- note = {A categorisation of music representation systems (languages,
-OO systems etc) splitted into high level and low level expressiveness.
-The discussion of Charm and parallel processing for music
-representation is rather vague. HWN}
-
-}
-
-
-
-@Article{dannenberg93,
- author = {Roger B. Dannenberg},
- title = {Music Representation: Issues, Techniques, and Systems},
- journal = CMJ,
- year = 1993,
- volume = 17,
- number = 3,
- url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.6067},
-
- note = {This article points to some problems and solutions with music
-representation. HWN},
-
-}
-
-@Article{rothstein93,
- author = {Joseph Rothstein},
- title = {Review of Passport Designs' Encore Music Notation Software},
- journal = CMJ,
- year = {?},
-
-
-}
-
-
-
-@Article{belkin94,
- author = {Alan Belkin},
- title = {Macintosh Notation Software: Present and Future},
- journal = CMJ,
- year = 1994,
- volume = 18,
- number = 1,
-
- note = {Some music notation systems are analysed for ease of use,
- MIDI handling. The article ends with a plea for a standard notation
- format. HWN},
-
-}
-
-@InProceedings{montel97,
- author = {Dominique Montel},
- title = {La gravure de la musique, lisibilit\'e esth\'etique, respect de l'oevre},
- booktitle = {Musique \& Notations},
- year = 1997,
- address={Lyon},
- editors ={Genevois \& Orlarey}
-}
-
-
-
-
-@Book {CASR,
- note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP},
- title = {Directory of Computer Assisted Research in Musicology},
- author = {Walter B Hewlett and Eleanor Selfridge-Field},
- totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities},
-}
-
-
-@Book{selfridge-field97:_beyon_midi,
- title = {Beyond MIDI: the handbook of musical codes},
- editor = {Eleanor Selfridge-Field},
- publisher = {MIT Press},
- year = 1997,
-
- note = {A description of various music interchange formats.}
-}
-
-
-@InProceedings{hoos98:_guido_music_notat_format,
-title={The {GUIDO} Music Notation Format---A Novel Approach
-for Adequately Representing Score-level Music},
-author = {H. H. Hoos and K. A. Hamel and K. Renz and J. Kilian},
-booktitle = {Proceedings of International Computer Music Conference},
-year = 1998,
-pages = {451--454},
-}
-
-@Article {blostein91,
-
- note = {This paper provides a overview of the algorithm used in LIME
- for spacing individual lines. HWN},
-
- year = {1991},
- title = {Justification of Printed Music},
- author = {Dorothea Blostein and Lippold Haken},
- journal = {Communications of the ACM},
- volume= {J34},
- number= {3},
- month= {March},
- pages = {88-99},
-}
-
-
-@Article {haken93,
- year = {1993},
- title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor},
- author = {Lippold Haken and Dorothea Blostein},
- journal = {Computer Music Journal},
- volume= {17},
- number={3},
- pages = {43--58},
-}
-@Article{blostein94,
- author = {Dorothea Blostein and Lippold Haken},
- title = {The Lime Music Editor: A Diagram Editor Involving Complex
- Translations},
- journal = {Software Practice and Experience},
- year = {1994},
- volume = {24},
- number = {3},
- month = {march},
- pages = {289--306},
-
- note = {A description of various conversions, decisions and issues
-relating to this interactive editor HWN},
-
-}
-
-
-
-@InProceedings{haken95,
- year = {1995},
- title = {A New Algorithm for Horizontal Spacing of Printed Music},
- author = {Lippold Haken and Dorothea Blostein},
- booktitle = {International Computer Music Conference},
- address={Banff},
- month={Sept},
- pages = {118-119},
-
- note = {This describes an algorithm which uses springs between
-adjacent columns. }, }
-
-
-@InProceedings{bouzaiene98:_une,
- author = {Nabil Bouzaiene and Lo\"ic Le Gall and Emmanuel Saint-James},
- title = {Une biblioth\`eque pour la notation musicale baroque},
- booktitle = {EP '98},
- year = 1998,
- series = {LNCS},
-
- note = {Describes ATYS, an extension to Berlioz, that can mimick
- handwritten baroque style beams}
-}
-
-
-
-
-@InProceedings{balaban88,
- author = {M. Balaban},
- title = {A Music Workstation Based on Multiple Hierarchical Views of Music},
- booktitle = {Proceedings of the 1988 International Computer Music Conference},
- year = 1988,
- address = {San Francisco},
- organization = {International Computer Music Association}
-}
-
-%
-% MusiCopy
-%
-@TechReport {gourlay87-spacing,
-annote = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it.},
- year = {1987},
- title = {Spacing a Line of Music,},
- author = {John S. Gourlay},
- number = {OSU-CISRC-10/87-TR35},
- institution ={Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {parish87,
- annote = {A brief overview of {MusiCopy}},
- year = {1987},
- title = {{MusiCopy}: An automated Music Formatting System},
- author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola},
- totalentry = {OSU-CISRC-10/87-TR29},
- institution ={Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {gourlay87-formatting,
- note = {This paper discusses the development of algorithms for the
-formatting of musical scores (from abstract). It also appeared at
-PROTEXT III, Ireland 1986},
-
- year = {1987},
- title = {Computer Formatting of Music},
- author = {John S. Gourlay and A. Parrish
-and D. Roush and F. Sola and Y. Tien},
- number = {OSU-CISRC-2/87-TR3},
- institution ={Department of Computer and Information Science,
-The Ohio State University},
-}
-
-
-@TechReport {hegazy87,
- year = {1987},
- title = {On the Implementation of the {MusiCopy} Language Processor,},
-
- author = {Wael A. Hegazy},
- number = {OSU-CISRC-10/87-TR34},
- institution={Department of Computer and Information Science, The Ohio State University},
-
- note = {Describes the "parser" which converts {MusiCopy} MDL to
- MusiCopy Simultaneities and columns.
-
-MDL is short for Music Description Language\cite{gourlay86}. It
-accepts music descriptions that are organised into measures filled
-with voices, which are filled with notes. The measures can be arranged
-simultaneously or sequentially. To address the 2-dimensionality,
-almost all constructs in MDL must be labeled.
-
-MDL uses begin/end markers for attribute values and spanners.
-Rightfully the author concludes that MusiCopy must administrate a
-"state" variable containing both properties and current spanning symbols.
-
-MusiCopy attaches graphic information to the objects constructed in
-the input: the elements of the input are partially complete graphic
-objects.
-
-},
-
-}
-
-
-@TechReport {hegazy87-breaking-tr,
-
-annote = {This generalizes \TeX's breaking algorithm to music. It also
-appeared in Document Manipulation and Typography, J.C. van Vliet (ed)
-1988},
-
- year = {1987},
-
- title = {Optimal line breaking in music},
- author = {Wael A. Hegazy and John S. Gourlay},
- number = {OSU-CISRC-8/87-TR33},
- institution={Department of Computer and Information Science, The Ohio State University,},
-}
-
-@InProceedings{hegazy88:_optim,
- author = {Wael A. Hegazy and John S. Gourlay},
-booktitle = {Proceedings of the International Conference on
-Electronic Publishing, Document Manipulation and Typography. Nice (France)},
-month = {April},
-year =1988,
-editor={J. C. van Vliet},
-publisher = {Cambridge University Press},
-ISBN={0-521-36294-6},
- title = {Optimal line breaking in music},
-}
-
-
-@TechReport {roush87,
- note = {User manual of MusiCopy. },
-
- year = {1987},
- title = {Using {MusiCopy}},
- author = {Dean K. Roush},
- number = {OSU-CISRC-18/87-TR31},
- institution={Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {parrish87-simultaneities,
-
-note = {This note discusses
- placement of balls, stems, dots which occur at the same moment
- ("Simultaneity")},
-
- year = {1987},
- title = {Computer Formatting of Musical Simultaneities,},
- author = {A. Parrish and John S. Gourlay},
- institution={Department of Computer and Information Science, The Ohio State University},
- number = {OSU-CISRC-10/87-TR28},
-}
-
-
-@TechReport {sola87,
- note = {Overview of a procedure for generating slurs},
- year = {1987},
- title = {Computer Design of Musical Slurs, Ties and Phrase Marks,},
- author = {F. Sola},
- institution={Department of Computer and Information Science, The Ohio State University},
- number = {OSU-CISRC-10/87-TR32},
-}
-
-
-@Article {gourlay86,
- note = {This paper describes the {MusiCopy} musicsetting system and an input language to go with it.},
-
- year = {1986},
- title = {A language for music printing},
- author = {John. S. Gourlay},
- journal = {Communications of the ACM},
- volume= {29},
- number ={5},
- pages = {388--401},
-}
-
-
-@TechReport {sola87-beams,
-
-institution={Department of Computer and Information Science, The Ohio
-State University},
-
- note = {Calculating beam slopes HWN},
- year = {1987},
- title = {Design of Musical Beams,},
- author = {F. Sola and D. Roush},
- number = {OSU-CISRC-10/87-TR30},
-}
-
-
-@PhdThesis {page88,
- note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP},
- year = {1988},
- title = {Computer Tools for Music Information Retrieval},
- author = {Stephen Dowland Page},
- school ={Dissertation University of Oxford},
-}
-
-
-%
-% three part study by John Gr/over
-@TechReport{grover89-symbols,
- author = {John Gr\/over},
- title = {A computer-oriented description of Music Notation. Part I. The Symbol Inventory},
- institution = {Department of informatics, University of Oslo},
- year = 1989,
- number = 133,
-
-note = {The goal of this series of reports is a full description of
-music formatting. As these largely depend on parameters of fonts, it
-starts with a verbose description of music symbols.
-
- The subject is treated backwards: from general rules of typesetting
-the author tries to extract dimensions for characters, whereas the
-rules of typesetting (in a particular font) follow from the dimensions
-of the symbols. His symbols do not match (the stringent) constraints
-formulated by eg. \cite{wanske}} }
-
-@TechReport{grover89-twovoices,
- author = {John Gr\/over},
- title = {A computer-oriented description of Music Notation. Part II: Two Voice Sharing a Staff, Leger Line Rules, Dot Positioning},
-
- institution = {Department of informatics, University of Oslo},
- year = 1989,
- number = 134,
-
- note = {A lot rules for what is in the title are formulated. The
-descriptions are long and verbose. The verbosity shows that
-formulating specific rules is not the proper way to approach the
-problem. Instead, the formulated rules should follow from more
-general rules, similar to\cite{parrish87-simultaneities}},
-}
-
-@TechReport{grover89-accidentals,
- author = {John Gr\/over},
- title = {A computer-oriented description of Music Notation. Part III: Accidental Positioning},
- institution = {Department of informatics, University of Oslo},
- year = 1989,
- number = 135,
-
-note = {Placement of accidentals crystallised in an enormous set of
-rules. Same remarks as for \cite{grover89-twovoices} applies} }
-
-
-@PhdThesis{mueller90:_inter_bearb_musik,
- author = {Giovanni M\"uller},
- title = {Interaktive Bearbeitung konventioneller Musiknotation},
- school = {Eidgen\"ossischen Technischen Hochschule Z\"urich},
- year = 1990,
-
-note = {This is about engraver-quality typesetting with computers. It
-accepts the axiom that notation is too difficult to generate
-automatically. The result is that a notation program should be a
-WYSIWYG editor that allows one to tweak everything.
-}
-
-}
-
-
-
-
-
-@MastersThesis{roelofs91,
-
-note = {This dutch thesis describes a monophonic typesetting system,
- and focuses on the breaking algorithm, which is taken from Hegazy &
- Gourlay },
-
- year = {1991},
- title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek},
- author = {Ren\'e Roelofs},
- school={Erasmus Universiteit Rotterdam},
- number={45327},
- translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.},
-}
-
-
-@Article {filgueiras93,
- year = {1993},
- title = {Representation and manipulation of music documents in SceX},
- author = {Miguel Filgueiras and Jos\'e Paulo Leal},
- journal= {Electronic Publishing},
- volume={6},
- number={4}, pages = {507--518},
- url={http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1480},
-}
-
-
-@Article {foxley87,
-
-note = {A paper on a simple TROFF preprocessor to typeset music. },
-
- year = {1987},
- title = {Music --- A language for typesetting music scores},
- author = {Eric Foxley},
- journal = {Software --- Practice and Experience},
- volume = {17},
- number = {8},
- pages = {485-502},
-}
-
-@Article {Langston90,
-
- note = {This paper deals with some command-line
- tools for music editing and playback. },
-
- year = {1990},
- title = {Unix music tools at Bellcore},
- author = {Peter S. Langston},
- journal={Software --- Practice and Experience},
- volume={20},
- number={S1},
- pages={47--61},
-}
-
-
-@Book {filgueiras96,
- year = {1996},
- title = {Implementing a Symbolic Music Processing System},
- author = {Miguel Filgueiras},
- totalentry = {LIACC, Universidade do Porto, 1996; submitted},
-}
-
-@Book {filgueiras?,
- title = {Some Music Typesetting Algorithms},
- author = {Miguel Filgueiras},
- totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming},
-}
-
-
-@Article {colorado-web,
- author ={Alyssa Lamb},
-
- note = {Webpages about engraving (designed with finale
-users in mind) (sic) HWN},
-
- institution = {The University of Colorado},
- title ={The University of Colorado Music Engraving page.},
- HTML={http://www.cc.colorado.edu/Dept/MU/Musicpress/},
- year={1996}
-}
-
-@Article {tablature-web,
- note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN},
- title = {how to read and write tab: a guide to tab notation},
- author = {Howard Wright},
- email={Howard.Wright@ed.ac.uk},
- url={http://www.guitartabs.cc/tabfaq.shtml},
-}
-
-@Article {niff-web,
-
- note = {Specs for NIFF, a reasonably comprehensive but binary
- format for notation HWN},
-
- year = {1995},
- title = {NIFF6a Notation Interchange File Format},
- author = {Cindy Grande},
- publisher={Grande Software Inc.},
- HTML= {http://www.jtauber.com/music/encoding/niff/},
- ftp = {ftp://blackbox.cartah.washington.edu}
-}
-
-@Article {smdl-web,
- author = {International Organization for Standardization (ISO)},
- title = {Information Technology - Document Description and Processing Languages - Standard Music Description Language (SMDL)},
- pdf= {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
- number={ISO/IEC DIS 10743},
- year = {1992},
- annote = {SGML instance for describing music. Very comprehensive in music
-definition, but no support for notation / performance whatsoever (They
-basically say: "You can embed a NIFF or MIDI file")}
-}
-
-
-@Article {rader96,
-
- note = {Describes a system called MusicEase, and explains that it
- uses "constraints" (which go unexplained) to automatically position
- various elements. },
- html={http://mesastate.edu/~grader/ieeeme.pdf},
- year = {1996},
- title = {Creating Printed Music Automatically},
- author = {Gary M. Rader},
- journal = {Computer},
- volume={29},
- number={6},
- month={June},
- pages = {61--69},
-}
-
-
-@MastersThesis{gall97:_creat,
- author = {Lo\"ic Le Gall},
- title = {Cr\'eation d'une police adapt\'ee \`a la notation musicale baroque},
- school = {\'Ecole Estienne},
- year = 1997,
-}
-
-@TechReport{droettboom00:_study_notat_descr_languag,
- author = {Michael Droettboom},
- title = {Study of music Notation Description Languages},
- year = 2000,
- url= {http://www.music.mcgill.ca/~ich/research/omr/levy/format.pdf},
-
- note ={GUIDO and lilypond compared. LilyPond wins on practical
-issues as usability and availability of tools, GUIDO wins on
-implementation simplicity.} }
-
-@PhdThesis{gieseking01:_code_gener_noten,
- author = {Martin Gieseking},
- title = {Code-basierte Generierung interaktiver Notengraphik
-
-},
- school = {Universit\"at Osnabr\"uck},
- year = 2001,
- isbn = {ISBN 3-923486-30-8}
-}
-
-@Book{hewlett01:_virtual_score,
- editor = {Walter B. Hewlett and Eleanor Selfridge-Field},
- title = {The Virtual Score; representation, retrieval and restoration},
- publisher = {MIT Press},
-series = {Computing in Musicology},
- year = 2001
-}
-
-
-
-@PhdThesis{renz02:_algor_guido,
- author = {Kai Renz},
- title = {Algorithms and data structures for a music notation system based on GUIDO music notation},
- school = {Universit\"at Darmstadt},
- year = 2002
-}
-
-@InBook{powell02:_music,
- author = {Steven Powell},
- title = {Music engraving today},
- publisher = {Brichtmark},
- year = 2002,
-
- note = {A "How Steven uses Finale" manual.}
-}
-
-
-@InProceedings{nienhuys03:_lilyp,
- author = {Han-Wen Nienhuys and Jan Nieuwenhuizen},
- title = {LilyPond, a system for automated music engraving},
- booktitle = {XIV Colloquium on Musical Informatics},
- year = 2003,
- pages = {167--172},
- address = {Firenze},
- month = {May}
-}
-
+++ /dev/null
-%
-% TITLE=The engraving bibliography
-% AUTHOR=Han-Wen Nienhuys
-%
-
-
-@Book{banter,
- author = {Harald Banter},
- title = {Akkord Lexikon},
- publisher = {Schott's S\"ohne},
- year = {1987},
- isbn = {ISBN 3-7957-2095-8},
- note = {Comprehensive overview of commonly used
- chords. Suggests (and uses) a unification for all different kinds
- of chord names.},
- address = {Mainz, Germany},
-}
-
-
-
-@Book{rastall,
- author = {Richard Rastall},
- ALTeditor = {},
- title = {The Notation of Western Music: an
- Introduction},
- publisher = {J. M. Dent \& Sons London},
- year = {1983},
- note = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN},
-}
-
-
-@Book{ignatzek95:_jazzm_klavier,
- author = {Klaus Ignatzek},
- title = {Die Jazzmethode f\"ur Klavier 1},
- publisher = {Schott},
- year = 1995,
- note = {This book contains a system for denoting chords that is used in LilyPond.}
-}
-
-@Book{mcgrain,
- author = {Mark Mc Grain},
- title = {Music notation},
- year = 1991,
- publisher={Hal Leonard Publishing Corporation},
-isbn ={0793508479},
-note={HWN writes: `Book' edition of lecture notes from XXX school of
-music. The book looks like it is xeroxed from bad printouts. The
-content has nothing you won't find in other books like\cite{read} or
-\cite{heussenstamm}. }
-}
-
-@Book{ross,
- author = {Ted Ross},
- title = {Teach yourself the art of music engraving and processing},
- publisher = {Hansen House},
- year = 1987,
-annote = {This is about engraving, i.e. professional typesetting. It contains
- directions on good typesetting, but the sections on reproduction
- technicalities, how to use pens and history are interesting.
- Especially the section on Music Typewriters is amusing HWN},
- address = {Miami, Florida},
-}
-
-@Book {read78,
- note = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN},
- year = {1978},
- title = {Modern Rhythmic Notation},
- author = {Gardner Read},
- publisher = {Indiana University Press},
-}
-
-@Book {read-notation,
- note = {This is as close to the ``standard''
- reference work for music notation issues as one is likely to get.},
-
- title = {Music Notation: a Manual of Modern Practice},
- author = {Gardner Read},
- totalentry = {(2nd edition)},
- year = 1979,
- publisher ={Taplinger Publishing},
- address ={New York},
-}
-
-@Book {weaner93,
- year = {1993},
- title = {Standard Music Notation Practice},
- author = {Maxwell Weaner and Walter Boelke},
- totalentry = {revised edition by Arnold Broido and Daniel Dorff.},
- publisher = {Music Publisher's Association of the United States Inc},
- address = {New York}
-}
-
-
-@Book {wanske,
-
- annote = {I. A very thorough overview of engraving practices of various
- craftsmen. It includes detailed specs of characters, dimensions
- etc. II. a thorough overview of a anonymous (by now antiquated)
- automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung),
- electronic data processing HWN.},
-
- year = {1988},
- title = {Musiknotation --- Von der Syntax des
- Notenstichs zum EDV-gesteuerten Notensatz},
- author = {Helene Wanske},
- publisher = {Schott-Verlag},
- address = {Mainz},
- isbn = {ISBN 3-7957-2886-x},
-}
-
-
-@Book {hader48,
- year = {1948},
- title = {Aus der Werkstatt eines Notenstechers},
- author = {Karl Hader},
- publisher = {Waldheim--Eberle Verlag},
- address ={Vienna},
-
- note = {Hader was a chief-engraver in a Viennese engraving
-workshop. This beautiful booklet was intended as an introduction for
-laymen on the art of engraving. It contains a step by step, in-depth
-explanation of how to cut and stamp music into zinc plates. It also
-contains a few compactly formulated rules on musical orthography. Out
-of print. }
-
-
-}
-
-@Book{gamble23:_music_engrav,
- author = {William Gamble},
- title = {Music Engraving and printing. Historical and Technical Treatise},
- publisher = {Sir Isaac Pitman & Sons, ltd.},
- year = 1923,
- note = {This pattriotic book was an attempt to promote and help
- British music engravers. It is somewhat similar to Hader's
- book\cite{hader48} in scope and style, but Gamble focuses more on
- technical details (Which French punch cutters are worth buying from,
- etc.), and does not treat typographical details, such as optical
- illusions. It is available as reprint from Da Capo Press, New York
- (1971).}
-}
-
-
-@Booklet {mpa96,
- note = {Pamphlet explaining a few fine points in music font design HWN},
- year = {1996},
- title = {Standard music notation specifications for computer programming.},
- month = {December},
- author ={mpa},
- publisher = {MPA},
-}
-
-
-@Book {donato63,
- year = {1963},
- author = {Anthony Donato},
- title ={Preparing Music Manuscript},
- address ={Englewood Cliffs, NJ},
- publisher={Prentice-Hall},
-}
-
-
-@Book {Karkoshka72,
- year = {1972},
- title = {Notation in New Music; a critical guide to interpretation and realisation},
- author = {Erdhard Karkoshka},
- translator={Ruth Koenig},
- publisher={Praeger Publishers},
- address={New York},
- note ={(Out of print)},
-}
-
-
-@Book {Roemer84,
- year = {1984},
- title = {The Art of Music Copying},
- author = {Clinton Roemer},
- publisher={Roerick music co.},
- address= {Sherman Oaks (CA)},
-
- note ={Out of print. Heussenstamm writes: an instructional manual
- which specializes in methods used in the commercial field. },
- edition={2nd},
-}
-
-
-@Book {Rosecrans79,
- year = {1979},
- title = {Music Notation Primer},
- author = {Glen Rosecrans},
- publisher={Passantino},
- address={New York},
- note={Heussenstamm writes: Limited in scope, similar to \cite{Roemer84}}
-}
-
-@Book {donemus1982,
- year = {1982},
- title = {Uitgeven van muziek},
-subtitle = {Handleiding voor componisten en copiisten},
- author = {Donemus},
- publisher= {Donemus Amsterdam},
-
- note = {Manual on copying for composers and copyists at the Dutch
- publishing house Donemus. Besides general comments on copying, it
- also contains a lot of hands-on advice for making performance
- material for modern pieces.}
-
-}
-
-
-@Book{vinci,
-author={Vinci, Albert C.},
-title={Fundamentals of Traditional Music Notation},
-publisher={Kent State University Press},
-year={1989}
-}
-
-@Book{schirmer90,
- author={{G. Schirmer, Inc.}},
- title={The G. Schirmer Manual of Style and Usage},
- address={New York},
- publisher={The G. Schirmer Publications Department},
- year={2001},
-note={This is the style guide for Schirmer publications. This manual
-specifically focuses on preparing print for publication by
-Schirmer. It discusses many details that are not in other, normal
-notation books. It als gives a good idea of what is necessary to bring
-printouts to publication quality.
-It can be ordered from the rental department.
-
-
-}
-}
-
-
-@Book {Stone80,
- year = {1980},
- title = {Music Notation in the Twentieth Century},
- author = {Kurt Stone},
- publisher= {Norton},
- address={New York},
- note ={Heussenstamm writes: The most important book on notation in recent years. },
-
-}
-@Book {Heussenstamm87,
- year = {1987},
- title = {The Norton Manual of Music Notation},
- author = {George Heussenstamm},
- address= {New York},
- publisher={Norton},
- note={Hands-on instruction book for copying (ie. handwriting) music. Fairly complete. HWN}
-}
-
-
-@Book {gerou96,
- note = {A cheap, concise, alphabetically ordered list of typesetting and music (notation) issues with a rather simplistic attitude but in most cases "good-enough" answers JCN},
- year = {1996},
- title = {Essential Dictionary of Music Notation},
- author = {Tom Gerou and Linda Lusk},
- publisher = {Alfred Publishing},
- address ={Van Nuys CA},
- isbn ={ISBN 0-88284-768-6},
-}
-
-
-@Book {chlapik87,
- note = {An clearly written book for the casually interested
- reader. It shows some of the conventions and difficulties in
- printing music HWN},
-
- year = {1987},
- title = {Die Praxis des Notengraphikers},
- author = {Herbert Chlapik},
- publisher = {Doblinger},
- isbn ={ISBN 3-9000 035-96-2},
-}
-
-
-
-@Book {barksdale57,
- author = {Barksdale, A},
- year = {1957},
- title = {The Printed Note: 500 Years of Music Printing and Engraving},
- address={Toledo, Ohio},
- month = {January},
- note={`The exhibition "The Printed Note" attempts to show the various processes used since the second of the 15th century for reproducing music mechanically ... '. The illustration mostly feature ancient music},
- publisher={The Toledo Museum of Art},
-}
-
-
-@Book {wolf19,
- author = {Wolf, Johannes},
- year = {1919},
- title = {Handbuch der Notationskunde},
- address={Leipzig},
- publisher={Breitkopf & Hartel},
- note= {Very thorough treatment (in two volumes) of the history of music notation},
-}
-
-@Book {rosenthal67,
- author = {Rosenthal, Carl A},
- year = {1967},
- title = {A Practical Guide to Music Notation},
- address={New York},
- publisher={MCA Music},
- note={Heussenstamm writes: Informative in terms of traditional notation. Does not concern score preparation}
-}
-
-
-@Book {Boehm61,
- author = {Boehm, Laszlo},
- year = {1961},
- title={Modern Music Notation},
- address={New York},
- publisher={G. Schirmer, Inc.},
- note ={Heussenstamm writes: A handy compact reference book in basic notation. }
-}
-@Book{button20:_system_music_notat,
- author = {Button, H. Elliot},
- title = {System in Musical Notation},
- publisher = {Novello and co.},
- year = 1920,
- address = {London}
-}
-
-@Book{johnson46:_how,
- author = {Johnson, Harold},
- title = {How to write music manuscript},
- publisher = {Carl Fischer, Inc.},
- year = 1946,
- address = {New York}
-}
-
-
-
-@Book{tyboni94:_noter_handb_i_tradit_noter,
- author = {B\"orje Tyboni},
- title = {Noter Handbok I Traditionell Notering},
- publisher = {Gehrmans Musikf\"orlag},
- year = 1994,
- address = {Stockholm},
- note = {Swedish book on music notation.}
-}
-
-@Book{jaschinski00:_notat,
- editor = {Andreas Jaschinski},
- title = {Notation},
- publisher = {Bärenreiter Verlag},
- year = 2000,
- number = {BVK1625},
-
- annote = {Articles from "Musik in Geschichte und Gegenwart"
-pertaining to notation. Both "alternative" notation and ancient
-notation is treated in depth, while "common" notation is not. }
-}
-
-
+++ /dev/null
-% BibTeX bibliography style `html-long'
-% spits out HTML-formatted bibliography in place of bbl output
-% by David Kotz dfk@cs.dartmouth.edu
-% $Id: html-long.bst,v 1.4 2005/07/21 21:29:50 hjunes Exp $
-% modified from
-% BibTeX standard bibliography style `alpha'
- % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
- % Copyright (C) 1985, all rights reserved.
- % Copying of this file is authorized only if either
- % (1) you make absolutely no changes to your copy, including name, or
- % (2) if you do make changes, you name it something other than
- % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
- % This restriction helps ensure that all standard styles are identical.
- % The file btxbst.doc has the documentation for this style.
-
-% DFK added abstract, comment, earlier, keyword, later, URL
-ENTRY
- { abstract
- address
- author
- booktitle
- chapter
- comment
- earlier
- edition
- editor
- howpublished
- institution
- journal
- key
- keyword
- later
- month
- note
- number
- organization
- pages
- private
- publisher
- school
- series
- title
- type
- URL
- volume
- year
- }
- {}
- { label extra.label sort.label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-STRINGS { s t }
-
-FUNCTION {output.nonnull}
-{ 's :=
- output.state mid.sentence =
- { ", " * write$ }
- { output.state after.block =
- { add.period$ write$
- newline$
- }
- { output.state before.all =
- 'write$
- { add.period$ " " * write$ }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION {output.check}
-{ 't :=
- duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-% DFK changed to use cite$ for the label
-% DFK changed to HTML, and use URL to make cite key a link
-FUNCTION {output.bibitem}
-{ newline$
- URL empty$
- { "<DT> <A NAME=" quote$ * cite$ * quote$ *
- "> " * cite$ * ":</A> </DT>" * write$
- }
- { "<DT><A NAME=" quote$ * cite$ * quote$ * " HREF=" * quote$ *
- URL * quote$ * "> " * cite$ * ":</A></DT>" * write$
- }
- if$
- newline$
- "<DD>" write$ newline$
- ""
- before.all 'output.state :=
-}
-
-% DFK changed to HTML
-FUNCTION {fin.entry}
-{ add.period$
- write$
- newline$
- earlier empty$
- 'skip$
- { "<br>" write$ newline$
- "See also earlier version <A HREF=" quote$ * "#" * earlier * quote$ *
- ">" * earlier * "</A>." * write$ newline$
- }
- if$
- later empty$
- 'skip$
- { "<br>" write$ newline$
- "See also later version <A HREF=" quote$ * "#" * later * quote$ *
- ">" * later * "</A>." * write$ newline$
- }
- if$
- "</DD>" write$ newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION {new.sentence}
-{ output.state after.block =
- 'skip$
- { output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
-}
-
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION {new.block.checka}
-{ empty$
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.sentence.checka}
-{ empty$
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
- if$
-}
-
-% DFK changed to HTML
-FUNCTION {emphasize}
-{ duplicate$ empty$
- { pop$ "" }
- { "<EM>" swap$ * "</EM>" * }
- if$
-}
-
-% DFK added for HTML strong emphasis
-FUNCTION {strong}
-{ duplicate$ empty$
- { pop$ "" }
- { "<STRONG>" swap$ * "</STRONG>" * }
- if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-% DFK added this, to strip {} and ~ from titles and authors
-% It's not a great idea, because it will screw up in math mode and some
-% special characters... but it makes most things much prettier.
-FUNCTION {author.title.purify}
-{ 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "{" =
- t #1 #1 substring$ "}" = or
- 'skip$
- { t #1 #1 substring$ "~" =
- { " " * }
- { t #1 #1 substring$ * }
- if$
- }
- if$
- t #2 global.max$ substring$ 't :=
- }
- while$
-}
-
-FUNCTION {format.names}
-{ 's :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
- nameptr #1 >
- { namesleft #1 >
- { ", " * t * }
- { numnames #2 >
- { "," * }
- 'skip$
- if$
- t "others" =
- { " et al." * }
- { " and " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {format.authors}
-{ author empty$
- { "" }
- { author format.names author.title.purify }
- if$
-}
-
-FUNCTION {format.editors}
-{ editor empty$
- { "" }
- { editor format.names
- editor num.names$ #1 >
- { ", editors" * }
- { ", editor" * }
- if$
- }
- if$
-}
-
-% DFK added strong, so it will be bold.
-FUNCTION {format.title}
-{ title empty$
- { "" }
- { title "t" change.case$ author.title.purify strong }
- if$
-}
-
-FUNCTION {n.dashify}
-{ 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "-" =
- { t #1 #2 substring$ "--" = not
- { "--" *
- t #2 global.max$ substring$ 't :=
- }
- { { t #1 #1 substring$ "-" = }
- { "-" *
- t #2 global.max$ substring$ 't :=
- }
- while$
- }
- if$
- }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
- }
- while$
-}
-
-FUNCTION {format.date}
-{ year empty$
- { month empty$
- { "" }
- { "there's a month but no year in " cite$ * warning$
- month
- }
- if$
- }
- { month empty$
- 'year
- { month " " * year * }
- if$
- }
- if$
-}
-
-% DFK changed emphasize to strong
-FUNCTION {format.btitle}
-{ title author.title.purify strong
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
- { " " }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
- { "" }
- { "volume" volume tie.or.space.connect
- series empty$
- 'skip$
- { " of " * series emphasize * }
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- { output.state mid.sentence =
- { "number" }
- { "Number" }
- if$
- number tie.or.space.connect
- series empty$
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION {format.edition}
-{ edition empty$
- { "" }
- { output.state mid.sentence =
- { edition "l" change.case$ " edition" * }
- { edition "t" change.case$ " edition" * }
- if$
- }
- if$
-}
-
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
- }
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
- if$
- }
- while$
- multiresult
-}
-
-FUNCTION {format.pages}
-{ pages empty$
- { "" }
- { pages multi.page.check
- { "pages" pages n.dashify tie.or.space.connect }
- { "page" pages tie.or.space.connect }
- if$
- }
- if$
-}
-
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
- number empty$
- 'skip$
- { "(" number * ")" * *
- volume empty$
- { "there's a number but no volume in " cite$ * warning$ }
- 'skip$
- if$
- }
- if$
- pages empty$
- 'skip$
- { duplicate$ empty$
- { pop$ format.pages }
- { ":" * pages n.dashify * }
- if$
- }
- if$
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- 'format.pages
- { type empty$
- { "chapter" }
- { type "l" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty$
- 'skip$
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION {format.in.ed.booktitle}
-{ booktitle empty$
- { "" }
- { editor empty$
- { "In " booktitle emphasize * }
- { "In " format.editors * ", " * booktitle emphasize * }
- if$
- }
- if$
-}
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
- month empty$ year empty$ note empty$
- and and and and and
- key empty$ not and
- { "all relevant fields are empty in " cite$ * warning$ }
- 'skip$
- if$
-}
-
-FUNCTION {format.thesis.type}
-{ type empty$
- 'skip$
- { pop$
- type "t" change.case$
- }
- if$
-}
-
-FUNCTION {format.tr.number}
-{ type empty$
- { "Technical Report" }
- 'type
- if$
- number empty$
- { "t" change.case$ }
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION {format.article.crossref}
-{ key empty$
- { journal empty$
- { "need key or journal for " cite$ * " to crossref " * crossref *
- warning$
- ""
- }
- { "In {\em " journal * "\/}" * }
- if$
- }
- { "In " key * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.crossref.editor}
-{ editor #1 "{vv~}{ll}" format.name$
- editor num.names$ duplicate$
- #2 >
- { pop$ " et al." * }
- { #2 <
- 'skip$
- { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et al." * }
- { " and " * editor #2 "{vv~}{ll}" format.name$ * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.book.crossref}
-{ volume empty$
- { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
- "In "
- }
- { "Volume" volume tie.or.space.connect
- " of " *
- }
- if$
- editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { series empty$
- { "need editor, key, or series for " cite$ * " to crossref " *
- crossref * warning$
- "" *
- }
- { "{\em " * series * "\/}" * }
- if$
- }
- { key * }
- if$
- }
- { format.crossref.editor * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.incoll.inproc.crossref}
-{ editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { booktitle empty$
- { "need editor, key, or booktitle for " cite$ * " to crossref " *
- crossref * warning$
- ""
- }
- { "In {\em " booktitle * "\/}" * }
- if$
- }
- { "In " key * }
- if$
- }
- { "In " format.crossref.editor * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-
-% DFK added
-% top of stack is the string we want to be a quoted paragraph
-FUNCTION {format.quotedParagraph}
-{ duplicate$ empty$
- { skip$ }
- { "<P><QUOTE> " swap$ * " </QUOTE></P>" *}
- if$
-}
-
-
-% DFK added, to support comment, private, keyword, etc
-% next-to-top is field name (eg, "Comment")
-% top is field value (eg, value of comment)
-% both are popped; resulting top is either empty,
-% or string describing field
-FUNCTION {format.dfkfield}
-{ duplicate$ empty$
- { pop$ pop$ "" }
- { swap$
- "<strong> " swap$ * ":</strong> " * swap$ * }
- if$
-}
-
-% DFK added
-FUNCTION {dfk.stuff}
-{ new.block
- "Abstract" abstract format.dfkfield format.quotedParagraph write$ newline$
- "Keyword" keyword format.dfkfield format.quotedParagraph write$ newline$
- "Comment" comment format.dfkfield format.quotedParagraph write$ newline$
-}
-
-% DFK: added a call to dfk.stuff in all entry-type functions below
-
-FUNCTION {article}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { journal emphasize "journal" output.check
- format.vol.num.pages output
- format.date "year" output.check
- }
- { format.article.crossref output.nonnull
- format.pages output
- }
- if$
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {book}
-{ output.bibitem
- author empty$
- { format.editors "author and editor" output.check }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- new.block
- format.btitle "title" output.check
- crossref missing$
- { format.bvolume output
- new.block
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- format.edition output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {booklet}
-{ output.bibitem
- format.authors output
- new.block
- format.title "title" output.check
- howpublished address new.block.checkb
- howpublished output
- address output
- format.date output
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {inbook}
-{ output.bibitem
- author empty$
- { format.editors "author and editor" output.check }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- new.block
- format.btitle "title" output.check
- crossref missing$
- { format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- }
- { format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- format.edition output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {incollection}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.number.series output
- format.chapter.pages output
- new.sentence
- publisher "publisher" output.check
- address output
- format.edition output
- format.date "year" output.check
- }
- { format.incoll.inproc.crossref output.nonnull
- format.chapter.pages output
- }
- if$
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.number.series output
- format.pages output
- address empty$
- { organization publisher new.sentence.checkb
- organization output
- publisher output
- format.date "year" output.check
- }
- { address output.nonnull
- format.date "year" output.check
- new.sentence
- organization output
- publisher output
- }
- if$
- }
- { format.incoll.inproc.crossref output.nonnull
- format.pages output
- }
- if$
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {conference} { inproceedings }
-
-FUNCTION {manual}
-{ output.bibitem
- author empty$
- { organization empty$
- 'skip$
- { organization output.nonnull
- address output
- }
- if$
- }
- { format.authors output.nonnull }
- if$
- new.block
- format.btitle "title" output.check
- author empty$
- { organization empty$
- { address new.block.checka
- address output
- }
- 'skip$
- if$
- }
- { organization address new.block.checkb
- organization output
- address output
- }
- if$
- format.edition output
- format.date output
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- "Master's thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {misc}
-{ output.bibitem
- format.authors output
- title howpublished new.block.checkb
- format.title output
- howpublished new.block.checka
- howpublished output
- format.date output
- new.block
- note output
- fin.entry
- dfk.stuff
- empty.misc.check
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.btitle "title" output.check
- new.block
- "PhD thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
- editor empty$
- { organization output }
- { format.editors output.nonnull }
- if$
- new.block
- format.btitle "title" output.check
- format.bvolume output
- format.number.series output
- address empty$
- { editor empty$
- { publisher new.sentence.checka }
- { organization publisher new.sentence.checkb
- organization output
- }
- if$
- publisher output
- format.date "year" output.check
- }
- { address output.nonnull
- format.date "year" output.check
- new.sentence
- editor empty$
- 'skip$
- { organization output }
- if$
- publisher output
- }
- if$
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {techreport}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- format.tr.number output.nonnull
- institution "institution" output.check
- address output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- note "note" output.check
- format.date output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {default.type} { misc }
-
-MACRO {jan} {"January"}
-
-MACRO {feb} {"February"}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"April"}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"August"}
-
-MACRO {sep} {"September"}
-
-MACRO {oct} {"October"}
-
-MACRO {nov} {"November"}
-
-MACRO {dec} {"December"}
-
-MACRO {acmcs} {"ACM Computing Surveys"}
-
-MACRO {acta} {"Acta Informatica"}
-
-MACRO {cacm} {"Communications of the ACM"}
-
-MACRO {ibmjrd} {"IBM Journal of Research and Development"}
-
-MACRO {ibmsj} {"IBM Systems Journal"}
-
-MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
-
-MACRO {ieeetc} {"IEEE Transactions on Computers"}
-
-MACRO {ieeetcad}
- {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
-
-MACRO {ipl} {"Information Processing Letters"}
-
-MACRO {jacm} {"Journal of the ACM"}
-
-MACRO {jcss} {"Journal of Computer and System Sciences"}
-
-MACRO {scp} {"Science of Computer Programming"}
-
-MACRO {sicomp} {"SIAM Journal on Computing"}
-
-MACRO {tocs} {"ACM Transactions on Computer Systems"}
-
-MACRO {tods} {"ACM Transactions on Database Systems"}
-
-MACRO {tog} {"ACM Transactions on Graphics"}
-
-MACRO {toms} {"ACM Transactions on Mathematical Software"}
-
-MACRO {toois} {"ACM Transactions on Office Information Systems"}
-
-MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
-
-MACRO {tcs} {"Theoretical Computer Science"}
-
-READ
-
-FUNCTION {sortify}
-{ purify$
- "l" change.case$
-}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
- 'len :=
- s #1 len substring$ =
- { s len #1 + global.max$ substring$ }
- 's
- if$
-}
-
-INTEGERS { et.al.char.used }
-
-FUNCTION {initialize.et.al.char.used}
-{ #0 'et.al.char.used :=
-}
-
-EXECUTE {initialize.et.al.char.used}
-
-FUNCTION {format.lab.names}
-{ 's :=
- s num.names$ 'numnames :=
- numnames #1 >
- { numnames #4 >
- { #3 'namesleft := }
- { numnames 'namesleft := }
- if$
- #1 'nameptr :=
- ""
- { namesleft #0 > }
- { nameptr numnames =
- { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { "{\etalchar{+}}" *
- #1 'et.al.char.used :=
- }
- { s nameptr "{v{}}{l{}}" format.name$ * }
- if$
- }
- { s nameptr "{v{}}{l{}}" format.name$ * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
- numnames #4 >
- { "{\etalchar{+}}" *
- #1 'et.al.char.used :=
- }
- 'skip$
- if$
- }
- { s #1 "{v{}}{l{}}" format.name$
- duplicate$ text.length$ #2 <
- { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
- 'skip$
- if$
- }
- if$
-}
-
-FUNCTION {author.key.label}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- { key #3 text.prefix$ }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- { key #3 text.prefix$ }
- if$
- }
- { editor format.lab.names }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.key.organization.label}
-{ author empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- { key #3 text.prefix$ }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {editor.key.organization.label}
-{ editor empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- { key #3 text.prefix$ }
- if$
- }
- { editor format.lab.names }
- if$
-}
-
-FUNCTION {calc.label}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.organization.label
- { type$ "manual" =
- 'author.key.organization.label
- 'author.key.label
- if$
- }
- if$
- }
- if$
- duplicate$
- year field.or.null purify$ #-1 #2 substring$
- *
- 'label :=
- year field.or.null purify$ #-1 #4 substring$
- *
- sortify 'sort.label :=
-}
-
-FUNCTION {sort.format.names}
-{ 's :=
- #1 'nameptr :=
- ""
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 >
- { " " * }
- 'skip$
- if$
- s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
- nameptr numnames = t "others" = and
- { "et al" * }
- { t sortify * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {sort.format.title}
-{ 't :=
- "A " #2
- "An " #3
- "The " #4 t chop.word
- chop.word
- chop.word
- sortify
- #1 global.max$ substring$
-}
-
-FUNCTION {author.sort}
-{ author empty$
- { key empty$
- { "to sort, need author or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {author.editor.sort}
-{ author empty$
- { editor empty$
- { key empty$
- { "to sort, need author, editor, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {author.organization.sort}
-{ author empty$
- { organization empty$
- { key empty$
- { "to sort, need author, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { "The " #4 organization chop.word sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {editor.organization.sort}
-{ editor empty$
- { organization empty$
- { key empty$
- { "to sort, need editor, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { "The " #4 organization chop.word sortify }
- if$
- }
- { editor sort.format.names }
- if$
-}
-
-FUNCTION {presort}
-{ calc.label
- sort.label
- " "
- *
- type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.sort
- { type$ "proceedings" =
- 'editor.organization.sort
- { type$ "manual" =
- 'author.organization.sort
- 'author.sort
- if$
- }
- if$
- }
- if$
- *
- " "
- *
- year field.or.null sortify
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
-% DFK throw away stuff above and use cite$ for sort key
- pop$
- cite$
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-ITERATE {presort}
-
-SORT
-
-STRINGS { longest.label last.sort.label next.extra }
-
-INTEGERS { longest.label.width last.extra.num }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #0 int.to.chr$ 'last.sort.label :=
- "" 'next.extra :=
- #0 'longest.label.width :=
- #0 'last.extra.num :=
-}
-
-FUNCTION {forward.pass}
-{ last.sort.label sort.label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
- }
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- sort.label 'last.sort.label :=
- }
- if$
-}
-
-FUNCTION {reverse.pass}
-{ next.extra "b" =
- { "a" 'extra.label := }
- 'skip$
- if$
- label extra.label * 'label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- 'skip$
- if$
- extra.label 'next.extra :=
-}
-
-EXECUTE {initialize.longest.label}
-
-ITERATE {forward.pass}
-
-REVERSE {reverse.pass}
-
-% DFK removed code about et.al.char
-% DFK changed to HTML
-FUNCTION {begin.bib}
-{ "<HTML>" write$ newline$
- "<HEAD><TITLE> Bibliography </TITLE>" write$ newline$
- "</HEAD>" write$ newline$
- "<BODY BGCOLOR=#EEEEEE>" write$ newline$
- "<DL>" write$ newline$
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-% DFK changed to HTML
-FUNCTION {end.bib}
-{ newline$
- "</DL>" write$ newline$
- "</BODY>" write$ newline$
- "</HTML>" write$ newline$
-}
-
-EXECUTE {end.bib}
+++ /dev/null
-<html><head>
- <title>References on Music Notation</title>
- </head>
- <body>
- <h1> References on Music Notation</h1>
- <ul>
- <li>colorado.bib:
- University of Colorado Engraving music bibliography
- <p>
- by Alyssa Lamb (edited & converted to bibtex by HWN)
- </p>
- (<a href=colorado.html>HTML</a>)
- </li>
- <li>computer-notation.bib:
- The music notation with computer bibliography
- <p>
- by Han-Wen Nienhuys
- </p>
- (<a href=computer-notation.html>HTML</a>)
- </li>
- <li>engraving.bib:
- The engraving bibliography
- <p>
- by Han-Wen Nienhuys
- </p>
- (<a href=engraving.html>HTML</a>)
- </li>
- </ul>
- </body>
-</html>
@end ignore
+@item
+Instrument names and vocal names now take into account the extent of
+system start delimiters in other staves for their positioning,
+resulting in improved default alignment for left-, center- and
+right-aligned names.
+@lilypond[quote,indent=18\mm]
+<<
+ \new StaffGroup <<
+ \new GrandStaff <<
+ \new Staff {
+ \set Staff.instrumentName = #"Piccolo"
+ c''1
+ }
+ \new Staff {
+ \set Staff.instrumentName = #"Flute"
+ c''1
+ }
+ >>
+ \new Staff {
+ \set Staff.instrumentName = #"Bassoon"
+ \clef tenor
+ c'1
+ }
+ >>
+ \new PianoStaff <<
+ \set PianoStaff.instrumentName = #"Piano"
+ \context Staff = "up" {
+ c'1
+ }
+ \context Staff = "down" {
+ \clef bass
+ c1
+ }
+ >>
+>>
+@end lilypond
+
@item
Braces in markup can now be selected by point size using the markup commands
@code{\left-brace} and @code{\right-brace}.
@end lilypond
@item
-An eyeglasses markup was added, incidating strongly to look at the
+An eyeglasses markup was added, indicating strongly to look at the
conductor for instructions:
@lilypond[quote,relative=2]
\mark \markup { \eyeglasses }
@ifclear snippets-sections
@macro lydoctitle {TEXT}
+@need 600
@emph{\TEXT\}
@end macro
@end ifclear
@end html
@end macro
+@macro exampleImage{IMAGE-FILE}
+@html
+<div class="float-center">
+ <a class="clickable" href="examples/\IMAGE-FILE\.png">
+ <img src="examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
+ </a>
+ <p style="text-align: center">
+ (click to enlarge)
+ </p>
+</div>
+@end html
+@iftex
+@image{general/examples/out-www/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@end iftex
+@ifinfo
+FIXME: images broken in info
+@c @sourceimage{lilypond/general/examples/out-www/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
+@end ifinfo
+@end macro
+
-@macro imageClickable{IMAGE-FILE, MORE-TEXT, CLICK-FILE, POSITION}
+@macro imageClickable{IMAGE-FILE, EXT, MORE-TEXT, CLICK-FILE, CLICK-EXT, POSITION}
@html
<div class="float-\POSITION\">
- <a class="clickable" href="\CLICK-FILE\">
- <img src="\IMAGE-FILE\" alt="\IMAGE-FILE\">
+ <a class="clickable" href="pictures/\CLICK-FILE\.\CLICK-EXT\">
+ <img src="pictures/\IMAGE-FILE\.\EXT\" alt="\IMAGE-FILE\">
</a>
<p style="text-align: center">
\MORE-TEXT\
</p>
</div>
@end html
-@ifnothtml
-FIXME: broken image
-@c @image{\IMAGE-FILE\}
-@end ifnothtml
+@iftex
+@image{pictures/out-www/\IMAGE-FILE\,,,\IMAGE-FILE\}
+@end iftex
+@ifinfo
+FIXME: images broken in info
+@c @sourceimage{lilypond/\IMAGE-FILE\,,,\IMAGE-FILE\}
+@end ifinfo
@end macro
-@macro imageFloat{IMAGE-FILE, POSITION}
+@macro imageFloat{IMAGE-FILE, EXT, POSITION}
@html
-<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\" alt="\IMAGE-FILE\">
+<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\.\EXT\" alt="\IMAGE-FILE\">
@end html
-@ifnothtml
-FIXME: broken image
-@c @image{\IMAGE-FILE\}
-@end ifnothtml
+@iftex
+@image{pictures/out-www/\IMAGE-FILE\,,,\IMAGE-FILE\,\EXT\}
+@end iftex
+@ifinfo
+FIXME: images broken in info
+@c @sourceimage{lilypond/\IMAGE-FILE\,,,\EXT\}
+@end ifinfo
@end macro
-@macro imageId{ID, IMAGE-FILE, ALT}
+@macro imageId{ID, IMAGE-FILE, EXT, ALT}
@html
<div id="\ID\">
- <img src="pictures/\IMAGE-FILE\" alt="\ALT\">
+ <img src="pictures/\IMAGE-FILE\.\EXT\" alt="\ALT\">
</div>
@end html
-@ifnothtml
-FIXME: broken image
-@c @image{\IMAGE-FILE\}
-@end ifnothtml
+@iftex
+@image{pictures/out-www/\IMAGE-FILE\,,,\ALT\}
+@end iftex
+@ifinfo
+FIXME: images broken in info
+@c @sourceimage{lilypond/\IMAGE-FILE\,,,\ALT\}
+@end ifinfo
@end macro
@end ifset
@uref{http://bugs.ghostscript.com/show_bug.cgi?id=688154}
and the patch from
@uref{http://bugs.ghostscript.com/show_bug.cgi?id=688017}.
-@item @uref{http://www.nongnu.org/texi2html/,Texi2HTML} 1.80 or newer
+@item @uref{http://www.nongnu.org/texi2html/,Texi2HTML} 1.82 or newer
@item rsync
@end itemize
Files marked with priority 3, 4 or 5 may be submitted individually.
Word counts (excluding LilyPond snippets) are given for each file.
+FIXME: take into account the new web site integration in main sources.
+
@example
-1- Documentation index and Tutorial
429 learning.tely
@node Translating the documentation
@section Translating the documentation
+The mailing list @code{translations@@lilynet.net} is dedicated to
+LilyPond web site and documentation translation; on this list, you will
+get support from the Translations Meister and experimented translators,
+and we regularly discuss translations issues common to all languagues.
+All people interested in LilyPond translations are invited to subscribe
+to this list regardless of the amount of their contribution, by sending
+an email to @code{translations-request@@lilynet.net} with subject
+@code{subscribe} and an empty message body.
+
@menu
* Getting started with documentation translation::
* Documentation translation details::
least the documentation so that you can check the output yourself and
more quickly; if you are interested, see @ref{Compiling from source}.
-@menu
-@end menu
@node Which documentation can be translated
@unnumberedsubsubsec Which documentation can be translated
+FIXME: take into account the new web site integration in main sources.
+
The makefiles and scripts infrastructure currently supports translation
of the following documentation:
names, file names and comments should be translated.
Finally, please carefully apply every rule exposed in @ref{Texinfo
-introduction and usage policy}, and @ref{Documentation policy}. If
-one of these rules conflicts with a rule specific to your language,
-please ask the Translation meister and/or the Documentation Editors on
-@email{lilypond-devel@@gnu.org}.
+introduction and usage policy}, and @ref{Documentation policy}. If one
+of these rules conflicts with a rule specific to your language, please
+ask the Translation meister on @email{translations@@lilynet.net} list
+and/or the Documentation Editors on @email{lilypond-devel@@gnu.org}
+list.
@node Translating the Notation Reference and Application Usage
make CHECKED_FILES=@var{MY_LANGUAGE}/@var{manual}/@var{foo}.itely check-translation
@end example
+@noindent
+In case this file has been renamed since you last updated the
+translation, you should specify both old and new file names,
+e.g. @code{CHECKED_FILES=@var{MY_LANGUAGE}/@{@var{manual},user@}/@var{foo}.itely}.
+
To see only which files need to be updated, do
@example
@menu
* Git introduction::
+* Git user configuration::
* Main source code::
-* Website source code::
* Documentation translations source code::
* Other branches::
* Other locations for git::
-* Git user configuration::
@end menu
@node Git introduction
track changes to files, and for multiple people to work on the
same set of files efficiently.
+After downloading the source code, it is important to update the
+repository by @ref{Updating the source code}.
+
@warning{These instructions assume that you are using the
command-line version of Git 1.5 or higher. Windows users should
skip to @ref{Git on Windows}.}
+Some sections of this guide will redirect to specific Git man pages;
+however, if you think you need to understand more of Git, you might want
+to read the book @uref{http://progit.org/,Pro Git}.
+
+
+@node Git user configuration
+@subsection Git user configuration
+
+Some useful cofiguration can be performed automatically; cut and
+paste the following section:
+
+@example
+git config --global color.ui auto
+git config --global branch.autosetuprebase always
+@end example
+
+To configure git to automatically use your name and email address
+for commits and patches, edit the below lines by changing all the
+@code{MY...} entries:
+
+@example
+git config --global user.name "MYNAME"
+git config --global user.email MYEMAIL@@EXAMPLE.NET
+@end example
+
@node Main source code
@subsection Main source code
@end smallexample
-@node Website source code
-@subsection Website source code
-
-To get the website (including translations),
-
-@smallexample
-mkdir lilypond-web ; cd lilypond-web
-git init-db
-git remote add -f -t web -m web origin git://git.sv.gnu.org/lilypond.git/
-git checkout -b web origin/web
-@end smallexample
-
-
@node Documentation translations source code
@subsection Documentation translations source code
To translate the documentation (@emph{not} the website),
+FIXME: when website is integrated, modify this.
@smallexample
mkdir lilypond-translation; cd lilypond-translation
@itemize
-@item @code{gub}:
-This stores the Grand Unified Binary, our cross-platform building
-tool.
-@c TODO: merge the gub stuff with this CG.
-For more info, see @uref{http://lilypond.org/gub}. The git
-location is:
-
-@example
-http://github.com/janneke/gub
-@end example
-
@item @code{dev/XYZ}:
These branches are for individual developers. They store code
which is not yet stable enough to be added to the @code{master}
@end itemize
+Another item of interest might be the Grand Unified Builder, our
+cross-platform building tool. Since it is used by projects as
+well, it is not stored in our gub repository. For more info, see
+@uref{http://lilypond.org/gub}. The git location is:
+
+@example
+http://github.com/janneke/gub
+@end example
+
@node Other locations for git
@subsection Other locations for git
internet through a router that filters out Git and/or SSH connections.
-@node Git user configuration
-@subsection Git user configuration
-
-To configure git to automatically use your name and email address
-for commits and patches,
-
-@example
-git config --global user.name "MYNAME"
-git config --global user.email MYEMAIL@@EXAMPLE.NET
-@end example
-
@node Updating the source code
@section Updating the source code
file at the same time. As long as everybody updates their version of
the file with the most recent changes (@emph{pulling}), there are
generally no problems with this multiple-person editing. However,
-boring problems can arise if you do not pull before attempting commit,
-e.g. you may encounter a conflict; in this case, see @ref{Resolving
-conflicts}.
+big problems can arise if you do not pull before attempting to
+commit. If this occurs, see @ref{Resolving conflicts}.
@node Update command
git pull -r
@end example
+@noindent
+The @code{-r} option is short for @code{--rebase}. If you don't
+want to type @code{-r} every time, add @code{rebase = true} to the
+master branch in your @file{.git/config}, like so:
+
+@example
+[branch "master"]
+ remote = origin
+ merge = refs/heads/master
+ rebase = true
+@end example
+
+@warning{translators and documentation editors, if you have changed
+committishes in the head of translated files using commits you have not
+yet pushed to @code{git.sv.gnu.org}, please do not rebase. If you want
+to avoid wondering whether you should rebase each time you pull, please
+always use committishes from master and/or lilypond/translation branch
+on @code{git.sv.gnu.org}, which in particular implies that you must push
+your changes to documentation except committishes updates (possibly
+after having rebased), then update the committishes and push them.}
+
+@c FIXME: when committishes automatic conditional update have been
+@c tested and documented, append the following to the warning above:
+@c Note that using update-committishes make target generally touches
+@c committishes.
+
@node Resolving conflicts
@subsection Resolving conflicts
with:
@example
-git add FILENAME
+git add @var{FILENAME}
@end example
@noindent
(and possibly modify the @file{GNUmakefile})
-These commands will produce one or more files named
-@file{0001-xyz}, @file{0002-abc}, etc. in the top directory of the
-git tree. Send an email to @email{lilypond-devel@@gnu.org} with
-these files attached, and a developer will review and apply the
-patches to the main repository.
+These commands will produce one or more files named @file{0001-xyz},
+@file{0002-abc}, etc. in the top directory of the git tree. Send an
+email to @email{lilypond-devel@@gnu.org} with these files attached, and
+a developer will review and apply the patches to the main repository.
+If your patch is some translation work, you may send it to
+@email{translations@@lilynet.net} instead.
@node Committing directly
@subsection Committing directly
-Most contributors do not have permission to commit directly. If you
-do, make sure you have set up your name and email in @ref{Git user
+Most contributors do not have permission to commit directly. If you do,
+make sure you have set up your name and email in @ref{Git user
configuration}, then edit @file{.git/config}: change the line
@example
@item
Priority-Medium: normal priority; this is the highest priority a
non-crashing, non-regression bug report can receive.
-(irregardless of the perceived importance)
+(regardless of the perceived importance)
@item
Priority-Low: less important than normal.
When a new feature is to be added to LilyPond, it is necessary to
ensure that the feature is properly integrated to maintain
its long-term support. This section describes the steps necessary
-for feature addition.
+for feature addition and modification.
@subsection Write the code
-You should create a new git branch for writing the code, as that
+You should probably create a new git branch for writing the code, as that
will separate it from the master branch and allow you to continue
to work on small projects related to master.
Use existing regression tests as templates to demonstrate the type of
header information that should be included in a regression test.
-@subsection Write documentation
-
-Although it is not required, it is helpful if the developer can
-write relevant material for inclusion in the Notation Reference.
-If the developer does not feel qualified to write the documentation,
-a documentation editor will be able to write it from the regression
-tests.
-
-If the modification changes the input syntax so that inline snippets in
-the documentation need to be changed, you will need to change the
-snippets in both the english version of the documentation and any
-translated versions. If you do not change the snippets in all
-translations, older versions of the snippet may be included
-when the documentation is built.
-
-If lsr snippets need to be changed, the snippet should be copied to
-@file{Documentation/snippets/new} and modified there. The portions of
-the snippet that are added by makelsr.py should be removed. The changed
-snippet will then be included in all versions of the documentation.
-
-If non-snippet text is changed in the english documentation, no
-corresponding changes should be made in the translated documentation.
-
@subsection Write convert-ly rule
If the modification changes the input syntax, a convert-ly rule
rule will simply point out to the user that the feature needs
manual correction.
+@subsection Automatically update documentation, snippets, and regtests
+
+convert-ly should be used to update the documentation, the snippets,
+and the regression tests. This not only makes the necessary syntax
+changes, it also tests the convert-ly rules.
+
+The automatic updating is a three step process. First, be sure you
+are in the top-level source directory. Then, for the
+documentation, do:
+
+@example
+find Documentation/ -name '*.itely' | xargs convert-ly -e --from @qq{@var{X.Y.Z}}
+@end example
+
+@noindent
+where @var{X.Y.Z} is the version number of the last released development
+version.
+
+Next, for the snippets, do:
+
+@example
+find Documentation/snippets/ -name '*.ly' | xargs convert-ly -e --from @qq{@var{X.Y.Z}}
+@end example
+
+Finally, for the regression tests, do:
+
+@example
+find input/regression/ -name '*.ly' | xargs convert-ly -e --from @qq{@var{X.Y.Z}}
+
+@end example
+
+@subsection Manually update documentation, snippets, and regtests
+
+Where the convert-ly rule is not able to automatically update the inline
+lilypond code in the documentation (i.e. if a NOT_SMART rule is used), the
+documentation must be manually updated. The inline snippets that require
+changing must be changed in the English version of the docs and all
+translated versions. If the inline code is not changed in the
+translated documentation, the old snippets will show up in the
+English version of the documentation.
+
+Where the convert-ly rule is not able to automatically update snippets
+in Documentation/snippets/, those snippets must be manually updated.
+Those snippets should be copied to Documentation/snippets/new. The
+comments at the top of the snippet describing its automatice generation
+should be removed. All translated texidoc strings should be removed.
+The comment @qq{% begin verbatim} should be removed. The syntax of
+the snippet should then be manually edited.
+
+Where snippets in Documentation/snippets are made obsolete, the snippet
+should be copied to Documentation/snippets/new. The comments and
+texidoc strings should be removed as described above. Then the body
+of the snippet should be changed to:
+
+@example
+\markup @{
+ "This snippet is deprecated as of version X.Y.Z and
+ will be removed from the documentation."
+@}
+@end example
+
+@noindent
+where X.Y.Z is the version number for which the convert-ly rule was
+written.
+
+Update the snippet files by running:
+
+@example
+scripts\auxiliar\makelsr.py
+@end example
+
+Where the convert-ly rule is not able to automatically update regression
+tests, the regression tests in input/regression should be manually
+edited.
+
+Although it is not required, it is helpful if the developer
+can write relevant material for inclusion in the Notation
+Reference. If the developer does not feel qualified to write
+the documentation, a documentation editor will be able to
+write it from the regression tests. The text that is added to
+or removed from the documentation should be changed only in
+the English version.
+
@subsection Write NEWS entry
An entry should be added to the NEWS file to describe the feature
The NEWS entry should be written to show how the new change
improves LilyPond, if possible.
+@subsection Verify successful build
+
+When the changes have been made, successful completion must be
+verified by doing
+
+@example
+make all
+make doc
+@end example
+
+When these commands complete without error, the patch is
+considered to function successfully.
+
+Developers on Windows who are unable to build LilyPond should
+get help from a Linux or OSX developer to do the make tests.
+
@subsection Verify regression test
In order to avoid breaking LilyPond, it is important to verify that
@subsection Post patch for comments
For any change other than a minor change, a patch set should be
-posted on Rietveld for comment.
+posted on Rietveld for comment. This requires the use of an
+external package, git-cl.
+
+git-cl is installed by:
+
+@example
+git clone git://neugierig.org/git-cl.git
+@end example
+
+Then, add the git-cl directory to your PATH, or create a
+symbolic link to the git-cl and upload.py in one of your
+PATH directories (like usr/bin). git-cl will is then
+configured by
+
+@example
+git-cl config
+@end example
+
+@noindent
+and answering the questions that are asked.
The patch set is posted by issuing the following command, after
first committing all changes:
#tocframe { display: none; }
.nav_table { display: none; }
}
+
+
+/***********************************************************/
+/* OTHER */
+/***********************************************************/
+
+.warning {
+ background: #eef;
+ text-align: left;
+ padding: 0;
+ border: 1px solid green;
+ /* Experimental rounded corners */
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+ margin: 1em;
+}
+
+
top: 0;
left: 0;
right: 0;
- background: #9ccc7c;
+ background: url(../pictures/nav-bg.jpg) repeat-x top left;
max-width: 70em;
font-size: 100%;
line-height: 1;
#tocframe > ul:first-child > li:first-child a {
text-indent: -999em;
- background: #9ccc7c url(../pictures/lily-home.png) no-repeat 50% 50%;
+ background: url(../pictures/lily-home-nav-bg.png) no-repeat 50% 50%;
width: 9%;
/* css3 no go yet? */
border-bottom-left-radius: 30px;
}
#tocframe > ul:first-child > li:first-child a:hover {
- background: #bdee9d url(../pictures/lily-home.png) no-repeat 50% 50%;
+ background: url(../pictures/lily-home-nav-hover.png) no-repeat 50% 50%;
width: 9%;
}
#tocframe > ul:first-child > li:first-child.toc_current a {
text-indent: -999em;
- background: #8cbc6c url(../pictures/lily-home.png) no-repeat 50% 50%;
+ background: url(../pictures/lily-home-nav-active.png) no-repeat 50% 50%;
width: 9%;
}
#tocframe > ul:first-child > li:first-child.toc_current a:hover {
text-indent: -999em;
- background: #acdd8c url(../pictures/lily-home.png) no-repeat 50% 50%;
+ background: url(../pictures/lily-home-nav-active.png) no-repeat 50% 50%;
width: 9%;
}
#tocframe li form {
float: left;
width: 17%;
- background: #9ccc7c;
+ background: url(nav-bg.jpg);
font-size: 100%;
padding: 0.5em 0.8%;
margin: 0;
-webkit-border-bottom-right-radius: 20px;
}
+#tocframe li form input[type="hidden"] {
+ visibility: hidden;
+ background: #f00;
+}
+
#tocframe li a {
float: left;
width: 18%;
font-weight: bold;
padding: 0.85em 0;
margin: 0;
- background: #9ccc7c;
+ background: url(nav-bg.jpg);
}
#tocframe li a:hover {
- background: #bdee9d;
- text-decoration: none;
+ background: url(nav-hover.jpg);
+ text-decoration: underline;
}
#tocframe li.toc_current a,
#tocframe li.toc_current a:hover {
- background: #8cbc6c;
- text-decoration: none;
+ background: url(nav-active.jpg);
+ color:#000;
+ text-decoration: underline;
}
/* second level toc (unnumberedsec) */
#verifier_texinfo {
position: absolute;
- top: 0;
+ bottom: 0;
right: 0;
left: 50%;
+ width: 50%;
}
#verifier_texinfo h3 {
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: d415427752fa5fd83b0da189d677481d1c7f3043
+ Translation of GIT committish: 5cf864d550e7148412d594cf336841791bff6f76
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@noindent
auszuführen.
-@c MacOS@tie{}X-Benutzer können diesen Befehl im Menu unter
-@c @code{Compile > Update syntax} finden.
-@c Does it work? TR
-Wenn keine Veränderungen in @code{meineDatei.ly} vorgenommen wurden
-und eine Datei @code{meineDatei.ly.NEW} erstellt wird, it
-@code{meineDatei.ly} schon aktuell.
+Damit wird @code{meineDatei.ly} direkt aktualisiert und die
+Originaldatei unter @code{meineDatei.ly~} gespeichert.
+
+Alternativ kann man der aktualisierten Datei auch einen anderen
+Namen geben, in welchem Fall die Originaldatei unverändert
+gelassen wird. Das geht mit dem Befehl
+
+@example
+convert-ly meineDatei.ly > meineneueDatei.ly
+@end example
+
+Das Programm zeigt die Versionsnummern an, für die Konvertierungen
+vorgenommen wurden. Wenn keine Versionsnummern angezeigt werden,
+ist die Datei schon aktuell.
+
+
+MacOS@tie{}X-Benutzer können diesen Befehl im Menu unter
+@code{Compile > Update syntax} finden.
+
+Benutzer unter Windows müssen diesen Befehl auf der Eingabeaufforderung
+schreiben, welche man üblicherweise unter dem Menüeintrag
+@code{Start > Alle Programme > Zubehör > Eingabeaufforderung} zu
+finden ist.
@menu
* Probleme mit convert-ly::
@end menu
+
@node Optionen von convert-ly auf der Kommandozeile
@subsection Optionen von @command{convert-ly} auf der Kommandozeile
@translationof Command line options for convert-ly
in der Datei überlicherweise etwas niedriger ist als die
Version von @command{convert-ly}.
-Um LilyPond-Fragmente in texinfo-Dateien zu aktualisieren, gilt
-der Befehl:
-
-@example
-convert-ly --from=... --to=... --no-version *.itely
-@end example
-
-Um die Änderungen der LilyPond-Syntax zwischen bestimmten Versionen
-zu sehen, kann der Befehl
-
-@example
-convert-ly --from=... --to=... -s
-@end example
-
-@noindent
-benutzt werden.
-
-Viele Dateien können auf einmal aktualisiert werden, indem
-@code{convert-ly} mit den üblichen UNIX-Befehlen kombiniert
-wird. Das folgende Beispiel aktualisiert alle @code{.ly}-Dateien
-im aktuellen Verzeichnis:
-
-@example
-for f in *.ly; do convert-ly -e $f; done;
-@end example
-
Die allgemeine Syntax des Programms lautet:
@example
-convert-ly [@var{option}]@dots{} @var{file}@dots{}
+convert-ly [@var{Option}]@dots{} @var{Dateiname}@dots{}
@end example
Folgende Optionen sind möglich:
@table @code
@item -e,--edit
-Verändere die entsprechende Zeile der Eingabedatei. Überschreibt
-@code{--output}.
+Führt die Aktualisierung direkt in der Datei durch, die Datei wird
+dabei verändert.
@item -f,--from=@var{von-Versionsnummer}
Setze die Version, ab welcher konvertiert werden soll. Wenn diese
Option nicht gesetzt ist, versucht @command{convert-ly}, die
Version auf Grundlage von @code{\version} zu raten.
+Beispiel: @code{--from=2.10.25}
@item -n,--no-version
Normalerweise fügt @command{convert-ly} eine @code{\version}-Zeile
@item --to=@var{bis-Versionsnummer}
Hiermit kann das Ziel der Konversion gesetzt werden. Standard ist
-die neueste mögliche Version.
+die neueste mögliche Version. Beispiel: @code{--to=2.12.2}
@item -h, --help
Benutzerhilfe ausgeben.
@end table
+Um LilyPond-Fragmente in texinfo-Dateien zu aktualisieren, gilt
+der Befehl:
+
+@example
+convert-ly --from=... --to=... --no-version *.itely
+@end example
+
+Um die Änderungen der LilyPond-Syntax zwischen bestimmten Versionen
+zu sehen, kann der Befehl
+
+@example
+convert-ly --from=... --to=... -s
+@end example
+
+@noindent
+benutzt werden.
+
+Viele Dateien können auf einmal aktualisiert werden, indem
+@code{convert-ly} mit den üblichen UNIX-Befehlen kombiniert
+wird. Das folgende Beispiel aktualisiert alle @code{.ly}-Dateien
+im aktuellen Verzeichnis:
+
+@example
+for f in *.ly; do convert-ly -e $f; done;
+@end example
+
+
@node Probleme mit convert-ly
@subsection Probleme mit @code{convert-ly}
@translationof Problems with convert-ly
+Wenn convert-ly unter Windows auf der Eingabeaufforderung mit einer
+Datei benutzt wird, deren Name oder Pfad Leerzeichen enthält, muss
+der gesamte Dateipfad mit drei (!) Anführungszeichen umgeben werden:
+
+@example
+convert-ly """D:/My Scores/Ode.ly""" > """D:/My Scores/new Ode.ly"""
+@end example
+
Nicht alle Änderungen der Syntax können konvertiert werden. Nur
eine Ausgabeoption kann angegeben werden. Scheme- und
LilyPond-Scheme-Code wird sehr unwahrscheinlich korrekt aktualisiert,
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.12.0"
+@c \version "2.13.4"
@c Translators: Till Rettig, Reinhold Kainhofer
@c Translation checkers: Hajo Bäß
<<
\new Staff \fragment
\new Staff \with {
- \override Beam #'thickness = #0.3
+ \override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #0.5
\override Bar #'thickness = #3.6
\override Tie #'thickness = #2.2
\set autoBeaming = ##f
\time 2/4
<d f g>4
- \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+ \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
\once \override NoteHead #'font-size = #-7
\once \override NoteHead #'font-family = #'sans
\once \override NoteHead #'font-series = #'bold
\key c \minor
\set subdivideBeams = ##f
\override Stem #'french-beaming = ##t
- \override Beam #'thickness = #0.3
+ \override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #4.0
g'16[ b16 fis16 g16]
<< \makeClusters {
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 5131c3292d30cabdf08839daa02a006e4d3c96c5
+ Translation of GIT committish: 5cf864d550e7148412d594cf336841791bff6f76
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
die Dateneingabe mit Scheme. Wenn Sie mehr über Scheme wissen wollen,
gehen Sie zu @uref{http://@/www@/.schemers@/.org}.
+LilyPond benutzt die GNU Guile-Implementation von Scheme, die auf dem
+@qq{R5RS}-Standard von Scheme basiert. Wenn Sie Scheme lernen wollen,
+um es innerhalb von LilyPond zu benutzen, wird es nicht empfohlen,
+mit einer anderen Implementation (die sich auf einen anderen
+Standard bezieht) zu arbeiten. Information zu Guile findet sich
+unter @uref{http://www.gnu.org/software/guile/}. Der
+@qq{R5RS}-Standard von Scheme befindet sich unter der Adresse
+@uref{http://www.schemers.org/Documents/Standards/R5RS/}.
+
+Die LilyPond-Installation enthält gleichzeitig auch die
+Guile-Implemenation von Scheme. Auf den meisten Systemen kann
+man in einer Scheme-sandbox experimentieren, indem man ein
+Kommandozeilen-Fenster öffnet und @code{guile} auffruft. Unter
+einigen Systemen, insbesondere unter Windows, muss man evtl.
+die Umgebungsvariable @code{GUILE_LOAD_PATH} auf das Verzeichnis
+@code{../usr/shr/guile/1.8} innerhalb des LilyPond-Installationsverzeichnisses
+setzen (der vollständige Pfad ist erklärt in @ref{Other sources of information}).
+Alternativ können Windows-Benutzer auch einfach @qq{Ausführen} im
+Startmenü wählen und @code{guile} schreiben.
+
Das Grundlegendste an einer Sprache sind Daten: Zahlen, Zeichen,
-Zeichenketten, Listen usw. Hier ist eine Liste der Datentypen, die für
+Zeichenketten, Listen usw. Hier ist eine Liste der Datentypen, die für
LilyPond-Eingabedateien relevant sind.
@table @asis
eine Zeichenkette"
@end example
+LilyPond-Kommentare (@code{%} oder @code{%@{ %@}}) können innerhalb
+von Scheme-Code nicht benutzt werden. Kommentare in Guile Scheme
+werden wie folgt notiert:
+
+@example
+; Einzeiliges Kommentar
+
+#!
+ Guile-Stil Blockkommentar (nicht schachtelbar)
+ Diese Kommentare werden von Scheme-Programmierern
+ selten benutzt und nie im Quellcode
+ von LilyPond
+!#
++@end example
+
+Merere aufeinander folgende Scheme-Ausdrücke in einer Notationsdatei
+können kombiniert werden, wenn man @code{begin} einsetzt. Das
+erlaubt es, die Anzahl an Rauten auf eins zu begrenzen.
+
+@example
+#(begin
+ (define foo 0)
+ (define bar 1))
+@end example
+
+Wenn @code{#} von einer öffnenden Klammer, @code{(}, gefolgt wird, wie
+in dem Beispiel oben, bleibt der Parser im Scheme-Modus bis eine
+passende schließende Klammer, @code{)}, gefunden wird, sodass keine
+weiteren @code{#}-Zeichen benötigt werden, um einen Scheme-Abschnitt
+anzuzeigen.
+
Für den Rest dieses Abschnitts nehmen wir an, dass die Daten immer in
einer LilyPond-Datei stehen, darum wird immer die Raute verwendet.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+ Translation of GIT committish: 5cf864d550e7148412d594cf336841791bff6f76
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
kann, wenn die Dimensionen des Objekts für die richtige Behandlung
benötigt werden. Zum Beispiel werden Fehler ausgegeben, wenn
die @code{stencil}-Eigenschaft des @code{NoteHead}-Objekts auf
-@code{#f} gesetzt wird.
+@code{#f} gesetzt wird. Wenn dieser Fall auftritt, kann anstatt
+dessen die @code{point-stencil}-Funktion benutzt werden, welche
+den Stencil auf ein Objekt mit der Größe Null setzt:
+
+@lilypond[quote,verbatim,relative=2]
+{
+ c c
+ \once \override NoteHead #'stencil = #point-stencil
+ c c
+}
+@end lilypond
@subheading break-visibility (unsichtbar machen)
@end macro
-@c obsolete, remove when translation is fully updated
-@macro commonprop
-@noindent
-@subsubheading Übliche Veränderungen der Einstellungen
-@end macro
-
@c Don't insert an empty line after @seealso! Otherwise we get
@c unwanted extra vertical space in the PDF output.
@c ***** Links and references *****
-@c obsolete
-@c usage: @lsr{ancient,custodes.ly}
-@macro lsr{DIR,TEXT}
-@ifhtml
-@uref{source/input/lsr/\DIR\/collated-files.html#\TEXT\,@file{\DIR\/\TEXT\}}
-@end ifhtml
-@ifnothtml
-@file{\DIR\/\TEXT\}
-@end ifnothtml
-@end macro
-
-@c don't update until this macro is correctly set up in English docs
-@macro lsrdir{DIR}
-@ifhtml
-@uref{source/input/lsr/\DIR\/collated-files.html,@file{\DIR\}/}
-@end ifhtml
-@ifnothtml
-@file{\DIR\}
-@end ifnothtml
-@end macro
-
-
@c Definitions for references:
@c
@c @rglos
@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: 5131c3292d30cabdf08839daa02a006e4d3c96c5
+ Translation of GIT committish: 5cf864d550e7148412d594cf336841791bff6f76
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end itemize
+@cindex Leerzeichen
+
+Leerzeichen zwischen Einheiten in der Eingabe werden generell ignoriert
+und können nach Belieben weggelassen werden oder hinzugefügt werden,
+um die Lesbarkeit des Codes zu verbessern. Mindestens ein Leerzeichen
+sollte jedoch unter folgenden Umständen immer eingesetzt werden, um
+Fehler zu vermeiden:
+
+@itemize
+@item
+Vor und hinter jeder schließenden oder öffnenden Klammer,
+@item
+nach jedem Befehl oder jeder Variable, also jeder Einheit, die mit
+@code{\} beginnt,
+@item
+nach jeder Einheit, die als Scheme-Ausdruck interpretiert werden,
+also alle Einheiten, die mit @code{#} beginnen.
+@item
+Alle Einheiten von Scheme-Ausdrücken müssen mit Leerzeichen getrennt
+werden,
+@item
+in Gesangstextabschnitten (@code{lyricmode}) müssen Leerzeichen
+zwischen alle Ausdrücke in @code{\override}- und @code{\set}-Befehlen
+gesetzt werden. Insbesondere müssen um Punkte und Gleichzeitszeichen
+in Befehlen wie @code{\override Score . LyricTex #'font-size = #5)}
+und vor dem gesamten Befehl geschrieben werden.
+
+@end itemize
+
@seealso
Hanbuch zum Lernen:
@rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}.
@subsection Zeichenkodierung
@translationof Text encoding
+@cindex Unicode
+@cindex UTF-8
+@cindex Nicht-ASCII-Zeichen
+
LilyPond benutzt alle Zeichen, die durch das Unicode-Konsortium
und ISO/IEC 10646 definiert sind. Hiermit wird den Zeichen
fast aller Schriftsysteme der Welt ein eindeutiger Name und ein
\markup { "Copyright 2008--2009" \char ##x00A9 }
@end lilypond
+@cindex Copyright-Zeichen
+
Um das Copyright-Zeichen zu notieren, kann folgender Code eingesetzt werden:
@example
@seealso
-Musickgossar:
+Musikgossar:
@rglos{fifth},
@rglos{interval},
@rglos{Pitch names}.
Dauern, Bebalkung und Takten.
@menu
-* Rhythmen eingeben::
-* Pausen eingeben::
-* Rhythmen anzeigen lassen::
-* Balken::
-* Takte::
-* Besondere rhythmische Fragen::
+* Rhythmen eingeben::
+* Pausen eingeben::
+* Rhythmen anzeigen lassen::
+* Balken::
+* Takte::
+* Besondere rhythmische Fragen::
@end menu
@translationof Writing rhythms
@menu
-* Tondauern::
-* Andere rhythmische Aufteilungen::
-* Tondauern skalieren::
-* Bindebögen::
+* Tondauern::
+* Andere rhythmische Aufteilungen::
+* Tondauern skalieren::
+* Bindebögen::
@end menu
@node Tondauern
@menu
-* Pausen::
-* Unsichtbare Pausen::
-* Ganztaktige Pausen::
+* Pausen::
+* Unsichtbare Pausen::
+* Ganztaktpausen::
@end menu
@node Pausen
werden sollen, müssen als mehrtaktige Pausen eingegeben werden.
Sie können sowohl für einen einzigen Takt als auch für mehrere
Takte verwendet werden, Näheres im Abschnitt
-@ref{Ganztaktige Pausen}.
+@ref{Ganztaktpausen}.
Um die vertikale Position einer Pause explizit festzulegen,
kann eine Note eingegeben werden, gefolgt vom Befehl @code{\rest}.
@rglos{maxima}.
Notationsreferenz:
-@ref{Ganztaktige Pausen}.
+@ref{Ganztaktpausen}.
Schnipsel:
@rlsr{Rhythms}.
-@node Ganztaktige Pausen
-@unnumberedsubsubsec Ganztaktige Pausen
+@node Ganztaktpausen
+@unnumberedsubsubsec Ganztaktpausen
@translationof Full measure rests
@cindex Ganztaktpausen
@translationof Beams
@menu
-* Automatische Balken::
-* Einstellung von automatischen Balken::
-* Manuelle Balken::
-* Gespreizte Balken::
+* Automatische Balken::
+* Einstellung von automatischen Balken::
+* Manuelle Balken::
+* Gespreizte Balken::
@end menu
@funindex \set
@funindex set
-Die Platzierung der automatischen Bebalkung wird entschieden, indem
-die folgenden Regeln in der dargestellten Reihenfolge angewendet werden:
+Die Platzierung der automatischen Bebalkung wird entsprechend
+der Taktart entschieden. Drei Arten von Regeln werden eingesetzt,
+um die Endpunkte der automatischen Balken zu bestimmen:
+@emph{Standardregeln} für die Taktart, @emph{ausdrückliche}
+Regeln für einen Balken in einer Taktart und die
+Eigenschaft @emph{beatLenght} (Schlagdauer) der Taktart.
+
+Die folgenden Regeln, in der Reihenfolge ihrer Priorität, gelten, wenn das Aussehen der Balken bestimmt wird:
@itemize
@item wenn @code{\autoBeamOff} eingeschaltet ist, werden keine Balken gesetzt, andernfalls
+@item wenn eine ausdrückliche Balkenregel für diesen Balken in
+dieser Taktart definiert ist, wird sie genommen um die möglichen
+Stellen zu errechnen, an denen der Balken enden darf, andernfalls
+
+@item wenn eine Standardbalkenregel für die Taktart definiert ist,
+wird sie genommen, um Noten mit Balken zu gruppieren, andernfalls
+
@item benutze den Wert von @code{beatLength} um die Noten mit Balken zu gruppieren.
@end itemize
-@i{@strong{Die Gruppierung von Noten verändern}}
+@i{@strong{Die Gruppierung von Taktzeiten verändern}}
-Sowohl @code{measureLength} als auch @code{beatLength} sind
-@i{Momente}, Einheiten musikalischer Dauer. Eine Größe der
-Art @i{Moment} wird durch die Scheme-Funktion
+Standardmäßig wird @code{beatLength} (Schlagdauer) von der
+Taktart abgeleitet, die mit dem @code{\time}-Befehl gesetzt
+wurde. Die Schlagdauer wird definiert als eine Eins über dem
+Nenner der Taktart.
+
+@code{beatLength} ist ein @i{Moment}, eine Einheit musikalischer
+Dauer. Eine Größe der Art @i{Moment} wird durch die Scheme-Funktion
@code{ly:make-moment} erstellt. Für mehr Information zu dieser
Funktion siehe @ref{Verwaltung der Zeiteinheiten}.
-@code{beatGrouping} ist eine Liste an Integren, die die Anzahl
-von Zählzeiten für jede Gruppe darstellen.
-
-@snippets
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{grouping-beats.ly}
-
-@funindex subdivideBeams
+Automatische Bebalkung und Balkenunterteilungen werden gespeichert
+in den Einstellungen der @code{beamSettings}-Eigenschaft.
+Standardwerte von @code{beamSettings} werden in der Datei
+@file{scm/beam-settings.scm} definiert. Einträge in
+@code{beamSettings} werden nach Taktart und Regelart sortiert.
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
+Die Taktart sollte als Scheme-Paar dargestellt werden, also
+@code{#'(4 . 4)}.
-@cindex Taktgruppen
-@cindex Schlaggruppen
-@cindex Taktschläge gruppieren
-@cindex Takt unterteilen
-@cindex Unterteilen von Takten
+Die Regelart sollte sein @code{#'end} für Balkenenden und
+@code{#'subdivide} für Balkenunterteilungen.
-@funindex autoBeamSettings
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{conducting-signs,-measure-grouping-signs.ly}
-
-
-@strong{@i{Die Endpunkte von Balken bestimmen}}
-
-Balkenenden-Regeln werden benötigt, wenn Balken unterschiedlicher
-Dauer zur gleichen Taktzeit enden sollen. Es kann beispielsweise
-nötig sein, dass Achtelbalken in einem 4/4-Takt nur am Ende des
-Taktes oder in seiner Mitte enden, Sechszehntelbalken hingegen
-sollen nach jeder Viertel enden, damit lange überbalkte Strecken
-vermieden werden. Die Regeln funktionieren folgendermaßen:
-
-Automatische Balken beginnen an einer beliebigen Note, enden aber nur
-an den bestimmten Positionen, die durch die Eigenschaften von
-@code{autoBeamSettings} bestimmt werden. Diese Eigenschaften
-bestehen aus einer Liste an Regeln, die die erlaubten Endpunkte
-definieren. Die Standardregeln von @code{autoBeamSettings}
-sind in der Datei @file{scm/@/auto@/-beam@/.scm} definiert. Um
-diese Datei zu finden, siehe
-@rlearning{Mehr Information}.
-
-Um eine neue Regel zu der Liste hinzuzufügen, muss folgende
-Syntax verwendet werden:
+Die Endungs- und Unterteilungsregeln bestehen aus einer
+Scheme-Aliste (oder Liste von Paaren), die den Balkentyp und
+die Gruppierung, die auf diesen Balkentyp angewendet werden
+soll, anzeigt.
@example
-#(override-auto-beam-setting
- '(Balken-Limit
- Balken-Zähler Balken-Nenner
- Taktart-Zähler Taktart-Nenner)
- Moment-Zähler Moment-Nenner [Kontext])
+#'((beam-type1 . grouping-1)
+ (beam-type2 . grouping-2)
+ (beam-type3 . grouping-3))
@end example
-@noindent
-wobei
+Balkentyp ist entweder ein Scheme-Paar, das die Dauer des Balkens
+anzeigt, etwa @code{(1 . 16)}, oder @code{*}, um eine Standardregel
+anzuzeigen, die auf alle Balken angewendet werden soll, wenn
+keine spezifische Regel vorliegt.
+
+Die Balkengruppierung ist eine Scheme-Liste, die die Gruppierungsart
+für einen Balkentyp darstellt. Für Standardregeln (in denen
+der Balkentyp @code{*} ist) wird die Gruppierung in Einheiten
+von @code{beatLength} dargestellt. Für explizite Regeln wird
+die Gruppierung in Einheiten der Balkenart angezeigt.
+
+Balkenregeln werden verändert mit @code{\overrideBeamSettings}
+und @code{\revertBeamSettings}.
@lilypond[quote,relative=2,verbatim]
\time 5/16
c8^"(3+2)" c16 c8
@end lilypond
+Balkenregelveränderungen können auf bestimmte Kontexte beschränkt
+werden. Wenn keine Regeln in einen unteren Kontext definiert
+sind, gelten die Regeln des höheren Kontext, in dem sich der
+niedrigere befindet.
+
@lilypond[quote, verbatim,relative=1]
\new Staff <<
\time 7/8
>>
@end lilypond
-Wenn mehrfache Stimmen benutzt werden, muss der @code{Staff}-Kontext
-angegeben werden, wenn die Balkenregeln auf alle Stimmen im System
-angewendet werden sollen:
+Wenn mehrere Stimmen eingesetzt werden, muss der @code{Staff}-Kontext
+definiert werden, wenn die Balkenregeln auf alle Stimmen des
+Systems angewendet werden sollen:
@lilypond[quote,verbatim,relative=2]
\time 7/8
% rhythm 3-1-1-2
-% Context Voice specified - does not work correctly
+% Context Voice specified -- does not work correctly
% Because of autogenerated voices, all beating will
% be at beatLength (1 . 8)
\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
@end lilypond
-@funindex revert-beam-setting
+@funindex revertBeamSettings
-Beam settings can be reverted to get back to default behavior. This
-is accomplished by using @code{\revertBeamSettings}. The arguments
-are the same as for @code{\overrideBeamSettings}, except no value
-for @var{grouping} is given:
+Balkenregeln können rückgängig gemacht und das Standardverhalten
+wieder hergestellt werden. Das erreicht man durch den Einsatz
+von @code{\revertBeamSettings}. Die Argumente sind die gleichen
+wie für @code{overrideBeamSettings}, außer das kein Wert für
+@var{Gruppierung} gegeben wird:
@example
-\revertBeamSettings context time-signature rule-type
+\revertBeamSettings Kontext Taktart Regelart
@end example
+
@lilypond[quote,verbatim,relative=2]
\time 4/4
\repeat unfold 16 {a16}
\repeat unfold 16 {a16}
@end lilypond
+
@snippets
-@cindex beams, subdividing
+@cindex Balken, Unterteilung
+@funindex subdivideBeams
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
{sub-dividing-beams.ly}
-@cindex measure groupings
-@cindex beats, grouping
-@cindex grouping beats
-@cindex measure sub-grouping
+@cindex Taktgruppen
+@cindex Schlaggruppen
+@cindex Taktschläge gruppieren
+@cindex Takt unterteilen
+@cindex Unterteilen von Takten
@funindex autoBeamSettings
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
{beam-endings-in-score-context.ly}
-@cindex Balken, letzter in einer Partitur
-@cindex letzter Balken einer Partitur
-@cindex Balken, letzter in einer polyphonen Stimme
+@cindex Balken, letzter in Partitur
+@cindex Balken, letzter in polyphoner Stimme
@knownissues
-Wenn eine Partitur aufhört, während ein automatischer Balken noch
-nicht geschlossen ist und noch Noten erwartet, wird dieser letzte
-Balken überhaupt nicht ausgegeben. Das gilt auch für polyphone
-Stimmen, die mit @code{<< @dots{} \\ @dots{} >>} gesetzt wurden.
-Wenn eine polyphone Stimme endet, während ein Balken noch Noten
-erwartet, wird dieser Balken nicht gesetzt.
+Wenn eine Partitur endet, während ein automatischer Balken noch
+nicht beendet wurde und weiterhin Notenerwartet, wird dieser
+letzte Balken nicht ausgegeben. Das Gleiche gilt auch für
+polyphone Stimmen, die mit der @code{<<
+@dots{} \\ @dots{} >>}-Konstruktion notiert wurden. Wenn eine
+polyphone Stimme endet, während ein Balken noch weitere Noten
+erwartet, wird der Balken nicht gesetzt.
@seealso
Schnipsel:
@rlsr{Rhythms}.
-
@node Manuelle Balken
@unnumberedsubsubsec Manuelle Balken
@translationof Manual beams
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Symbole für Akkordeon-Diskantregister"
texidocde = "
Diskantregister für Akkordeon können mit @code{\\markup} dargestellt werden.
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
-
+
texidocde = "
-Dieses Beispiel zeigt eine moderne Transkription des Gregorianischen
-Chorals. Hier gibt es keine Takte, keine Notenhälse und es werden nur
-halbe und Viertelnoten verwendet. Zusätzliche Zeichen zeigen die
+Dieses Beispiel zeigt eine moderne Transkription des Gregorianischen
+Chorals. Hier gibt es keine Takte, keine Notenhälse und es werden nur
+halbe und Viertelnoten verwendet. Zusätzliche Zeichen zeigen die
Länge von Pausen an.
"
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein
-Incipit an den Anfang des Stückes zu stellen, damit klar ist, wie
-Tempo und Schlüssel in der Originalnotation gesetzt waren. Während
-heutzutage Musiker an Taktlinien gewöhnt sind, um Rhythmen schneller
-zu erkennen, wurden diese in der Mensuralmusik nicht verwendet.
-Tatsächlich ändern sich die Rhythmen auch oft alle paar Noten. Als
-ein Kompromiss werden die Notenlinien nicht auf dem System, sondern
+Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein
+Incipit an den Anfang des Stückes zu stellen, damit klar ist, wie
+Tempo und Schlüssel in der Originalnotation gesetzt waren. Während
+heutzutage Musiker an Taktlinien gewöhnt sind, um Rhythmen schneller
+zu erkennen, wurden diese in der Mensuralmusik nicht verwendet.
+Tatsächlich ändern sich die Rhythmen auch oft alle paar Noten. Als
+ein Kompromiss werden die Notenlinien nicht auf dem System, sondern
zwischen den Systemen geschrieben.
"
"
doctitlede = "Balkengruppen für 7/8-Takte"
-
+
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Zeilenumbrüche sind normalerweise während Balken verboten. Das kann geändert
werden.
Zahl, umso näher wird die Beschriftung in Bezug auf die Note gesetzt. In
diesem Beispiel hat das @code{TextScript}-Objekt (das Kreuz) zuerst
die niedrigste Priorität, wird also auch am niedrigsten in dem ersten
-Beispiel gesetzt. Im zweiten Fall hat der Praller (das @code{Script})
+Beispiel gesetzt. Im zweiten Fall hat der Praller (das @code{Script})
die niedrigste Priorität, darum wird er am nächsten zum System gesetzt.
Wenn zwei Objekte die gleiche Priorität haben, wird ihre Reihenfolge
anhand ihres Auftretens in der Quelldatei entschieden.
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ein Arpeggio kann zwischen Noten aus unterschidlichen Stimmen auf demselben
-System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den
+System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den
@code{Staff}-Kontext verschoben wird:
"
In einem Klaviersystem (@code{PianoStaff}) ist es möglich, ein Arpeggio
zwischen beiden Systemen zu verbinden, indem die
@code{PianoStaff.connectArpeggios}-Eigenschaft gesetzt wird.
-
+
"
doctitlede = "Arpeggio zwischen Systemen in einem Klaviersystem erstellen"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
In Werken des fürhen 20. Jahrhundert, angefangen mit Schönberg, Berg
- und Webern (die zweite Wiener Schule), wird jeder Ton der
+ und Webern (die zweite Wiener Schule), wird jeder Ton der
Zwölftonleiter als gleichwertig erachtet, ohne hierarchische
Ordnung. Deshalb wird in dieser Musik für jede Note ein Versetzungszeichen
ausgegeben, auch für unalterierte Tonhöhen, um das neue Verständnis
der Musiktheorie und Musiksprache zu verdeutlichen.
-
+
Dieser Schnipsel zeigt, wie derartige Notationsregeln zu erstellen sind.
"
doctitlede = "Versetzungszeichen für jede Note im Stil der Zwölftonmusik"
Im Beispiel sind zwei Triolen zu sehen, obwohl @code{\\times} nur
einmal geschrieben wurde.
-Mehr Information über @code{make-moment} gibt es in \"Verwaltung der Zeiteinheiten\".
+Mehr Information über @code{make-moment} gibt es in \"Verwaltung der Zeiteinheiten\".
"
doctitlede = "Mehrere Triolen notieren, aber nur einmal \\times benutzen"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung:
-Alle Instrumente sind in @code{\key c \major} (C-Dur) notiert. Das bezieht sich
-auf die klingende Musik: LilyPond transponiert die Tonart automatisch, wenn
+Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung:
+Alle Instrumente sind in @code{\key c \major} (C-Dur) notiert. Das bezieht sich
+auf die klingende Musik: LilyPond transponiert die Tonart automatisch, wenn
sich die Noten innerhalb eines @code{\transpose}-Abschnitts befinden.
"
und Alterationen an (siehe
Handbuch zum Lernen @version{}, 4.6.3 Weitere Information zu
Hinweisen, wo diese Datei gespeichert ist)."
-
+
doctitlede = "Makam-Beispiel"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-In der meisten Klaviernotation werden die Dynamikzeichen zwischen
-den beiden Systemen zentriert. Für LilyPond muss man die Einstellungen
-etwas anpassen, aber Sie können ja das angepasste Beispiel von hier
+In der meisten Klaviernotation werden die Dynamikzeichen zwischen
+den beiden Systemen zentriert. Für LilyPond muss man die Einstellungen
+etwas anpassen, aber Sie können ja das angepasste Beispiel von hier
kopieren.
"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Anstatt ein eigenes System für Melodie und Text zu schreiben, können
+Anstatt ein eigenes System für Melodie und Text zu schreiben, können
Sie den Text auch zwischen die beiden Klaviersysteme schreiben
(und damit das zusätzliche System für die Gesangstimme auslassen).
"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Das nächste Beispiel ist typisch für ein Lied: Im oberen System die
+Das nächste Beispiel ist typisch für ein Lied: Im oberen System die
Melodie mit Text, darunter Klavierbegleitung.
"
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Taktnummern können vollkommen aus den Noten entfernt werden, indem
man den @code{Bar_number_engraver} aus dem @code{Score}-Kontext
texidocde = "
Wenn Crescendo-Klammern zu kurz sind, können sie verlängert werden, indem
die @code{minimum-length}-Eigenschaft des @code{Hairpin}-Objektes
-verändert wird.
+verändert wird.
"
doctitlede = "Die Mindestlänge von Crescendo-Klammern bestimmen"
Volta-Klammern werden normalerweise über alle Noten der Klammer gezogen, aber
es ist möglich sie zu verkürzen. Hierzu muss
@code{voltaSpannerDuration} definiert werden, in dem Beispiel etwa als
-3/4, sodass die Klammer nur einen Takt dauert.
+3/4, sodass die Klammer nur einen Takt dauert.
"
doctitlede = "Volta-Klammern verkürzen"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Mit diesem Beispiel können Sie einen Song mit Melodie,
+Mit diesem Beispiel können Sie einen Song mit Melodie,
Text und Akkorden schreiben.
"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben? Hier ist
+Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben? Hier ist
das richtige Beispiel für Sie!
"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren
-Sie es in Ihre Datei, fügen Sie Noten und Text hinzu und übersetzen
-Sie es mit LilyPond. In dem Beispiel wird die automatische
-Balkenverbindung ausgeschaltet (mit dem Befehl @code{\autoBeamOff}),
-wie es für Vokalmusik üblich ist.
-Wenn Sie die Balken wieder einschalten wollen, müssen Sie die
+Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren
+Sie es in Ihre Datei, fügen Sie Noten und Text hinzu und übersetzen
+Sie es mit LilyPond. In dem Beispiel wird die automatische
+Balkenverbindung ausgeschaltet (mit dem Befehl @code{\autoBeamOff}),
+wie es für Vokalmusik üblich ist.
+Wenn Sie die Balken wieder einschalten wollen, müssen Sie die
entsprechende Zeile entweder ändern oder auskommentieren.
"
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein
-Soloinstrument oder ein Melodiefragment. Kopieren Sie es und fügen
-Sie es in Ihre Datei ein, schreiben Sie die Noten hinzu, und Sie haben
+Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein
+Soloinstrument oder ein Melodiefragment. Kopieren Sie es und fügen
+Sie es in Ihre Datei ein, schreiben Sie die Noten hinzu, und Sie haben
eine vollständige Notationsdatei.
"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier
-wird auch eine @qq{@code{\global}}-Variable für Taktart und
+Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier
+wird auch eine @qq{@code{\global}}-Variable für Taktart und
Vorzeichen benutzt.
"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Mit diesem Beispiel können Sie ein schönes Streichquartett notieren,
-aber wie gehen Sie vor, wenn Sie Stimmen brauchen? Das Beispiel
-oben hat gezeigt, wie Sie mit Variablen einzelne Abschnitte getrennt
-voneinander notieren können. Im nächsten Beispiel wird nun
+Mit diesem Beispiel können Sie ein schönes Streichquartett notieren,
+aber wie gehen Sie vor, wenn Sie Stimmen brauchen? Das Beispiel
+oben hat gezeigt, wie Sie mit Variablen einzelne Abschnitte getrennt
+voneinander notieren können. Im nächsten Beispiel wird nun
gezeigt, wie Sie mit diesen Variablen einzelne Stimmen erstellen.
Sie müssen das Beispiel in einzelne Dateien aufteilen; die Dateinamen
sind in den Kommentaren am Anfang jeder Datei enthalten. @code{piece.ly}
enthält die Noten. Die anderen Dateien -- @code{score.ly},
@code{vn1.ly}, @code{vn2.ly}, @code{vla.ly} und
-@code{vlc.ly} -- erstellen daraus die entsprechenden Stimmen bzw. die
-Partitur (@code{score.ly}). Mit @code{\tag} wird den Stimmen ein Name
+@code{vlc.ly} -- erstellen daraus die entsprechenden Stimmen bzw. die
+Partitur (@code{score.ly}). Mit @code{\tag} wird den Stimmen ein Name
zugewiesen, auf den zurückgegriffen werden kann.
"
doctitlede = "Vorlage für Streichquartett mit einzelnen Stimmen"
-
+
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-In diesem Beispiel wird ein automatischer Klavierauszug zu der
+In diesem Beispiel wird ein automatischer Klavierauszug zu der
Chorpartitur hinzugefügt. Das zeigt eine der Stärken von LilyPond
--- man kann eine Variable mehr als einmal benutzen. Wenn Sie
-irgendeine Änderung an einer Chorstimme vornehmen, (etwa
+-- man kann eine Variable mehr als einmal benutzen. Wenn Sie
+irgendeine Änderung an einer Chorstimme vornehmen, (etwa
tenorMusic), verändert sich auch der Klavierauszug entsprechend.
"
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-In diesem Beispiel werden die Texte mit den Befehlen
+In diesem Beispiel werden die Texte mit den Befehlen
@code{alignAboveContext} und @code{alignBelowContext}
über und unter dem System angeordnet.
"
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
-Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
-Stücken ist es oft sinnvoll, eine allgemeine Variable zu bestimmen,
-die in allen Stimmen eingefügt wird. Taktart und Vorzeichen etwa
+Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
+Stücken ist es oft sinnvoll, eine allgemeine Variable zu bestimmen,
+die in allen Stimmen eingefügt wird. Taktart und Vorzeichen etwa
sind fast immer gleich in allen Stimmen.
"
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.12.0"
+@c \version "2.13.4"
@c Translation status: post-GDP
<<
\new Staff \fragment
\new Staff \with {
- \override Beam #'thickness = #0.3
+ \override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #0.5
\override Bar #'thickness = #3.6
\override Tie #'thickness = #2.2
\set autoBeaming = ##f
\time 2/4
<d f g>4
- \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+ \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
\once \override NoteHead #'font-size = #-7
\once \override NoteHead #'font-family = #'sans
\once \override NoteHead #'font-series = #'bold
\key c \minor
\set subdivideBeams = ##f
\override Stem #'french-beaming = ##t
- \override Beam #'thickness = #0.3
+ \override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #4.0
g'16[ b16 fis16 g16]
<< \makeClusters {
"
doctitlees = "Añadir un bajo cifrado encima o debajo de las notas"
-
+
actual a una partitura.
"
doctitlees = "Añadir la fecha actual a una partitura"
-
+
"
doctitlees = "Ajustar la forma de las subidas y caídas de tono"
-
+
"
doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)"
-
+
"
doctitlees = "Agrupamiento de las barras en el compás de 7/8"
-
+
"
doctitlees = "Barras que atraviesan saltos de línea"
-
+
"
doctitlees = "Cambiar el salto de las barras en ángulo"
-
+
"
doctitlees = "Cambiar el texto y los estilos de objeto de extensión para las indicaciones dinámicas textuales"
-
+
"
doctitlees = "Cambiar el símbolo de la marca de respiración"
-
+
"
doctitlees = "Glissando contemporáneo"
-
+
"
doctitlees = "Controlar la ordenación vertical de las inscripciones"
-
+
"
doctitlees = "Crear arpegios entre notas de voces distintas"
-
+
Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
cruce entre los pentagramas ajustando la propiedad
@code{PianoStaff.connectArpeggios}.
-
+
"
doctitlees = "Crear arpegios que se cruzan entre pentagramas dentro de un sistema de piano"
-
+
"
doctitlees = "Creación de arpegios que se cruzan entre pentagramas dentro de otros contextos"
-
+
"
doctitlees = "Mostrar corchete o llave en grupos de un solo pentagrama"
-
+
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
doctitlees = "Forzar el desplazamiento horizontal de las notas"
-
+
texidoces = "
Cuando el motor de tipografiado no es capaz de todo, se puede usar la
sintaxis siguiente para sobreescribir las decisiones de tipografía.
"
doctitlees = "Agrupar los pulsos"
-
+
"
doctitlees = "Ocultar la línea de extensión de las expresiones textuales de dinámica"
-
+
Los «incipit» se pueden escribir utilizando el grob del nombre del
instruemento, pero manteniendo independientes las definiciones del
nombre del instrumento y del incipit."
-
+
doctitlees = "Incipit"
"
doctitlees = "Insertar una cesura"
-
+
"
doctitlees = "Plantilla para combo de jazz"
-
+
"
doctitlees = "Ejemplo de «Makam»"
-
+
"
doctitlees = "Texto de octava alta y baja"
-
+
"
doctitlees = "Plantilla de piano (sencilla)"
-
+
"
doctitlees = "Plantilla de piano con letra centrada"
-
+
"
doctitlees = "Plantilla de piano con melodía y letra"
-
+
"
doctitlees = "Impresión de reguladores utilizando la notación «al niente»"
-
+
doctitlees = "Impresión de indicaciones metronómicas y letras de ensayo debajo del pentagrama"
-
+
"
doctitlees = "Citar otra voz"
-
+
"
doctitlees = "Establecer el comportamiento de los reguladores en las barras de compás"
-
+
"
doctitlees = "Plantilla de pentagrama único con música, letra y acordes"
-
+
"
doctitlees = "Plantilla de cuarteto de cuerda con particellas independientes"
-
+
cambios manuales preservan el posicionamiento relativo estándar de
las claves y las notas, pero no lo hacen en la segunda línea.
"
-
+
"
doctitlees = "Utilizar ligaduras dobles para acordes legato"
-
+
"
doctitlees = "Indicaciones dinámicas y textuales alineadas verticalmente"
-
+
"
doctitlees = "Plantilla de conjunto vocal con reducción de piano automática"
-
+
"
doctitlees = "Plantilla para conjunto vocal con letras alineadas encima y debajo de los pentagramas"
-
+
@documentencoding UTF-8
@documentlanguage en
+@set web
@include macros.itexi
@afourpaper
@menu
* Music engraving::
+* automated-engraving:: Essay on Automated engraving.
* Literature list::
* GNU Free Documentation License:: License of this document.
* LilyPond index::
@contents
@include essay/engraving.itely
+@include automated-engraving.itexi
@include essay/literature.itely
+@clear web
@include fdl.itexi
@node LilyPond index
depth = ../..
-LOCALSTEPMAKE_TEMPLATES = ly
+STEPMAKE_TEMPLATES=tex documentation
+LOCALSTEPMAKE_TEMPLATES = lilypond ly
+
+OUT_BIB_FILES = $(addprefix $(outdir)/, $(BIB_FILES))
+EXTRA_DIST_FILES= $(BIB_FILES) $(call src-wildcard,*.bst)
+BIB_FILES= $(call src-wildcard,*.bib)
include $(depth)/make/stepmake.make
+
+dvi: $(DVI_FILES) $(OUT_BIB_FILES)
+
+ps: $(PS_FILES)
+
+default:
+
+GENHTMLS = engraving colorado computer-notation
+OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html))
+
+ifeq ($(out),www)
+# temporary build fix; we don't know yet what's happening
+# to the literature index. -gp
+# local-WWW-2: $(addprefix $(outdir)/, $(BIB_FILES:.bib=.html) lit-index.html)
+endif
+
+$(outdir)/%.bib: %.bib
+ ln -f $< $@
+
+$(outdir)/%.html: %.bib
+ BSTINPUTS=$(src-dir) $(buildscript-dir)/bib2html -o $@ $<
+
+local-clean:
+ rm -f fonts.aux fonts.log feta*.tfm feta*.*pk
+
--- /dev/null
+%
+% TITLE=University of Colorado Engraving music bibliography
+% AUTHOR=Alyssa Lamb (edited & converted to bibtex by HWN)
+%
+
+@Book {jacob47:_music,
+ author ={Jacob, Archibald},
+ year=1947,
+ title = {Musical handwriting : or, How to put music on paper : A handbook for all musicians, professional and amateur},
+ address ={London},
+ publisher ={Oxford University Press},
+ note = {subject: Musical notation},
+}
+
+@Book{brandt:_stand_chord_symbol_notat,
+ author ={Carl Brandt and Clinton Roemer},
+ title = {Standardized Chord Symbol Notation},
+ address={Sherman Oaks, CA},
+ publisher={Roerick Music Co.},
+ note ={subject: musical notation},
+}
+
+@Book{johnson46:_how,
+ author = {Johnson, Harold M},
+ year = 1946,
+ title = {How to write music manuscript an exercise-method handbook for the music student, copyist, arranger, composer, teacher},
+ publisher={Carl Fischer, Inc.},
+ address= {New York},
+ note = {subject: Musical notation --Handbooks, manuals},
+}
+
+@Book{sadie90:_music_print_publis,
+ title = {Music Printing & Publishing},
+ author ={Donald W. Krummel \& Stanley Sadie},
+ year = 1990,
+ publisher= {Macmillan Press},
+ note ={subject: musical notation},
+}
+
+@Book{foss:_music_print,
+ author={Foss, Hubert},
+ title = {Music Printing},
+ series = {Practical Printing and Binding},
+ address={London},
+ publisher={Oldhams Press Ltd., Long Acre},
+ note ={subject: musical notation},
+}
+
+@Book{steele03:_earlies_englis_music_print,
+ author = {Steele, Robert},
+ year = 1903,
+ title = {The Earliest English Music Printing},
+ address={London},
+ note= {subject: history of music printing and engraving},
+}
+
+@Book{austin:_story_music_print,
+ author={Austin, Ernest},
+ title = {The Story of Music Printing},
+ address={London},
+ publisher={Lowe and Brydone Printers, Ltd.},
+ note= {subject: history of music printing and engraving},
+
+}
+
+
+
+@Book{?:_pictor_histor_music_print,
+ author={?},
+ title = {Pictoral History of Music Printing},
+ address={Elhardt, Indiana},
+ publisher={H. and A. Selmer, Inc.},
+ note= {subject: history of music printing and engraving},
+
+}
+
+@Book{wintermitz55:_music_autog_montev_hindem,
+ author = {Wintermitz, Emmanuel},
+ year = 1955,
+ title = {Musical Autographs from Monteverdi to Hindemith},
+ address={Princeton},
+ publisher={Princeton University Press},
+ note= {subject: history of music printing and engraving},
+
+}
+
+
+@Book{novello47:_some_accoun_method_music_print,
+
+ author = {Novello, A},
+ year = 1847,
+ title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters},
+ address={London},
+ note={ subject: history of music printing and engraving},
+}
+
+@Book{chrsander18:_sketc_histor_music,
+ author={Chrsander, F.},
+ year={18??},
+ title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century},
+ note={ subject: history of music printing and engraving},
+}
+
+@Article {squire1897,
+ author = {Squire, W},
+ year = 1897,
+ title = {Notes on Early Music Printing},
+ journal = {Bibliographica},
+ volume={iii},
+ number=99,
+ note={ subject: history of music printing and engraving},
+
+}
+
+@Article{meyer35:_print_music,
+ author = {Meyer, K. and O'Meara, J},
+ year = 1935,
+ title = {The Printing of Music, 1473-1934},
+ journal = {The Dolphin},
+ volume={ ii},
+ pages={ 171--207},
+ note={ subject: history of music printing and engraving},
+
+}
+%% 4th ver.,
+@Article{pattison39:_notes_early_music_print,
+ author = {Pattison, B},
+ year = 1939,
+ title = {Notes on Early Music Printing},
+ journal = {The Library},
+ note={subject: history of music printing and engraving},
+ volume={xix},
+ pages={389-421},
+}
+
+@Book{king64:_four_hundr_years_music_print,
+ author = {King, H},
+ year = 1964,
+ title = {Four Hundred Years of Music Printing},
+ address={London},
+ note={ subject: history of music printing and engraving},
+}
+
+
+%(Rev.1961).
+@Book{deutsch46:_music_number,
+ author={Deutsch, O.F.},
+ year =1946,
+ title = {Music Publishers' Numbers},
+ address={London},
+ note={ subject: history of music printing and engraving},
+}
+
+@Book{marco62:_earlies_music_print_contin_europ,
+ author = {Marco, G.A},
+ year = 1962,
+ title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work},
+ address={Charlottesville, Virginia},
+ note={ subject: history of music printing and engraving},
+}
+
+@Article{kinkeldey32:_music_and_music_print_incun,
+ author = {Kinkeldey, O},
+ year = 1932,
+ title = {Music And Music Printing in Incunabula},
+ journal = {Papers of the Bibliographical Society of America},
+ volume={ xxvi},
+ pages={89-118},
+ note={ subject: history of music printing and engraving},
+}
+
+@Book{oldman34:_collec_music_first_edition,
+ author = {Oldman, C.B},
+ year = 1934,
+ title = {Collecting Musical First Editions},
+ address={London},
+ note={ subject: history of music printing and engraving},
+}
+
+@Book{carter34:_new_paths_book_collec,
+ author={Carter, J},
+ year=1934,
+ title = {New Paths in Book Collecting},
+ address={London},
+ note={ subject: history of music printing and engraving},
+}
+
+@Book{krummel58:_graph_analy_applic_early_americ_engrav_music,
+ author={Krummel, D.W.},
+ year=1958,
+ month=9,
+ title = {Graphic Analysis in Application to Early American Engraved Music},
+ journal = {Notes},
+ volume={xvi},
+ pages=213,
+ note={ subject: history of music printing and engraving},
+}
+
+@Book{krummel71:_oblon_format_early_music_books,
+ author = {Krummel, D.W},
+ year = 1971,
+ title = {Oblong Format in Early Music Books},
+ journal = {The Library},
+ volume={5th ser., xxvi},
+ pages=312,
+ note={ subject: history of music printing and engraving},
+}
+
+@Book{king73:_anniv_music_print,
+ author = {King, A.H},
+ year = 1973,
+ title = {The 50th Anniversary of Music Printing},
+}
+
+@Book{rastall82:_wester,
+ author={Rastall, Richard},
+ year=1982,
+ title = {The notation of Western music : an introduction},
+ address={New York, N.Y.},
+ publisher={St. Martin's Press},
+ note = {Musical notation},
+
+
+}
+
+@Book{tappolet47:_la_notat_music,
+ author = {Tappolet, Willy},
+ year = 1947,
+ title = {La Notation Musicale},
+ address={Paris},
+ note={subject: general notation},
+ publisher={Neuch\^atel},
+}
+
+@Book{williams03:_story_notat,
+ author = {Williams, C.F. Abdy},
+ year = 1903,
+ title = {The Story of Notation},
+ address={New York},
+ publisher={Charles Scribner's Sons},
+ note={subject: general notation},
+}
+
+@Book{apel53,
+ author={Apel, Willi},
+ year=1953,
+ title = {The notation of polyphonic music, 900-1600},
+ address={Cambridge, Mass},
+ institution={Mediaeval Academy of America},
+ note = {Musical notation},
+}
+
+@Book{berger93:_mensur,
+ author={Berger, Anna Maria Busse},
+ year=1993,
+ title = {Mensuration and proportion signs : origins and evolution},
+ address={Oxford, England},
+ publisher={Clarendon Press},
+ scnd_address={New York},
+ scnd_publisher={Oxford University Press },
+ note={subject: early notation},
+}
+
+@Book{parrish57,
+ author={Parrish, Carl},
+ year=1957,
+ title = {The notation of medieval music},
+ address={New York},
+ publisher={Norton},
+ note = {Musical notation},
+
+
+}
+
+@Book{parrish46:_notat_mediev_music,
+ author = {Parrish, Carl},
+ year = 1946,
+ title = {The Notation of Medieval Music},
+ address={New York},
+ publisher={Carl Fischer, Inc.},
+ note={subject: early notation},
+}
+
+@Book{patch49:_genes_music,
+ author = {Patch, Harry},
+ year = 1949,
+ title = {Genesis of a Music},
+ address={Madison},
+ publisher={University of Wisconsin Press},
+ note={subject: early notation},
+}
+
+@Book{cage69:_notat,
+ author={Cage, John},
+ year=1969,
+ title = {Notations},
+ address={New York},
+ publisher={Something Else Press},
+ note = {Music, Manuscripts, Facsimiles.
+
+ Facsimiles of holographs from the Foundation for Contemporary
+ Performance Arts, with text by 269 composers, but rearranged using
+ chance operations.,V)} },
+
+@Book{gaburo77:_notat,
+ author = {Gaburo, Virginia},
+ year = 1977,
+ title = {Notation},
+ address={publisher= {Lingua Press},
+ publisher={La Jolla, California}},
+ note = {A Lecture about notation, new ideas about},
+}
+
+@Book{risatti75:_new_music_vocab,
+ author = {Risatti, Howard},
+ year = 1975,
+ title = {New Music Vocabulary},
+ address={Urbana, Illinois},
+ publisher={University of Illinois Press},
+ note = {A Guide to Notational Signs for Contemporary Music},
+}
+
+
+
+@Book{cowell30:_new_music_resour,
+ author = {Cowell, Henry},
+ year = 1930,
+ title = {New Musical Resources},
+ address={New York},
+ publisher={Alfred A. Knopf, Inc.},
+ note={subject: 20th century notation},
+}
+
+@Article{cowell27:_our_inadeq_notat,
+ author = {Cowell, Henry},
+ year = 1927,
+ title = {Our Inadequate Notation},
+ journal = {Modern Music},
+ volume=4,
+ number=3,
+ note={subject: 20th century notation},
+
+}
+
+@Book{bowers92:_music_letter,
+ author = {Bowers, Roger},
+ year = 1992,
+ title = {Music & Letters},
+ volume=73,
+ number=3,
+ month={August},
+ pages={347(52)},
+ note={Some reflection upon notation and proportion in Monteverdi's mass and vespers},
+}
+
+@Book{brainard92:_curren_music,
+ author = {Brainard, Paul},
+ year = 1992,
+ title = {Current Musicology},
+ number=50,
+ month={July-Dec},
+ pages={21(26)},
+ note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century},
+}
+
+@Book{monelle89:_compar_liter,
+ author = {Monelle, Raymond},
+ year = 1989,
+ title = {Comparative Literature},
+ volume=41, number=3,
+ month={Summer},
+ pages={252(18)},
+
+ note={Music notation and the poetic foot},
+}
+
+@Book{pinegar93:_curren_music,
+ author = {Pinegar, Sandra},
+ year = 1993,
+ title = {Current Musicology},
+ number=53,
+ month={July},
+ pages={99(10)},
+ note={The seeds of notation and music paleography.},
+}
+
+@Book{smith90:_curren_music,
+ author = {Smith, Norman E},
+ year = 1990,
+ title = {Current Musicology},
+ number={45-47},
+ month={Jan-Dec},
+ pages={283(22)},
+ note={The notation of fractio modi.},
+}
+
+@Book{treitler92:_journ_music,
+ author = {Treitler, Leo},
+ year = 1992,
+ title = {The Journal of Musicology},
+ volume=10,
+ number=2,
+ month={Spring},
+ pages={131(61)},
+
+ note={ The unwritten and written transmission, of medieval chant
+ and the start-up of musical notation.
+
+ Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition.},
+}
+
+@Book{west94:_music_letter,
+ author = {West, M.L},
+ year = 1994,
+ title = {Music & Letters},
+ volume=75,
+ number=2,
+ month={May},
+ pages={161(19)},
+ note={The Babylonian musical notation and the Hurrian melodic texts.
+
+ A new way of deciphering the ancient Babylonian musical notation.
+}
+}
+
+@Book{brown86:_music_quart,
+ author = {Brown, Earle},
+ year = 1986,
+ title = {Musical Quarterly},
+ volume=72,
+ month={Spring},
+ pages={180(22)},
+ note={The notation and performance of new music.},
+}
+
+@Book{eggleston94:_notes,
+ author = {Eggleston, Suzanne},
+ year = 1994,
+ title = {Notes},
+ volume=51,
+ number=2,
+ month={Dec},
+ pages={657(7)},
+ journal={New periodicals},
+ note={A list of new music periodicals covering the period
+ Jun.-Dec. 1994. Includes aims, formats and a description of the
+ contents of each listed periodical. Includes Music Notation News},
+
+}
+
+@Book{fuller89:_journ_music,
+ author = {Fuller, David},
+ year = 1989,
+ title = {The Journal of Musicology},
+ volume=7,
+ number=1,
+ month={Winter},
+ pages={21(8)},
+ note={
+ Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation).
+}},
+
+@Book{jones90:_persp_new_music,
+
+ author = {Jones, David Evan},
+ year = 1990,
+ title = {Perspectives of New Music},
+ note={Speech extrapolated. (includes notation)}
+}
+
+@Book{lependorf89,
+ author = {Lependorf, Jeffrey},
+ year = 1989,
+ journal={Perspectives of New Music},
+ volume=27,
+ title = {?},
+ number=2,
+ month={Summer},
+ pages={232(20)},
+ note={Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) },
+
+}
+
+@Book{rastall93:_music_letter,
+ author = {Rastall, Richard},
+ year = 1993,
+ title = {Music & Letters},
+ volume=74, number=4,
+ month={November},
+ pages={639(2)},
+
+ note={Equal Temperament Music Notation: The Ailler-Brennink
+ Chromatic Notation. Results and Conclusions of the Music Notation
+ Refor by the Chroma Foundation (book reviews). },
+}
+
+@Article {Francois92,
+ author={Francois, Jean-Charles},
+ journal = {Perspectives of New Music},
+ volume={30},
+ number={1}, month={Winter},
+ pages={6(15)},
+ year={1992},
+
+ note={subject: Modern music has outgrown notation. While the
+ computer is used to write down music with accuracy never
+ before achieved, the range of modern sounds has surpassed
+ the relevance of the computer...},
+
+ title={Writing without representation, and unreadable notation.},
+}
+
+@Book{hamel89,
+ author = {Hamel, Keith A},
+ year = 1989,
+ journal = {Perspectives of New Music},
+ volume=27,
+ number=1,
+ month={Winter},
+ pages={70(14)},
+
+ title={A design for music editing and printing software based
+on notational syntax}, }
+
--- /dev/null
+%
+% TITLE=The music notation with computer bibliography
+% AUTHOR=Han-Wen Nienhuys
+%
+
+@String{CitH = {Computing and the Humanities}}
+@String{CMJ = {Computer Music Journal}}
+
+
+
+@Book {smith73,
+ year = {1973},
+ title = {Editing and Printing Music by Computer},
+ author = {Leland Smith},
+ totalentry = {Journal of Music Theory},
+ volume={17},
+ pages ={292-309},
+
+ note = {Gourlay\cite{gourlay86} writes: A discussion of Smith's
+music-printing system SCORE}
+
+}
+
+@Article {byrd74,
+ year = {1974},
+ title = {A System for Music Printing by Computer},
+ author = {Donald Byrd},
+ journal = {Computers and the Humanities},
+ volume ={8},
+ pages ={161-72},
+}
+
+
+@Article{ericson75,
+ author = {R. F. Ericson},
+ title = {The DARMS Project: A status report},
+ journal = {Computing in the humanities},
+ year = 1975,
+ volume = 9,
+ number = 6,
+ pages = {291--298},
+ note = {Gourlay\cite{gourlay86} writes: A discussion of the design
+ and potential uses of the DARMS music-description language.}
+}
+
+% Gomberg
+@PhdThesis {gomber75,
+ year = {1975},
+ title = {A Computer-Oriented System for Music Printing},
+ author = {David A. Gomberg},
+ school = {Washington University},
+}
+
+@Book {gomberg,
+ title = {A Computer-oriented System for Music Printing},
+ author = {David A. Gomberg},
+ journal = CitH,
+ volume={11},
+ month = {march},
+ year = {1977},
+ pages = {63-80},
+
+ note = {Gourlay \cite{gourlay86} writes: "A discussion of the
+ problems of representing the conventions of musical notation in
+ computer algorithms."}
+}
+
+
+@TechReport{Ornstein83,
+ author={Ornstein, Severo M. and John Turner Maxwell III},
+ title={Mockingbird: A Composer's Amanuensis},
+ institution={Xerox Palo Alto Research Center},
+ address={3333 Coyote Hill Road, Palo Alto, CA, 94304},
+ number={CSL-83-2},
+ month={January},
+ year={1983}
+}
+
+@Article{Ornstein84,
+ author={Ornstein, Severo M. and John Turner Maxwell III},
+ title={Mockingbird: A Composer's Amanuensis},
+ journal= {Byte},
+ volume= 9,
+ month = {January},
+ year= { 1984},
+
+ note={A discussion of an interactive and graphical computer system
+for music composition}
+
+}
+
+% byrd
+@PhdThesis {byrd85,
+ year = {1985},
+ title = {Music Notation by Computer},
+ author = {Donald Byrd},
+ school = {Indiana University},
+
+ note = {Describes the SMUT (sic) system for automated music printout.}
+}
+
+@InProceedings{assayaag86,
+ author = {G. Assayaag and D. Timis},
+ title = {A Toolbox for music notation},
+ booktitle = {Proceedings of the 1986 International Computer Music Conference},
+ year = 1986
+}
+
+@TechReport{roush88,
+ year = {1988},
+ title = {Music Formatting Guidelines},
+ author = {D. Roush},
+ number = {OSU-CISRC-3/88-TR10},
+ institution = {Department of Computer and Information Science, The Ohio State University},
+
+ note = {Rules on formatting music formulated for use in
+ computers. Mainly distilled from [Ross] HWN},
+
+}
+
+
+@Article{byrd94,
+ author = {Donald Byrd},
+ title = {Music Notation Software and Intelligence},
+ journal = {Computer Music Journal},
+year = 1994,
+pages = {17--20},
+ volume = 18,
+ number = 1,
+
+ note = {Byrd (author of Nightinggale) shows four problematic
+fragments of notation, and rants about notation programs that try to
+exhibit intelligent behaviour. HWN}
+}
+
+
+@Article{field-richards93,
+ author = {H.S. Field-Richards},
+ title = {Cadenza: A Music Description Language},
+ journal = CMJ,
+ year = 1993,
+ volume = 17,
+ number = 4,
+
+ note = {A description through examples of a music entry language.
+Apparently it has no formal semantics. There is also no
+implementation of notation convertor. HWN}
+
+}
+
+@Article{bielawa93,
+ author = {Herbert Bielawa},
+ title = {Review of Sibelius 7},
+ journal = CMJ,
+ year = {1993?},
+
+ note = {A raving review/tutorial of Sibelius 7 for Acorn. (And did
+they seriously program a RISC chip in ... assembler ?!) HWN}
+
+
+}
+
+@Article{sloan93,
+ author = {Donald Sloan},
+ title = {Aspects of Music Representation in HyTime/SMDL},
+ journal = CMJ,
+ year = 1993,
+ volume = 17,
+ number = 4,
+
+note = {An introduction into HyTime and its score description variant
+SMDL. With a short example that is quite lengthy in SMDL}
+
+}
+
+@Article{wiggins93,
+ author = {Geraint Wiggins and Eduardo Miranda and Alaaaan Smaill and Mitch Harris},
+ title = {A Framework for the evaluation of music representation systems},
+ journal = CMJ,
+ year = 1993,
+ volume = 17,
+ number = 3,
+
+ note = {A categorisation of music representation systems (languages,
+OO systems etc) splitted into high level and low level expressiveness.
+The discussion of Charm and parallel processing for music
+representation is rather vague. HWN}
+
+}
+
+
+
+@Article{dannenberg93,
+ author = {Roger B. Dannenberg},
+ title = {Music Representation: Issues, Techniques, and Systems},
+ journal = CMJ,
+ year = 1993,
+ volume = 17,
+ number = 3,
+ url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.6067},
+
+ note = {This article points to some problems and solutions with music
+representation. HWN},
+
+}
+
+@Article{rothstein93,
+ author = {Joseph Rothstein},
+ title = {Review of Passport Designs' Encore Music Notation Software},
+ journal = CMJ,
+ year = {?},
+
+
+}
+
+
+
+@Article{belkin94,
+ author = {Alan Belkin},
+ title = {Macintosh Notation Software: Present and Future},
+ journal = CMJ,
+ year = 1994,
+ volume = 18,
+ number = 1,
+
+ note = {Some music notation systems are analysed for ease of use,
+ MIDI handling. The article ends with a plea for a standard notation
+ format. HWN},
+
+}
+
+@InProceedings{montel97,
+ author = {Dominique Montel},
+ title = {La gravure de la musique, lisibilit\'e esth\'etique, respect de l'oevre},
+ booktitle = {Musique \& Notations},
+ year = 1997,
+ address={Lyon},
+ editors ={Genevois \& Orlarey}
+}
+
+
+
+
+@Book {CASR,
+ note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP},
+ title = {Directory of Computer Assisted Research in Musicology},
+ author = {Walter B Hewlett and Eleanor Selfridge-Field},
+ totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities},
+}
+
+
+@Book{selfridge-field97:_beyon_midi,
+ title = {Beyond MIDI: the handbook of musical codes},
+ editor = {Eleanor Selfridge-Field},
+ publisher = {MIT Press},
+ year = 1997,
+
+ note = {A description of various music interchange formats.}
+}
+
+
+@InProceedings{hoos98:_guido_music_notat_format,
+title={The {GUIDO} Music Notation Format---A Novel Approach
+for Adequately Representing Score-level Music},
+author = {H. H. Hoos and K. A. Hamel and K. Renz and J. Kilian},
+booktitle = {Proceedings of International Computer Music Conference},
+year = 1998,
+pages = {451--454},
+}
+
+@Article {blostein91,
+
+ note = {This paper provides a overview of the algorithm used in LIME
+ for spacing individual lines. HWN},
+
+ year = {1991},
+ title = {Justification of Printed Music},
+ author = {Dorothea Blostein and Lippold Haken},
+ journal = {Communications of the ACM},
+ volume= {J34},
+ number= {3},
+ month= {March},
+ pages = {88-99},
+}
+
+
+@Article {haken93,
+ year = {1993},
+ title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor},
+ author = {Lippold Haken and Dorothea Blostein},
+ journal = {Computer Music Journal},
+ volume= {17},
+ number={3},
+ pages = {43--58},
+}
+@Article{blostein94,
+ author = {Dorothea Blostein and Lippold Haken},
+ title = {The Lime Music Editor: A Diagram Editor Involving Complex
+ Translations},
+ journal = {Software Practice and Experience},
+ year = {1994},
+ volume = {24},
+ number = {3},
+ month = {march},
+ pages = {289--306},
+
+ note = {A description of various conversions, decisions and issues
+relating to this interactive editor HWN},
+
+}
+
+
+
+@InProceedings{haken95,
+ year = {1995},
+ title = {A New Algorithm for Horizontal Spacing of Printed Music},
+ author = {Lippold Haken and Dorothea Blostein},
+ booktitle = {International Computer Music Conference},
+ address={Banff},
+ month={Sept},
+ pages = {118-119},
+
+ note = {This describes an algorithm which uses springs between
+adjacent columns. }, }
+
+
+@InProceedings{bouzaiene98:_une,
+ author = {Nabil Bouzaiene and Lo\"ic Le Gall and Emmanuel Saint-James},
+ title = {Une biblioth\`eque pour la notation musicale baroque},
+ booktitle = {EP '98},
+ year = 1998,
+ series = {LNCS},
+
+ note = {Describes ATYS, an extension to Berlioz, that can mimick
+ handwritten baroque style beams}
+}
+
+
+
+
+@InProceedings{balaban88,
+ author = {M. Balaban},
+ title = {A Music Workstation Based on Multiple Hierarchical Views of Music},
+ booktitle = {Proceedings of the 1988 International Computer Music Conference},
+ year = 1988,
+ address = {San Francisco},
+ organization = {International Computer Music Association}
+}
+
+%
+% MusiCopy
+%
+@TechReport {gourlay87-spacing,
+annote = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it.},
+ year = {1987},
+ title = {Spacing a Line of Music,},
+ author = {John S. Gourlay},
+ number = {OSU-CISRC-10/87-TR35},
+ institution ={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {parish87,
+ annote = {A brief overview of {MusiCopy}},
+ year = {1987},
+ title = {{MusiCopy}: An automated Music Formatting System},
+ author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola},
+ totalentry = {OSU-CISRC-10/87-TR29},
+ institution ={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {gourlay87-formatting,
+ note = {This paper discusses the development of algorithms for the
+formatting of musical scores (from abstract). It also appeared at
+PROTEXT III, Ireland 1986},
+
+ year = {1987},
+ title = {Computer Formatting of Music},
+ author = {John S. Gourlay and A. Parrish
+and D. Roush and F. Sola and Y. Tien},
+ number = {OSU-CISRC-2/87-TR3},
+ institution ={Department of Computer and Information Science,
+The Ohio State University},
+}
+
+
+@TechReport {hegazy87,
+ year = {1987},
+ title = {On the Implementation of the {MusiCopy} Language Processor,},
+
+ author = {Wael A. Hegazy},
+ number = {OSU-CISRC-10/87-TR34},
+ institution={Department of Computer and Information Science, The Ohio State University},
+
+ note = {Describes the "parser" which converts {MusiCopy} MDL to
+ MusiCopy Simultaneities and columns.
+
+MDL is short for Music Description Language\cite{gourlay86}. It
+accepts music descriptions that are organised into measures filled
+with voices, which are filled with notes. The measures can be arranged
+simultaneously or sequentially. To address the 2-dimensionality,
+almost all constructs in MDL must be labeled.
+
+MDL uses begin/end markers for attribute values and spanners.
+Rightfully the author concludes that MusiCopy must administrate a
+"state" variable containing both properties and current spanning symbols.
+
+MusiCopy attaches graphic information to the objects constructed in
+the input: the elements of the input are partially complete graphic
+objects.
+
+},
+
+}
+
+
+@TechReport {hegazy87-breaking-tr,
+
+annote = {This generalizes \TeX's breaking algorithm to music. It also
+appeared in Document Manipulation and Typography, J.C. van Vliet (ed)
+1988},
+
+ year = {1987},
+
+ title = {Optimal line breaking in music},
+ author = {Wael A. Hegazy and John S. Gourlay},
+ number = {OSU-CISRC-8/87-TR33},
+ institution={Department of Computer and Information Science, The Ohio State University,},
+}
+
+@InProceedings{hegazy88:_optim,
+ author = {Wael A. Hegazy and John S. Gourlay},
+booktitle = {Proceedings of the International Conference on
+Electronic Publishing, Document Manipulation and Typography. Nice (France)},
+month = {April},
+year =1988,
+editor={J. C. van Vliet},
+publisher = {Cambridge University Press},
+ISBN={0-521-36294-6},
+ title = {Optimal line breaking in music},
+}
+
+
+@TechReport {roush87,
+ note = {User manual of MusiCopy. },
+
+ year = {1987},
+ title = {Using {MusiCopy}},
+ author = {Dean K. Roush},
+ number = {OSU-CISRC-18/87-TR31},
+ institution={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {parrish87-simultaneities,
+
+note = {This note discusses
+ placement of balls, stems, dots which occur at the same moment
+ ("Simultaneity")},
+
+ year = {1987},
+ title = {Computer Formatting of Musical Simultaneities,},
+ author = {A. Parrish and John S. Gourlay},
+ institution={Department of Computer and Information Science, The Ohio State University},
+ number = {OSU-CISRC-10/87-TR28},
+}
+
+
+@TechReport {sola87,
+ note = {Overview of a procedure for generating slurs},
+ year = {1987},
+ title = {Computer Design of Musical Slurs, Ties and Phrase Marks,},
+ author = {F. Sola},
+ institution={Department of Computer and Information Science, The Ohio State University},
+ number = {OSU-CISRC-10/87-TR32},
+}
+
+
+@Article {gourlay86,
+ note = {This paper describes the {MusiCopy} musicsetting system and an input language to go with it.},
+
+ year = {1986},
+ title = {A language for music printing},
+ author = {John. S. Gourlay},
+ journal = {Communications of the ACM},
+ volume= {29},
+ number ={5},
+ pages = {388--401},
+}
+
+
+@TechReport {sola87-beams,
+
+institution={Department of Computer and Information Science, The Ohio
+State University},
+
+ note = {Calculating beam slopes HWN},
+ year = {1987},
+ title = {Design of Musical Beams,},
+ author = {F. Sola and D. Roush},
+ number = {OSU-CISRC-10/87-TR30},
+}
+
+
+@PhdThesis {page88,
+ note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP},
+ year = {1988},
+ title = {Computer Tools for Music Information Retrieval},
+ author = {Stephen Dowland Page},
+ school ={Dissertation University of Oxford},
+}
+
+
+%
+% three part study by John Gr/over
+@TechReport{grover89-symbols,
+ author = {John Gr\/over},
+ title = {A computer-oriented description of Music Notation. Part I. The Symbol Inventory},
+ institution = {Department of informatics, University of Oslo},
+ year = 1989,
+ number = 133,
+
+note = {The goal of this series of reports is a full description of
+music formatting. As these largely depend on parameters of fonts, it
+starts with a verbose description of music symbols.
+
+ The subject is treated backwards: from general rules of typesetting
+the author tries to extract dimensions for characters, whereas the
+rules of typesetting (in a particular font) follow from the dimensions
+of the symbols. His symbols do not match (the stringent) constraints
+formulated by eg. \cite{wanske}} }
+
+@TechReport{grover89-twovoices,
+ author = {John Gr\/over},
+ title = {A computer-oriented description of Music Notation. Part II: Two Voice Sharing a Staff, Leger Line Rules, Dot Positioning},
+
+ institution = {Department of informatics, University of Oslo},
+ year = 1989,
+ number = 134,
+
+ note = {A lot rules for what is in the title are formulated. The
+descriptions are long and verbose. The verbosity shows that
+formulating specific rules is not the proper way to approach the
+problem. Instead, the formulated rules should follow from more
+general rules, similar to\cite{parrish87-simultaneities}},
+}
+
+@TechReport{grover89-accidentals,
+ author = {John Gr\/over},
+ title = {A computer-oriented description of Music Notation. Part III: Accidental Positioning},
+ institution = {Department of informatics, University of Oslo},
+ year = 1989,
+ number = 135,
+
+note = {Placement of accidentals crystallised in an enormous set of
+rules. Same remarks as for \cite{grover89-twovoices} applies} }
+
+
+@PhdThesis{mueller90:_inter_bearb_musik,
+ author = {Giovanni M\"uller},
+ title = {Interaktive Bearbeitung konventioneller Musiknotation},
+ school = {Eidgen\"ossischen Technischen Hochschule Z\"urich},
+ year = 1990,
+
+note = {This is about engraver-quality typesetting with computers. It
+accepts the axiom that notation is too difficult to generate
+automatically. The result is that a notation program should be a
+WYSIWYG editor that allows one to tweak everything.
+}
+
+}
+
+
+
+
+
+@MastersThesis{roelofs91,
+
+note = {This dutch thesis describes a monophonic typesetting system,
+ and focuses on the breaking algorithm, which is taken from Hegazy &
+ Gourlay },
+
+ year = {1991},
+ title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek},
+ author = {Ren\'e Roelofs},
+ school={Erasmus Universiteit Rotterdam},
+ number={45327},
+ translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.},
+}
+
+
+@Article {filgueiras93,
+ year = {1993},
+ title = {Representation and manipulation of music documents in SceX},
+ author = {Miguel Filgueiras and Jos\'e Paulo Leal},
+ journal= {Electronic Publishing},
+ volume={6},
+ number={4}, pages = {507--518},
+ url={http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1480},
+}
+
+
+@Article {foxley87,
+
+note = {A paper on a simple TROFF preprocessor to typeset music. },
+
+ year = {1987},
+ title = {Music --- A language for typesetting music scores},
+ author = {Eric Foxley},
+ journal = {Software --- Practice and Experience},
+ volume = {17},
+ number = {8},
+ pages = {485-502},
+}
+
+@Article {Langston90,
+
+ note = {This paper deals with some command-line
+ tools for music editing and playback. },
+
+ year = {1990},
+ title = {Unix music tools at Bellcore},
+ author = {Peter S. Langston},
+ journal={Software --- Practice and Experience},
+ volume={20},
+ number={S1},
+ pages={47--61},
+}
+
+
+@Book {filgueiras96,
+ year = {1996},
+ title = {Implementing a Symbolic Music Processing System},
+ author = {Miguel Filgueiras},
+ totalentry = {LIACC, Universidade do Porto, 1996; submitted},
+}
+
+@Book {filgueiras?,
+ title = {Some Music Typesetting Algorithms},
+ author = {Miguel Filgueiras},
+ totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming},
+}
+
+
+@Article {colorado-web,
+ author ={Alyssa Lamb},
+
+ note = {Webpages about engraving (designed with finale
+users in mind) (sic) HWN},
+
+ institution = {The University of Colorado},
+ title ={The University of Colorado Music Engraving page.},
+ HTML={http://www.cc.colorado.edu/Dept/MU/Musicpress/},
+ year={1996}
+}
+
+@Article {tablature-web,
+ note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN},
+ title = {how to read and write tab: a guide to tab notation},
+ author = {Howard Wright},
+ email={Howard.Wright@ed.ac.uk},
+ url={http://www.guitartabs.cc/tabfaq.shtml},
+}
+
+@Article {niff-web,
+
+ note = {Specs for NIFF, a reasonably comprehensive but binary
+ format for notation HWN},
+
+ year = {1995},
+ title = {NIFF6a Notation Interchange File Format},
+ author = {Cindy Grande},
+ publisher={Grande Software Inc.},
+ HTML= {http://www.jtauber.com/music/encoding/niff/},
+ ftp = {ftp://blackbox.cartah.washington.edu}
+}
+
+@Article {smdl-web,
+ author = {International Organization for Standardization (ISO)},
+ title = {Information Technology - Document Description and Processing Languages - Standard Music Description Language (SMDL)},
+ pdf= {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
+ number={ISO/IEC DIS 10743},
+ year = {1992},
+ annote = {SGML instance for describing music. Very comprehensive in music
+definition, but no support for notation / performance whatsoever (They
+basically say: "You can embed a NIFF or MIDI file")}
+}
+
+
+@Article {rader96,
+
+ note = {Describes a system called MusicEase, and explains that it
+ uses "constraints" (which go unexplained) to automatically position
+ various elements. },
+ html={http://mesastate.edu/~grader/ieeeme.pdf},
+ year = {1996},
+ title = {Creating Printed Music Automatically},
+ author = {Gary M. Rader},
+ journal = {Computer},
+ volume={29},
+ number={6},
+ month={June},
+ pages = {61--69},
+}
+
+
+@MastersThesis{gall97:_creat,
+ author = {Lo\"ic Le Gall},
+ title = {Cr\'eation d'une police adapt\'ee \`a la notation musicale baroque},
+ school = {\'Ecole Estienne},
+ year = 1997,
+}
+
+@TechReport{droettboom00:_study_notat_descr_languag,
+ author = {Michael Droettboom},
+ title = {Study of music Notation Description Languages},
+ year = 2000,
+ url= {http://www.music.mcgill.ca/~ich/research/omr/levy/format.pdf},
+
+ note ={GUIDO and lilypond compared. LilyPond wins on practical
+issues as usability and availability of tools, GUIDO wins on
+implementation simplicity.} }
+
+@PhdThesis{gieseking01:_code_gener_noten,
+ author = {Martin Gieseking},
+ title = {Code-basierte Generierung interaktiver Notengraphik
+
+},
+ school = {Universit\"at Osnabr\"uck},
+ year = 2001,
+ isbn = {ISBN 3-923486-30-8}
+}
+
+@Book{hewlett01:_virtual_score,
+ editor = {Walter B. Hewlett and Eleanor Selfridge-Field},
+ title = {The Virtual Score; representation, retrieval and restoration},
+ publisher = {MIT Press},
+series = {Computing in Musicology},
+ year = 2001
+}
+
+
+
+@PhdThesis{renz02:_algor_guido,
+ author = {Kai Renz},
+ title = {Algorithms and data structures for a music notation system based on GUIDO music notation},
+ school = {Universit\"at Darmstadt},
+ year = 2002
+}
+
+@InBook{powell02:_music,
+ author = {Steven Powell},
+ title = {Music engraving today},
+ publisher = {Brichtmark},
+ year = 2002,
+
+ note = {A "How Steven uses Finale" manual.}
+}
+
+
+@InProceedings{nienhuys03:_lilyp,
+ author = {Han-Wen Nienhuys and Jan Nieuwenhuizen},
+ title = {LilyPond, a system for automated music engraving},
+ booktitle = {XIV Colloquium on Musical Informatics},
+ year = 2003,
+ pages = {167--172},
+ address = {Firenze},
+ month = {May}
+}
+
--- /dev/null
+%
+% TITLE=The engraving bibliography
+% AUTHOR=Han-Wen Nienhuys
+%
+
+
+@Book{banter,
+ author = {Harald Banter},
+ title = {Akkord Lexikon},
+ publisher = {Schott's S\"ohne},
+ year = {1987},
+ isbn = {ISBN 3-7957-2095-8},
+ note = {Comprehensive overview of commonly used
+ chords. Suggests (and uses) a unification for all different kinds
+ of chord names.},
+ address = {Mainz, Germany},
+}
+
+
+
+@Book{rastall,
+ author = {Richard Rastall},
+ ALTeditor = {},
+ title = {The Notation of Western Music: an
+ Introduction},
+ publisher = {J. M. Dent \& Sons London},
+ year = {1983},
+ note = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN},
+}
+
+
+@Book{ignatzek95:_jazzm_klavier,
+ author = {Klaus Ignatzek},
+ title = {Die Jazzmethode f\"ur Klavier 1},
+ publisher = {Schott},
+ year = 1995,
+ note = {This book contains a system for denoting chords that is used in LilyPond.}
+}
+
+@Book{mcgrain,
+ author = {Mark Mc Grain},
+ title = {Music notation},
+ year = 1991,
+ publisher={Hal Leonard Publishing Corporation},
+isbn ={0793508479},
+note={HWN writes: `Book' edition of lecture notes from XXX school of
+music. The book looks like it is xeroxed from bad printouts. The
+content has nothing you won't find in other books like\cite{read} or
+\cite{heussenstamm}. }
+}
+
+@Book{ross,
+ author = {Ted Ross},
+ title = {Teach yourself the art of music engraving and processing},
+ publisher = {Hansen House},
+ year = 1987,
+annote = {This is about engraving, i.e. professional typesetting. It contains
+ directions on good typesetting, but the sections on reproduction
+ technicalities, how to use pens and history are interesting.
+ Especially the section on Music Typewriters is amusing HWN},
+ address = {Miami, Florida},
+}
+
+@Book {read78,
+ note = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN},
+ year = {1978},
+ title = {Modern Rhythmic Notation},
+ author = {Gardner Read},
+ publisher = {Indiana University Press},
+}
+
+@Book {read-notation,
+ note = {This is as close to the ``standard''
+ reference work for music notation issues as one is likely to get.},
+
+ title = {Music Notation: a Manual of Modern Practice},
+ author = {Gardner Read},
+ totalentry = {(2nd edition)},
+ year = 1979,
+ publisher ={Taplinger Publishing},
+ address ={New York},
+}
+
+@Book {weaner93,
+ year = {1993},
+ title = {Standard Music Notation Practice},
+ author = {Maxwell Weaner and Walter Boelke},
+ totalentry = {revised edition by Arnold Broido and Daniel Dorff.},
+ publisher = {Music Publisher's Association of the United States Inc},
+ address = {New York}
+}
+
+
+@Book {wanske,
+
+ annote = {I. A very thorough overview of engraving practices of various
+ craftsmen. It includes detailed specs of characters, dimensions
+ etc. II. a thorough overview of a anonymous (by now antiquated)
+ automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung),
+ electronic data processing HWN.},
+
+ year = {1988},
+ title = {Musiknotation --- Von der Syntax des
+ Notenstichs zum EDV-gesteuerten Notensatz},
+ author = {Helene Wanske},
+ publisher = {Schott-Verlag},
+ address = {Mainz},
+ isbn = {ISBN 3-7957-2886-x},
+}
+
+
+@Book {hader48,
+ year = {1948},
+ title = {Aus der Werkstatt eines Notenstechers},
+ author = {Karl Hader},
+ publisher = {Waldheim--Eberle Verlag},
+ address ={Vienna},
+
+ note = {Hader was a chief-engraver in a Viennese engraving
+workshop. This beautiful booklet was intended as an introduction for
+laymen on the art of engraving. It contains a step by step, in-depth
+explanation of how to cut and stamp music into zinc plates. It also
+contains a few compactly formulated rules on musical orthography. Out
+of print. }
+
+
+}
+
+@Book{gamble23:_music_engrav,
+ author = {William Gamble},
+ title = {Music Engraving and printing. Historical and Technical Treatise},
+ publisher = {Sir Isaac Pitman & Sons, ltd.},
+ year = 1923,
+ note = {This pattriotic book was an attempt to promote and help
+ British music engravers. It is somewhat similar to Hader's
+ book\cite{hader48} in scope and style, but Gamble focuses more on
+ technical details (Which French punch cutters are worth buying from,
+ etc.), and does not treat typographical details, such as optical
+ illusions. It is available as reprint from Da Capo Press, New York
+ (1971).}
+}
+
+
+@Booklet {mpa96,
+ note = {Pamphlet explaining a few fine points in music font design HWN},
+ year = {1996},
+ title = {Standard music notation specifications for computer programming.},
+ month = {December},
+ author ={mpa},
+ publisher = {MPA},
+}
+
+
+@Book {donato63,
+ year = {1963},
+ author = {Anthony Donato},
+ title ={Preparing Music Manuscript},
+ address ={Englewood Cliffs, NJ},
+ publisher={Prentice-Hall},
+}
+
+
+@Book {Karkoshka72,
+ year = {1972},
+ title = {Notation in New Music; a critical guide to interpretation and realisation},
+ author = {Erdhard Karkoshka},
+ translator={Ruth Koenig},
+ publisher={Praeger Publishers},
+ address={New York},
+ note ={(Out of print)},
+}
+
+
+@Book {Roemer84,
+ year = {1984},
+ title = {The Art of Music Copying},
+ author = {Clinton Roemer},
+ publisher={Roerick music co.},
+ address= {Sherman Oaks (CA)},
+
+ note ={Out of print. Heussenstamm writes: an instructional manual
+ which specializes in methods used in the commercial field. },
+ edition={2nd},
+}
+
+
+@Book {Rosecrans79,
+ year = {1979},
+ title = {Music Notation Primer},
+ author = {Glen Rosecrans},
+ publisher={Passantino},
+ address={New York},
+ note={Heussenstamm writes: Limited in scope, similar to \cite{Roemer84}}
+}
+
+@Book {donemus1982,
+ year = {1982},
+ title = {Uitgeven van muziek},
+subtitle = {Handleiding voor componisten en copiisten},
+ author = {Donemus},
+ publisher= {Donemus Amsterdam},
+
+ note = {Manual on copying for composers and copyists at the Dutch
+ publishing house Donemus. Besides general comments on copying, it
+ also contains a lot of hands-on advice for making performance
+ material for modern pieces.}
+
+}
+
+
+@Book{vinci,
+author={Vinci, Albert C.},
+title={Fundamentals of Traditional Music Notation},
+publisher={Kent State University Press},
+year={1989}
+}
+
+@Book{schirmer90,
+ author={{G. Schirmer, Inc.}},
+ title={The G. Schirmer Manual of Style and Usage},
+ address={New York},
+ publisher={The G. Schirmer Publications Department},
+ year={2001},
+note={This is the style guide for Schirmer publications. This manual
+specifically focuses on preparing print for publication by
+Schirmer. It discusses many details that are not in other, normal
+notation books. It als gives a good idea of what is necessary to bring
+printouts to publication quality.
+It can be ordered from the rental department.
+
+
+}
+}
+
+
+@Book {Stone80,
+ year = {1980},
+ title = {Music Notation in the Twentieth Century},
+ author = {Kurt Stone},
+ publisher= {Norton},
+ address={New York},
+ note ={Heussenstamm writes: The most important book on notation in recent years. },
+
+}
+@Book {Heussenstamm87,
+ year = {1987},
+ title = {The Norton Manual of Music Notation},
+ author = {George Heussenstamm},
+ address= {New York},
+ publisher={Norton},
+ note={Hands-on instruction book for copying (ie. handwriting) music. Fairly complete. HWN}
+}
+
+
+@Book {gerou96,
+ note = {A cheap, concise, alphabetically ordered list of typesetting and music (notation) issues with a rather simplistic attitude but in most cases "good-enough" answers JCN},
+ year = {1996},
+ title = {Essential Dictionary of Music Notation},
+ author = {Tom Gerou and Linda Lusk},
+ publisher = {Alfred Publishing},
+ address ={Van Nuys CA},
+ isbn ={ISBN 0-88284-768-6},
+}
+
+
+@Book {chlapik87,
+ note = {An clearly written book for the casually interested
+ reader. It shows some of the conventions and difficulties in
+ printing music HWN},
+
+ year = {1987},
+ title = {Die Praxis des Notengraphikers},
+ author = {Herbert Chlapik},
+ publisher = {Doblinger},
+ isbn ={ISBN 3-9000 035-96-2},
+}
+
+
+
+@Book {barksdale57,
+ author = {Barksdale, A},
+ year = {1957},
+ title = {The Printed Note: 500 Years of Music Printing and Engraving},
+ address={Toledo, Ohio},
+ month = {January},
+ note={`The exhibition "The Printed Note" attempts to show the various processes used since the second of the 15th century for reproducing music mechanically ... '. The illustration mostly feature ancient music},
+ publisher={The Toledo Museum of Art},
+}
+
+
+@Book {wolf19,
+ author = {Wolf, Johannes},
+ year = {1919},
+ title = {Handbuch der Notationskunde},
+ address={Leipzig},
+ publisher={Breitkopf & Hartel},
+ note= {Very thorough treatment (in two volumes) of the history of music notation},
+}
+
+@Book {rosenthal67,
+ author = {Rosenthal, Carl A},
+ year = {1967},
+ title = {A Practical Guide to Music Notation},
+ address={New York},
+ publisher={MCA Music},
+ note={Heussenstamm writes: Informative in terms of traditional notation. Does not concern score preparation}
+}
+
+
+@Book {Boehm61,
+ author = {Boehm, Laszlo},
+ year = {1961},
+ title={Modern Music Notation},
+ address={New York},
+ publisher={G. Schirmer, Inc.},
+ note ={Heussenstamm writes: A handy compact reference book in basic notation. }
+}
+@Book{button20:_system_music_notat,
+ author = {Button, H. Elliot},
+ title = {System in Musical Notation},
+ publisher = {Novello and co.},
+ year = 1920,
+ address = {London}
+}
+
+@Book{johnson46:_how,
+ author = {Johnson, Harold},
+ title = {How to write music manuscript},
+ publisher = {Carl Fischer, Inc.},
+ year = 1946,
+ address = {New York}
+}
+
+
+
+@Book{tyboni94:_noter_handb_i_tradit_noter,
+ author = {B\"orje Tyboni},
+ title = {Noter Handbok I Traditionell Notering},
+ publisher = {Gehrmans Musikf\"orlag},
+ year = 1994,
+ address = {Stockholm},
+ note = {Swedish book on music notation.}
+}
+
+@Book{jaschinski00:_notat,
+ editor = {Andreas Jaschinski},
+ title = {Notation},
+ publisher = {Bärenreiter Verlag},
+ year = 2000,
+ number = {BVK1625},
+
+ annote = {Articles from "Musik in Geschichte und Gegenwart"
+pertaining to notation. Both "alternative" notation and ancient
+notation is treated in depth, while "common" notation is not. }
+}
+
+
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.12.0"
+@c \version "2.13.4"
@node Music engraving
@chapter Music engraving
@image{pictures/lily-flat-bw,,4cm}
@end iftex
@ifnottex
-@image{pitcures/lily-flat-bw,,,png}
+@image{pictures/lily-flat-bw,,,png}
@end ifnottex
@end ifnotinfo
@ifinfo
<<
\new Staff \fragment
\new Staff \with {
- \override Beam #'thickness = #0.3
+ \override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #0.5
\override Bar #'thickness = #3.6
\override Tie #'thickness = #2.2
\set autoBeaming = ##f
\time 2/4
<d f g>4
- \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+ \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
\once \override NoteHead #'font-size = #-7
\once \override NoteHead #'font-family = #'sans
\once \override NoteHead #'font-series = #'bold
\key c \minor
\set subdivideBeams = ##f
\override Stem #'french-beaming = ##t
- \override Beam #'thickness = #0.3
+ \override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #4.0
g'16[ b16 fis16 g16]
<< \makeClusters {
--- /dev/null
+% BibTeX bibliography style `html-long'
+% spits out HTML-formatted bibliography in place of bbl output
+% by David Kotz dfk@cs.dartmouth.edu
+% $Id: html-long.bst,v 1.4 2005/07/21 21:29:50 hjunes Exp $
+% modified from
+% BibTeX standard bibliography style `alpha'
+ % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
+ % Copyright (C) 1985, all rights reserved.
+ % Copying of this file is authorized only if either
+ % (1) you make absolutely no changes to your copy, including name, or
+ % (2) if you do make changes, you name it something other than
+ % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
+ % This restriction helps ensure that all standard styles are identical.
+ % The file btxbst.doc has the documentation for this style.
+
+% DFK added abstract, comment, earlier, keyword, later, URL
+ENTRY
+ { abstract
+ address
+ author
+ booktitle
+ chapter
+ comment
+ earlier
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ keyword
+ later
+ month
+ note
+ number
+ organization
+ pages
+ private
+ publisher
+ school
+ series
+ title
+ type
+ URL
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+% DFK changed to use cite$ for the label
+% DFK changed to HTML, and use URL to make cite key a link
+FUNCTION {output.bibitem}
+{ newline$
+ URL empty$
+ { "<DT> <A NAME=" quote$ * cite$ * quote$ *
+ "> " * cite$ * ":</A> </DT>" * write$
+ }
+ { "<DT><A NAME=" quote$ * cite$ * quote$ * " HREF=" * quote$ *
+ URL * quote$ * "> " * cite$ * ":</A></DT>" * write$
+ }
+ if$
+ newline$
+ "<DD>" write$ newline$
+ ""
+ before.all 'output.state :=
+}
+
+% DFK changed to HTML
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+ earlier empty$
+ 'skip$
+ { "<br>" write$ newline$
+ "See also earlier version <A HREF=" quote$ * "#" * earlier * quote$ *
+ ">" * earlier * "</A>." * write$ newline$
+ }
+ if$
+ later empty$
+ 'skip$
+ { "<br>" write$ newline$
+ "See also later version <A HREF=" quote$ * "#" * later * quote$ *
+ ">" * later * "</A>." * write$ newline$
+ }
+ if$
+ "</DD>" write$ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+% DFK changed to HTML
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "<EM>" swap$ * "</EM>" * }
+ if$
+}
+
+% DFK added for HTML strong emphasis
+FUNCTION {strong}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "<STRONG>" swap$ * "</STRONG>" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+% DFK added this, to strip {} and ~ from titles and authors
+% It's not a great idea, because it will screw up in math mode and some
+% special characters... but it makes most things much prettier.
+FUNCTION {author.title.purify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "{" =
+ t #1 #1 substring$ "}" = or
+ 'skip$
+ { t #1 #1 substring$ "~" =
+ { " " * }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+}
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names author.title.purify }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { ", editors" * }
+ { ", editor" * }
+ if$
+ }
+ if$
+}
+
+% DFK added strong, so it will be bold.
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ author.title.purify strong }
+ if$
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.date}
+{ year empty$
+ { month empty$
+ { "" }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ }
+ if$
+ }
+ { month empty$
+ 'year
+ { month " " * year * }
+ if$
+ }
+ if$
+}
+
+% DFK changed emphasize to strong
+FUNCTION {format.btitle}
+{ title author.title.purify strong
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { " " }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "volume" volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "number" }
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edition" * }
+ { edition "t" change.case$ " edition" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pages" pages n.dashify tie.or.space.connect }
+ { "page" pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "(" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ":" * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "chapter" }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " booktitle emphasize * }
+ { "In " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Technical Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In {\em " journal * "\/}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et al." * }
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et al." * }
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "In {\em " booktitle * "\/}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ }
+ { "In " format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+
+% DFK added
+% top of stack is the string we want to be a quoted paragraph
+FUNCTION {format.quotedParagraph}
+{ duplicate$ empty$
+ { skip$ }
+ { "<P><QUOTE> " swap$ * " </QUOTE></P>" *}
+ if$
+}
+
+
+% DFK added, to support comment, private, keyword, etc
+% next-to-top is field name (eg, "Comment")
+% top is field value (eg, value of comment)
+% both are popped; resulting top is either empty,
+% or string describing field
+FUNCTION {format.dfkfield}
+{ duplicate$ empty$
+ { pop$ pop$ "" }
+ { swap$
+ "<strong> " swap$ * ":</strong> " * swap$ * }
+ if$
+}
+
+% DFK added
+FUNCTION {dfk.stuff}
+{ new.block
+ "Abstract" abstract format.dfkfield format.quotedParagraph write$ newline$
+ "Keyword" keyword format.dfkfield format.quotedParagraph write$ newline$
+ "Comment" comment format.dfkfield format.quotedParagraph write$ newline$
+}
+
+% DFK: added a call to dfk.stuff in all entry-type functions below
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "journal" output.check
+ format.vol.num.pages output
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ new.block
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.date output
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+ 'skip$
+ { organization output.nonnull
+ address output
+ }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ new.block
+ format.btitle "title" output.check
+ author empty$
+ { organization empty$
+ { address new.block.checka
+ address output
+ }
+ 'skip$
+ if$
+ }
+ { organization address new.block.checkb
+ organization output
+ address output
+ }
+ if$
+ format.edition output
+ format.date output
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ title howpublished new.block.checkb
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.date output
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address empty$
+ { editor empty$
+ { publisher new.sentence.checka }
+ { organization publisher new.sentence.checkb
+ organization output
+ }
+ if$
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ new.sentence
+ editor empty$
+ 'skip$
+ { organization output }
+ if$
+ publisher output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ new.block
+ note output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ note "note" output.check
+ format.date output
+ fin.entry
+ dfk.stuff
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+INTEGERS { et.al.char.used }
+
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+
+EXECUTE {initialize.et.al.char.used}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s num.names$ 'numnames :=
+ numnames #1 >
+ { numnames #4 >
+ { #3 'namesleft := }
+ { numnames 'namesleft := }
+ if$
+ #1 'nameptr :=
+ ""
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { "{\etalchar{+}}" *
+ #1 'et.al.char.used :=
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ numnames #4 >
+ { "{\etalchar{+}}" *
+ #1 'et.al.char.used :=
+ }
+ 'skip$
+ if$
+ }
+ { s #1 "{v{}}{l{}}" format.name$
+ duplicate$ text.length$ #2 <
+ { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+ 'skip$
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ year field.or.null purify$ #-1 #2 substring$
+ *
+ 'label :=
+ year field.or.null purify$ #-1 #4 substring$
+ *
+ sortify 'sort.label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { "et al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {presort}
+{ calc.label
+ sort.label
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ *
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+% DFK throw away stuff above and use cite$ for sort key
+ pop$
+ cite$
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.sort.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ last.sort.label sort.label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ sort.label 'last.sort.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label extra.label * 'label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+% DFK removed code about et.al.char
+% DFK changed to HTML
+FUNCTION {begin.bib}
+{ "<HTML>" write$ newline$
+ "<HEAD><TITLE> Bibliography </TITLE>" write$ newline$
+ "</HEAD>" write$ newline$
+ "<BODY BGCOLOR=#EEEEEE>" write$ newline$
+ "<DL>" write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+% DFK changed to HTML
+FUNCTION {end.bib}
+{ newline$
+ "</DL>" write$ newline$
+ "</BODY>" write$ newline$
+ "</HTML>" write$ newline$
+}
+
+EXECUTE {end.bib}
ISOLANG = fr
depth = ../..
-SUBDIRS = application learning notation texidocs
+SUBDIRS = application general learning notation texidocs
STEPMAKE_TEMPLATES = documentation
LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+
+@c Don't replace quotes with directed quotes.
+
+@set txicodequoteundirected
+@set txicodequotebacktick
+
+
+@c ***** Displaying text *****
+
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+
+@macro bs
+\\
+@end macro
+
+
+@ifnotinfo
+
+@macro notation{TEXT}
+@var{\TEXT\}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro notation{TEXT}
+\TEXT\
+@end macro
+
+@end ifinfo
+
+
+@macro smallspace
+@sp 1
+@end macro
+
+
+@c ***** Displaying images not generated by lilypond-book *****
+
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory. `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+
+@ifnotinfo
+
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{lilypond/pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+
+@end ifinfo
+
+
+@c ***** Headers *****
+
+@ifclear snippets-sections
+@macro lydoctitle {TEXT}
+@need 600
+@emph{\TEXT\}
+@end macro
+@end ifclear
+
+@c ***** Indexing *****
+
+@c Don't remove the `@c' within the macro definition! See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+
+@macro funindex {TEXT}
+@findex \TEXT\
+@kindex \TEXT\
+@c
+@end macro
+
+
+@c ***** Macros specific to translated docs *****
+
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+
+@iftex
+
+@macro translationof{TEXT}
+@end macro
+
+@end iftex
+
+@ifinfo
+
+@macro translationof{TEXT}
+@set translationof \TEXT\
+@end macro
+
+@end ifinfo
+
+@ifhtml
+
+@ifset bigpage
+@macro untranslated
+@end macro
+@end ifset
+
+@ifclear bigpage
+@macro untranslated
+UNTRANSLATED NODE: IGNORE ME
+@end macro
+@end ifclear
+
+@end ifhtml
+
+@ifnothtml
+
+@macro untranslated
+@end macro
+
+@end ifnothtml
+
+
+@c ***** Macros specific to the web site *****
+
+@ifset web
+
+@macro help{TEXT}
+@html
+<div class="help">
+<strong>
+ <span style="text-decoration:blink">Help wanted:</span>
+</strong> \TEXT\
+</div>
+@end html
+@end macro
+
+@macro divId {ID}
+@html
+<div id="\ID\">
+@end html
+@end macro
+
+@macro divClass {CLASS}
+@html
+<div class="\CLASS\">
+@end html
+@end macro
+
+@macro divEnd
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+
+@c not strictly necessary, but it makes things easier for updating news
+@macro newsItem
+@html
+<div class="news-item">
+@end html
+@end macro
+
+@macro newsEnd
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+
+
+@macro imageClickable{IMAGE-FILE, MORE-TEXT, CLICK-FILE, POSITION}
+@html
+<div class="float-\POSITION\">
+ <a class="clickable" href="\CLICK-FILE\">
+ <img src="\IMAGE-FILE\" alt="\IMAGE-FILE\">
+ </a>
+ <p style="text-align: center">
+ \MORE-TEXT\
+ </p>
+</div>
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@macro imageFloat{IMAGE-FILE, POSITION}
+@html
+<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\" alt="\IMAGE-FILE\">
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@macro imageId{ID, IMAGE-FILE, ALT}
+@html
+<div id="\ID\">
+ <img src="pictures/\IMAGE-FILE\" alt="\ALT\">
+</div>
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@end ifset
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@setfilename general.info
+@settitle LilyPond -- la notation musicale pour tous
+@documentencoding UTF-8
+@documentlanguage fr
+@set web
+@include macros.itexi
+@afourpaper
+@ifnottex
+@node Top
+@top LilyPond
+
+@translationof Top
+
+
+@chapheading
+@end ifnottex
+@finalout
+@titlepage
+@title LilyPond
+@subtitle
+@titlefont{New Website}
+@author Équipe de développement de LilyPond
+@quotation
+@end quotation
+@vskip 20pt
+@end titlepage
+@copying
+@quotation
+@end quotation
+@end copying
+@divId{pageHeader}
+@heading LilyPond
+
+... la notation musicale pour tous
+@divEnd
+@c @imageId{cmws,web-clef-g-eight-alpha.png,Catchy Musical Web Snippet}
+@imageId{lilylogo,double-lily-modified3.png,LilyPond logo}
+@c @im ageId{cmws,web-snippet-alpha.png,Catchy Musical Web Snippet}
+@divId{quickSummary}
+@subheading Qu'est-ce que c'est LilyPond?
+TODO FIXME FRENCH
+@divClass{align-right}
+@divEnd
+@divEnd
+@divId{news}
+@include news-front.itexi
+@divClass{float-right}
+@divEnd
+@divEnd
+@divId{latestVersion}
+@subheading Quick links
+@c TODO: javascript to detect OS and suggest download?
+@subsubheading Stable
+@ref{Download, Download 2.12.3}
+@ref{Manuals, Manuals 2.12.3}
+@subsubheading Unstable
+@ref{Development, Download 2.13.2}
+@ref{Development, Manuals 2.13.2}
+@divEnd
+@divClass{hide}
+@menu
+* Introduction::
+* Download::
+* Manuals::
+* Community::
+@end menu
+
+@divEnd
+@contents
+@include general/introduction.itexi
+@include general/download.itexi
+@include general/manuals.itexi
+@include general/community.itexi
+@bye
+
--- /dev/null
+depth = ../../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory. `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@image{pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@image{lilypond/pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition! See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Community
+@unnumbered Community
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Interacting with the community
+@ref{Contact}: get help, discuss, and keep in touch!
+@ref{Tiny examples}: these are @emph{highly} recommended when
+@ref{Bug reports}: something went wrong.
+@divEnd
+@divClass{column-left-bottom}
+@subheading Making LilyPond better
+@ref{Help us}: your assistance is requested.
+@ref{Development}: for contributors and testers.
+@ref{Authors}: the people who made LilyPond what it is today.
+@divEnd
+@divClass{column-right-bottom}
+@subheading Miscellaneous
+@ref{Publications}: what we wrote, and have had written about us.
+@ref{Old news}: an archive.
+@divEnd
+@divClass{hide}
+@menu
+* Contact::
+* Tiny examples::
+* Bug reports::
+* Help us::
+* Development::
+* Authors::
+* Publications::
+* Old news::
+@end menu
+
+@divEnd
+@node Contact
+@unnumberedsec Contact
+
+@untranslated
+
+
+@divClass{column-left-bottom}
+@subheading User Discussions and Help
+@subsubheading User mailist: @code{lilypond-user@@gnu.org}
+@quotation
+@end quotation
+@subsubheading IRC
+@subsubheading Other languages
+@divEnd
+@divClass{column-right-top}
+@subheading Stay Informed
+@subsubheading LilyPond Report
+@subsubheading Releases mailist: @code{info-lilypond@@gnu.org}
+@quotation
+@c don't include gmane posting here. -gp
+@end quotation
+@divEnd
+@divClass{column-right-bottom}
+@subheading Developer Discussion
+@subsubheading Developer mailist: @code{lilypond-devel@@gnu.org}
+@quotation
+@end quotation
+@subsubheading Bug mailist: @code{bug-lilypond@@gnu.org}
+@quotation
+@c don't include gmane posting here. -gp
+@end quotation
+@divEnd
+@node Tiny examples
+@unnumberedsec Tiny examples
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading What are @qq{Tiny examples}?
+@divEnd
+@divClass{column-left-bottom}
+@subheading Why create them?
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-right-bottom}
+@subheading How do I create them?
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@node Bug reports
+@unnumberedsec Bug reports
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Step 1: Known bugs
+@divEnd
+@divClass{column-left-bottom}
+@subheading Step 2: Creating a bug report
+@divEnd
+@divClass{column-right-bottom}
+@subheading Step 3: Sending a bug report
+@divEnd
+@node Help us
+@unnumberedsec Help us
+
+@untranslated
+
+
+@subheading This document
+@subsubheading High priority / blocks release
+@subsubheading Low priority / may never
+@node Development
+@unnumberedsec Development
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Development materials for LilyPond 2.13.3
+@ref{Manuals}.}
+@divEnd
+@divClass{column-left-bottom}
+@subheading Download
+@subheading Manuals
+@divEnd
+@divClass{column-right-bottom}
+@subheading Contributors' Guide
+@divEnd
+@node Authors
+@unnumberedsec Authors
+
+@untranslated
+
+
+@node Publications
+@unnumberedsec Publications
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading What we wrote
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading What others wrote
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@node Old news
+@unnumberedsec Old news
+
+@untranslated
+
+
+@include general/news.itexi
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Download
+@unnumbered Download
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Downloads for LilyPond 2.12.2
+@divEnd
+@divClass{column-left-top}
+@subheading For users
+@c TODO: duplicate to avoid underlined refs in HTML? icky.
+@ref{Unix, @sourceimage{logo-linux} @sourceimage{logo-freebsd}}
+@ref{Unix, Unix (Linux and FreeBSD)}
+@ref{MacOS X, @sourceimage{logo-macosx}}
+@ref{MacOS X, MacOS X}
+@ref{Windows, @sourceimage{logo-windows}}
+@ref{Windows, Microsoft Windows}
+@divEnd
+@divClass{column-right-top}
+@subheading For developers
+@ref{Source}:
+@ref{Old downloads}:
+@divEnd
+@divClass{column-center-bottom}
+@subheading Software License
+@divEnd
+@divClass{color1}
+@subheading Sponsors
+@sourceimage{VTlogo_ITF} @sourceimage{lao_banner_06_on_white_demo}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@divClass{hide}
+@menu
+* Unix::
+* MacOS X::
+* Windows::
+* Source::
+* Old downloads::
+* GPL::
+@end menu
+
+@divEnd
+@node Unix
+@unnumberedsec Unix
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Generic Packages or Distribution-Specific Packages?
+@divEnd
+@divClass{column-left-top}
+@subheading Generic Packages
+@subsubheading Download
+@sourceimage{logo-linux}
+@sourceimage{logo-linux}
+@sourceimage{logo-linux}
+@sourceimage{logo-freebsd}
+@sourceimage{logo-freebsd}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Distribution-specific Packages
+@sourceimage{logo-fedora}
+@sourceimage{logo-ubuntu}
+@sourceimage{logo-slackware}
+@sourceimage{logo-debian}
+@sourceimage{logo-suse}
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node MacOS X
+@unnumberedsec MacOS X
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Packages
+@subsubheading Download
+@sourceimage{logo-macosx}
+@sourceimage{logo-macosx}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Running on the command-line
+@subsubheading Using Python scripts on MacOS 10.3 or 10.4
+@c ommand{convert-ly} and @command{lilypond-book} as follows: if the
+@subsubheading MacOS X on the command line
+@c ommand{abc2ly}, and even @command{lilypond} itself --- are included
+@c ommand{lilypond-book}, @command{convert-ly}, @command{abc2ly}, etc.
+@c ode{bin/convert-ly} (or other program name) in the above file.
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node Windows
+@unnumberedsec Windows
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Packages
+@subsubheading Download
+@sourceimage{logo-windows}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Running on the command-line
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node Source
+@unnumberedsec Source
+
+@untranslated
+
+
+@divClass{column-left-bottom}
+@subheading Source tarball
+@divEnd
+@divClass{column-right-bottom}
+@subheading Compiling instructions
+@divEnd
+@node Old downloads
+@unnumberedsec Old downloads
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading All versions
+@divEnd
+@node GPL
+@unnumberedsec GPL
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Software license
+@divEnd
+@divClass{column-center-bottom}
+@subheading GNU General Public License version 2
+@include gpl-2.0.itexi
+@divEnd
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Introduction
+@unnumbered Introduction
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Our Goal
+@imageFloat{flat-design.png,right}
+@divEnd
+@divClass{column-left-top}
+@subheading Why use LilyPond?
+@ref{Features}: What can LilyPond do?
+@ref{Examples}: I want to see some music!
+@ref{Freedom}: LilyPond is Free Software.
+@divEnd
+@divClass{column-right-top}
+@subheading Who uses it?
+@ref{Productions}: Real-life use of LilyPond.
+@ref{Testimonials}: What do people say?
+@divEnd
+@divClass{column-center-bottom}
+@subheading Why not use LilyPond?
+@ref{Text input}: You write music as @emph{text}?!
+@divEnd
+@divClass{hide}
+@menu
+* Features::
+* Examples::
+* Freedom::
+* Productions::
+* Testimonials::
+* Text input::
+@end menu
+
+@divEnd
+@node Features
+@unnumberedsec Features
+
+@untranslated
+
+
+@subheading Why switch to LilyPond?
+@subsubheading Excellent classical engraving
+@imageFloat{flat-design.png,right}
+@subsubheading No fiddling
+@subsubheading Text-based input
+@subsubheading Mix music and text
+@imageFloat{lilypond-book.png,right}
+@subsubheading Free software
+@subsubheading Extensible design
+@subsubheading Excellent support
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Text input}.
+@divEnd
+@node Examples
+@unnumberedsec Examples
+
+@untranslated
+
+
+@imageClickable{examples/liszt-wagner-small.png, (click to enlarge), examples/liszt-wagner.png, center}
+@subsubheading Classical Music
+@imageClickable{examples/bach-bwv610-small.png, (click to enlarge), examples/bach-bwv610.png, center}
+@subsubheading Complex Notation
+@imageClickable{examples/granados-small.png, (click to enlarge), examples/granados.png, center}
+@subsubheading Early Music
+@imageClickable{examples/ancient-headword-small.png, (click to enlarge), examples/ancient-headword.png, center}
+@subsubheading Modern Music
+@imageClickable{examples/cary-small.png, (click to enlarge), examples/cary.png, center}
+@subsubheading Efficient, flexible creation of performance materials
+@imageClickable{examples/sesto-small.png, (click to enlarge), examples/sesto.png, center}
+@imageClickable{examples/sesto-1-small.png, (click to enlarge), examples/sesto-1.png, center}
+@imageClickable{examples/sesto-2-small.png, (click to enlarge), examples/sesto-2.png, center}
+@subsubheading Tablature
+@imageClickable{examples/bach-tab-example-small.png, (click to enlarge), examples/bach-tab-example.png, center}
+@subsubheading Schenker Graphs
+@imageClickable{examples/bach-schenker-small.png, (click to enlarge), examples/bach-schenker.png, center}
+@subsubheading Vocal Music
+@imageClickable{examples/aucun-snippet-small.png, (click to enlarge), examples/aucun-snippet.png, center}
+@subsubheading Educational Applications
+@imageClickable{examples/theory-small.png, (click to enlarge), examples/theory.png, center}
+@subsubheading Popular Music
+@imageClickable{examples/chart-small.png, (click to enlarge), examples/chart.png, center}
+@subsubheading Large Projects
+@imageClickable{examples/orchestral-small.png, (click to enlarge), examples/orchestral.png, center}
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Freedom}. If you've already decided to try LilyPond, first
+@divEnd
+@node Freedom
+@unnumberedsec Freedom
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Free Software
+@ref{GPL, GNU General Public License} and the @ref{FDL, GNU Free
+@divEnd
+@c @divClass{column-left-top}
+@divClass{color2}
+@divClass{keep-bullets}
+@subheading What are the benefits to users?
+@divEnd
+@divEnd
+@c @divClass{column-right-top}
+@divClass{color3}
+@divClass{keep-bullets}
+@subheading Why do LilyPond developers @qq{give away} their work for free?
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Productions} and sheet music. If you've already decided to
+@divEnd
+@node Productions
+@unnumberedsec Productions
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Concerts
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-right-top}
+@subheading Published sheet music
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Text input}.
+@divEnd
+@node Testimonials
+@unnumberedsec Testimonials
+
+@untranslated
+
+
+@divClass{testimonial-item}
+@imageFloat{carter-brey.jpg, right}
+@subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey}, Principal Cellist, New York Philharmonic
+@divEnd
+@divClass{testimonial-item}
+@imageFloat{orm-finnendahl.jpg, left}
+@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg
+@divEnd
+@divClass{testimonial-item}
+@imageFloat{darius-blasband.jpg, right}
+@subsubheading Darius Blasband, composer (Brussels, Belgium)
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Kieren MacMillan, composer (Toronto, Canada)
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Chris Cannam, lead programmer of the @uref{http://www.rosegardenmusic.com/, RoseGarden} project.
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Chris Snyder, @uref{http://www.adoromusicpub.com/, Adoro Music Publishing}
+@divEnd
+@divClass{testimonial-item}
+@subsubheading David Bobroff, Bass Trombone, Iceland Symphony Orchestra
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Vaylor Trucks, Electric guitar player (Yes, @uref{http://www.allmanbrothersband.com/modules.php?op=modload&name=userpage&file=content&page_id=12, related to})
+@divEnd
+@divClass{testimonial-item}
+@subsubheading @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}, @uref{http://www.mutopiaproject.org/, Mutopia} contributor
+@divEnd
+@divClass{testimonial-item}
+@subsubheading @uref{http://www.troff.org/whoswho.html#werner, Werner Lemberg}, Conductor at the Theatre in Koblenz, Germany and distinguished GNU Hacker.
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Paul Davis, developer of @uref{http://jackaudio.org/, JACK} and @uref{http://www.ardour.org/, Ardour}.
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@divEnd
+@node Text input
+@unnumberedsec Text input
+
+@untranslated
+
+
+@c TRANSLATORS: so far it's mostly from
+@c http://lilypond.org/web/switch/howto
+@subheading @qq{Compiling} Music
+@imageClickable{examples/nereid-shot-small.png, (click to enlarge), examples/nereid-shot.png, right}
+@subsubheading It's as simple as A B C
+@imageFloat{text-input-1-annotate.png,center}
+@imageFloat{text-input-1-output.png,center}
+@imageFloat{text-input-2-annotate.png,center}
+@imageFloat{text-input-2-output.png,center}
+@subsubheading Pop music
+@imageFloat{text-input-pop-annotate.png,center}
+@imageFloat{text-input-pop-output.png,center}
+@subsubheading Orchestral parts
+@imageFloat{text-input-parts-both-annotate.png,center}
+@imageFloat{text-input-parts-single-annotate.png,center}
+@imageFloat{text-input-parts-single-output.png,center}
+@imageFloat{text-input-score-annotate.png,center}
+@imageFloat{text-input-score-output.png,center}
+@subsubheading Beginner Documentation
+@subsubheading Easier editing environments
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Freedom} that LilyPond provides, or read about users'
+@ref{Productions} and @ref{Testimonials}.
+@divEnd
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined! Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso! Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rgeneral
+@c @ressay
+@c @rglos
+@c @rinternals
+@c @rlearning
+@c @rlsr
+@c @rprogram
+@c @ruser
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,general-big-page,General Information}
+@ref{\TEXT\,,\DISPLAY\,general-big-page,General Information}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,general,General Information}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-general,General Information}
+@ref{\TEXT\,,\DISPLAY\,lilypond-general, General Information}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own. To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,general,General Information}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Manuals
+@unnumbered Manuals
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Documentation for LilyPond 2.12.2
+@divEnd
+@divClass{column-center-top}
+@subheading Introduction
+@divEnd
+@divClass{column-left-top}
+@subheading Regular use
+@divEnd
+@divClass{column-right-top}
+@subheading Infrequent Use
+@divEnd
+@divClass{column-center-bottom}
+@subheading Other material
+@divEnd
+@divClass{hide}
+@menu
+* Learning::
+* Glossary::
+* Essay::
+* Notation::
+* Usage::
+* Snippets::
+* FAQ::
+* Changes::
+* Internals::
+* Translated::
+* Old::
+* FDL::
+@end menu
+
+@divEnd
+@c TRANSLATORS: most of the text in this file came from
+@c LM 1.1 About the documentation (before this section was
+@c removed in July 2009).
+@node Learning
+@unnumberedsec Learning
+
+@untranslated
+
+
+@node Glossary
+@unnumberedsec Glossary
+
+@untranslated
+
+
+@node Essay
+@unnumberedsec Essay
+
+@untranslated
+
+
+@node Notation
+@unnumberedsec Notation
+
+@untranslated
+
+
+@node Usage
+@unnumberedsec Usage
+
+@untranslated
+
+
+@node Snippets
+@unnumberedsec Snippets
+
+@untranslated
+
+
+@node FAQ
+@unnumberedsec FAQ
+
+@untranslated
+
+
+@subheading Where are the graphical canvas, menus, and toolbars?
+@subheading There's a lot of documentation! Do I need to read it?
+@subheading That's still a lot of reading! Is it worth it?
+@subheading Something isn't working! How do I fix it?
+@subheading Why do you change the syntax?
+@node Changes
+@unnumberedsec Changes
+
+@untranslated
+
+
+@node Internals
+@unnumberedsec Internals
+
+@untranslated
+
+
+@node Translated
+@unnumberedsec Translated
+
+@untranslated
+
+
+@node Old
+@unnumberedsec Old
+
+@untranslated
+
+
+@node FDL
+@unnumberedsec FDL
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Documentation license
+@divEnd
+@divClass{column-center-bottom}
+@subheading GNU Free Documentation License 1.1
+@include fdl.itexi
+@divEnd
+
+@c -- SKELETON FILE --
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c This file is part of lilypond-general.texi and community.itexi
+
+@c when you add a new item, consider moving the lowest item(s)
+@c into news-old.itexi.
+
+@newsItem
+@subsubheading New Website! @emph{20 Aug 2009}
+
+As you can see, we have a new website design. Many thanks to
+texi2html and CSS for being so flexible!
+
+(FIXME: change date when this is actually announced on lilypond.org)
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.3. @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.
+
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release. For changes and download links, see @ref{Development}.
+@newsEnd
+
+
+
+@newsItem
+@subsubheading Hungarian translation! @emph{22 May 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a harmathdenes AT gmail.com címre!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #15. @emph{18 May 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column
+about the LilyPond project: its team, its world, its community.
+Read it @uref{http://news.lilynet.net/The-LilyPond-Report-15,
+here}!
+@newsEnd
+
+
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+@ignore
+
+NOTE:
+
+ * avoid "HERE" as name for links, use descriptive link names like
+ @uref{,Download LilyPond 2.5.16}
+
+ * avoid putting links in running text. They make text harder to read.
+ Preferably: (@uref{,...}, etc. )
+
+ * use a descriptive title in @subsubheading
+
+ * writing date in "Month DD, YYYY" format is required for
+ generating the RSS feed; in case the message (and thus the date)
+ is not in English, you must write a well-formed date in English
+ like above in a comment between the closing brace of @emph and the
+ following line
+ (see "Japanese translation" below for an example).
+
+ * Split news items in small chunks. It's OK to have more than 1 item
+ on one day.
+
+
+FIXME
+
+ * add macro for long Google issues list URL
+@end ignore
+
+@newsItem
+@subsubheading New Website! @emph{20 Aug 2009}
+
+As you can see, we have a new website design. Many thanks to
+texi2html and CSS for being so flexible!
+
+(FIXME: change date when this is actually announced on lilypond.org)
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.3. @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.
+
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release. For changes and download links, see @ref{Development}.
+@newsEnd
+
+
+
+@newsItem
+@subsubheading Hungarian translation! @emph{22 May 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a harmathdenes AT gmail.com címre!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #15. @emph{18 May 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column
+about the LilyPond project: its team, its world, its community.
+Read it @uref{http://news.lilynet.net/The-LilyPond-Report-15,
+here}!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.3. @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.@*
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release.@*
+@ref{Changes},
+@ref{Development}.
+@newsEnd
+
+
+@newsItem
+@subsubheading A LilyPond weboldala magyarul. @emph{May 22, 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a @code{harmathdenes AT gmail.com} címre!
+<p align="right">Harmath Dénes, a LilyPond honosítási projekt
+vezetője
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #15. @emph{May 18, 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column about the LilyPond project:
+its team, its world, its community.
+Follow @uref{http://news.lilynet.net/The-LilyPond-Report-15,this link}
+to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #14. @emph{April 13, 2009}
+
+The @emph{LilyPond Report} is back, on a new website!
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://news.lilynet.net/The-LilyPond-Report-14,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.12.2 and 2.13.0 — @emph{March 21, 2009}
+
+As a very belated announcement, the stable version of LilyPond is
+now 2.12.2, and the next development version has begun with
+2.13.0.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.12.0 @qq{Rune} — @emph{December 27, 2008}
+
+A new stable release of LilyPond is available.
+@*
+@uref{announce-v2.12,Announcement},
+@ref{Changes},
+@ref{Download}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.65 — Release Candidate. @emph{December 2, 2008}
+
+This release has improvements to MusicXML import, contributed by
+Reinhold Kainhofer, and adds support for splitting a book in several
+book parts, contributed by Nicolas Sceaux.
+Nested contexts of the same type are now allowed with any depth, and
+overriding nested properties can be done with list syntax, thanks to
+Neil Puttock.
+This is hopefully the last Release Candidate before stable release 2.12,
+so you are welcome to test this release if you can to report new
+issues.@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_65&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.64. @emph{November 18, 2008}
+
+LilyPond 2.11.64 is available. MusicXML import has been improved,
+including church modes support, and a few bugs in the compilation
+and documentation building processes are fixed. The three
+documentation manuals are now fully translated in Spanish, thanks
+to Francisco Vila. The font cache problem in Windows binaries
+which used to cause excessive slowness should be fixed.
+@*
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.63. @emph{October 29, 2008}
+
+LilyPond 2.11.63 is available. This release has lots of updates to the
+documentation and translations.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.62 – Release Candidate. @emph{October 11, 2008}
+
+LilyPond 2.11.62 is available. This is is one of the last releases
+before 2.12, so testing it is encouraged. In addition to a bugfix
+in @code{\tempo} command, this release has lot of updates
+to Spanish and German documentation translations, and the
+stylesheet for HTML documentation has been improved.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_62&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.61 available. @emph{October 1, 2008}
+
+LilyPond 2.11.61 has been released. It has updates to
+documentation translations, and a new automatic accidentals style
+(teaching) has been added.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_61&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.60 available. @emph{September 25, 2008}
+
+LilyPond 2.11.60 has been released. A new style of double repeat
+bar line has been added, and @code{printallheaders} variable in
+score block has been renamed to @code{print-all-headers}.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.59 available. @emph{September 20, 2008}
+
+Release 2.11.59 is out. LilyPond now uses 64 bit integers for
+rational numbers, which allows typesetting more complex polymetric
+music. This release also has updates to German and Spanish
+translations of the documentation.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.58 available. @emph{September 13, 2008}
+
+LilyPond 2.11.58 is a beta release, which means the next stable
+release is expected in a few weeks. This release is also special,
+as it includes code which supports more flexible automatic
+accidentals rules, written several months ago by Rune Zedeler,
+deceased since then. All the development team express their
+condolences to his family and his friends. Besides this,
+automatic beaming has been improved by Carl Sorensen, support
+for creating stem flags in a new style has been contributed by
+Reinhold Kainhofer, and a few bugs have been fixed.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_58&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.57 available. @emph{August 27, 2008}
+
+LilyPond 2.11.57 is out. This release adds support for harp pedal
+diagrams, contributed by Reinhold Kainhofer, and some changes in
+markup command names have been made.
+@*
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.56 available. @emph{August 17, 2008}
+
+LilyPond 2.11.56 is out. This release features transposable fret
+diagrams, contributed by Carl Sorensen. Translations status pages
+are now available from the documentation start page. Two
+predefined commands @code{\pointAndClickOn},
+@code{\pointAndClickOff} have also been added.
+@*
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.55 available. @emph{August 6, 2008}
+
+LilyPond 2.11.55 is out. This release fixes several bugs, and for octavation brackets
+@code{set-octavation} has been replaced by a more user-friendly command, @code{\ottava}.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_55&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.54 available. @emph{July 30, 2008}
+
+LilyPond 2.11.54 is out. This release fixes a bug in tie formatting
+following a line break, and changes the behavior of @code{short-indent}
+so that short instrument names are no longer indented in the margin.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_54&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.53 available. @emph{July 23, 2008}
+
+LilyPond 2.11.53 is out. This release fixes a lot of bugs.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_53&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.52 available. @emph{July 14, 2008}
+
+Release 2.11.52 fixes wrong offset of a bar number when it follows
+a breath mark, and syntax changes made in recent development
+releases are now fully listed on the News page. @ref{Changes},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_52&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.51 available. @emph{July 8, 2008}
+
+Release 2.11.51 has a couple of bugfixes, and a lot of changes in
+predefined command names. Fret diagrams formatting has been
+improved by Carl Sorensen, it is now controlled
+by @code{fret-diagram-details} property.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_51&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.50 available. @emph{July 2, 2008}
+
+Release 2.11.50 adds support for metronome marks with text, and
+backslashed numbers for figured bass, contributed by
+Reinhold Kainhofer.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_50&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #13. @emph{June 23, 2008}
+
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-13,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #12. @emph{June 16, 2008}
+
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-12,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.49 released. @emph{June 12, 2008}
+
+LilyPond 2.11.49 is out. It fixes a number of bugs, including bugs in beams formatting.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_49&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.48 released. @emph{June 9, 2008}
+
+LilyPond 2.11.48 is out. This release fixes a few bugs, and
+@code{\compressMusic} has been renamed
+to @code{\scaleDurations}.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_48&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #11. @emph{June 9, 2008}
+
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-11,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #10. @emph{June 2, 2008}
+
+Welcome to this special tenth issue of the @emph{LilyPond Report}, entirely dedicated to Algorithmic Composition systems.@*
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-10,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.47 released. @emph{May 28, 2008}
+
+LilyPond now allows all text context properties to be markups,
+except in @code{\lyricmode}. This release also fixes
+regression tests maintenance for developers.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_47&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.46 available. @emph{May 22, 2008}
+
+Release 2.11.46 fixes a lot of bugs and includes a rewrite of
+dynamics engravers. Support for slur-shaped arpeggios has been added.
+@ref{Changes},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_46&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading RSS feed - @emph{May 21, 2008}
+
+A RSS feed is now available on lilypond.org. It contains all
+news announced on the web site start page: releases, LilyPond
+report, new translations of the site and publications.
+@uref{http://lilypond.org/web/lilypond-rss-feed.xml,Feed URL}.
+The info mailing list (see @ref{Contact}) is still used to
+announce releases and special events.
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #9. @emph{May 05, 2008}
+
+Welcome to this ninth issue of the @emph{LilyPond Report}!@*
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-9,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.45 available. @emph{April 26, 2008}
+
+Release 2.11.45 fixes a couple of bugs in the formatting
+engine. @code{lilypond-book} has been improved, with better
+performance, a bugfix about included files, and more flexibility
+for preprocessing documents with LaTeX variants. Support for
+enclosing text in a rounded box has been contributed by Valentin
+Villenave.
+@ref{Changes},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_45&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.44 available. @emph{April 14, 2008}
+
+Release 2.11.44 is available. Support for figured bass and chord
+names has been added to the MusicXML
+converter. @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_44&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading lilypond.org日本語訳 (lilypond.org Japanese translation). @emph{2008年4月8日 (April 4, 2008)}
+
+Lilypond.orgのいくつかのページの日本語訳が出来ました。
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.43 available. @emph{March 31, 2008}
+
+Release 2.11.43 has been available since March 27. It fixes a
+couple of formatting bugs, and the font cache problem with
+MS-Windows binaries which caused excessive slowness has been
+fixed. @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_43&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.42 available. @emph{March 9, 2008}
+
+Release 2.11.42 is out. It fixes some formatting and spacing
+bugs. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_42&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Comparison of music engraving with Finale and LilyPond. @emph{February 25, 2008}
+
+In three articles, Andrew Hawryluk compares Finale and LilyPond in
+general terms, and evaluates in detail engraving capabilities of
+both pieces of software. The second article is an instructive
+analysis of Rachmaninoff's Piano Prelude 6 engraving, including
+comparisons with a reference hand-engraved edition.
+@uref{http://www.musicbyandrew.ca/finale-lilypond-1.html,Read
+the articles}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.41 available. @emph{February 25, 2008}
+
+Release 2.11.41 is available. It has a few bugfixes, updated
+program messages in French, German, Spanish and Vietnamese, and
+updates to the MusicXML converter. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_41&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.37 available. @emph{January 3, 2008}
+
+Release 2.11.37 is available. It has a few bugfixes, and
+documentation changes. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.36 available. @emph{December 13, 2007}
+
+Release 2.11.36 is now available. It has many bugfixes, updates
+for MusicXML import, and it includes major documentation changes from
+Grand Documentation Project. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_36&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.33 and 2.10.33 available. @emph{September 20, 2007}
+
+Release 2.11.33 is now available.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_33&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_33&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.32 available. @emph{September 2, 2007}
+
+Release 2.11.32 is now available.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_32&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.31 available. @emph{August 31, 2007}
+
+Release 2.11.31 is now available. It has more bugfixes, updates
+for MusicXML import and lots of updates for the translations.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_31&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.30 available. @emph{August 20, 2007}
+
+Release 2.11.30 is now available. It has various bugfixes among
+others in the new spacing code, MusicXML import and lots of updates
+for the translations. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_30&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.29 and 2.11.29 available. @emph{August 11, 2007}
+
+Release 2.11.29 is now available. 2.10.29 has a few small fixes.
+2.11.29 has several bugfixes, among others in the new spacing code,
+and lots of updates for the translations.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_29&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_29&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.28 for FreeBSD x86_64. @emph{August 10, 2007}
+
+Release 2.11.28 is now available as a binary installer for
+FreeBSD x86_64. Download
+@uref{http://lilypond.org/download/binaries/freebsd-64/lilypond-2.11.28-1.freebsd-64.sh,the installer} and
+do @emph{sh lilypond-2.11.28-1.freebsd-64.sh} in a command window.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.28 available - @emph{July 25, 2007}
+Release 2.11.28 has several updates to the manual and its
+translations, an plethora of bugfixes and a complete cleanup of the
+spacing engine code.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_28&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.26 available - @emph{June 8, 2007}
+
+Release 2.11.26 supports page markers, eg. for use in
+tables-of-contents. In addition, it fixes a number of bugs. Enjoy!
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_26&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.25 and 2.11.25 available - @emph{May 20, 2007}
+
+Release 2.11.25 has support for toplevel page breaking commands,
+and page breaking as a whole has been sped up significantly. Enjoy!
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_25&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_25&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.23 and 2.11.23 available - @emph{May 1, 2007}
+This has lots of bugfixes. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_23&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_23&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Übersetzung der Dokumentation - @emph{10. April 2007}
+Die Kapitel 1-5 (der Abschnitt für Anfänger) des
+LilyPond-Benutzerhandbuchs
+sind auf deutsch übersetzt — sie sind erhältlich für
+die @ref{Changes}
+online und @ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.22 available - @emph{April 10, 2007}
+This release has updates of the dot collision code. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_22&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.21 available - @emph{March 24, 2007}
+This release has some documentation updates.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_21&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Traduction de la documentation en français - @emph{25 février 2007}
+Les chapitres 1 à 4 et 6 du manuel de l'utilisateur sont
+désormais traduits, et disponibles en ligne — @uref{@@DOC@@v2.10/Documentation/user/lilypond/index.fr.html,version
+2.10}, @uref{@@DOC@@v2.11/Documentation/user/lilypond/index.fr.html,version
+2.11}. Les traductions sont également incluses dans la @uref{install,documentation téléchargeable}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.20 and 2.11.20 available - @emph{February 25, 2007}
+This release fixes many bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_20&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_20&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.19 and 2.11.19 available - @emph{February 18, 2007}
+This release fixes many bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_19&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_19&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.18 available - @emph{February 12, 2007}
+This release fixes still more bugs, and included
+singing support through festival contributed by Milan Zamazal. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_18&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.17 available - @emph{February 9, 2007}
+This release fixes still more bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_17&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.16 and 2.11.16 available - @emph{February 4, 2007}
+This release fixes many bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_16&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_16&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10},
+@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.15 and 2.11.15 available - @emph{February 1, 2007}
+This release will stretch piano staves on a
+system-by-system basis and add a few glyphs: a black harmonic note
+head and the slashed mirrored flat. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_15&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_15&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.14 and 2.11.14 available - @emph{January 26, 2007}
+This release has a rewrite of the line-spanner code, responsible for
+among other glissandi and text-crescendos, making them more flexible.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_14&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.13 and 2.11.13 available - @emph{January 17, 2007}
+This release fixes a few minor but irritating bugs. In addition, the
+2.11 release has updates of the tutorial.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_13&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.12 available - @emph{January 17, 2007}
+This release fixes lots of bugs. In particular, the tie formatting has
+been further improved, and memory usage has been improved enormously.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_12&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.12 available - @emph{January 17, 2007}
+This release mirrors 2.11.12. Notably, it has the same memory
+usage improvements. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_12&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.11 available - @emph{January 12, 2007}
+This release mostly has the same fixes as 2.11.11. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_11&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.11 available - @emph{January 11, 2007}
+This release has further fixes for popular bugs. Timing of the MIDI
+output won't get confused by tuplets and grace notes anymore. Some fat
+has also been trimmed of the skyline code performance. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_11&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.10 available - @emph{January 8, 2007}
+LilyPond 2.11.10 has further review of the test-suite, performance and
+code coverage. This brought to light several problems that were
+fixed. Notably, 2.11.10 fixes lots of regressions in optical
+correction spacing and MIDI dynamics. Also, this version is 20 to 50
+% faster than previous 2.11 releases. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_10&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.10 available - @emph{January 8, 2007}
+This release fixes several popular bugs, among others: MIDI files
+that go silent after (de)crescendi, and tuplets problems with quoting
+and part-combining (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_10&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.9 and 2.10.9 available - @emph{January 3, 2007}
+This release has a couple of bugfixes, and —in 2.11.9&mdash
+further improvements in the regression test suite (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_9&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.8 and 2.10.8 available - @emph{January 3, 2007}
+New! Improved! With even more bugfixes! (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_8&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading @code{lilypond.org} auf deutsch - @emph{31. Dezember 2006}
+Die LilyPond-Webseiten sind jetzt auch auf deutsch übersetzt!
+@newsEnd
+
+
+@newsItem
+@subsubheading @code{lilypond.org} en español - @emph{December 29, 2006}
+¡Ya está disponible la versión en español del sitio web de LilyPond!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.7 and 2.10.7 available - @emph{January 1, 2007}
+New! Improved! With even more bugfixes! (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_7&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.6 available - @emph{December 30, 2006}
+This release supports arbitrary fractional alterations, allowing
+music with different microtonal conventions to be typeset.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_6&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.6 available - @emph{December 30, 2006}
+New! Improved! With even more bugfixes!
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_6&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.5 available - @emph{December 24, 2006}
+These releases complete the translation infrastructure for
+Documentation.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_5&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.5 available - @emph{December 24, 2006}
+New! Improved! With even more bugfixes!
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_5&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.4 available - @emph{December 21, 2006}
+The vertical spacing improvements that were introduced in 2.11.0 now work
+within a system as well as between systems. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_4&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.3 available - @emph{December 19, 2006}
+This release has @uref{http://lilypond.org/doc/v2.11/compare-v2.10.3/index.html,graphical
+test results} and several website build improvements. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_3&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.3 available - @emph{December 19, 2006}
+This release fixes several bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_3&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LinuxPPC binaries available! - @emph{December 19, 2006}
+From now on, our GUB binary builds include support for Linux/PPC. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Traduction du tutoriel en français. @emph{December 13, 2006}
+Fruit du travail d'une équipe de traducteurs, le tutoriel en
+français est maintenant disponible en ligne. @uref{@@DOC@@v2.10/Documentation/user/lilypond/Tutorial.fr.html,Version
+2.10}, @uref{@@DOC@@v2.11/Documentation/user/lilypond/Tutorial.fr.html,Version
+2.11}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.2 available - @emph{December 12, 2006}
+This release supports glissandi and harmonics in tablature. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_2&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.2 available - @emph{December 12, 2006}
+A new stable release of LilyPond is available. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_2&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.1 available - @emph{December 4, 2006}
+This release has improved support for horizontal spacing. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_1&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.1 available - @emph{December 3, 2006}
+A new stable release of LilyPond is available. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_1&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.0 available - @emph{November 27, 2006}
+This release has improved support for vertical spacing. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.0 available - @emph{November 11, 2006}
+A new stable release of LilyPond is available. (@uref{announce-v2.10.html,Announcement}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading GIT repository online - @emph{November 11, 2006}
+LilyPond development has moved over its source code to @uref{http://git.or.cz,GIT}, the fast version control
+system. Check out our repository at @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=summary,gnu.org}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.29 available - @emph{November 5, 2006}
+This release has many more bugfixes. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_29&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.28 available - @emph{November 3, 2006}
+This release has many more bugfixes. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_28&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.27 available - @emph{October 28, 2006}
+This release has a new @code{FretBoards} context, and some further
+bugfixes. (@ref{Changes}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_27&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Music streams thesis available - @emph{October 21, 2006}
+The last months, Erik Sandberg has been overhauling the internals of
+Lily. This change introduces a new intermediate format, Music Streams,
+which will make it easier get music data out of LilyPond. A copy of
+the thesis is now available from lilypond.org
+(@ref{Publications}).
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.26 available - @emph{October 20, 2006}
+This release has further bugfixes. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_26&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.25 available - @emph{October 18, 2006}
+This release has more bugfixes; from now on, binaries are also
+available for x86/64. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_25&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.24 available - @emph{October 15, 2006}
+This release has support for right hand guitar fingerings, and offers
+some bugfixes. (@ref{Changes},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed2924&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.23 available - @emph{October 12, 2006}
+This release cuts fragments of EPS directly from your finished score,
+and makes it easier to insert ties into lyrics. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.22 available - @emph{October 9, 2006}
+Test this release candidate for LilyPond 2.10! (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.21 available - @emph{October 4, 2006}
+Test this release candidate for LilyPond 2.10! (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.20 available - @emph{October 3, 2006}
+Test this release candidate for LilyPond 2.10! (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.17 available - @emph{September 2, 2006}
+This release fixes many bugs. Among others, MacOS X QuickTime now
+honors tempo changes are in the MIDI output. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.16 available - @emph{August 25, 2006}
+In this release, chords may be partially tied and lyric extenders have
+tunable padding. Moreover, many bugs were fixed
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.15 available - @emph{August 20, 2006}
+This releases fixes many bugs in the 2.9.14 release. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.6 available - @emph{August 8, 2006}
+This release contains a few minor bugfixes; the source tarball is also
+available. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.14 available - @emph{August 4, 2006}
+This release supports instrument name changes, dotted barlines and
+better spacing for floating grace notes. In addition, it contains
+ongoing work by Erik Sandberg to extend the interpretation phase with
+stream support. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.13 available - @emph{July 23, 2006}
+This release supports doits and falls, and more tuning options for
+grace note spacing and tuplet brackets. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.12 available - @emph{July 18, 2006}
+This release supports pdftex for lilypond-book, and uses PdfTeX for
+generating manuals, so page numbers and references are now clickable.
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.11 available - @emph{July 12, 2006}
+This release wraps improvements of the last two weeks. As a new
+feature, it supports tunable tuplet number formatting for nested
+tuplets. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.10 available - @emph{June 15, 2006}
+This releases fixes a couple of bugs in 2.9.9.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.9 available - @emph{June 15, 2006}
+This releases fixes many bugs in 2.9.8 and earlier.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.8 available - @emph{June 6, 2006}
+2.9.8 has support for different spacing sections within a single
+score, and better infrastructure for automated regression testing.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.4 available - @emph{June 4, 2006}
+2.8.4 fixes some minor bugs, and includes a backport of the
+infrastructure for automated regression testing.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading First test results available - @emph{June 4, 2006}
+After a week of frantic tweaking, the first automated testing results
+are available. You can now see @uref{http://lilypond.org/doc/v2.9/compare-v2.8.4/index.html,in full
+glory} what features are broken in the development release
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.7 available - @emph{May 30, 2006}
+2.9.7 has improvements in the formatting for figured bass, and
+includes a new framework for detecting bugs earlier, which will make
+the development releases even better
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.6 available - @emph{May 24, 2006}
+This
+release has new features in beam formatting: beams may now be put on
+single stems, and obey the @code{beatGrouping} property. MusicXML
+converter. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading New essay pages! - @emph{May 22, 2006}
+The @emph{Automated Engraving} essay has been updated with material
+from the @uref{http://fisl.softwarelivre.org,FISL} talk, with
+pages on @uref{about/automated-engraving/problem-statement,modeling
+notation} and @uref{about/automated-engraving/scoring-esthetics,algorithms for
+esthetics}. Happy reading!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.5 available - @emph{May 17, 2006}
+This release supports object rotation, hairpins with circled tips,
+hairpins that run to barlines before notes and improvements in the
+MusicXML converter.
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.4 available - @emph{May 12, 2006}
+This release has support for feathered beaming, and note head styles in
+the markup @code{\note} command. In addition, it has a lot of updates
+of the manual and a clean up of the spring spacer.
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.2 available - @emph{May 12, 2006}
+This release has fixes for minor bugs and compilation issues.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.3 is out! - @emph{May 7, 2006}
+This new release has lots of updates of the manual, courtesy Graham
+and the contributors of the mailing. It handles formatting for ties in
+arpegiated chords better (feature sponsored by
+Steve Doonan), it has al niente hairpins, courtesy of Erlend Aasland,
+and some cleanups of the PostScript output, courtesy David Feuer. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading FISL7.0 slides available - @emph{April 22, 2006}
+The slides for Han-Wen's talk at
+@uref{http://fisl.softwarelivre.org,FISL 7} are now online.
+(@ref{Publications})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.1 is out! - @emph{April 3, 2006}
+Important bugfixes include CJK font handling and a Darwin/x86 port.
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.1 is out! - @emph{April 3, 2006}
+It's mostly a bugfix release, and it's almoste the same as 2.8.1. This
+release mainly fixes problems with CJK font loading.
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond on MacOS X/Intel - @emph{March 31, 2006}
+LilyPond now also runs on Intel based macs, offering a 400%
+speedup over the emulated PowerPC binaries. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.0 is out! - @emph{March 22, 2006}
+Version 2.8 is here! Read the @uref{announce-v2.8.html,release
+announcement}. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.39 is out - @emph{March 17, 2006}
+This release has even more bug fixes. Please test before 2.8 is
+released. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.38 is out - @emph{March 12, 2006}
+This is likely to be the last release candidate before we release 2.8,
+so report any bugs that you might find. New attractions include:
+lilypond postscript files now work with GSView, cut & pasting lily
+code from PDF files should now work, and spacing fixes for
+multi-measure rests.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.37 is out - @emph{March 4, 2006}
+This release has more bug fixes. Please help us by testing it!
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.36 is out - @emph{February 24, 2006}
+This is another release candidate for 2.8. It has lots of bug fixes
+and polishes to the documentation. It also contains support for
+creating ties that are only on their right side connected to note
+heads, which is handy for repeats (feature sponsored by Steve Doonan).
+The documentation suite can now be downloaded as a separate tarball
+from lilypond.org. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.35 is out - @emph{February 19, 2006}
+This release has lots of bugs fixes. The plan is to release 2.8 at the
+end of this month, so bug reports are @strong{very} welcome. By
+definition a bug is release critical if it wasn't present in version
+2.6. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.34 is out - @emph{February 16, 2006}
+This release has a bunch of bugfixes, and new features. Newly created
+contexts may also be named with @code{\new Voice =
+"alto"}. Thicknesses of tie and slurs may be tuned separately for
+the endings and the middle
+part. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.33 is out - @emph{February 10, 2006}
+Items directly connected with a music input element may be
+parenthesized, for example,
+@verbatim
+{
+ c4 -\parenthesize -.
+ <d \parenthesize fis a>
+}
+@end verbatim
+
+This feature was sponsored by Ramana Kumar. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.32 is out - @emph{February 7, 2006}
+This release contains some syntax changes: words inside the \paper and
+\layout block are henceforth written with dashes, for instance:
+
+@verbatim
+{
+ \layout {
+ ragged-right = ##t
+ }
+}
+@end verbatim
+
+Furthermore, in this release, we have dropped some legacy code from
+our library. Now, lily uses standard C++ strings and the STL
+vector. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.31 is out - @emph{February 2, 2006}
+This release fixes a load of bugs, and has some internal
+cleanups. Exported C++ members are now named
+ly:class-name::function-name in Scheme instead of
+Class_name::function_name. We are now using C++ vectors and strings
+instead of our own. The Linux/FreeBSD builds now include wrappers for
+Python scripts too, so you can run convert-ly and midi2ly.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.30 is out - @emph{January 30, 2006}
+This release has a few bug fixes, like the solfa note head shape and
+collisions, the \epsfile command, and in getting No. ligature in
+normal words. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.29 is out - @emph{January 27, 2006}
+This release has the following new features. Alignments of staves may
+be tuned per system (feature sponsored by Trevor Baca), individual
+systems may be positioned manually (feature sponsored by Trevor Baca
+and Nicolas Sceaux), a linebreaking configuration can now be saved as
+a `.ly' file automatically. This allows vertical alignments to be
+stretched to fit pages in a second formatting run (feature sponsored
+by Trevor Baca and Nicolas
+Sceaux). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.28 is out - @emph{January 22, 2006}
+This release contains numerous small fixes that were already in our
+GUB binaries. In addition, it has further polish for formatting of
+tied chords. Theses improvements were sponsored by Steve
+Doonan. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.27, release 4 - @emph{January 13, 2006}
+
+The fourth release of our Grand Unified Binary for 2.7.27 is
+available. This release uses Pango 1.11.1, which has support for
+ligatures and kerning. Enjoy! (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.27, release 3 - @emph{January 12, 2006}
+The third release of our Grand Unified Binaries is available. This
+release fixes external font-support, the decompression flag for
+Linux. Also, we have support for @strong{FreeBSD} as well! Jump
+to the @ref{Old downloads} get them!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.27 binaries are out - @emph{January 7, 2006}
+Starting with 2.7.26, the development team has been working on the
+installers. We're proud to announce another version of these: they are
+now available for
+@uref{http://lilypond.org/download/binaries/linux-x86/lilypond-2.7.27-1.linux.sh,
+Linux/x86},
+@uref{http://lilypond.org/download/binaries/MacOS/lilypond-2.7.27-2.zip,
+MacOS X} and
+@uref{http://lilypond.org/download/binaries/mingw/lilypond-2.7.27-2.exe,
+Windows}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.27 is out - @emph{January 7, 2006}
+This release allows you to switch staff lines on and off individually
+(feature sponsored by Andrea
+Valle). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Linux Journal article - @emph{January 2006}
+Linux Journal publishes an article on
+@uref{http://www.linuxjournal.com/article/8364,@emph{Make
+Stunning Schenker Graphs with GNU LilyPond}}. It is a
+in-depth but hands-on feature article with crisp LilyPond
+graphics.
+@*
+Author Kris Shaffer remarks
+“GNU Lilypond generates beautiful graphics that make commercial
+alternatives seem second-rate.”
+This article is now available @uref{http://www.linuxjournal.com/article/8583,on-line}.
+@newsEnd
+
+
+@newsItem
+@subsubheading New binaries for LilyPond 2.7.26 - @emph{January 4, 2006}
+The Development team has been working around the clock to improve
+to fix the first wave bugs reported by you. The new results for MacOS
+and Windows are up on the @ref{Old downloads}
+page. Let us know how you fare!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.26 is out - @emph{December 31, 2005}
+This release has an improvement in the MusicXML importer (feature
+sponsored by Mark vd Borre's Music Academy): now, staves and voices
+are also setup, so you can readily run LilyPond on the .ly output.
+The important occasion for this release is our new build
+environment: we have completely revamped it, which means that binaries
+for all platforms (including MacOS, Windows, Linux/x86, but probably
+FreeBSD too) will be more quickly available for download.
+A happy 2006 from the LilyPond Development Team!
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.25 is out - @emph{December 24, 2005}
+This release has various bugfixes. Also, stems on the center line now
+have their directions interpolated to minimize the number of direction
+changes (feature sponsored by Basil Crow and Mike
+Rolish). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.24 is out - @emph{December 20, 2005}
+This release fixes a couple of bugs, but more importantly, slurs now
+avoid TupletNumbers, and tuplet numbers may enter the staff (feature
+sponsored by Trent Johnston), tuplet brackets and numbers are
+implemented as separate grobs, TupletBracket and TupletNumber (rewrite
+sponsored by Trent Johnston), string arguments for music functions may
+be specified without # marks. This allows syntactical constructs (like
+\clef and \bar) to be expressed in generic music
+functions. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.23 is out - @emph{December 19, 2005}
+This release has the following new features:
+@itemize
+@item
+Ties in chords are also formatted using score based
+formatting. This reduces the number of collisions for ties in chords
+(feature sponsored by Steve Doonan).
+@item
+With the \tweak music function, layout objects that are directly
+connected to input may be tuned easily (feature sponsored by Sean Reed
+and Bertalan Fodor).
+@item
+Generic music functions may now also be used on
+articulations and chord elements (feature sponsored by Sean Reed and
+Bertalan Fodor).
+@item
+Better support for MusicXML, more options for spacing Lyrics;
+it is now possible to separately specify minimum distances for normal
+and hyphenated syllables (features sponsored by Mark van den Borre and
+Bertalan Fodor.
+@end itemize
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.22 is out - @emph{December 9, 2005}
+This release has better support for MusicXML: it also supports ties,
+beams and editorial accidentals. It also has more options for spacing
+Lyrics; it is now possible to separately specify minimum distances for
+normal and hyphenated syllables. These features were sponsored by Mark
+van den Borre and Bertalan
+Fodor. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.21 is out - @emph{December 5, 2005}
+Saint Nicholas brings you ... a @uref{http://www.musicxml.org/,MusicXML} convertor for LilyPond!
+The convertor is basic, but working. Check out the @uref{http://www.lilypond-design.com/sponsor/open-features.html#inputfilter,
+LilyPond Software Design} pages for MusicXML features that can be
+sponsored.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.20 is out - @emph{December 2, 2005}
+This release contains the following improvements: Texts set in a
+TrueType font are now kerned. Using the TeX no longer requires linking
+or dynamically opening the kpathsea library, making the backend more
+easily usable on various systems (feature sponsored by Christian Ebert
+of Black Trash
+Productions). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.5 is out - @emph{December 1, 2005}
+This release updates the bugreporting address and reorganizes the
+documentation tree. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.19 is out - @emph{November 26, 2005}
+This version contains a few bugfixes, and now allows the type of
+brackets in system start bracket hierarchies to be specified. Also,
+the horizontal alignment of rehearsal marks may be changed: marks can
+be put on key signatures, clefs, time signatures,
+etc. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.18 is out - @emph{November 21, 2005}
+This version features nestable system start delimiters, like bracket,
+brace. It also adds "square" line bracket (feature sponsored by Trevor
+Baca). It also has refactored routines for tie formatting. This will
+make it easier to get better tie formatting for chords (feature
+sponsored by Steve Doonan). It also has a few bug
+fixes. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.17 is out - @emph{November 17, 2005}
+This version has refactored routines for tie formatting. This will
+make it easier to get better tie formatting for chords (feature
+sponsored by Steve Doonan). It also has a few bug
+fixes. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.16 is out - @emph{November 11, 2005}
+This release fixes a large number of bugs. Please upgrade before
+reporting bugs in the 2.7 series. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.15 is out - @emph{November 3, 2005}
+This release has another massive cleanup of the backend. Each grob
+property may also be a "grob closure". This means that it is possible
+to combine functions. Calculation of extent and offset of grob is now
+controlled via the `X-extent', `Y-extent', `X-offset' and `Y-offset'
+properties. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.14 is out - @emph{October 23, 2005}
+This release has more cleanup in the layout-engine. Now,
+properties that have Procedure values are thought to be procedures
+that compute said property, i.e.
+@verbatim
+
+\override Beam #'direction = #(lambda (grob)
+(if (> (random 10) 5) UP DOWN))
+
+@end verbatim
+will set a random direction for beams. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.13 is out - @emph{October 18, 2005}
+This release features slashed numerals, plus signs and interruptible
+extender lines for figured bass. Merging of Figured bass lines has
+been made switchable with the figuredBassCenterContinuations
+property. For each grob, a subproperty in `callbacks' property defines
+the procedure which computes it. This is major internal cleanup, which
+also provides advanced tweakability for power
+users. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.4 is out - @emph{October 11, 2005}
+This release fixes a few minor problems with the stable
+series. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.12 is out - @emph{October 07, 2005}
+It features more annotations for the page layout engine and some more
+sponsored features. Beamlets may stick out of the side of beams
+(feature sponsored by Trevor Baca); new support for figured bass with
+support for continuation lines and tuning of figures, brackets, and
+alignments (feature sponsored by Trent Johnston); vertical alignments
+of staves can now be tuned easily for individual systems (feature
+sponsored by Nicolas
+Sceaux). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.11 is out - @emph{October 02, 2005}
+Vertical spacing for page layout can now be tuned for each system
+individually (feature sponsored by Trevor Baca and Nicolas
+Sceaux). The slope of a stem-tremolo may be set manually (feature
+sponsored by Sven Axelsson). There are a number of cleanups in the
+handling and representation of systems, among other features and bug
+fixes. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.10 is out - @emph{September 13, 2005}
+This version adds proper support for "laissez vibrer ties", just enter
+\laissezVibrer after a chord. This feature was sponsored by Henrik
+Frisk. It also has a couple of minor
+bugfixes. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.9 is out - @emph{September 5, 2005}
+This is mainly a bugfix
+release. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Traduction française du site - @emph{September 03, 2005}
+Grâce à @uref{about/thanks#website,l'équipe des traducteurs},
+de nombreuses pages du site sont maintenant disponibles en français,
+notamment l'@uref{about/automated-engraving/index.fr.html,essai sur
+la gravure musicale}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.8 is out - @emph{August 29, 2005}
+This release has support for right-to-left text formatting in markup
+commands (sponsored by Aaron Mehl). In addition, it fixes a great
+number of bugs, among others, support for writing MIDI files. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Article in `De Standaard' - @emph{August 20, 2005}
+The Belgian newspaper @emph{De Standaard} investigates what drives
+Free Software authors in an article titled @emph{Delen van KENNIS
+zonder WINSTBEJAG} (Non-profit sharing of
+knowlegde) using LilyPond as an example. This marks
+LilyPond's first appearance in mainstream printed press.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.7 is out - @emph{August 22, 2005}
+This release has a rewriting of tie formatting which was sponsored by
+Bertalan Fodor, Jay Hamilton, Kieren MacMillan, Steve Doonan, Trevor
+Baca, and Vicente Solsona
+Dellá. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.6 is out - @emph{August 19, 2005}
+This release adds support for numbered percent repeats, a feature
+sponsored by Yoshinobu Ishizaki. It also has bugfixes for clashes
+between slurs and symbols, like fingers dynamic
+signs. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.5 is out - @emph{August 16, 2005}
+Lily 2.7.5 has a large number of bugfixes, among others, in slur
+formatting, spacing, rest collisions and tuplet bracket
+formatting. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.4 is out - @emph{August 7, 2005}
+LilyPond 2.7.4 has support for proportional notation, where the space
+for a note is proportional to the time it
+takes. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.3 is out - @emph{August 4, 2005}
+This release fixes a memory corruption bug that was triggered by
+\override'ing Beam settings. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.2 is out - @emph{August 2, 2005}
+This release has a few bugfixes, among them: the autopackage will run
+in more platforms, LilyPond will be much quicker for large
+lilypond-book documents, and the up and down Fa note heads for shaped
+heads have been
+swapped. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.3 is out - @emph{July 25, 2005}
+LilyPond 2.7.3 has improvements in performance which should result in
+faster operations (15 to 20 percent). It also contains the new
+"\displayLilyMusic" function.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.2 is out - @emph{July 21, 2005}
+LilyPond 2.7.2 has support for suggested accidentals for musica
+ficta notation, easy entry for lyric melismata and improvements for
+quicker entry of scores. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6 released - @emph{June 27, 2005}
+Version 2.6 is the latest stable release of LilyPond.
+It now
+installs in a snap on Windows, MacOS X, and any version of Linux (x86).
+@strong{Get up and running in minutes!} Pango text formatting lets you
+print @strong{Unicode } lyrics in your favorite script and font. Create
+@strong{SVG} files, and edit them in Inkscape.
+(@uref{announce-v2.6.html,Announcement}, @ref{Old downloads}, @ref{Changes})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.1 is out - @emph{July 20, 2005}
+LilyPond 2.7.1 has no user-visible changes. However, due to
+restructuring @qq{under the hood}, this version will be 10 to
+20 % faster. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.1 is out - @emph{July 11, 2005}
+This version fixes a few minor bugs found in
+2.6.0, and also works on DOS-based Windows versions. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7 is out - @emph{July 9, 2005}
+LilyPond 2.7.0 is out. It has support for paragraph text and
+pitched trill notation. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.31 released - @emph{June 22, 2005}
+LilyPond 2.5.32 is now available for download (binaries for Fedora +
+MacOS only). It has a few very minor bugfixes, and a rewrite of the
+TTF embedding code, which should be a lot more robust now.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Traduction du site de LilyPond - @emph{15 juin 2005}
+@uref{about/thanks#website,L'équipe des traducteurs} vous présente
+le site de LilyPond en français. Nous travaillons sur la traduction des
+pages encore non traduites. Bon surf !
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.31 for Windows and MacOS - @emph{June 15, 2005}
+2.5.31 is now available for both Windows and MacOS X. The Windows
+version should now work with embedding TTF fonts, and the MacOS X has
+better help functionality.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.31 released - @emph{June 15, 2005}
+This release has a few bugfixes. In the MacOS X version, ClickEdit has
+been renamed to LilyPond, and you can now upgrade your files and
+compile them directly from
+LilyPond. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.30 released - @emph{June 10, 2005}
+This is (hopefully) the last Release Candidate before 2.6. Give it a
+good shake to find those last bugs! (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.29 released - @emph{June 7, 2005}
+In this release the documentation also has pictures. In addition, the
+Mac version can also read native mac fonts (.dfonts and fonts in
+resource forks). (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.27 released - @emph{May 31, 2005}
+It has a big bunch of minor bugfixes. This is another release
+candidate for version 2.6, which should be released within the next 2
+weeks. Please send a bug report if you find a critical problem with this
+release. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Windows and MacOS installers available - @emph{May 26, 2005}
+There are now a native, standalone installers for Windows and
+MacOS. They also support PDF point & click. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.26 released - @emph{May 26, 2005}
+This release has a couple of small bugfixes.
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.25 released - @emph{May 20, 2005}
+This release has many small bugfixes and updates to the
+documentation. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.24 released - @emph{May 12, 2005}
+2.5.24 fixes a bunch of bugs; in particular, chord symbols (such as
+slashed o) should now work on all platforms. This release has a new
+feature: it is now possible to make staves appear in a different order
+from the order that they were defined. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.23 released - @emph{May 6, 2005}
+This release has a couple of small bugfixes, and a new feature. It is
+now possible to start and stop the StaffSymbol, during a piece of
+music, by doing \stopStaff \startStaff. This can be used to produce
+Ossia
+staves. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.22 released - @emph{May 3, 2005}
+2.5.22 is a bugfix
+release. The most visible improvement is in the PDF : this release
+will produce smaller PDF files, with symbols that look better on
+screen.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading April 25, 2005 - 2.5.21 released!
+2.5.21 has more bugfixes. It also has support for "grid
+lines", bar like vertical line, which are aligned with the notes. The
+auto-beam engraver was rewritten, so it also works with irregular time
+signatures like 5/8.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading April 18, 2005
+LilyPond 2.5.20 has lots of bugfixes, in particular, MIDI files of
+multi-movement pieces don't overwrite each other. Version 2.5.20 also
+supports putting arrows on lines, such as glissandi.
+More details are in the
+the @ref{Changes}
+file, or go straight to @ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 15, 2005
+LilyPond 2.5.19 was released. The command `\epsfile' allows inclusion
+of EPS graphics into markup texts and the music function
+`\musicDisplay' will display a music expression as indented
+Scheme code. Take a look at
+the @ref{Changes}
+file and @ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 6, 2005
+2.5.18 is a bugfix release. It has many small cleanups in the
+web-based documentation, and many small cleanups all over the
+place. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 31, 2005
+2.5.17 is out. This release features many small bugfixes. In addition,
+it has support for string number notation for guitar. This feature was
+sponsored by Gunther Strube. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 20, 2005
+LilyPond 2.5.16 is out. This release fixes a few minor but irritating
+errors. A Fedora Core 3 binary is also available.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 14, 2005
+LilyPond 2.5.15 is out. This release has clean ups in the SVG output,
+and now uses the LilyPond number font for time signatures. It is
+now possible to add text before and after music. This can be used to
+add verses after a music. Take a look at the @ref{Changes}
+file and @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading March 7, 2005
+LilyPond 2.5.14 is out. It is now possible (and in fact, encouraged),
+to build LilyPond either without the Kpathsea TeX library or with the
+Kpathsea dynamically loaded, but only for the -btex backend. This
+means that packages do not have to depend on TeX anymore. With this,
+the Windows download size will go down significantly. Take a look at
+the @ref{Changes}
+file and download @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading March 7, 2005
+LilyPond 2.4.5 is out. This release backports the tieWaitForNote
+feature and has support for tetex-3.0.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 28, 2005
+LilyPond 2.5.13 is available for Fedora Core 3. You need to install @uref{http://lilypond.org/download/binaries/Fedora-3/ghostscript-8.15rc3-0.i386.rpm,ESP
+Ghostscript 8.15rc3}. Unfortunately, this version of Ghostscript
+lacks the IJS dynamic library, which means that it will conflict with
+the gimp-print package. You may install it with --nodeps. Use at your
+own risk.
+@newsEnd
+
+
+@newsItem
+@subsubheading February 28, 2005
+LilyPond 2.5.13 is out. This release has Point and click support for
+PDF output. You can read more about it @uref{http://lilypond.org/doc/v2.5/Documentation/user/out-www/lilypond/Point-and-click.html,here}.
+Take a look at the @ref{Changes}
+file and download @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading February 26, 2005
+The @uref{http://lsr.dsi.unimi.it/,Lilypond Snippet
+Repository (LSR)} is a searchable database of Lilypond code
+snippets. You can add snippets too, so join the LSR project, and
+contribute creative ideas for using Lilypond.
+@newsEnd
+
+
+@newsItem
+@subsubheading February 21, 2005
+LilyPond 2.5.12 is out. The big news is that this release supports
+TrueType fonts. This means that it is now possible to use @strong{all}
+fonts available via FontConfig. Also, arpeggios may be written out
+using ties and individual objects may have colors! Take a look at
+the @ref{Changes}
+file and @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading February 4, 2005
+LilyPond 2.5.11 is out. In this
+release, foreign character sets are now supported in lilypond-book
+too, and it is possible to put system separators between systems.
+@ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading January 31, 2005
+LilyPond 2.5.10 is out. This release
+sports as new EPS backend, based on the PS backend. This backend is
+used in the new and improved lilypond-book script.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 26, 2005
+LilyPond 2.5.9 is out. This release fixes a couple of annoying
+bugs in the direct PS output for piano braces.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 16, 2005
+LilyPond 2.5.8 is out. This
+release has many internal code cleanups. In addition,
+accuracy of error reporting has been improved.
+See the
+@uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.3065&content-type=text/vnd.viewcvs-markup,
+change log
+} and @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading January 11, 2005
+LilyPond 2.5.7 is out. This release has a completely usable
+Pango integration for the PS backend. The default font is
+Century Schoolbook from the PS font suite. It also has
+small updates to the tablature settings by Erlend Aasland,
+assorted manual updates by Graham, and an overhaul of the
+font code by Werner.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.3048&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 02, 2005
+LilyPond 2.5.6 was released. This is a "technology preview"
+release, which means that it has all kinds of nifty
+features, but is not actually usable for producing nicely
+printed scores. For this reason, an RPM of this release was
+not produced. The PS backend is now completely switched over
+to Pango/FontConfig: for -f ps, LilyPond only accepts UTF8
+input, all text fonts are loaded through Pango, the TeX
+backend now offloads all metric computations to LaTeX, the
+SVG and GNOME backends are broken, most probably.
+@ref{Old downloads}
+and check out the
+changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.3013&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 28, 2004
+LilyPond 2.5.5 is out. It is the first one to link against
+FontConfig and Pango, although it is only available in the "-f
+ps" output. The default output format has been changed back TeX
+while we stabilize the Pango/FontConfig integration.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev= 1.3000&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 20, 2004
+LilyPond 2.5.4 is out. This release has some major
+brainsurgery in the font handling. As of now, LilyPond loads
+the music fonts in OpenType font format using FreeType.
+This has made a lot of things simpler, including font
+handling for the GNOME backend and SVG backend.
+@ref{Old downloads}
+and check out the
+changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2974&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 3, 2004
+LilyPond 2.5.3 was released. A new script, `\espressivo' has
+been added, for a combination of crescendo and decrescendo
+on a single note. In markups, expressions stacked with
+`\column', `\center-align', etc, are not grouped with `< ...
+>' anymore, but with `@{ ... @}'. LilyPond will now avoid line
+breaks that cause long texts to stick outside of the page
+staff. Grace notes following a main note, used to be entered
+by letting the grace notes follow a skip in a parallel
+expression.
+@ref{Old downloads}
+and
+check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2908&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading November 26, 2004
+LilyPond 2.5.2 was released. It has several goodies,
+including solfa-notation (shaped noteheads), and an easier
+mechanism for customizing title, footer and header
+layout. Don't forget to rebuild the fonts, as they have been
+changed to accomodate the solfa-notation.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2898&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading November 20, 2004
+LilyPond 2.5.1 is out. This is an experimental release,
+containing some proof-of-concept code for our graphical
+layout editor. You can add and remove things from the file,
+and the tweaks will still work, as long as the tweaked notes
+remain in the place (ie. start at the same time-wise and be
+part of the same context). Further attractions are: the
+gnome backend now also draws beams and slurs, updates to the
+SVG backend, support for the lmodern font set for TeX,
+various bugfixes.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2881&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading November 12, 2004
+The LilyPond development is OPEN once again! The first
+release of the 2.5 series has the following new Features:
+Positioning of slurs can now be adjusted manually, Grace
+notes are correctly quoted and formatted when using cue
+notes, Cue notes can now be created with
+@verbatim
+
+\cueDuring #VOICE-NAME #DIRECTION { MUSIC }
+
+@end verbatim
+Stemlets (short stems over beamed rests) have been added.
+In addition, Jan hacked together some highly experimental
+code where you can use the mouse to drag and drop objects in
+the -f gnome backend. These tweaks can be saved and are
+applied to the PS and TeX output as well.
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2837&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading November 11, 2004
+LilyPond 2.4.2 is out. This release fixes a number of security
+problems with --safe, and adds a lot of polishing fixes.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading November 4, 2004
+LilyPond 2.4.1 is out. This release includes a number of small
+fixes that were made to 2.4.0 last week.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2780.2&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 31, 2004
+LilyPond 2.4.0 was just @uref{announce-v2.4.html,released!}
+This new stable version has support for page-layout,
+completely rewritten slur formatting and many other
+improvements. Read about them in the @ref{Changes}
+file.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading October 29, 2004
+LilyPond 2.3.26 is out. This is another 2.4 release
+candidate. This release fixes a number of minor bugs, and
+some problems with the conversion scripts.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2773&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 29, 2004
+2.3.25 is the final release candidate for Lilypond 2.4.
+Werner has been overhauling the TeX macros and
+lilypond-book. In addition, this release contains an
+important fix for raggedbottom page-layout.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2765&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 27, 2004
+LilyPond 2.3.24 is a further polished 2.4 release candidate.
+This release has more improvements by Werner for the TeX
+backend, and a bunch of other small fixes.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2752&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 24, 2004
+LilyPond 2.3.23 has bugfixes in the documentation, lilypond-book and
+--preview output. This release can be considered as a release
+candidate for LilyPond 2.4.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2742&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 10, 2004
+LilyPond 2.3.22 fixes a bunch more bugs, to make 2.4 a really
+stable release. In addition, it renames the \paper@{@} block to
+\layout@{@}. The \bookpaper@{@} block is now called
+\paper@{@}.
+@ref{Old downloads}
+and
+check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2709&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 09, 2004
+LilyPond 2.3.21 is out. It is a serious release candidate for
+the next stable release LilyPond. This version has a cleanup
+and some small formatting improvements of the slur
+code.
+@ref{Old downloads}
+and check
+out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2692&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 02, 2004
+LilyPond 2.3.20 was released. It fixes the biggest problems
+with encoding and the TeX backend. As a result, latin1
+characters (like the german SS) show up correctly in the
+output once again. Also it has the usual bugfixes and updates
+in the documentation.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2674&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 29, 2004
+The LilyPond development team will be present at the @uref{http://www.nluug.nl/events/sane2004/bazaar/index.html,Free
+Software Bazaar} of the NLUUG SANE 2004 conference today. If you
+are in the neighborhood, drop by for live contact with the Team or
+just a friendly chat. Registration is not required to attend.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 26, 2004
+LilyPond 2.3.19 is out. It's mainly a bugfix release.
+@ref{Old downloads}
+and check out the changes
+in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2652&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 20, 2004
+LilyPond 2.3.18 was released. It has further improvements in
+the slur formatting, and a small syntax change: the mode
+changing commands (`\chords', `\lyrics', etc.) have been
+renamed to `\chordmode', `\lyricmode', etc. The command
+`\chords' is an abbreviation for \new ChordNames \chordmode
+... `\drums', `\lyrics', `\chords', `\figures' function
+similarly.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2614&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 11, 2004
+LilyPond 2.3.16 was released. It fixes a couple of annoying
+bugs, and has an important addition in the slur-formatter. Slurs that
+pass note heads much closer than the average distance get an extra
+penalty. This fixes a lot of difficult slurring cases. See
+input/regression/new-slur for some examples.
+Please consider this release as a 3.0 pre-release so try to find as
+many bugs as possible. A report including a small .ly example
+can be filed at bug-lilypond@@gnu.org
+In this case, a bug is defined as something that the current 2.3 does
+worse than the latest 2.2 release. We want to be sure that no output
+will get uglier by upgrading to 3.0, so that once 3.0 is out, nothing
+will hold users back in switching.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2562&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 10, 2004
+LilyPond 2.3.15 was released. It fixes for some gaffes with
+the new vertical spacing engine, has lots of documentation
+updates, and has support for landscape output in the direct
+postscript output. Also, the types of events quoted with
+`\quote' can now be tuned with `quotedEventTypes'. By default,
+only notes and rests end up in quotes.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2553&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 6, 2004
+LilyPond 2.3.14 was released and has exciting features!
+LilyPond will try to keep staves at the same distances across a
+page, but it will stretch distances to prevent collisions; key
+signature cancellations are now printed before the bar line;
+different voices that all use "\quote" can now refer to each
+other.
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2534&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 29, 2004
+LilyPond now has a Documentation
+Editor, Graham Percival. From now on, he will oversee that
+useful information flows from the mailiing list into the
+manual. Also, if there are unclear sections in the manual,
+let him know via one of the mailing lists.
+As a start of his career, he worked to transform the
+"Templates" section of the website into a readable and comprehensive
+chapter of the user manual.
+A lot of cheers for Graham!
+@newsEnd
+
+
+@newsItem
+@subsubheading August 29, 2004
+LilyPond 2.3.13 was released. The new slur code was
+improved, scripts can be made to avoid slurs, by setting
+inside-slur to #f. It is no longer necessary to instantiate
+"up" and "down" staves separately when using
+\autochange. Jurgen Reuter refreshed the logic around
+mensural flags, so they are adjusted for staff lines once
+again.
+@ref{Old downloads}
+and
+check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2520&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 24, 2004
+LilyPond 2.2.6 fixes a few minor issues, among others, the
+disappearing metronome mark.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.33&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 23, 2004
+LilyPond 2.3.12 is out. This release has a lot of fixes and
+a new feature: there is now support for putting two slurs on
+chords, both above and below. This is switched on with the
+`doubleSlurs' property.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2489&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 3, 2004
+LilyPond 2.3.11 is out. This release basically is 2.3.10 with a few
+annoying bugs fixed.
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2449&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 1, 2004
+LilyPond 2.3.10 is out. This release has a major clean-up of the
+input/test/ directory. Many examples have been moved to the regression
+test or manual, and the superfluous or outdated ones have been
+removed. The directory has gone from 146 examples to 72 examples. That
+means that we're halfway cleaning it out. Incidentally, the manual
+has gone from 200 to 220 pages. New features:
+@itemize
+@item
+Running trills now have their own spanner and event. They are
+started and stopped with \startTrillSpan and \stopTrillSpan
+@item
+There is a new markup command `\postscript' that takes a string
+that is dumped as verbatim PostScript
+@end itemize
+
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2435&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 30, 2004
+LilyPond 2.3.9 is out. The important change is that lilypond
+now once-again directly runs the binary. The old wrapper script has
+been renamed to lilypond-latex.py, and should only be used for legacy
+projects. The recommended route is either using lilypond directly
+(with \book, you can have multiple movements within one document), or
+to run lilypond-book with a LaTeX wrapper file.
+This release also fixes a bunch of small errors. I now consider
+LilyPond feature complete for a 3.0 release. Next on the TODO list is
+updating the manual, and after that's done we can release 3.0. The
+projected date for this to happen is in about a month.
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2416&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 23, 2004
+Lilypond 2.3.8 fixes a few minor bugs in the new slur code,
+and has rewritten support for ledger lines. Now, in tight
+situations, ledger lines will be shortened so they stay
+separate. This also required a cleanup of the Ambitus
+implementation.
+@ref{Old downloads}
+and check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2395&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 19, 2004
+LilyPond 2.3.7 was released and has new exciting features!
+The slur formatting has been rewritten. The new slur code
+works similar to the Beam formatter: scores are assigned for
+all esthetic components of a slur. A large number of
+combinations for begin and end points is then tried out.
+Slurs will now also take into account collisions with staff
+lines, scripts (like staccato and accent) and accidentals. In
+the LilyPond emacs mode, the `|' will now display the current
+beat within the measure.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2383&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 15, 2004
+LilyPond 2.2.5 was released. It has a few bug fixes from
+2.3.x.
+@ref{Old downloads}
+and check
+out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.28&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 11, 2004
+An introductory article on LilyPond appeared on @uref{http://www.linuxjournal.com/article.php?sid=7657&mode=thread&order=0,Linux
+Journal}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 5, 2004
+LilyPond 2.3.6 was released. This release has more updates
+for the Fret diagram code (thanks, Carl!), fixes a bunch of
+bugs, including a serious one that trashed a lot of beam
+formatting, and was also present in the 2.2 series.
+@ref{Old downloads}
+and check out the changes
+in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2306&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 5, 2004
+LilyPond 2.2.4 was released. It is mainly a bug fix
+release.
+@ref{Old downloads}
+and
+check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.23&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading June 25, 2004
+LilyPond 2.3.5 has numerous small bugfixes and cleanups, and
+features more work in the experimental GNOME output
+module. Adventurous hackers can check the instructions at
+scm/output-gnome.scm and try to run
+buildscripts/guile-gnome.sh to see what the fuss is all about.
+Carl Sorensen also provided us with more patches to the
+fret-diagram output. Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2293&content-type=text/vnd.viewcvs-markup,ChangeLog}
+and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading June 20, 2004
+LilyPond 2.2.3 has a turkish translation and fixes a few minor
+bugs that were reported over the past month. Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.16&content-type=text/vnd.viewcvs-markup,ChangeLog} for a full description and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading June 13, 2004
+LilyPond 2.3.4 further improves the output backends. As a
+result, manual page-breaks, multiple output formats and putting
+@code{\score} into markups now works. Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2242&content-type=text/vnd.viewcvs-markup,ChangeLog}
+and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 31, 2004
+LilyPond 2.3.3 has many internal changes relating to the output
+backend (PostScript) and page-layout. In addition, it contains a few
+bugfixes for recently reported problems. Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2207&content-type=text/vnd.viewcvs-markup,ChangeLog}
+and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 31, 2004
+LilyPond 2.2.2 is out. It has a number of small bugfixes, so upgrade
+if any of these errors concern you. Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.9,ChangeLog}
+or head straight to the
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 26, 2004
+LilyPond 2.3.2 is out. This release has a lot of internal
+changes relating to page layout, but also sports experimental
+fret-diagram code. Check out the @ref{Changes} or head straight to the
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 9, 2004
+LilyPond 2.3.1 is out. This release has many new and cool
+features. Check out the @ref{Changes} or head straight to the
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 4, 2004
+Help LilyPond get better, and join in on LilyPond
+development! This
+@uref{devel/participating/call-for-help.html,call for
+help} was posted on the mailing list a month ago, and we
+are still looking for a Release Meister, Code Janitor,
+Newsletter editor and a Writer for implementation
+Documentation. Of course, any other help is also welcome!
+@newsEnd
+
+
+@newsItem
+@subsubheading May 3, 2004
+LilyPond 2.2.1 has been released. It fixes a handful of bugs.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 17, 2004
+LilyPond 2.2.0 is now available
+on Windows, and should find its way to the Cygwin mirrors
+soon.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 12, 2004
+LilyPond 2.3.0 is the first release
+in the 2.3 cycle. The focus for 2.3 is page layout, so
+instrumentalists can force parts to have page breaks at sane turning
+points. This release is @emph{experimental}; expect things to break!
+More info in the @ref{Changes}.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 8, 2004
+A French article on the new LilyPond
+release appeared on @uref{http://linuxfr.org/2004/04/08/15968.html,linuxfr.org}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 8, 2004
+Binaries for LilyPond 2.2.0 are available for
+MacOS X, Slackware, Mandrake and Debian Woody.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading April 1, 2004
+LilyPond 2.2.0 is out! This new stable version has
+completely revamped support for for orchestral score
+formatting, cue notes, font size management, lyric formatting,
+drum notation/playback and document integration. Read about it in
+the @uref{announce-v2.2.html,announcement} or skip to the
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 31, 2004
+LilyPond 2.1.37 has build fixes for Cygwin and SUSE,
+bugfixes for part-combining and chord tremolos and even more
+documentation polish. This should be the final release
+candidate; expect only regression bugs to be fixed before
+2.2.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 30, 2004
+LilyPond 2.1.36 has many fixes in
+the user manual.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 28, 2004
+LilyPond 2.1..35 fixes a slew of
+bugs, and has the @code{raggedlast} option, which causes
+paragraph like line breaking for scores. More info in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 22, 2004
+LilyPond 2.1.34 fixes minor bugs, and has more rewriting.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 21, 2004
+LilyPond 2.1.33 fixes a serious bug, and a few other
+irritations.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 20, 2004
+LilyPond 2.1.32 has more rewriting
+in the user manual. There is also an experimental
+implementation of optimal page breaking (Postscript backend
+only).
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 15, 2004
+LilyPond 2.1.31 is out. It has fixes the alignment of bass
+figures and spurious dynamic warnings in MIDI. New
+attractions include rewritten font-selection routines. See
+the
+@ref{Changes} and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 14, 2004
+The
+@uref{http://linuxmusician.com/index.php?option=articles&task=viewarticle&artid=10,linuxmusician.com interview} made the
+@uref{http://slashdot.org/article.pl?sid=04/03/13/2054227&mode=thread&tid=141&tid=188,slashdot
+frontpage!}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 11, 2004
+@uref{http://linuxmusician.com,linuxmusician.com} is
+running an
+@uref{http://linuxmusician.com/index.php?option=articles&task=viewarticle&artid=10,interview}
+with Han-Wen Nienhuys and Jan Nieuwenhuizen, the main
+authors of LilyPond.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 11, 2004
+LilyPond 2.1.30 has editorial fixes for the manual, and
+experimental support for page layout in the PostScript
+backend. See the
+@ref{Changes} and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 9, 2004
+LilyPond 2.1.29 fixes a couple of MIDI bugs, and has
+experimental support for producing titles with
+@code{markup}.
+@newsEnd
+
+
+@newsItem
+@subsubheading February 29, 2004
+In LilyPond 2.1.28 Scheme property functions may be used
+argument to @code{set!}. In addition, parts of the manual
+have been proofread and corrected in this release. See the
+@ref{Changes} and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading February 24, 2004
+LilyPond 2.1.27 takes into account instrument transpositions
+when quoting other voices. This release also fixes a number
+of lyrics related bugs. See the
+@ref{Changes} and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading February 23, 2004
+LilyPond 2.1.26 has a new, experimental feature for quoting
+other voices in instrumental parts. This can be used to
+produce cue notes. More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 18, 2004
+LilyPond 2.1.25 fixes many bugs, and changes the conventions
+for altering accidental rules.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 16, 2004
+LilyPond 2.1.24 has a big
+internal rewrite. One of its practical consequences is that
+@code{\with} now also works with @code{Score}
+contexts. Further 2.1.23, which was not announced here,
+fixes a few bugs caused by the change of @code{\property}
+syntax and has updates in the Program Reference document.
+More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 13, 2004
+LilyPond 2.1.22 has a
+simplification of the @code{\property} syntax: it is
+shorter and more consistent now. More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 12, 2004
+In LilyPond 2.1.21, output
+tweaks can be done at multiple levels of the context
+hierarchy. In addition, it has a bunch of bugfixes,
+improvements in the documentation. More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 9, 2004
+LilyPond 2.1.20 has MIDI
+output for drums. It also sports a completely rewritten
+lilypond-book script, which is cleaner, shorter, and faster.
+It also has a large number of bugfixes.
+More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 5, 2004
+LilyPond 2.1.19 has rewritten
+support for drum notation. This release also makes some
+long-standing cleanups: the removal of @code{Thread} (all
+functionality is now moved into @code{Voice}) and Lyrics
+(functionality moved to @code{LyricsVoice}) context.
+More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 4, 2004
+LilyPond 2.1.18 is out. This
+release has the new part-combiner installed by default, and a
+similar implementation of @code{autochange}. More information
+in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 2, 2004
+LilyPond 2.1.17 is out. It adds texts
+(solo, a due) for the part combiner. It also reinstates the
+@code{--safe} option which prevents havoc by Scheme exploits. More
+information in the
+@ref{Changes}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 28, 2004
+LilyPond 2.1.16 is out; its main feature
+is that it fixes the autobeams gaffe of 2.1.15. The part-combiner
+has been tested successfully on larger pieces. In the near future,
+expect more part-combining eye-candy.
+More information in
+the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 26, 2004
+LilyPond 2.1.15 further improves the part-combiner, and fixes many
+bugs, among others in pedal brackets and finger positioning.
+More information in
+the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 21, 2004
+LilyPond 2.1.14
+has the first release of the new part combiner. If you have scores that
+use part-combining, please consider giving it a test-run. In addition
+many bugs relating to mixed staff sizes have been fixed.
+More information in
+the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 20, 2004
+The lilypond.org domain has been moved to a new server. This
+will result in better connectivity and more bandwidth. Due
+to security concerns, the new server does not offer FTP
+access, but only HTTP downloads.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 20, 2004
+LilyPond 2.1.13 fixes a small but
+nasty bug in side-positioning placement, and some bugs in
+tuplet, tie and accidental formatting. This release contains
+rudimentary work on a new part-combiner.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 19, 2004
+LilyPond 2.1.12 fixes many bugs
+and improves formatting of ottava brackets. More information in
+the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 18, 2004
+LilyPond 2.1.11 is now also
+available for Windows! For downloading, go
+@uref{http://www.inf.bme.hu/~berti/lilypond/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 17, 2004
+In 2.1.11, the mechanism for
+setting staff size and page is much simplified. In addition
+there are improvements in the notehead shape, and there is
+balloon help!
+More information in the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 16, 2004
+LilyPond 2.1.10 has a load of
+bugfixes and a shorter syntax for octave checks. More
+information in the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 13, 2004
+LilyPond 2.1.9 has a new mechanism
+for adding lyrics to melodies. It is now possible to have
+different melismatic variations for each stanza. More
+information in the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 9, 2004
+LilyPond 2.1.8 has an important new
+feature: it is now possible to use @code{\property} to tune
+the appearance of spanning objects like @code{StaffSymbol} and
+@code{SystemStartBrace}. In addition, contexts may be
+modified with @code{\remove} and @code{\consists} for
+individual music expressions.
+More information in the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 7, 2004
+An update to the stable branch,
+version 2.0.2, was released today. It contains a couple of
+minor bugfixes. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 6, 2004
+LilyPond 2.1.7 continues to
+improve the layout of the Schubert test piece; this release
+focuses on dot placement and multi measure rests centering.
+More information in the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 4, 2004
+LilyPond 2.1.6 continues to
+improve the layout of lyrics. More
+information in the
+@uref{@@DOC@@v2.1/Documentation/topdocs/out-www/NEWS.html,release
+notes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 2, 2004
+in LilyPond 2.1.5, the lyric
+alignment is completely revamped, and now matches my Edition
+Peters version of the Schubert song Sängers Morgen. More
+information in the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 30, 2003
+LilyPond 2.1.4 is released. Font shapes and linethickness
+are now truly different for different staff sizes, thus lending
+an engraved look to scores printed in smaller type too. See the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 23, 2003
+LilyPond 2.1.3 released.
+Interpreting and formatting is now done while parsing the
+file. This allows for Scheme manipulation of music, and could
+be used to implement experimental MusicXML output (volunteers
+to implement this are welcome!) See the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 17, 2003
+LilyPond 2.1.2 released. This
+release has a new mechanism for setting font sizes, which
+combines different font design sizes and continuous font
+scaling. See the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 16, 2003
+LilyPond 2.1.1 released. This
+release wraps together all the small fixes made during
+Han-Wen's absence. See the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 11, 2003
+LilyPond 2.1.0 released. See the
+@ref{Changes} and
+download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 11, 2003
+LilyPond 2.0.1 binaries for Mandrake 9.1
+available from
+@uref{http://rpm.nyvalls.se/sound9.1.html,here}
+thanks to Heikki Junes.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 9, 2003
+LilyPond 2.0.1 binaries for Slackware 9
+available from @uref{install/#2.0,here},
+thanks to Ricardo Hoffman.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 5, 2003
+LilyPond 2.0.1 binaries are available for Macos X, many thanks to
+Matthias Neeracher.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading October 4, 2003
+LilyPond 2.0.1 binaries are available for Windows (Cygwin
+version 1.5).
+@ref{Old downloads}. Thanks to Bertalan
+Fodor, our new Cygwin maintainer!
+@newsEnd
+
+
+@newsItem
+@subsubheading September 29, 2003
+LilyPond 2.0.1 is released. It
+contains minor bugfixes.
+See the @ref{Changes}
+or download @uref{install/#2.0,here} directly.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 27, 2003
+PlanetCCRMA has been updated to include LilyPond 2.0. Go
+@uref{http://www-ccrma.stanford.edu/planetccrma/software/soundapps.html#lilypond,
+here} to download. Thanks to Fernando Pablo
+Lopez-Lezcano!
+@newsEnd
+
+
+@newsItem
+@subsubheading September 24, 2003
+LilyPond 2.0.0 is released. The
+focus of this release is cleanups of the syntax: entering music is
+now much easier and more efficient. Read the announcement
+@uref{announce-v2.0.html,here}, or go to the
+@uref{install/#2.0,download page} directly.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 24, 2003
+LilyPond 1.9.10 is released. This is
+the final LilyPond 2.0 release candidate. Check
+the @ref{Changes} and
+download @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 23, 2003
+LilyPond 1.9.9 is released. This is
+the second LilyPond 2.0 prerelease. Check
+the @ref{Changes} and
+download @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 19, 2003
+LilyPond 1.9.8 is released. This is
+the first LilyPond 2.0 prerelease. Check
+the @ref{Changes} and
+download @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 17, 2003
+LilyPond 1.9.7 is released. LilyPond
+now has support for quarter tone accidentals!
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading September 16, 2003
+LilyPond 1.9.6 is released.
+It has a lot of minor fixes and updates.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading September 10, 2003
+LilyPond 1.9.5 is released.
+With this release, the 1.9 branch is feature
+complete. After some stabilization and documentation work, 2.0
+will be available in a few weeks.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading September 9, 2003
+LilyPond 1.8.2 is released. This
+release fixes a couple of minor bugs.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading September 7, 2003
+LilyPond 1.8 binaries are available
+for Windows (Cygwin version 1.5).
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading August 31, 2003
+LilyPond 1.9.4 is released.
+@emph{This is an experimental release}: read the
+@uref{http://mail.gnu.org/archive/html/lilypond-devel/2003-08/msg00133.html,announcement}
+before trying.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 31, 2003
+LilyPond 1.8 binaries for slackware
+available. Get them @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 31, 2003
+LilyPond 1.9.3 is released. This
+release supports tagging for music version control, and has better
+fingering placement flexibility. Read the
+@ref{Changes} and get it @uref{download#1.9,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 28, 2003
+LilyPond 1.9.2 is released. Read the
+@ref{Changes} and get it
+@uref{download#1.9,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 26, 2003
+LilyPond 1.9.1 is released. Read the
+@ref{Changes} and get it
+@uref{download#1.9,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 25, 2003
+The LilyPond 1.9 development release is available. Read the
+@ref{Changes} and get it
+@uref{download#1.9,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 25, 2003
+Mandrake 9.1 RPMS available, get them
+@uref{http://rpm.nyvalls.se/sound9.1.html,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 21, 2003
+LilyPond 1.8.1 was released. Get it @uref{install/,here}, or
+read the @ref{Changes}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 18, 2003
+PlanetCCRMA (eg. RedHat 8 and 9)
+has been updated to 1.8.
+Download @uref{http://www-ccrma.stanford.edu/planetccrma/software/soundapps.html#lilypond,here.}
+@newsEnd
+
+
+@newsItem
+@subsubheading August 7, 2003
+LilyPond 1.8 is released. Read
+@ref{Changes} and get it @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 7, 2003
+New website went live!
+@newsEnd
+
+
+@newsItem
+@subsubheading August 6, 2003
+Announced new website.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 1, 2003
+LilyPond 1.7.30 released.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 30, 2003
+Website: present @uref{about/automated-engraving/index.html,treatise}
+about music engraving, music printing software, and LilyPond's
+unique faculties.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 29, 2003
+1.7.29 - release candidate 4 has been released. Packages for
+Red Hat, Debian, Cygwin are @uref{install/,available}.
+@newsEnd
+
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.12.0"
+@c \version "2.13.4"
@c Translators: Ludovic Sardain, John Mandereau
@c Translation checkers: Jean-Charles Malahieude, Jean-Yves Baudais, Damien Heurtebise
<<
\new Staff \fragment
\new Staff \with {
- \override Beam #'thickness = #0.3
+ \override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #0.5
\override Bar #'thickness = #3.6
\override Tie #'thickness = #2.2
\set autoBeaming = ##f
\time 2/4
<d f g>4
- \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+ \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
\once \override NoteHead #'font-size = #-7
\once \override NoteHead #'font-family = #'sans
\once \override NoteHead #'font-series = #'bold
\key c \minor
\set subdivideBeams = ##f
\override Stem #'french-beaming = ##t
- \override Beam #'thickness = #0.3
+ \override Beam #'beam-thickness = #0.3
\override Stem #'thickness = #4.0
g'16[ b16 fis16 g16]
<< \makeClusters {
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 95e6825ee09ca7f8eea87580301c8819ff1d571b
+ Translation of GIT committish: 35dc92475b9341fbbbaf194afcc2c6e2561840ac
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@menu
* La musique déborde de la page::
+* Apparition d'une portée supplémentaire::
* Erreur renvoyant à ../ly/init.ly::
* Message d'erreur « Unbound variable % »::
@end menu
un saut de ligne. Consultez le chapitre @ruser{Barres de mesure} pour
plus de détails.
+
+@node Apparition d'une portée supplémentaire
+@unnumberedsubsubsec Apparition d'une portée supplémentaire
+@translationof An extra staff appears
+
+Lorsque les contextes ne sont pas créés explicitement par la commande
+@code{\new}, ils le seront si la commande à exécuter n'est pas censée
+s'appliquer au contexte en cours. Pour des partitions simples, les fait
+que les contextes soient automatiquement créés rend bien des services,
+et c'est d'ailleurs le cas pour la majorité des exemples contenus dans
+les manuels de LilyPond. Cependant, la création implicite d'un contexte
+peut aboutir à l'apparition d'une portée @qq{parasite}. On s'attend par
+exemple, en lisant le code qui suit, à ce que toutes les têtes de notes
+soient en rouge, alors que le résultat nous présente deux portées et que
+les notes, placées sur la portée inférieure, restent en noir.
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.NoteHead #'color = #red
+\new Staff { a }
+@end lilypond
+
+Étant donné qu'aucun contexte @code{Staff} n'existe lorsque la
+dérogation est introduite, LilyPond le crée implicitement pour lui
+appliquer la directive considérée. Survient alors la commande
+@w{@code{\new Staff}} qui, à son tour, crée une nouvelle portée pour
+contenir les notes qui suivent. Voici la syntaxe correcte pour obtenir
+ces notes en rouge :
+
+@lilypond[quote,verbatim,relative=2]
+\new Staff {
+ \override Staff.NoteHead #'color = #red
+ a
+}
+@end lilypond
+
+Autre exemple : la présence d'une commande @code{\relative} à
+l'intérieur d'une section @code{\repeat} génèrera obligatoirement une
+portée intempestive. Cela tient au fait que la commande @code{\repeat}
+va créer deux blocs @code{\relative} qui, chacun à leur tour, créeront
+implicitement un bloc @code{Staff} assorti d'un bloc @code{Voice}.
+
+@lilypond[quote,verbatim]
+\repeat unfold 2 \relative { c d e f }
+@end lilypond
+
+La manière adéquate de procéder consiste à inverser les commandes
+@code{\repeat} et @code{\relative}, comme ceci :
+
+@lilypond[quote,verbatim]
+\relative {
+ \repeat unfold 2 { c d e f }
+}
+@end lilypond
+
+
@node Erreur renvoyant à ../ly/init.ly
@unnumberedsubsubsec Erreur renvoyant à @code{../ly/init.ly}
@translationof Apparent error in ../ly/init.ly
@ref{\TEXT\,,\DISPLAY\,notation-big-page,Manuel de notation}
@end macro
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,essay-big-page,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@end macro
+
@macro rprogram{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,application-big-page,Manuel d'utilisation du programme}
@ref{\TEXT\,,\DISPLAY\,notation,Manuel de notation}
@end macro
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,essay,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@end macro
+
@macro rprogram{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,application,Manuel d'utilisation du programme}
@ref{\TEXT\,,\DISPLAY\,notation.fr,Manuel de notation}
@end macro
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@end macro
+
@macro rprogram{TEXT}
@lilyvindex{\TEXT\}
@ref{\TEXT\,,,application.fr,Manuel d'utilisation du programme}
\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 6f84d7b264bf1faa8d9c586bbf06c762ae53183a
+ Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end ignore
@documentencoding UTF-8
-@setfilename lilypond.info
+@setfilename lilypond-notation.info
@settitle GNU LilyPond -- Manuel de notation
@include macros.itexi
@ifnottex
@node Top
-@top GNU LilyPond --- Manuel d'initiation
+@top GNU LilyPond --- Manuel de notation
@translationof Top
@end ifnottex
Annexes
-* Bibliographie:: ouvrages de référence sur la notation musicale.
* Tables du manuel de notation:: tables et diagrammes.
* Aide-mémoire:: résumé de la syntaxe de LilyPond.
+* LilyPond grammar:: diagramme syntaxique pour l'analyseur de LilyPond
* GNU Free Documentation License:: licence de ce document.
* Index des commandes LilyPond::
* Index de LilyPond::
-
@end menu
@end ifnottex
+@c * Bibliographie:: ouvrages de référence sur la notation musicale.
+
@contents
@include notation/programming-interface.itely
-@include notation/literature.itely
+@c @include notation/literature.itely
@include notation/notation-appendices.itely
@include notation/cheatsheet.itely
+
+@node LilyPond grammar
+@appendix LilyPond grammar
+
+Cette annexe présente la « grammaire » de LilyPond telle qu'elle ressort
+de l'analyseur syntaxique.
+
+@verbatiminclude ly-grammar.txt
+
@include fdl.itexi
@node Index des commandes LilyPond
@appendix Index des commandes LilyPond
@translationof LilyPond command index
+Cet index recense toutes les commandes et mots réservés de LilyPond,
+sous forme de lien vers les endroits du manuel où ils sont abordés.
+Chaque lien est constitué de deux parties : la première pointe
+directement là où la commande ou le terme apparaît, la seconde au début
+de la section où la commande ou le terme est abordé.
+
@printindex ky
@node Index de LilyPond
@appendix Index de LilyPond
@translationof LilyPond index
+En plus des commandes et mots réservés de LilyPond, cet index recense
+les termes musicaux qui s'y rapportent. Tout comme dans l'index des
+commandes, chaque lien est constitué de deux parties : la première
+pointe directement là où la commande ou le terme apparaît, la seconde au
+début de la section où la commande ou le terme est abordé.
+
@printindex cp
@bye
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 33ba8d40c3493011a4b39ab8b1369701f8013bd6
+ Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c \version "2.12.0"
-@c Translators: Valentin Villenave
+@c Translators: Valentin Villenave, Jean-Charles Malahieude
@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@subsection Indications attachées à des notes
@translationof Attached to notes
+Nous allons voir au cours de ces lignes comment ajouter aux notes des
+indications d'interprétation -- articulation, ornementation, nuances --
+et aborderons la manière de générer vos propres signes.
@menu
* Articulations et ornements::
@cindex articulations
@cindex symboles d'ornementation
@cindex ornementation, symboles
-
-
-Différents symboles peuvent être ajoutés au-dessus ou au-dessous des
-notes pour indiquer des ponctuations ou des modes de jeu différents.
-On les ajoute à chaque note au moyen d'un tiret suivi du caractère
-correspondant à l'articulation désirée. En voici une démonstration :
-
-@c @l ilypondfile[quote,ragged-right]{script-abbreviations.ly}
-
-Il est possible de changer la signification de ces raccourcis : voir des
-exemples dans @file{ly/@/script@/-init@/.ly}.
-
-Même si LilyPond place automatiquement ces symboles, il est possible de
-l'obliger à les placer au-dessus ou en-dessous de la note, tout comme
-d'autres objets, en utilisant respectivement @code{^} et @code{_}.
-
-@lilypond[quote,ragged-right,fragment,verbatim]
-c''4^^ c''4_^
-@end lilypond
-
-On peut ajouter d'autres symboles, avec la syntaxe
-@var{note}@code{\}@var{symbole}. Ici encore, on peut forcer leur
-orientation avec @code{^} and @code{_}.
-
-@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-c\fermata c^\fermata c_\fermata
-@end lilypond
-
@cindex accent
@cindex marcato
@cindex staccatissimo
@cindex staccato
@cindex portato
@cindex tenuto
-@cindex tirer l'archet
-@cindex pousser l'archet
+@cindex coup d'archet
@cindex bouché
@cindex sourdine
@cindex orgue, marque de pédale d'
@cindex coda
@cindex varcoda
+@funindex -
-Voici la liste exhaustive des symboles :
+Les différents symboles qui indiquent des ponctuations ou des modes de
+jeu différents s'ajoutent aux notes de la manière suivante :
-@lilypondfile[ragged-right,quote]{script-chart.ly}
+@example
+@var{note}\@var{nom}
+@end example
+
+Les valeurs de @var{nom} sont répertoriées dans l'annexe
+@ref{Liste des signes d'articulation}. En voici un exemple :
-@commonprop
+@lilypond[verbatim,quote,relative=2]
+c4\staccato c\mordent b2\turn
+c1\fermata
+@end lilypond
-Les symboles s'ordonnent verticalement suivant la propriété
-@code{script-priority}. Plus sa valeur numérique est faible, plus le
-symbole sera proche de la note. Dans l'exemple suivant, l'objet
-@rinternals{TextScript} --- le dièse --- a d'abord la propriété la
-plus basse, et il est donc placé plus près de la note ; ensuite c'est
-l'objet @rinternals{Script} qui a la propriété la plus basse, et il se
-place alors sous le dièse. Lorsque deux objets ont la même priorité,
-c'est l'ordre dans lequel ils sont indiqués qui détermine lequel sera
-placé en premier.
+@cindex marcato
+@cindex tenuto
+@cindex staccatissimo
+@cindex accent
+@cindex staccato
+@cindex portato
-@lilypond[verbatim,relative=3,ragged-right,fragment,quote]
-\once \override TextScript #'script-priority = #-100
-a4^\prall^\markup { \sharp }
+Certains signes d'articulation disposent d'un raccourci. On les ajoute
+à chaque note au moyen d'un tiret suivi du caractère correspondant à
+l'articulation désirée. C'est entre autres le cas pour
+@notation{marcato}, @notation{stopped}, @notation{tenuto},
+@notation{staccatissimo}, @notation{accent}, @notation{staccato}, et
+@notation{portato}, comme l'illustre l'exemple ci-dessous.
-\once \override Script #'script-priority = #-100
-a4^\prall^\markup { \sharp }
+@lilypond[verbatim,quote,relative=2]
+c4-^ c-+ c-- c-|
+c4-> c-. c2-_
@end lilypond
+Même si LilyPond place automatiquement ces symboles, selon les règles
+contenues dans le fichier @code{scm/@/script@/.scm}, il est possible de
+l'obliger à les positionner au-dessus ou en-dessous de la note, comme
+indiqué au chapitre @ref{Direction et positionnement}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{modifying-default-values-for-articulation-shorthand-notation.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{controlling-the-vertical-ordering-of-scripts.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-a-delayed-turn.ly}
@seealso
-Référence du programme : @rinternals{Script}.
+Glossaire musicologique :
+@rglos{tenuto},
+@rglos{accent},
+@rglos{staccato},
+@rglos{portato}.
+Manuel de notation :
+@ref{Direction et positionnement},
+@ref{Liste des signes d'articulation},
+@ref{Trilles}.
-@knownissues
+Fichiers installés :
+@code{scm/script.scm}.
-Ces symboles sont présents sur la partition imprimée, mais
-n'ont pas d'effet sur le rendu de la musique en MIDI.
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{Script},
+@rinternals{TextScript}.
@node Nuances
@translationof Dynamics
@cindex nuances
+
+@funindex \ppppp
+@funindex ppppp
@funindex \pppp
+@funindex pppp
@funindex \ppp
+@funindex ppp
@funindex \pp
+@funindex pp
@funindex \p
+@funindex p
@funindex \mp
+@funindex mp
@funindex \mf
+@funindex mf
@funindex \f
+@funindex f
@funindex \ff
+@funindex ff
@funindex \fff
+@funindex fff
@funindex \ffff
+@funindex ffff
@funindex \fp
+@funindex fp
@funindex \sf
+@funindex sf
@funindex \sff
+@funindex sff
@funindex \sp
+@funindex sp
@funindex \spp
+@funindex spp
@funindex \sfz
+@funindex sfz
@funindex \rfz
+@funindex rfz
À chaque nuance absolue correspond une commande, qui peut être indiquée
-après une note : @code{c4\ff} par exemple. Les commandes de nuances
+après une note : @code{c4\ff} par exemple. Les commandes de nuance
disponibles sont @code{\ppppp}, @code{\pppp}, @code{\ppp}, @code{\pp},
-@code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff}, @code{\fff},
-@code{\ffff}, @code{\fp}, @code{\sf}, @code{\sff}, @code{\sp},
-@code{\spp}, @code{\sfz}, et @code{\rfz}.
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-c\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff
-c2\fp c\sf c\sff c\sp c\spp c\sfz c\rfz
+@code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff}, @code{\fff},
+@code{\ffff}, @code{\fffff}, @code{\fp}, @code{\sf}, @code{\sff},
+@code{\sp}, @code{\spp}, @code{\sfz}, et @code{\rfz}. Les nuances se
+placent aussi bien en dessous qu'au-dessus de la portée ; pour plus
+d'information, consultez @ref{Direction et positionnement}.
+
+@lilypond[verbatim,quote,relative=2]
+c2\ppp c\mp
+c2\rfz c^\mf
+c2_\spp c^\ff
@end lilypond
+@cindex soufflet
+@cindex crescendo
+@cindex decrescendo
+@cindex diminuendo
+
@funindex \<
@funindex \>
@funindex \!
+@funindex \cr
+@funindex cr
+@funindex \decr
+@funindex decr
Un crescendo est délimité par @code{\<} et @code{\!}, ou peut se
terminer par une commande de nuance. Au lieu de @code{\<}
-ou @code{\>}, on peut aussi utiliser @code{\cr} et @code{\decr}.
-Ces indications sont attachées aux notes ; aussi si l'on veut
-faire se succéder plusieurs nuances pendant une note tenue, il faudra
-avoir recours à des silences invisibles :
+ou @code{\>}.
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-c\< c\! d\> e\!
-<< f1 { s4 s4\< s4\! \> s4\! } >>
+@lilypond[verbatim,quote,relative=2]
+c2\< c\!
+d2\< d\f
+e2\< e\>
+f2\> f\!
+e2\> e\mp
+d2\> d\>
+c1\!
@end lilypond
-@noindent
-En principe, un soufflet --- (de)crescendo imprimé sous forme graphique --
-commence au bord gauche de la note de départ, et se termine au
-bord droit de la note d'arrivée. Cependant, si la note d'arrivée
-est sur un premier temps, le soufflet s'arrêtera au niveau de la
-barre de mesure qui la précède. Ce comportement peut être annulé
-en assignant @emph{faux} (lettre @q{f}) à la propriété
-@code{hairpinToBarline} :
-
-@c TODO: Add link to new snippet for #'to-barline
+Ces indications sont attachées aux notes ; aussi si l'on veut
+faire se succéder plusieurs nuances pendant une note tenue, il faudra
+avoir recours à des silences invisibles :
-On peut avoir recours à l'indication @code{\espressivo} pour indiquer un
-crescendo puis un decrescendo sur une seule note.
+@cindex nuances successives sur une note tenue
+@cindex tenue et nuances successives
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-c2 b4 a g1\espressivo
+@lilypond[verbatim,quote,relative=2]
+c4\< c\! d\> e\!
+<< f1 { s4 s4\< s4\> s4\! } >>
@end lilypond
-Cependant, ces deux indications graphiques peuvent se trouver très
-comprimées horizontalement. Pour les rallonger, on peut modifier la
-propriété @code{minimum-length} de
-@code{Voice.Hairpin} --- @rinternals{Voice}
-étant le contexte, et @rinternals{Hairpin} l'objet affecté. Par
-exemple :
-
-@example
-\override Voice.Hairpin #'minimum-length = #5
-@end example
+@cindex espressivo
-@cindex al niente
-@cindex niente, al
+@funindex \espressivo
+@funindex espressivo
-Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de
-manière graphique, en assignant @emph{vrai} (lettre @q{t}) à la
-propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité.
+On peut avoir recours à l'indication @code{\espressivo} pour indiquer un
+crescendo suivi d'un decrescendo sur une même note.
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-\override Hairpin #'circled-tip = ##t
-c2\< c\!
-c4\> c\< c2\!
+@lilypond[verbatim,quote,relative=2]
+c2 b4 a
+g1\espressivo
@end lilypond
-
-@cindex crescendo
-@cindex decrescendo
-@cindex diminuendo
-
-Au lieu d'une notation graphique des crescendos, on peut utiliser
-une notation textuelle.
-
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+@funindex \crescTextCresc
+@funindex crescTextCresc
+@funindex \dimTextDecresc
+@funindex dimTextDecresc
+@funindex \dimTextDecr
+@funindex dimTextDecr
+@funindex \dimTextDim
+@funindex dimTextDim
+@funindex \crescHairpin
+@funindex crescHairpin
+@funindex \dimHairpin
+@funindex dimHairpin
+
+
+
+Au lieu d'une notation graphique des (de)crescendos, on peut utiliser
+une notation textuelle. Une ligne pointillée marque alors son étendue.
+Sont disponibles les commandes @code{\crescTextCresc},
+@code{\dimTextDecresc}, @code{\dimTextDecr}, et @code{\dimTextDim}.
+@code{\crescHairpin} et @code{\dimHairpin} permettent de revenir à des
+nuances en soufflet
+
+@lilypond[verbatim,quote,relative=2]
\crescTextCresc
-c\< d e f\!
-\crescHairpin
-e\> d c b\!
+c2\< d | e f\!
\dimTextDecresc
-c\> d e f\!
-\dimTextDim
-e\> d c b\!
+e2\> d | c b\!
+\crescHairpin
+c2\< d | e f\!
+\dimHairpin
+e2\> d\!
@end lilypond
-On peut même définir ses propres indications textuelles :
+Pour créer des indications de nuance qui restent alignées
+avec les nuances habituelles, voir
+@ref{Personnalisation des indications de nuance}.
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-\set crescendoText = \markup { \italic "cresc. poco" }
-\set crescendoSpanner = #'text
-a'2\< a a a\!\mf
-@end lilypond
+@cindex dynamics, vertical positioning
+@cindex vertical positioning of dynamics
+
+@funindex DynamicLineSpanner
-Pour créer des indications de nuances qui restent alignées
-avec les nuances habituelles, voir @ref{Personnalisation des indications de nuance}.
Le positionnement vertical des nuances est géré par le
@rinternals{DynamicLineSpanner}.
+@funindex \dynamicUp
+@funindex dynamicUp
+@funindex \dynamicDown
+@funindex dynamicDown
+@funindex \dynamicNeutral
+@funindex dynamicNeutral
-@commonprop
-
-Des nuances différentes situées --- ou commençant --- sur une même
-note seront alignées verticalement. Pour aligner des nuances qui ne
-se situeraient pas sur une même note, il est possible d'augmenter
-la propriété @code{staff-padding}.
+@predefined
+@code{\dynamicUp},
+@code{\dynamicDown},
+@code{\dynamicNeutral},
+@code{\crescTextCresc},
+@code{\dimTextDim},
+@code{\dimTextDecr},
+@code{\dimTextDecresc},
+@code{\crescHairpin},
+@code{\dimHairpin}.
+@endpredefined
-@example
-\override DynamicLineSpanner #'staff-padding = #4
-@end example
-Cette propriété peut aussi servir à régler des problèmes de
-collision entre des nuances et d'autres objets.
+@snippets
-Les crescendos ou decrescendos qui aboutissent sur la première note
-d'une nouvelle ligne ne sont imprimés que jusqu'à la fin de la ligne
-précédente. Ce comportement peut être outrepassé en définissant :
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{setting-hairpin-behavior-at-bar-lines.ly}
-@example
-\override Score.Hairpin #'after-line-breaking = ##t
-@end example
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{setting-the-minimum-length-of-hairpins.ly}
+@cindex al niente
+@cindex niente, al
-Les crescendos et decrescendos indiqués textuellement --- tels que
-@emph{cresc.} ou @emph{dim.} --- sont suivis de pointillés qui montrent
-leur étendue. On peut empêcher l'impression de ces pointillés avec :
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{printing-hairpins-using-al-niente-notation.ly}
-@example
-\override DynamicTextSpanner #'dash-period = #-1.0
-@end example
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{vertically-aligned-dynamics-and-textscripts.ly}
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{hiding-the-extender-line-for-text-dynamics.ly}
-@predefined
-@funindex \dynamicUp
-@code{\dynamicUp},
-@funindex \dynamicDown
-@code{\dynamicDown},
-@funindex \dynamicNeutral
-@code{\dynamicNeutral}.
-@endpredefined
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-text-and-spanner-styles-for-text-dynamics.ly}
@seealso
-Référence du programme : @rinternals{DynamicText}, @rinternals{Hairpin}.
-
-Le placement vertical de ces éléments graphiques est géré par le
+Glossaire musicologique :
+@rglos{al niente},
+@rglos{crescendo},
+@rglos{decrescendo},
+@rglos{hairpin}.
+
+Manuel d'initiation :
+@rlearning{Articulations et nuances}.
+
+Manuel de notation :
+@ref{Direction et positionnement},
+@ref{Personnalisation des indications de nuance},
+@ref{Contenu de la sortie MIDI},
+@ref{Gestion des nuances en MIDI}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{DynamicText},
+@rinternals{Hairpin},
@rinternals{DynamicLineSpanner}.
@unnumberedsubsubsec Personnalisation des indications de nuance
@translationof New dynamic marks
-Grâce à la commande @code{make-dynamic-script}, vous pouvez créer de
-nouvelles marques textuelles de nuances que vous combinerez
-éventuellement avec les signes de nuances.
-Notez bien que la police des nuances en contient que les caractères
-@code{f,m,p,r,s} and @code{z}.
+@cindex indication de nuance, personnalisation
+@cindex nuances personnalisées
+
+La manière la plus simple de personnaliser une indication de nuance
+consiste à utiliser un objet @code{\markup}.
-Certains composants, tels que les marques de nuances, possèdent des
-propriétés particulières et prédéfinies quant à leur police. Lorsque
-vous créez du texte en pareille situation, nous vous recommandons
-d'utiliser @code{normal-text} pour annuler ces propriétés. Voir
-@ref{Text markup commands} pour plus de détails.
+@lilypond[verbatim,quote]
+moltoF = \markup { molto \dynamic f }
+
+\relative c' {
+ <d e>16_\moltoF <d e>
+ <d e>2..
+}
+@end lilypond
+
+@cindex nuances éditoriales
+@cindex nuances entre parenthèses
+@cindex nuances suggérées
+
+@funindex \bracket
+@funindex bracket
+@funindex \dynamic
+@funindex dynamic
+
+Vous pouvez créer des indications de nuance éditoriales (entre
+parenthèses ou crochets) grâce aux étiquettes (@emph{mode markup}) ; l
+syntaxe en est abordée au chapitre @ref{Mise en forme du texte}.
+
+@lilypond[verbatim,quote]
+roundF = \markup { \center-align \concat { \bold { \italic ( }
+ \dynamic f \bold { \italic ) } } }
+boxF = \markup { \bracket { \dynamic f } }
+\relative c' {
+ c1_\roundF
+ c1_\boxF
+}
+@end lilypond
@cindex make-dynamic-script
-@lilypond[quote,verbatim,ragged-right]
+@funindex make-dynamic-script
+
+Grâce à la commande @code{make-dynamic-script}, vous pouvez créer de
+nouvelles marques textuelles que vous combinerez avec les signes de
+nuance.
+
+@lilypond[verbatim,quote]
sfzp = #(make-dynamic-script "sfzp")
\relative c' {
c4 c c\sfzp c
}
@end lilypond
-@cindex Nuances éditoriales
-@cindex Nuances, entre parenthèses
+@code{make-dynamic-script} accepte en argume tout objet de type
+@emph{markup}. Notez bien que la police des nuances ne contient que les
+caractères @code{f,m,p,r,s} et @code{z}, et que les marques de nuances
+possèdent des propriétés particulières et prédéfinies quant à leur
+police. Aussi, lorsque vous créez du texte en pareille situation, nous
+vous recommandons d'utiliser @code{\normal-text} pour annuler ces
+propriétés. L'intérêt majeur de recourrir à la fonction
+@code{make-dynamic-script} plutôt qu'à un simple @emph{markup} réside
+dans l'assurance que ces objets personnalisés et les soufflets seront
+alignés lorsque attachés à une même note.
+
+@lilypond[verbatim,quote]
+roundF = \markup { \center-align \concat {
+ \normal-text { \bold { \italic ( } }
+ \dynamic f
+ \normal-text { \bold { \italic ) } } } }
+boxF = \markup { \bracket { \dynamic f } }
+mfEspress = \markup { \center-align \line {
+ \hspace #3.7 mf \normal-text \italic espress. } }
+roundFdynamic = #(make-dynamic-script roundF)
+boxFdynamic = #(make-dynamic-script boxF)
+mfEspressDynamic = #(make-dynamic-script mfEspress)
+\relative c' {
+ c4_\roundFdynamic\< d e f
+ g,1~_\boxFdynamic\>
+ g
+ g'~\mfEspressDynamic
+ g
+}
+@end lilypond
-Vous pouvez aussi encadrer les nuances entre parenthèses ou entre
-crochets. Ceci est souvent utilisé pour ajouter des nuances propres à
-une édition donnée.
+La constrution d'une indication de nuance personnalisée peut aussi se
+faire en langage Scheme ; voir @ref{Construction Scheme d'un marqueur}
+pour en connaître les modalités.
-@lilypond[quote,verbatim,ragged-right]
-rndf = \markup{ \center-align {\line { \bold{\italic (}
- \dynamic f \bold{\italic )} }} }
-boxf = \markup{ \bracket { \dynamic f } }
-{ c'1_\rndf c'1_\boxf }
+@lilypond[verbatim,quote]
+moltoF = #(make-dynamic-script
+ (markup #:normal-text "molto"
+ #:dynamic "f"))
+\relative c' {
+ <d e>16 <d e>
+ <d e>2..\moltoF
+}
@end lilypond
+L'utilisation des fontes en mode @emph{markup} est abordée au chapitre
+@ref{Sélection de la fonte et de la taille}.
+
+
+@seealso
+Manuel de notation :
+@ref{Mise en forme du texte},
+@ref{Sélection de la fonte et de la taille},
+@ref{Construction Scheme d'un marqueur},
+@ref{Contenu de la sortie MIDI},
+@ref{Gestion des nuances en MIDI}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
@node Courbes
@subsection Courbes
@translationof Curves
+Ce chapitre traite des signes d'interprétation imprimés sous forme de
+courbe : liaisons d'articulation ou de phrasé, respirations, chutes et
+sauts.
+
@menu
* Liaisons d'articulation::
* Liaisons de phrasé::
liées, ou @emph{legato}. Ces liaisons s'indiquent au moyen de
parenthèses.
-@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
-f( g a) a8 b( a4 g2 f4)
+@warning{Lorsque la musique est polyphonique, la liaison doît se
+terminer dans la voix où elle a été entamée.}
+
+@lilypond[verbatim,quote,relative=2]
+f4( g a) a8 b(
+a4 g2 f4)
<c e>2( <b d>2)
@end lilypond
+@cindex liaison, orientation manuelle
+@cindex liaison, au-dessous des notes
+@cindex liaison, au-dessus des notes
-On peut indiquer l'orientation des liaisons suivantes avec
-@code{\slur@emph{DIR}}, @code{@emph{DIR}} pouvant être @code{Up} pour
-une liaison vers le haut, @code{Down} pour une liaison vers le bas, ou
-@code{Neutral} pour laisser LilyPond décider.
+@funindex \slurDown
+@funindex slurDown
+@funindex \slurNeutral
+@funindex slurNeutral
-Il existe également un raccourci pratique pour forcer l'orientation
-d'une seule liaison. Il suffit pour cela d'ajouter @code{_} ou @code{^}
-avant d'ouvrir une parenthèse.
-
-@lilypond[relative=2,ragged-right,quote,verbatim,fragment]
-c4_( c) c^( c)
-@end lilypond
+Vous pouvez décider de l'orientation des liaisons par rapport à la
+portée, comme indiqué au chapitre @ref{Direction et positionnement}.
+@cindex articulation, liaison
+@cindex liaisons d'articulation multiples
+@cindex liaisons d'articulation simultanées
+@cindex multiples, liaisons d'articulation
+@cindex simultanées, liaisons d'articulation
Une seule liaison d'articulation peut être imprimée à la fois. S'il est
nécessaire d'imprimer une liaison plus longue, englobant des liaisons
plus courtes, utilisez des @ref{Liaisons de phrasé}.
+@cindex liaison, style de trait
+@cindex liaison, trait plein
+@cindex liaison, trait pointillé
+@cindex liaison, tirets
+@cindex plein, trait de liaison
+@cindex pointillé, trait de liaison
+@cindex tiret, trait de liaison
+@cindex style de trait, liaison
+
+@funindex \slurDashed
+@funindex slurDashed
+@funindex \slurDotted
+@funindex slurDotted
+@funindex \slurSolid
+@funindex slurSolid
+
+Une liaison est par défaut dessinée d'une ligne pleine. Il est aussi
+possible de l'imprimer sous la forme de tirets ou en pointillé :
+
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurDashed
+g4( e c2)
+\slurDotted
+c4( e g2)
+\slurSolid
+g4( e c2)
+@end lilypond
+
+@funindex \slurHalfDashed
+@funindex slurHalfDashed
+@funindex \slurHalfSolid
+@funindex slurHalfSolid
+
+@cindex liaison, tirets et trait continu
+
+En utilisant @code{\slurHalfDashed}, la première moitié de la liaison
+aura un trait discontinu et continu pour la seconde. L'inverse
+s'obtient avec @code{\slurHalfSolid}.
+
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurHalfDashed
+g4( e c2)
+\slurHalfSolid
+c4( e g2)
+\slurSolid
+g4( e c2)
+@end lilypond
+
+@funindex \slurDashPattern
+@funindex slurDashPattern
-@commonprop
+@cindex liaison, densité des tirets
-Certains auteurs utilisent deux liaisons lorsqu'ils veulent
-lier des accords. Dans LilyPond, il faut pour cela assigner
-@emph{vrai} (@q{true}) la propriété @code{doubleSlurs} :
+Vous pouvez même personnaliser la densité des tirets d'une liaison :
-@lilypond[verbatim,ragged-right,relative,fragment,quote]
-\set doubleSlurs = ##t
-<c e>4 ( <d f> <c e> <d f> )
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurDashPattern #0.7 #0.75
+g4( e c2)
+\slurDashPattern #0.5 #2.0
+c4( e g2)
+\slurSolid
+g4( e c2)
@end lilypond
-@predefined
+
@funindex \slurUp
+@funindex slurUp
+
+
+@predefined
@code{\slurUp},
-@funindex \slurDown
@code{\slurDown},
-@funindex \slurNeutral
@code{\slurNeutral},
-@funindex \slurDashed
@code{\slurDashed},
-@funindex \slurDotted
@code{\slurDotted},
-@funindex \slurSolid
+@code{\slurHalfDashed},
+@code{\slurHalfSolid},
+@code{\slurDashPattern},
@code{\slurSolid}.
@endpredefined
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{using-double-slurs-for-legato-chords.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{positioning-text-markups-inside-slurs.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{making-slurs-with-complex-dash-structure.ly}
+
+
@seealso
-Référence du programme : @rinternals{Slur}.
+Glossaire musicologique :
+@rglos{slur}.
+
+Manuel d'initiation :
+@rlearning{Non-imbrication des crochets et liaisons}.
+
+Manuel de notation :
+@ref{Direction et positionnement},
+@ref{Liaisons de phrasé}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{Slur}.
@node Liaisons de phrasé
musicale. On indique les points de départ et d'arrivée avec @code{\(}
et @code{\)} respectivement.
-@lilypond[quote,ragged-right,fragment,verbatim,relative=1]
-\time 6/4 c'\( d( e) f( e) d\)
+@lilypond[verbatim,quote,relative=2]
+c4\( d( e) f(
+e2) d\)
@end lilypond
+@funindex \phrasingSlurUp
+@funindex phrasingSlurUp
+@funindex \phrasingSlurDown
+@funindex phrasingSlurDown
+@funindex \phrasingSlurNeutral
+@funindex phrasingSlurNeutral
D'un point de vue typographique, rien ne distingue une liaison de phrasé
d'une liaison d'articulation. Cependant, LilyPond les considère comme
des objets différents. Une commande @code{\slurUp} n'affectera donc pas
-une liaison de phrasé : il faut plutôt utiliser @code{\phrasingSlurUp},
-@code{\phrasingSlurDown} ou @code{\phrasingSlurNeutral}.
+une liaison de phrasé. Vous pouvez décider de l'orientation des
+liaisons de phrasé par rapport à la portée, comme indiqué au chapitre
+@ref{Direction et positionnement}.
+
+@cindex liaisons de phrasé multiples
+@cindex liaisons de phrasé simultanées
+@cindex multiples, liaisons de phrasé
+@cindex simultanées, liaisons de phrasé
Il n'est pas possible d'avoir plusieurs liaisons de phrasé en même temps.
+@cindex liaison, style de trait
+@cindex liaison, trait plein
+@cindex liaison, trait pointillé
+@cindex liaison, tirets
+@cindex plein, trait de liaison
+@cindex pointillé, trait de liaison
+@cindex tiret, trait de liaison
+@cindex style de trait, liaison
+
+@funindex phrasingSlurDashed
+@funindex \phrasingSlurDashed
+@funindex \phrasingSlurDotted
+@funindex phrasingSlurDotted
+@funindex \phrasingSlurSolid
+@funindex phrasingSlurSolid
+
+Une liaison est par défaut dessinée d'une ligne pleine. Il est aussi
+possible de l'imprimer sous la forme de tirets ou en pointillé :
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurDashed
+g4\( e c2\)
+\phrasingSlurDotted
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+@cindex liaison, tirets et trait continu
+
+@funindex phrasingSlurHalfDashed
+@funindex \phrasingSlurHalfDashed
+@funindex \phrasingSlurHalfSolid
+@funindex phrasingSlurHalfSolid
+
+En utilisant @code{\phrasingslurHalfDashed}, la première moitié de la liaison
+aura un trait discontinu et continu pour la seconde. L'inverse
+s'obtient avec @code{\phrasingslurHalfSolid}.
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurHalfDashed
+g4\( e c2\)
+\phrasingSlurHalfSolid
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+@funindex \phrasingSlurDashPattern
+@funindex phrasingSlurDashPattern
+
+@cindex liaison, densité des tirets
+
+Vous pouvez même personnaliser la densité des tirets d'une liaison :
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurDashPattern #0.7 #0.75
+g4\( e c2\)
+\phrasingSlurDashPattern #0.5 #2.0
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+La personnalisation des lignes discontinues est identique pour les
+liaisons de phrasé et les liaisons d'articulation. Pour plus de
+détails, référez-vous aux morceaux choisis de la section
+@ref{Liaisons d'articulation}.
@predefined
-@funindex \phrasingSlurUp
@code{\phrasingSlurUp},
-@funindex \phrasingSlurDown
@code{\phrasingSlurDown},
-@funindex \phrasingSlurNeutral
-@code{\phrasingSlurNeutral}.
+@code{\phrasingSlurNeutral},
+@code{\phrasingSlurDashed},
+@code{\phrasingSlurDotted},
+@code{\phrasingSlurHalfDashed},
+@code{\phrasingSlurHalfSolid},
+@code{\phrasingSlurDashPattern},
+@code{\phrasingSlurSolid}.
@endpredefined
@seealso
-Référence du programme : @rinternals{PhrasingSlur}.
+Manuel d'initiation :
+@rlearning{Non-imbrication des crochets et liaisons}.
+
+Manuel de notation :
+@ref{Direction et positionnement},
+@ref{Liaisons d'articulation}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{PhrasingSlur}.
+
@node Signes de respiration
@unnumberedsubsubsec Signes de respiration
@translationof Breath marks
-Les indications de respiration sont indiquées par la commande @code{\breathe}.
+@cindex respiration, indication
+
+@funindex \breathe
+@funindex breathe
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-c'4 \breathe d4
+Les indications de respiration sont indiquées par la commande
+@code{\breathe}.
+
+@lilypond[verbatim,quote,relative=2]
+c2. \breathe d4
@end lilypond
+LilyPond gère les @emph{divisiones}, signes utilisés en notation
+ancienne pour indiquer les respirations. Pour de plus amples détails,
+voir @ref{Divisiones}.
-@commonprop
-On peut choisir le glyphe imprimé par cette commande, en modifiant la
-propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter
-n'importe quelle indication textuelle. Par exemple :
+@snippets
-@lilypond[quote,ragged-right,fragment,verbatim,relative=1]
-c'4
-\override BreathingSign #'text
- = #(make-musicglyph-markup "scripts.rvarcomma")
-\breathe
-d4
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-the-breath-mark-symbol.ly}
+
+@cindex césure
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{inserting-a-caesura.ly}
@seealso
-Référence du programme : @rinternals{BreathingSign}.
+Glossaire musicologique :
+@rglos{caesura}.
-Exemples : @rlsr{Winds}.
+Manuel de notation :
+@ref{Divisiones}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{BreathingSign}.
@node Chutes et sauts
@unnumberedsubsubsec Chutes et sauts
@translationof Falls and doits
-Des indications de désinence peuvent être obtenues au moyen de la
-commande @code{\bendAfter} :
+@cindex chutes
+@cindex sauts
-@lilypond[fragment,ragged-right,relative=2]
-\override Score.SpacingSpanner #'shortest-duration-space = #3.0
-c4-\bendAfter #+5
-c4-\bendAfter #-3
+@funindex \bendAfter
+@funindex bendAfter
+
+Des indications de désinence peuvent être obtenues au moyen de la
+commande @code{\bendAfter}. Leur direction s'indique au moyen des
+signes plus (vers le haut) ou moins (vers le bas). Le chiffre indique
+l'intervalle avec la note de départ.
+
+@lilypond[verbatim,quote,relative=2]
+c2-\bendAfter #+4
+c2-\bendAfter #-4
+c2-\bendAfter #+8
+c2-\bendAfter #-8
@end lilypond
+Lorsque vous saisissez des chutes ou des sauts, @strong{n'oubliez pas}
+le tiret (@code{-}) qui précède la commande @code{\bendAfter}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{adjusting-the-shape-of-falls-and-doits.ly}
+
+
+@seealso
+Glossaire musical :
+@rglos{fall},
+@rglos{doit}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
@node Lignes
@subsection Lignes
@translationof Lines
+Cette partie traite de la manière de générer des signes d'interprétation
+d'aspect linéaire, tels les glissandos, arpèges et trilles.
+
@menu
* Glissando::
* Arpèges::
@translationof Glissando
@cindex glissando
+
@funindex \glissando
+@funindex glissando
Un glissando relie une hauteur à une autre en passant par chaque hauteur
-intermédiaire. Il est indiqué graphiquement, par une ligne ou des
-vaguelettes entre ces deux notes. On l'obtient en accolant la commande
-@code{\glissando} à la première note.
+intermédiaire. On l'obtient en accolant la commande @code{\glissando} à
+la première note.
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-c2\glissando c'
-\override Glissando #'style = #'zigzag
+@lilypond[verbatim,quote,relative=2]
+g2\glissando g'
c2\glissando c,
@end lilypond
+Un glissando est indiqué graphiquement, par une ligne ou des
+vaguelettes -- voir @ref{Styles de ligne}.
-@commonprop
-@lilypond[quote,ragged-right,verbatim]
-I = \once \override NoteColumn #'ignore-collision = ##t
+@snippets
-\relative <<
- { \oneVoice \stemDown f2 \glissando \stemNeutral a } \\
- { \oneVoice \I c2 \glissando \I d, }
->>
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{contemporary-glissando.ly}
@seealso
-Référence du programme : @rinternals{Glissando}.
+Glossaire musicologique :
+@rglos{glissando}.
+
+Manuel de notation :
+@ref{Styles de ligne}.
-Exemples : @rlsr{Expressive marks}.
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{Glissando}.
@knownissues
@cindex arpège
@cindex accord arpégé
-@funindex \arpeggio
+@funindex \arpeggio
+@funindex arpeggio
+@funindex \arpeggioArrowUp
+@funindex arpeggioArrowUp
+@funindex \arpeggioArrowDown
+@funindex arpeggioArrowDown
+@funindex \arpeggioNormal
+@funindex arpeggioNormal
On peut indiquer qu'un accord doit être arpégé en lui accolant la
commande @code{\arpeggio} :
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-<c e g c>\arpeggio
+@lilypond[verbatim,quote,relative=1]
+<c e g c>1\arpeggio
@end lilypond
+LilyPond dispose de différents graphismes pour indiquer un arpège.
+@code{\arpeggioNormal} reviendra au style par défaut.
-Pour spécifier qu'un autre accord doit être plaqué et non arpégé, on
-peut remplacer ce signe par un crochet :
+@lilypond[verbatim,quote,relative=1]
+<c e g c>2\arpeggio
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-\arpeggioBracket
-<c' e g c>\arpeggio
+\arpeggioArrowUp
+<c e g c>2\arpeggio
+
+\arpeggioArrowDown
+<c e g c>2\arpeggio
+
+\arpeggioNormal
+<c e g c>2\arpeggio
@end lilypond
+@cindex arpège, symboles spéciaux
-Le sens de l'arpège est parfois indiqué par une pointe de flèche au bout
-de la vaguelette :
+@funindex \arpeggioBracket
+@funindex arpeggioBracket
+@funindex \arpeggioParenthesis
+@funindex arpeggioParenthesis
+@funindex \arpeggioParenthesisDashed
+@funindex arpeggioParenthesisDashed
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-\new Voice {
- \arpeggioArrowUp
- <c e g c>\arpeggio
- \arpeggioArrowDown
- <c e g c>\arpeggio
-}
-@end lilypond
+Des crochets indiquent que l'accord devra être plaqué et non arpégé :
+
+@lilypond[verbatim,quote,relative=1]
+<c e g c>2
+\arpeggioBracket
+<c e g c>2\arpeggio
-@commonprop
+\arpeggioParenthesis
+<c e g c>2\arpeggio
-Quand un arpège couvre plusieurs portées, il est possible d'indiquer
-l'arpège sur chacune des portées, puis de relier la ligne de vaguelettes
-en assignant @emph{vrai} à la propriété @code{connectArpeggios}, par
-exemple dans le contexte @rinternals{PianoStaff} :
+\arpeggioParenthesisDashed
+<c e g c>2\arpeggio
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-\new PianoStaff <<
- \set PianoStaff.connectArpeggios = ##t
- \new Staff { <c' e g c>\arpeggio }
- \new Staff { \clef bass <c,, e g>\arpeggio }
->>
+\arpeggioNormal
+<c e g c>2\arpeggio
@end lilypond
+@c pas trouvé cette propriété, ou alors mal lu ? jcm
+@c The dash properties of the parenthesis arpeggio are controlled
+@c with the @code{'dash-details} property, which is described at @ref{Slurs}.
+
+Un arpège peut parfois s'écrire de manière explicite, à l'aide de
+liaisons de tenue. Pour plus d'information, voir
+@ref{Liaisons de prolongation}.
+
@predefined
@code{\arpeggio},
-@funindex \arpeggioArrowUp
@code{\arpeggioArrowUp},
-@funindex \arpeggioArrowDown
@code{\arpeggioArrowDown},
-@funindex \arpeggioNormal
@code{\arpeggioNormal},
-@funindex \arpeggioBracket
-@code{\arpeggioBracket}.
+@code{\arpeggioBracket},
+@code{\arpeggioParenthesis}
+@code{\arpeggioParenthesisDashed}.
@endpredefined
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-cross-staff-arpeggios-in-a-piano-staff.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-cross-staff-arpeggios-in-other-contexts.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-arpeggios-across-notes-in-different-voices.ly}
+
+
@seealso
-Dans ce même manuel : @ref{Liaisons de prolongation}, pour noter explicitement des arpèges.
+Glossaire musicologique :
+@rglos{arpeggio}.
-Référence du programme : @rinternals{Arpeggio}.
+Manuel de notation :
+@ref{Liaisons d'articulation},
+@ref{Liaisons de prolongation}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{Arpeggio},
+@rinternals{Slur},
+@rinternals{PianoStaff}.
@knownissues
+@cindex arpège, style parenthèse
+
Il est impossible de mêler au même instant, dans un contexte
-@rinternals{PianoStaff}, des lignes d'arpèges connectées et d'autres
+@code{PianoStaff}, des lignes d'arpèges connectées et d'autres
non connectées.
+Il n'est pas possible d'imprimer des lignes d'arpèges connectées sous
+forme de parenthèse.
+
@node Trilles
@unnumberedsubsubsec Trilles
@translationof Trills
-Les trilles brefs s'indiquent comme n'importe quelle ponctuation :
-voir @ref{Articulations et ornements}.
+@cindex trilles
+
+@funindex \trill
+@funindex trill
+@funindex \startTrillSpan
+@funindex startTrillSpan
+@funindex \stopTrillSpan
+@funindex stopTrillSpan
+
+Les trilles brefs s'indiquent comme n'importe quelle ponctuation, avec un
+simple @code{\trill} ; voir @ref{Articulations et ornements}.
Les trilles plus longs sont délimités par @code{\startTrillSpan} et
@code{\stopTrillSpan} :
-@lilypond[verbatim,ragged-right,relative=2,quote,fragment]
-\new Voice {
- << { c1 \startTrillSpan }
- { s2. \grace { d16[\stopTrillSpan e] } } >>
- c4 }
+@lilypond[verbatim,quote,relative=2]
+d1~\startTrillSpan
+d1
+c2\stopTrillSpan r2
+@end lilypond
+
+Dans l'exemple suivant, un trille se combine avec des notes d'ornement.
+La syntaxe d'une telle construction ainsi que le moyen de positionner
+les notes d'ornement avec précision est expliquée dans
+@ref{Notes d'ornement}.
+
+@lilypond[verbatim,quote,relative=2]
+c1 \afterGrace
+d1\startTrillSpan { c32[ d]\stopTrillSpan }
+e2 r2
@end lilypond
@cindex trilles avec hauteur explicite
+@funindex \pitchedTrill
+@funindex pitchedTrill
+
Les trilles qui font intervenir une hauteur précise peuvent être
-indiqués par la commande @code{pitchedTrill}.
+indiqués par la commande @code{pitchedTrill}. Le premier argument est
+la note réelle ; le second est une hauteur qui sera imprimée comme une
+tête de note noire entre parenthèses.
-@lilypond[ragged-right,verbatim,fragment,relative=1,quote]
-\pitchedTrill c4\startTrillSpan fis
-f\stopTrillSpan
+@lilypond[verbatim,quote,relative=1]
+\pitchedTrill e2\startTrillSpan fis
+d\stopTrillSpan
@end lilypond
-@noindent
-Le premier argument est la note réelle ; le second est une hauteur qui
-sera imprimée comme une tête de note noire entre parenthèses.
+@cindex trilles avec hauteur explicite et altération
+@cindex altération, trilles avec hauteur explicite
+
+Dans l'exemple suivant, le deuxième trille est ambigu -- le fa qui est
+forcé n'est pas diésé. Pour lever toute ambiguité, il suffit de forcer
+l'impression de l'altération -- en ajoutant un @code{!} -- comme dans
+la deuxième mesure.
+
+@lilypond[verbatim,quote,relative=2]
+\pitchedTrill eis4\startTrillSpan fis
+g\stopTrillSpan
+\pitchedTrill eis4\startTrillSpan fis
+g\stopTrillSpan
+\pitchedTrill eis4\startTrillSpan fis
+g\stopTrillSpan
+\pitchedTrill eis4\startTrillSpan fis!
+g\stopTrillSpan
+@end lilypond
@predefined
-@funindex \startTrillSpan
@code{\startTrillSpan},
-@funindex \stopTrillSpan
@code{\stopTrillSpan}.
@endpredefined
@seealso
-Référence du programme : @rinternals{TrillSpanner}.
+Glossaire musicologique :
+@rglos{trill}.
+
+Manuel de notation :
+@ref{Articulations et ornements},
+@ref{Notes d'ornement}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+Référence des propriétés internes :
+@rinternals{TrillSpanner}.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
+ Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@node Instruments MIDI
@appendixsec Instruments MIDI
-@translationof MIDI instruments @c external
+@translationof MIDI instruments
+
+La liste suivante répertorie les différentes dénominations que vous
+pouvez affecter à la propriété @code{midiInstrument}.
+
+@example
+acoustic grand contrabass lead 7 (fifths)
+bright acoustic tremolo strings lead 8 (bass+lead)
+electric grand pizzicato strings pad 1 (new age)
+honky-tonk orchestral harp pad 2 (warm)
+electric piano 1 timpani pad 3 (polysynth)
+electric piano 2 string ensemble 1 pad 4 (choir)
+harpsichord string ensemble 2 pad 5 (bowed)
+clav synthstrings 1 pad 6 (metallic)
+celesta synthstrings 2 pad 7 (halo)
+glockenspiel choir aahs pad 8 (sweep)
+music box voice oohs fx 1 (rain)
+vibraphone synth voice fx 2 (soundtrack)
+marimba orchestra hit fx 3 (crystal)
+xylophone trumpet fx 4 (atmosphere)
+tubular bells trombone fx 5 (brightness)
+dulcimer tuba fx 6 (goblins)
+drawbar organ muted trumpet fx 7 (echoes)
+percussive organ french horn fx 8 (sci-fi)
+rock organ brass section sitar
+church organ synthbrass 1 banjo
+reed organ synthbrass 2 shamisen
+accordion soprano sax koto
+harmonica alto sax kalimba
+concertina tenor sax bagpipe
+acoustic guitar (nylon) baritone sax fiddle
+acoustic guitar (steel) oboe shanai
+electric guitar (jazz) english horn tinkle bell
+electric guitar (clean) bassoon agogo
+electric guitar (muted) clarinet steel drums
+overdriven guitar piccolo woodblock
+distorted guitar flute taiko drum
+guitar harmonics recorder melodic tom
+acoustic bass pan flute synth drum
+electric bass (finger) blown bottle reverse cymbal
+electric bass (pick) shakuhachi guitar fret noise
+fretless bass whistle breath noise
+slap bass 1 ocarina seashore
+slap bass 2 lead 1 (square) bird tweet
+synth bass 1 lead 2 (sawtooth) telephone ring
+synth bass 2 lead 3 (calliope) helicopter
+violin lead 4 (chiff) applause
+viola lead 5 (charang) gunshot
+cello lead 6 (voice)
+@end example
-@untranslated
@node Liste des couleurs
@appendixsec Liste des couleurs
@node Styles de tête de note
@appendixsec Styles de tête de note
-@translationof Note head styles @c external
+@translationof Note head styles
-@untranslated
+Voici les différents styles de tête de note disponible.
+
+@lilypondfile[noindent]{note-head-style.ly}
-@ignore
Les commandes suivantes peuvent être utilisées dans un bloc
@code{\markup @{ @}}.
-@end ignore
@include markup-commands.tely
-@ignore
Les commandes suivantes peuvent être utilisées dans un
bloc @code{\markuplines @{ @}}.
-@end ignore
@include markup-list-commands.tely
@cindex varcoda
-Voici la liste exhaustive des symboles :
+Voici la liste exhaustive des symboles prédéfinis :
-@lilypondfile[ragged-right,quote]{script-chart.ly}
+@lilypondfile[quote]{script-chart.ly}
@node Notes utilisées en percussion
@lilypondfile[quote]{percussion-chart.ly}
+
+
+@node Glossaire technique
+@appendixsec Glossaire technique
+@translationof Technical glossary @c external
+
+@untranslated
+
+@unnumberedsubsec callback
+@unnumberedsubsec glyph
+@unnumberedsubsec grob
+@unnumberedsubsec interface
+@unnumberedsubsec lexer
+@unnumberedsubsec output-def
+@unnumberedsubsec parser
+@unnumberedsubsec parser variable
+@unnumberedsubsec prob
+@unnumberedsubsec simple-closure
+@unnumberedsubsec smob
+@unnumberedsubsec stencil
+
+
@node Liste des propriétés de contexte
@appendixsec Liste des propriétés de contexte
@translationof All context properties @c external
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: a6b100669bfc3847b3a03029d6a46ee9b1609e73
+ Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@subsection Écriture des hauteurs de note
@translationof Writing pitches
-Cette section explique la manière d'indiquer les hauteurs de note. Il
-y a deux modes d'indiquer l'octave des notes : le mode absolu, et le
-mode relatif. Le dernier est le plus pratique lors de la saisie d'un
+Cette section explique la manière d'indiquer les hauteurs de note. Deux
+modes permettent d'indiquer l'octave des notes : le mode absolu, et le
+mode relatif. Ce dernier est le plus pratique lors de la saisie d'un
fichier source au clavier de l'ordinateur.
@menu
@cindex absolues, octaves
@cindex octaves absolues
-La hauteur s'écrit --- à moins de préciser une autre langue --- avec la
-notation batave, en utilisant les lettres @code{a} à @code{g}.
-Une gamme ascendante de do majeur s'écrit
+La hauteur s'écrit -- à moins de préciser une autre langue -- avec la
+notation batave, en utilisant les lettres de @code{a} à @code{g}.
+Les notes @code{c} (do) et @code{b} (si) sont écrites une octave sous le
+do central.
-@lilypond[quote,fragment,verbatim,ragged-right]
+@c don't use c' here.
+@lilypond[verbatim,quote,fragment]
\clef bass
-c d e f g a b c'
+c d e f
+g a b c
+d e f g
@end lilypond
-La note @code{c} est écrite une octave sous le do central.
-
-@lilypond[quote,fragment,verbatim,ragged-right]
-\clef treble
-c1
-\clef bass
-c1
-@end lilypond
+@cindex octave, spécification
@funindex '
@funindex ,
L'octave peut être précisée sous forme d'une série d'apostrophes
-@samp{'} ou d'une série de virgules @samp{,}. Chaque @samp{'} hausse la
-note d'une octave, chaque @samp{,} baisse la note d'une octave.
+@code{'} ou d'une série de virgules @code{,}. Chaque @code{'} hausse la
+note d'une octave, chaque @code{,} baisse la note d'une octave.
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[verbatim,quote,fragment]
\clef treble
-c' c'' e' g d'' d' d c
+c' c'' e' g
+d'' d' d c
\clef bass
-c, c,, e, g d,, d, d c
+c, c,, e, g
+d,, d, d c
@end lilypond
-Il existe une autre méthode pour préciser à quelle octave se situe la
-note à graver ; cette méthode demande moins d'indications d'octave
-(@code{'} ou @code{,}) --- voir @ref{Octaves relatives}.
+
+@seealso
+Glossaire musicologique :
+@rglos{Pitch names}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
@node Octaves relatives
@cindex relatif
@cindex indication d'octave relative
+@cindex octave relative, indication
+
@funindex \relative
+@funindex relative
On spécifie les octaves en ajoutant @code{'} et @code{,} aux noms de
hauteurs. En recopiant de la musique, on a vite fait de mettre une note
à la mauvaise octave, et ce genre d'erreur est difficile à retrouver.
-Le mode d'écriture \relative prévient ces erreurs dans la mesure où
-elles deviennent beaucoup plus évidentes : une seule erreur décale le
-reste de la pièce à une mauvaise octave.
+Le mode d'écriture en octave relative prévient ces erreurs dans la
+mesure où elles deviennent beaucoup plus évidentes : une seule erreur
+décale le reste de la pièce à une mauvaise octave.
@example
\relative @var{hauteur_de_référence} @var{musicexpr}
@end example
-@noindent
-ou
+En mode relatif, chaque note est considérée comme étant le plus proche
+possible de celle qui la précède. L'octave des notes mentionnées dans
+@var{musicexpr} va être calculée de la manière suivante :
-@example
-\relative @var{musicexpr}
-@end example
+@itemize
+@item
+Si aucun signe de changement d'octave n'est utilisé, l'intervalle de
+base entre la note actuelle et la précédente sera toujours au plus d'une
+quarte. Cet intervalle est déterminé sans tenir compte des altérations.
-@noindent
-@code{c'} est utilisé par défaut si aucune hauteur de départ n'est
-définie.
-
-L'octave des notes mentionnées dans @var{musicexpr} va être calculée de
-la manière suivante : si aucun signe de changement d'octave n'est
-utilisé, l'intervalle de base entre la note actuelle et la précédente
-sera toujours au plus d'une quarte. Cet intervalle est déterminé sans
-tenir compte des altérations ; ainsi un @code{fisis} après un
-@code{ceses} sera placé au-dessus du @code{ceses}. En d'autres termes,
-une quarte doublement augmentée demeure considérée comme un intervavlle
-plus petit qu'une quinte diminuée, bien que la quarte doublement
-augmentée soit de sept demi-tons et la quinte diminuée de seulement six
-demi-tons.
-
-Les signes de changement d'octave @code{'} et @code{,} peuvent être
-ajoutés pour hausser ou baisser la note d'une octave supplémentaire.
+@item
+Un signe de changement d'octave @code{'} ou @code{,} peut être ajouté
+pour hausser ou baisser la note d'une octave par rapport à la hauteur
+calculée sans spécification.
+
+@item
+Ces signes de changement d'octave peuvent être multipliés. Par exemple,
+@code{''}@tie{}ou@tie{}@code{,,} ajouteront une octave supplémentaire.
+
+@item
Lorsque l'on entre en mode @code{\relative}, une hauteur absolue de
départ peut être spécifiée, et agira dès lors comme si elle précédait la
-première note de @var{musicexpr}. Si aucune hauteur de départ n'est
-spécifiée, le do central sert de point de départ.
+première note de @var{musicexpr}.
-Voici le mode \relative en action.
-@lilypond[quote,fragment,ragged-right,verbatim]
-\relative c'' {
- b c d c b c bes a
+@end itemize
+
+Voici le mode @code{\relative} en action.
+
+@lilypond[verbatim,quote]
+\relative c {
+ \clef bass
+ c d e f
+ g a b c
+ d e f g
}
@end lilypond
On utilise les signes de changement d'octave pour les intervalles
dépassant la quarte.
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[verbatim,quote]
\relative c'' {
- c g c f, c' a, e''
+ c g c f,
+ c' a, e'' c
+}
+@end lilypond
+
+Bien que ne comportant aucun signe de changement d'octave, une séquence
+de notes peut tout à fait couvrir un intervalle important.
+
+@lilypond[verbatim,quote]
+\relative c {
+ c f b e
+ a d g c
+}
+@end lilypond
+
+Lorsque plusieurs blocs @code{\relative} sont imbriqués, c'est la
+dernière clause @code{\relative} qui est prise en compte.
+
+@lilypond[verbatim,quote]
+\relative c' {
+ c d e f
+ \relative c'' {
+ c d e f
+ }
+}
+@end lilypond
+
+@code{\relative} est sans effet sur un bloc @code{\chordmode}.
+
+@lilypond[verbatim,quote]
+\new Staff {
+ \relative c''' {
+ \chordmode { c1 }
+ }
+ \chordmode { c1 }
}
@end lilypond
+@code{\relative} n'est pas permis au sein d'un bloc @code{\chordmode}.
+
+Pour utiliser le mode d'octave relative dans de la musique transposée,
+une clause @code{\relative} additionnelle doit être placée au sein du
+bloc @code{\transpose}.
+
+@lilypond[verbatim,quote]
+\relative c' {
+ d e
+ \transpose f g {
+ d e
+ \relative c' {
+ d e
+ }
+ }
+}
+@end lilypond
+
+
+@cindex accords et octave relative
+@cindex octave relative et accords
+
Si l'expression précédente est un accord, c'est la première note de
l'accord qui détermine l'emplacement de la première note du prochain
-accord.
+accord. A l'intérieur de l'accord, les notes sont placées relativement
+à celle qui précède. Examinez avec attention l'exemple suivant, et tout
+particulièrement le positionnement des do.
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[verbatim,quote]
\relative c' {
- c <c e g>
- <c' e g>
- <c, e' g>
+ c
+ <c e g>
+ <c' e g'>
+ <c, e, g''>
}
@end lilypond
-La hauteur après @code{\relative} contient un nom de note.
+Comme nous l'avons vu, l'octaviation est déterminée sans tenir compte
+des altérations. Ainsi un mi double-dièse après un si naturel sera
+placé au-dessus de celui-ci, alors qu'un fa double-bémol se retrouvera
+en dessous. En d'autres termes, une quarte doublement augmentée
+demeure considérée comme un intervalle plus petit qu'une quinte
+diminuée, bien que la quarte doublement augmentée soit de sept demi-tons
+et la quinte diminuée de seulement six demi-tons.
-La conversion en mode \relative n'affectera pas les sections @code{\transpose},
-@code{\chordmode} ou @code{\relative} situées dans son argument. Pour
-utiliser \relative dans de la musique transposée, un code
-@code{\relative} additionnel doit être placé dans @code{\transpose}.
+@lilypond[verbatim,quote]
+\relative c'' {
+ c2 fis
+ c2 ges
+ b2 eisis
+ b2 feses
+}
+@end lilypond
+
+
+@seealso
+Glossaire musicologique :
+@rglos{fifth},
+@rglos{interval},
+@rglos{Pitch names}.
+
+Manuel de notation :
+@ref{Vérifications d'octave}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{RelativeOctaveMusic}.
@node Altérations
@unnumberedsubsubsec Altérations
@translationof Accidentals
-@cindex noms de note, hollandais
-@cindex noms de note, par défaut
-
-Dans la notation par défaut, un dièse est formé en ajoutant @code{-is}
-après le nom de note, un bémol en ajoutant @code{-es}. Les
-double-dièses et double-bémols sont obtenus en ajoutant @code{-isis}
-ou @code{-eses} au nom de note.
+@cindex altération
+@cindex armure
+@cindex clef
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-a2 ais a aes
-a2 aisis a aeses
-@end lilypond
+@c duplicated in Key signature and in Accidentals
+@warning{Les nouveaux utilisateurs sont parfois déroutés par la gestion
+des altérations et de l'armure. Pour LilyPond, une hauteur n'est que du
+matériau brut ; l'armure et la clef ne feront que déterminer comment ce
+matériau sera retranscrit. Un simple @code{c} signifie tout bonnement
+@w{@qq{ do naturel}} quels que soient l'armure et la clef en question.
+Pour plus d'information, reportez-vous au chapitre
+@rlearning{Altérations et armure}.}
-@noindent
-Ce sont les noms de note hollandais. En hollandais, on élide @code{aes}
-pour écrire @code{as}, mais les deux formes sont acceptées. De manière
-similaire, on accepte aussi bien @code{es} que @code{ees}.
+@cindex noms de note, hollandais
+@cindex noms de note, par défaut
+@cindex dièse
+@cindex bémol
+@cindex double dièse
+@cindex double bémol
+@cindex flat, double
+@cindex naturel
+@cindex bécarre
+
+Dans la notation par défaut, un @notation{dièse} est formé en ajoutant
+@code{-is} après le nom de note, un @notation{bémol} en ajoutant
+@code{-es}. Les @notation{double-dièses} et @notation{double-bémols}
+sont obtenus en ajoutant @code{-isis} ou @code{-eses} au nom de note.
+Ce sont les noms de note hollandais. Pour les autres langues, consultez
+@ref{Noms de note dans d'autres langues}.
-@lilypond[fragment,quote,ragged-right,verbatim,relative=2]
-a2 as e es
+@lilypond[verbatim,quote,relative=2]
+ais1 aes aisis aeses
@end lilypond
Un bécarre annule l'effet d'une altération, qu'elle soit accidentelle
bécarres ne s'écrivent pas avec un suffixe ; un simple nom de note
donnera une note bécarre.
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
+@lilypond[verbatim,quote,relative=2]
a4 aes a2
@end lilypond
-LilyPond interprète l'entrée @code{d e f} comme @qq{imprimer un ré
-naturel, un mi naturel et un fa naturel}, sans tenir compte de l'armure.
-Pour plus d'information à propos de la distinction entre le contenu
-musical et sa représentation, voir @rlearning{Altérations et armure}.
-
-@lilypond[fragment,quote,ragged-right,verbatim,relative]
-\key d \major
-d e f g
-d e fis g
-@end lilypond
-
-
@cindex quarts de ton
-@cindex demi-bémols, demi-dièses
+@cindex demi-bémols
+@cindex demi-dièses
Les demi-bémols et demi-dièses s'écrivent en ajoutant respectivement
@code{-eh} et @code{-ih}. Voici une série de dos altérés en hauteurs
Les micro-intervalles sont aussi exportés dans le fichier MIDI.
-@cindex altération, de précaution
-@cindex altération, entre parenthèses
@cindex altération de précaution
-@funindex ?
@cindex altération entre parenthèses
+@cindex précaution, altération de
+@cindex parenthèses, altération entre
+
+@funindex ?
@funindex !
Normalement, les altérations sont imprimées automatiquement, mais il se
peut que vous vouliez les imprimer manuellement. On peut forcer
l'impression d'une altération , dite @qq{de précaution}, en ajoutant un
-point d'exclamation @samp{!} après la hauteur de note. Une altération
+point d'exclamation @code{!} après la hauteur de note. Une altération
entre parenthèses peut être obtenue en ajoutant un point d'interrogation
-@samp{?} après la hauteur de note. Ces signes peuvent aussi être
+@code{?} après la hauteur de note. Ces signes peuvent aussi être
utilisés pour imprimer des bécarres.
-@lilypond[quote,ragged-right,fragment,verbatim,relative=1]
-cis cis cis! cis? c c? c! c
+@lilypond[verbatim,quote,relative=2]
+cis cis cis! cis? c c c! c?
+@end lilypond
+
+@cindex altération et liaison de tenue
+@cindex liaison de tenue et altération
+
+Lorsqu'une note est prolongée par une liaison de tenue, l'altération ne
+sera réimprimée que s'il y a un saut de ligne.
+
+@lilypond[verbatim,quote,relative=2]
+cis1 ~ cis ~
+\break
+cis
@end lilypond
@snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,lilyquote,texidoc, doctitle]
{preventing-extra-naturals-from-being-automatically-added.ly}
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{makam-example.ly}
+
@seealso
-Référence du programme : @rinternals{LedgerLineSpanner},
-@rinternals{NoteHead}.
+Glossaire musicologique :
+@rglos{sharp},
+@rglos{flat},
+@rglos{double sharp},
+@rglos{double flat},
+@rglos{Pitch names},
+@rglos{quarter tone}.
+
+Manuel d'initiation :
+@rlearning{Altérations et armure}.
+
+Manuel de notation :
+@ref{Altérations accidentelles automatiques},
+@ref{Altérations accidentelles suggérées},
+@ref{Noms de note dans d'autres langues}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Références internes du programme :
+@rinternals{Accidental_engraver},
+@rinternals{Accidental},
+@rinternals{AccidentalCautionary},
+@rinternals{accidental-interface}.
L'impression automatique des altérations peut être affinée de plusieurs
-manières. Pour plus d'information, voir @ref{Altérations accidentelles automatiques}.
+manières. Pour plus d'information, voir
+@ref{Altérations accidentelles automatiques}.
+@cindex accidentel, quart de ton
+@cindex quart de ton
+
@knownissues
Il n'y a pas de standard universellement accepté pour noter le bémol et
@unnumberedsubsubsec Noms de note dans d'autres langues
@translationof Note names in other languages
-Vous disposez de jeux prédéfinis de noms de notes pour plusieurs autres
+@cindex notes, noms selon la langue
+@cindex noms de note, langues
+@cindex langues, noms de note
+
+Vous disposez de jeux prédéfinis de noms de note pour plusieurs autres
langues. Pour les utiliser, incluez le fichier d'initialisation
spécifique à la langue voulue. Par exemple, pour les langues romanes,
-ajoutez @code{\include "italiano.ly"} au début du fichier source. Les
-fichiers de langues disponibles ainsi que les noms de notes utilisés
+ajoutez @w{@code{\include "italiano.ly"}} au début du fichier source.
+
+@warning{Dans la mesure où certains fichiers d'initialisation, comme
+@w{@code{predefined-fretboards.ly}}, utilisent les conventions bataves,
+la commande @code{\include} concernant la langue que vous décirez
+utiliser doît intervenir après toutes les autres inclusions de fichier
+d'initialisation de LilyPond.}
+
+Les fichiers de langue disponibles ainsi que les noms de note utilisés
sont les suivants :
-@cindex noms de note, autres langues
-@example
- Noms de note dièse bémol double double
- dièse bémol
-nederlands.ly c d e f g a bes b -is -es -isis -eses
-english.ly c d e f g a bf b -s/-sharp -f/-flat -ss/-x/ -ff/
- -sharpshsarp -flatflat
-deutsch.ly c d e f g a b h -is -es -isis -eses
-norsk.ly c d e f g a b h -iss/-is -ess/-es -ississ/-isis -essess/-eses
-svenska.ly c d e f g a b h -iss -ess -ississ -essess
-italiano.ly do re mi fa sol la sib si -d -b -dd -bb
-catalan.ly do re mi fa sol la sib si -d/-s -b -dd/-ss -bb
-espanol.ly do re mi fa sol la sib si -s -b -ss -bb
-@end example
+@quotation
+@multitable {@file{nederlands.ly}} {do re mi fa sol la sib si}
+@headitem Fichier linguistique
+ @tab Nom des notes
+@item @file{nederlands.ly}
+ @tab c d e f g a bes b
+@item @file{arabic.ly}
+ @tab do re mi fa sol la sib si
+@item @file{catalan.ly}
+ @tab do re mi fa sol la sib si
+@item @file{deutsch.ly}
+ @tab c d e f g a b h
+@item @file{english.ly}
+ @tab c d e f g a bf b
+@item @file{espanol.ly}
+ @tab do re mi fa sol la sib si
+@item @file{italiano.ly}
+ @tab do re mi fa sol la sib si
+@item @file{norsk.ly}
+ @tab c d e f g a b h
+@item @file{portugues.ly}
+ @tab do re mi fa sol la sib si
+@item @file{suomi.ly}
+ @tab c d e f g a b h
+@item @file{svenska.ly}
+ @tab c d e f g a b h
+@item @file{vlaams.ly}
+ @tab do re mi fa sol la sib si
+@end multitable
+@end quotation
+
+@noindent
+et les suffixes d'altération correspondants :
+
+@quotation
+@multitable {@file{nederlands.ly}} {-s/-sharp} {-ess/-es} {-ss/-x/-sharpsharp} {-essess/-eses}
+@headitem Fichier linguistique
+ @tab dièse @tab bémol @tab double dièse @tab double bémol
+@item @file{nederlands.ly}
+ @tab -is @tab -es @tab -isis @tab -eses
+@item @file{arabic.ly}
+ @tab -d @tab -b @tab -dd @tab -bb
+@item @file{catalan.ly}
+ @tab -d/-s @tab -b @tab -dd/-ss @tab -bb
+@item @file{deutsch.ly}
+ @tab -is @tab -es @tab -isis @tab -eses
+@item @file{english.ly}
+ @tab -s/-sharp @tab -f/-flat @tab -ss/-x/-sharpsharp
+ @tab -ff/-flatflat
+@item @file{espanol.ly}
+ @tab -s @tab -b @tab -ss/-x @tab -bb
+@item @file{italiano.ly}
+ @tab -d @tab -b @tab -dd @tab -bb
+@item @file{norsk.ly}
+ @tab -iss/-is @tab -ess/-es @tab -ississ/-isis
+ @tab -essess/-eses
+@item @file{portugues.ly}
+ @tab -s @tab -b @tab -ss @tab -bb
+@item @file{suomi.ly}
+ @tab -is @tab -es @tab -isis @tab -eses
+@item @file{svenska.ly}
+ @tab -iss @tab -ess @tab -ississ @tab -essess
+@item @file{vlaams.ly}
+ @tab -k @tab -b @tab -kk @tab -bb
+@end multitable
+@end quotation
@noindent
Notez qu'en hollandais, en allemand, en norvégien et en suédois, un
-@samp{la} altéré de bemol se note @code{aes} et @code{aeses}. Ces
-formes sont contractées en @code{as} et @code{ases} (ou plus communément
-@code{asas}). Dans certains fichiers linguistiques, seules ces formes
-abrégées ont été définies ; ceci s'applique aussi aux suffixes pour les
-quarts de ton.
+@notation{la} altéré de @notation{bémol} se note @code{aes} et
+@code{aeses}. Ces formes sont contractées en @code{as} et @code{ases}
+(ou plus communément @code{asas}). Dans certains fichiers
+linguistiques, seules ces formes abrégées ont été définies.
+
+@lilypond[verbatim,quote,relative=2]
+a2 as e es a ases e eses
+@end lilypond
+
+
+@cindex microtonalités
+@cindex demi-dièse
+@cindex demi-bémol
+@cindex sesqui-dièse
+@cindex sesqui-bémol
@noindent
Certaines musiques utilisent des microtonalités, pour lesquelles les
altérations sont des fractions de dièse ou bémol @qq{normaux}. Le
tableau suivant répertorie les noms de note en quart de ton, tels que
-définis dans plusieurs fichiers linguistiques. Les préfixes @q{semi-} et
-@q{sesqui-} correspondent au @q{demi-} et @q{trois demis}. À noter
-qu'aucune définition n'existe à ce jour pour le norvégien, le suédois,
-le catalan et l'espagnol.
+définis dans plusieurs fichiers linguistiques. Les préfixes @emph{semi-}
+et @emph{sesqui-} correspondent au @emph{demi-} et @emph{trois demis}.
+À noter qu'aucune définition n'existe à ce jour pour le norvégien, le
+suédois, le catalan et l'espagnol.
+
+@quotation
+@multitable {@file{nederlands.ly}} {@b{semi-sharp}} {@b{semi-flat}} {@b{sesqui-sharp}} {@b{sesqui-flat}}
+@headitem Fichier linguistique
+ @tab semi-dièse @tab semi-bémol @tab sesqui-dièse @tab sesqui-bémol
+@item @file{nederlands.ly}
+ @tab -ih @tab -eh @tab -isih @tab -eseh
+@item @file{arabic.ly}
+ @tab -sd @tab -sb @tab -dsd @tab -bsb
+@item @file{deutsch.ly}
+ @tab -ih @tab -eh @tab -isih @tab -eseh
+@item @file{english.ly}
+ @tab -qs @tab -qf @tab -tqs @tab -tqf
+@item @file{espanol.ly}
+ @tab -cs @tab -cb @tab -tcs @tab -tcb
+@item @file{italiano.ly}
+ @tab -sd @tab -sb @tab -dsd @tab -bsb
+@item @file{portugues.ly}
+ @tab -sqt @tab -bqt @tab -stqt @tab -btqt
+@end multitable
+@end quotation
-@c What about Turkish Maquam music and similar microtonal systems?
-@c
-@c Note that the term "three-quarter-sharp/-flat" used in lilypond's source code
-@c is actually misleading since the alteration is in fact one and a half
-@c of a regular sharp/flat. Whence the naming "sesqui-sharp/-flat" used below.
-@example
- Noms de note semi- semi- sesqui- sesqui-
- dièse bémol dièse bémol
-
-nederlands.ly c d e f g a bes b -ih -eh -isih -eseh
-english.ly c d e f g a bf b -qs -qf -tqs -tqf
-deutsch.ly c d e f g a b h -ih -eh -isih -eseh
-norsk.ly c d e f g a b h
-svenska.ly c d e f g a b h
-italiano.ly do re mi fa sol la sib si -sd -sb -dsd -bsb
-catalan.ly do re mi fa sol la sib si
-espanol.ly do re mi fa sol la sib si
-@end example
+@seealso
+Glossaire musicologique :
+@rglos{Pitch names}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
@node Modification de plusieurs hauteurs
@subsection Modification de plusieurs hauteurs
@translationof Changing multiple pitches
+Cette partie traite de la manière de modifier les hauteurs de note.
+
@menu
* Vérifications d'octave::
* Transposition::
@translationof Octave checks
@cindex vérification d'octave
+@cindex octave, vérification
+@cindex contrôle des hauteurs
-Les tests d'octave rendent la correction d'erreurs d'octave plus facile
-dans le mode d'octave @code{relative} : une note peut être suivie de
-@code{=}@var{apostrophes/virgules} pour indiquer à quelle octave absolue
-elle devrait être. Dans l'exemple suivant,
+@funindex =
+@funindex \octaveCheck
+@funindex octaveCheck
+@funindex controlpitch
-@example
-\relative c'' @{ c='' b=' d,='' @}
-@end example
-@noindent
-le @code{d} générera un avertissement, puisqu'on attend un @code{d''}
-mais qu'on obtient un @code{d'} --- il n'y a qu'une tierce entre
-@code{b'} et @code{d''}. Sur la partition, l'octave sera corrigée pour
-donner un @code{d''} et la prochaine note sera calculée en fonction de
-@code{d''} et non de @code{d'}.
+Les tests d'octave rendent la correction d'erreurs d'octave plus facile
+dans le mode d'octave @code{relative} -- un @code{,} ou un @code{'}
+oublié, ça n'arrive pas qu'aux autres ! : une note peut être suivie de
+@w{@code{=}@var{apostrophes/virgules}} pour indiquer à quelle octave
+absolue elle devrait être. Dans l'exemple suivant, le @code{d} générera
+un avertissement, puisqu'on attend un @code{d''} mais qu'on obtient un
+@code{d'} -- il n'y a qu'une tierce entre @code{b'} et @code{d''}. Sur
+la partition, l'octave sera corrigée pour donner un @code{d''} et la
+prochaine note sera calculée en fonction de @code{d''} et non de
+@code{d'}.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ c2 d='4 d
+ e2 f
+}
+@end lilypond
Il existe aussi une vérification d'octave qui ne produit pas de musique
-imprimée, ayant pour syntaxe
-
-@example
-\octaveCheck @var{hauteur}
-@end example
+imprimée, ayant pour syntaxe @w{@code{\octaveCheck}
+@var{hauteur_référence}} -- @var{hauteur_référence} étant spécifiée en
+mode absolu. Cette commande vérifie que l'intervalle entre la note qui
+précède et @var{hauteur_référence} est inférieure à la quinte comme il
+se doît en mode relatif. Dans le cas contraire, un message sera émis et
+la note précédente ne sera pas modifiée. Les notes suivantes seront,
+par contre, positionnées relativement à @var{hauteur_référence}.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ c2 d
+ \octaveCheck c'
+ e2 f
+}
+@end lilypond
-Cette commande vérifie que la @var{hauteur} considérée sans apostrophe
-ni virgule et comme hauteur relative, est la même que la @var{hauteur}
-absolue considérée avec ses éventuelles apostrophes ou virgules. Sinon,
-un avertissement est émis et l'octave est corrigée. La @var{hauteur}
-n'est pas considérée comme une note, et donc n'est pas imprimée.
+Dans les deux mesures qui suivent, les premier et troisième
+@code{\octaveCheck} échouent, mais le deuxième est concluant.
-Dans l'exemple ci-dessous, le premier test réussit, puisque le @code{e}
---- dans le mode @code{relative} --- est au plus à une quarte de
-@code{a'}. Cependant, le deuxième test produit un avertissement,
-puisque le @code{e} est à quinte de @code{b'}. Le message
-d'avertissement est émis, et l'octave est corrigée afin que les notes
-suivantes soient à nouveau à la bonne octave.
+@lilypond[verbatim,quote]
+\relative c'' {
+ c4 f g f
+
+ c4
+ \octaveCheck c'
+ f
+ \octaveCheck c'
+ g
+ \octaveCheck c'
+ f
+}
+@end lilypond
-@example
-\relative c' @{
- e
- \octaveCheck a'
- \octaveCheck b'
-@}
-@end example
-L'octave d'une note qui suit un test d'octave est déterminée selon la
-note précédente. Dans l'exemple suivant, la dernière note est un
-@code{a'}, au-dessus du do central. Cela veut dire que le test
-@code{\octaveCheck} réussit, et peut donc être enlevé sans changer le
-résultat sur la partition.
+@seealso
+Morceaux choisis :
+@rlsr{Pitches}.
-@lilypond[quote,ragged-right,verbatim,fragment]
-\relative c' {
- e
- \octaveCheck b
- a
-}
-@end lilypond
+Référence des propriétés internes :
+@rinternals{RelativeOctaveCheck}.
@node Transposition
@cindex transposition
@cindex transposition des hauteurs
+
@funindex \transpose
+@funindex transpose
Une expression musicale peut être transposée avec @code{\transpose}.
Voici la syntaxe :
+
@example
-\transpose @var{note_de départ} @var{note_d_arrivée} @var{musicexpr}
+\transpose @var{note_de_départ} @var{note_d_arrivée} @var{musicexpr}
@end example
+@noindent
Cela signifie que @var{musicexpr} est transposé d'un intervalle entre
les notes @var{note_de_départ} et @var{note_d_arrivée} : toute note
-dont la hauteur était @code{note_de_départ}
-est changée en @code{note_d_arrivée}.
+dont la hauteur était @code{note_de_départ} est changée en
+@code{note_d_arrivée} et les autres note seront changées selon le même
+intervalle.
+
+@warning{La musique contenue dans un bloc @code{@bs{}transpose} est en
+octaves absolus, sauf à inclure dans ce même bloc une clause
+@code{@bs{}relative}.}
Prenons comme exemple une pièce écrite en ré majeur. Si cette pièce est
un peu trop basse pour l'interprète, elle peut être transposée en mi
-majeur avec
-@example
-\transpose d e @dots{}
-@end example
+majeur. Vous noterez que l'armure est modifiée automatiquement.
+
+@lilypond[verbatim,quote]
+\transpose d e {
+ \relative c' {
+ \key d \major
+ d4 fis a d
+ }
+}
+@end lilypond
+
+@cindex transpositeur, instrument
+@cindex instruments transpositeurs
-Regardons maintenant une partie écrite pour violon --- un instrument en
+Regardons maintenant une partie écrite pour violon -- un instrument en
ut. Si cette partie doit être jouée par une clarinette en la (écrite à
la tierce mineure supérieure, un do écrit donnant un la réel), la
transposition suivante créera la partie appropriée.
-@example
-\transpose a c @dots{}
-@end example
+@lilypond[verbatim,quote]
+\transpose a c' {
+ \relative c' {
+ \key c \major
+ c4 d e g
+ }
+}
+@end lilypond
+
+@noindent
+La présence de @w{@code{\key c \major}} s'explique par le fait que, bien
+que les notes soient effectivement transposées, l'armure ne sera
+imprimée que dans la mesure où elle est explicitement mentionnée.
@code{\transpose} fait la distinction entre les notes enharmoniques :
-@code{\transpose c cis} et @code{\transpose c des} transposeront la
-pièce un demi-ton plus haut. Mais la première version écrira des
+@w{@code{\transpose c cis}} et @w{@code{\transpose c des}} transposeront
+la pièce un demi-ton plus haut. Mais la première version écrira des
dièses et la deuxième des bémols.
-@lilypond[quote,ragged-right,verbatim]
-mus = { \key d \major cis d fis g }
+@lilypond[verbatim,quote]
+music = \relative c' { c d e f }
\new Staff {
- \clef "F" \mus
- \clef "G"
- \transpose c g' \mus
- \transpose c f' \mus
+ \transpose c cis { \music }
+ \transpose c des { \music }
}
@end lilypond
pour un instrument transpositeur. Normalement, les hauteurs dans
LilyPond sont écrites en ut, c'est à dire en sons réels, mais elles
peuvent être écrites dans un autre ton. Quand, par exemple, on écrit
-pour une trompette en si bémol, commençant sur ré note réelle, on
+pour une trompette en si bémol, commençant sur un ré à l'oreille, on
pourrait écrire
+
@example
-\transpose c bes @{ e4 @dots{} @}
+musiqueEnSiBemol = @{ e4 @dots{} @}
+\transpose c bes, \musiqueEnSiBemol
@end example
-Pour imprimer cette musique en si bémol à nouveau --- et de ce fait
+@noindent
+Pour imprimer cette musique en si bémol à nouveau -- et de ce fait
produire une partie de trompette, au lieu d'un conducteur en notes
réelles, on utilisera un deuxième @code{transpose}
@example
-\transpose bes c @{ \transpose c bes @{ e4 @dots{} @} @}
+musiqueEnSiBemol = @{ e4 @dots{} @}
+\transpose f c' @{ \transpose c bes, \musiqueEnSiBemol @}
@end example
+@noindent
+Pour plus d'information à ce sujet, consultez
+@ref{Instruments transpositeurs}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{transposing-pitches-with-minimum-accidentals-smart-transpose.ly}
+
@seealso
-Référence du programme : @rinternals{TransposedMusic}.
+Manuel de notation :
+@ref{Octaves relatives},
+@ref{Instruments transpositeurs}.
-Exemples : @rlsr{Pitches}.
+Morceaux choisis :
+@rlsr{Pitches}.
+Référence des propriété internes :
+@rinternals{TransposedMusic}.
+
+
+@funindex \transpose
+@funindex transpose
+@funindex \chordmode
+@funindex chordmode
+@funindex \relative
+@funindex relative
@knownissues
-Si vous voulez utiliser en même temps @code{\transpose} et
-@code{\relative}, vous devez mettre @code{\transpose} en dehors de
-@code{\relative}, puisque @code{\relative} n'aura aucun effet sur la
-musique apparaissant dans un @code{\transpose}.
+Si vous voulez utiliser en même temps @code{@bs{}transpose} et
+@code{@bs{}relative}, vous devez mettre @code{@bs{}transpose} en dehors de
+@code{@bs{}relative}, puisque @code{@bs{}relative} n'aura aucun effet sur la
+musique apparaissant dans un @code{@bs{}transpose}.
@node Gravure des hauteurs
@subsection Gravure des hauteurs
@translationof Displaying pitches
+Nous allons voir dans cette partie comment influer sur la gravure des
+hauteurs.
+
@menu
* Clefs::
* Armure::
@unnumberedsubsubsec Clefs
@translationof Clef
+@cindex clé de sol
+@cindex clé de fa
+@cindex clé d'ut
+
@funindex \clef
+@funindex clef
-La clé indique quelles lignes de la portée correspondent à telles
-hauteurs. Elle est réglée par la commande @code{\clef}.
+La clé indique quelles lignes de la portée correspondent à quelles
+hauteurs. Elle peut changer au fil du morceau, comme dans l'exemple
+suivant qui indique le do médium dans différentes clefs :
-@lilypond[quote,ragged-right,fragment,verbatim]
-{ c''2 \clef alto g'2 }
+@lilypond[verbatim,quote,relative=1]
+\clef treble
+c2 c
+\clef alto
+c2 c
+\clef tenor
+c2 c
+\clef bass
+c2 c
@end lilypond
-@cindex clé de sol
-@cindex clé de fa
-@cindex clé d'ut
+LilyPond met à votre disposition d'autres clefs supplémentaires :
+
+@lilypond[verbatim,quote,relative=1]
+\clef french
+c2 c
+\clef soprano
+c2 c
+\clef mezzosoprano
+c2 c
+\clef baritone
+c2 c
+
+\break
+
+\clef varbaritone
+c2 c
+\clef subbass
+c2 c
+\clef percussion
+c2 c
+\clef tab
+c2 c
+
+\break
+
+\clef G
+c2 c
+\clef F
+c2 c
+\clef C
+c2 c
+
+@end lilypond
+
+Il esxiste d'autres clefs, qui sont plus particulièrement destinées à la
+musique ancienne. Voir à ce sujet @ref{Clefs anciennes}.
+
+@cindex transposition et clefs
+@cindex clef et transposition
+@cindex octave et clef
+@cindex chorale, clef de tenor
+@cindex tenor, clef
-Les clés prises en charge sont
-
-@multitable @columnfractions .33 .66
-@headitem Clef @tab Position
-@item @code{treble}, violin, G, G2 @tab Clé de sol 2e ligne
-@item @code{alto, C} @tab Clé d'ut 3e ligne
-@item @code{tenor} @tab Clé d'ut 4e ligne
-@item @code{bass, F} @tab Clé de fa 4e ligne
-@item @code{french} @tab Clé de sol 1e ligne
-@item @code{soprano} @tab Clé d'ut 1e ligne
-@item @code{mezzosoprano} @tab Clé d'ut 2e ligne
-@item @code{baritone} @tab Clé d'ut 5e ligne
-@item @code{varbaritone} @tab Clé de fa 3e ligne
-@item @code{subbass} @tab Clé de fa 5e ligne
-@item @code{percussion} @tab Clé de percussion
-@item @code{tab} @tab Clé de tablature
-@end multitable
En ajoutant @code{_8} ou @code{^8} au nom de la clé, celle-ci est
transposée à l'octave respectivement inférieure ou supérieure, et
@code{_15} ou @code{^15} la transpose de deux octaves. L'argument
-@var{clefname} doit être mis entre guillemets lorsqu'il contient un
-caractère @qq{souligné} ou des chiffres. Par exemple,
+@var{clefname} doit être mis entre guillemets lorsqu'il contient des
+caractères supplémentaires. Par exemple,
-@cindex choral tenor clef
-@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\clef "G_8" c4
+@lilypond[verbatim,quote,relative=2]
+\clef treble
+c2 c
+\clef "treble_8"
+c2 c
+\clef "bass^15"
+c2 c
@end lilypond
-@commonprop
-
-La commande @code{\clef "treble_8"} équivaut à définir @code{clefGlyph},
-@code{clefPosition} --- qui contrôle la position verticale de la clé ---
-@code{middleCPosition} et @code{clefOctavation}. Une clé est imprimée
-lorsque l'une de ces propriétés est changée. Les exemples suivant font
-apparaître des possibilités de réglage manuel de ces propriétés.
-
-@lilypond[quote,ragged-right,verbatim]
-{
- \set Staff.clefGlyph = #"clefs.F"
- \set Staff.clefPosition = #2
- c'4
- \set Staff.clefGlyph = #"clefs.G"
- c'4
- \set Staff.clefGlyph = #"clefs.C"
- c'4
- \set Staff.clefOctavation = #7
- c'4
- \set Staff.clefOctavation = #0
- \set Staff.clefPosition = #0
- c'4
- \clef "bass"
- c'4
- \set Staff.middleCPosition = #4
- c'4
-}
-@end lilypond
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{tweaking-clef-properties.ly}
@seealso
-Dans ce manuel : @ref{Notes d'ornement}.
+Manuel de notation :
+@ref{Clefs anciennes}.
-Référence du programme : @rinternals{Clef}.
+Morceaux choisis:
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{Clef_engraver},
+@rinternals{Clef},
+@rinternals{OctavateEight},
+@rinternals{clef-interface}.
@node Armure
@translationof Key signature
@cindex armure
+
@funindex \key
+@funindex key
+
+@c duplicated in Key signature and in Accidentals
+@warning{Les nouveaux utilisateurs sont parfois déroutés par la gestion
+des altérations et de l'armure. Pour LilyPond, une hauteur n'est que du
+matériau brut ; l'armure et la clef ne feront que déterminer comment ce
+matériau sera retranscrit. Un simple @code{c} signifie tout bonnement
+@w{@qq{ do naturel}} quels que soient l'armure et la clef en question.
+Pour plus d'information, reportez-vous au chapitre
+@rlearning{Altérations et armure}.}
L'armure indique la tonalité dans laquelle la pièce doit être jouée.
-Elle comprend un ensemble d'altérations (dièses ou bémols) à la clé,
+Elle comprend un ensemble d'altérations (dièses ou bémols) à la clef,
c'est-à-dire au début de la portée.
On définit ou modifie l'armure avec la commande @code{\key}
@code{\key} @var{hauteur} @var{mode}
@end example
-@funindex \minor
@funindex \major
+@funindex major
@funindex \minor
+@funindex minor
@funindex \ionian
+@funindex ionian
@funindex \locrian
+@funindex locrian
@funindex \aeolian
+@funindex aeolian
@funindex \mixolydian
+@funindex mixolydian
@funindex \lydian
+@funindex lydian
@funindex \phrygian
+@funindex phrygian
@funindex \dorian
+@funindex dorian
+
@cindex modes anciens
+@cindex modes
+@cindex majeur
+@cindex mineur
+@cindex ionien
+@cindex locrien
+@cindex éolien
+@cindex mixolydien
+@cindex lydien
+@cindex phrygien
+@cindex dorien
+@noindent
Ici, @var{mode} doit être @code{\major} ou @code{\minor} afin d'avoir
respectivement @var{hauteur}-majeur ou @var{hauteur}-mineur. Vous pouvez
aussi avoir recours aux modes anciens que sont @code{\ionian},
@code{\locrian}, @code{\aeolian}, @code{\mixolydian}, @code{\lydian},
@code{\phrygian}, et @code{\dorian}.
-Cette commande fixe la propriété de contexte @code{Staff.keySignature}.
-Des armures inhabituelles peuvent être spécifiées en modifiant
-directement cette propriété.
-
-Les nouveaux utilisateurs s'embrouillent souvent dans les altérations et
-les armures, car des notes naturelles prennent ou non un bécarre selon
-l'armure. Pour plus d'informations, voir @ref{Altérations} ou
-@rlearning{Altérations et armure}.
-
-@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
+@lilypond[verbatim,quote,relative=2]
\key g \major
-f1
+fis1
+f
fis
@end lilypond
-@commonprop
+@snippets
-Un bécarre est imprimé pour annuler toute altération précédente. Ceci
-peut être supprimé en réglant la propriété
-@code{Staff.printKeyCancellation}.
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly}
-@lilypond[quote,fragment,ragged-right,fragment,verbatim,relative=2]
-\key d \major
-a b cis d
-\key g \minor
-a bes c d
-\set Staff.printKeyCancellation = ##f
-\key d \major
-a b cis d
-\key g \minor
-a bes c d
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{non-traditional-key-signatures.ly}
@seealso
-Référence du programme : @rinternals{KeyCancellation},
-@rinternals{KeySignature}.
+Glossaire musicologique :
+@rglos{church mode},
+@rglos{scordatura}.
+
+Manuel d'initiation :
+@rlearning{Altérations et armure}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{KeyChangeEvent},
+@rinternals{Key_engraver},
+@rinternals{Key_performer},
+@rinternals{KeyCancellation},
+@rinternals{KeySignature},
+@rinternals{key-cancellation-interface},
+@rinternals{key-signature-interface}.
@node Marques d'octaviation
@unnumberedsubsubsec Marques d'octaviation
@translationof Ottava brackets
-Les marques d'octaviation, @emph{Ottava}, permettent d'introduire une
-transposition spécifique d'une octave pour la portée en cours. C'est
-la fonction @code{ottava} qui s'en charge.
-
@cindex ottava
@cindex 15ma
+@cindex 8va
+@cindex 8ve
@cindex octaviation
-@lilypond[quote,ragged-right,verbatim,fragment]
-\relative c''' {
- a2 b
- \ottava #1
- a b
- \ottava #0
- a b
-}
+@funindex set-octavation
+@funindex \ottava
+@funindex ottava
+
+Les marques d'octaviation, @emph{Ottava}, permettent d'introduire une
+transposition spécifique d'une octave pour la portée en cours. C'est
+la fonction @code{ottava} qui s'en charge.
+
+@lilypond[verbatim,quote,relative=2]
+a'2 b
+\ottava #1
+a b
+\ottava #0
+a b
@end lilypond
La fonction @code{ottava} peut aussi prendre en argument les
-valeurs -1@tie{}(pour 8va bassa), 2@tie{}(pour 15ma --- 2 octaves) ou
--2@tie{}(pour 15ma bassa). En interne, cette fonction détermine les
-propriétés @code{ottavation} (p.ex. en @code{"8va"} ou @code{"8vb"})
-et @code{centralCPosition}. Vous pouvez modifier le texte d'une marque
-d'octaviation en définissant @code{ottavation} après avoir fait appel
-à @code{ottava} :
-
-@lilypond[quote,ragged-right,verbatim]
-{
- \ottava #1
- \set Staff.ottavation = #"8"
- c'''
-}
-@end lilypond
+valeurs -1@tie{}(pour 8va bassa), 2@tie{}(pour 15ma -- 2 octaves) ou
+-2@tie{}(pour 15ma bassa).
-@seealso
-Référence du programme : @rinternals{OttavaBracket}.
+@snippets
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{ottava-text.ly}
-@knownissues
-@code{ottava} gère difficilement les changements de clé qui
-pourraient intervenir alors qu'elle est effective.
+@seealso
+Glossarire musicologique :
+@rglos{octavation}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{Ottava_spanner_engraver},
+@rinternals{OttavaBracket},
+@rinternals{ottava-bracket-interface}.
@node Instruments transpositeurs
@translationof Instrument transpositions
@cindex transposition, MIDI
+@cindex MIDI et transposition
@cindex transposition, instrument
-Vous pouvez spécifier la tonalité d'un instrument transpositeur, ce
-qui est le cas pour de nombreux instruments à vent comme la clarinette
-(si bémol, la ou mi bémol), le cor (fa), ou la trompette (si bémol,
-ut, ré ou mi bémol).
+@funindex \transposition
+@funindex transposition
-Cette transposition s'indique après le mot-clé @code{\transposition}.
+Lorsque l'on saisit une partition d'ensemble incluant des instruments
+transpositeurs, certaines parties peuvent être dans une autre tonalité
+que la @notation{tonalité de concert}. Il faudra en pareil cas indiquer
+la tonalité spécifique de ces @notation{instruments transpositeurs},
+sous peine de fichier MIDI erroné et de citations incorrectes. Pour
+plus de détails sur les citations, consultez le chapitre
+@ref{Citation d'autres voix}.
@example
-\transposition bes %% clarinette en si bémol
+\transposition @var{hauteur}
@end example
-@noindent
-Cette commande détermine la propriété @code{instrumentTransposition},
-dont la valeur sera utilisée pour le fichier MIDI et en cas de
-citation. Elle n'affecte en rien la manière dont les notes seront
-imprimées sur la portée. Référez-vous à la section @ref{Transposition}
-pour obtenir un autre résultat.
-
La hauteur donnée en argument à @code{\transposition} doit
correspondre à la note entendue lorsqu'un @code{do} écrit sur la
-portée est joué par l'instrument transpositeur. Par exemple, lorsque
+portée est joué par l'instrument transpositeur. Cette hauteur doit être
+mentionnée en @notation{mode absolu}. Par exemple, lorsque
vous saisissez une partition en notes réelles, toutes les voix
-devraient être en ut ; pour les instruments transpositeurs, il faudra
-procéder de cette manière :
+devraient être en ut ; si un instrument joue un ton au dessus, il faudra
+lui ajouter un @w{@code{\transposition d'}}. La commande
+@code{\transposition} s'utilise @strong{si et seulement si} les notes à
+saisir @strong{ne sont pas} dans la tonalité de concert.
+
+Voici un fragment pour violon et clarinette en si bémol (@emph{B-flat})
+pour lequel les parties respectives ont été recopiées à partir du
+conducteur. Les deux instruments sont à l'unisson.
+
+@lilypond[verbatim,quote]
+\new GrandStaff <<
+ \new Staff = "violin" {
+ \relative c'' {
+ \set Staff.instrumentName = #"Vln"
+ \set Staff.midiInstrument = #"violin"
+ % not strictly necessary, but a good reminder
+ \transposition c'
+
+ \key c \major
+ g4( c8) r c r c4
+ }
+ }
+ \new Staff = "clarinet" {
+ \relative c'' {
+ \set Staff.instrumentName = \markup { Cl (B\flat) }
+ \set Staff.midiInstrument = #"clarinet"
+ \transposition bes
+
+ \key d \major
+ a4( d8) r d r d4
+ }
+ }
+>>
+@end lilypond
-@example
-clarinet = @{
- \transposition c'
- ...
-@}
-saxophone = @{
- \transposition c'
- ...
-@}
-@end example
+La @code{\transposition} peut évoluer au cours d'un morceau. Un
+clarinettiste peut être amené à jongler entre une clarinette en la et
+une autre en si bémol.
+
+@lilypond[verbatim,quote,relative=2]
+\set Staff.instrumentName = #"Cl (A)"
+\key a \major
+\transposition a
+c d e f
+\textLengthOn
+s1*0^\markup { Switch to B\flat clarinet }
+R1
+
+\key bes \major
+\transposition bes
+c2 g
+@end lilypond
-Lorsque vous entrez de la musique à partir d'une partie transposée,
-utilisez la commande @code{\transposition}. Si l'on prend l'exemple
-des parties de cor, leur tonalité change souvent au cours d'un morceau ;
-en recopiant cette partie, utilisez @code{\transposition} ainsi :
-@example
-\transposition d'
-c'4^"en ré"
-...
-\transposition g'
-c'4^"en sol"
-...
-@end example
+@seealso
+Glossaire musicologique :
+@rglos{concert pitch},
+@rglos{transposing instrument}.
+
+Manuel de notation :
+@ref{Citation d'autres voix},
+@ref{Transposition}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
@node Altérations accidentelles automatiques
@unnumberedsubsubsec Altérations accidentelles automatiques
@translationof Automatic accidentals
@cindex Altérations accidentelles automatiques
-Une fonction a été créée pour regrouper les règles suivant lesquelles
-s'impriment les altérations. Elle s'invoque de la manière suivante :
+@cindex altération, style
+@cindex altération, style par défaut
+@cindex accidentelles, altérations
+@cindex accidentelles automatiques
+@cindex automatiques, altérations accidentelles
+@cindex default accidental style
+
+@funindex set-accidental-style
+@funindex voice
+@funindex default
+
+
+LilyPond dispose d'une fonction chargée de regrouper les règles suivant
+lesquelles s'impriment les altérations. Elle s'invoque de la manière
+suivante :
@funindex set-accidental-style
@example
-#(set-accidental-style 'REGLE)
+\new Staff <<
+ #(set-accidental-style 'REGLE)
+ @{ @dots{} @}
+>>
@end example
-@c TODO: check the context stuff below
-@c -does it *really* work?
-@c -the default contexts as specified in
-@c scm/music-function.scm seem to be different -vv
-
-Cette fonction prend pour argument le nom de la règle d'altération,
-auquel peut s'ajouter, comme argument facultatif, le contexte
-devant être affecté :
+La règle de gestion des altérations s'applique par défaut au contexte
+@code{Staff} en cours, exception faite des styles @code{piano} et
+@code{piano-cautionary} comme nous allons le voir. Cette fonction
+accepte un éventuel argument supplémentaire chargé de spécifier
+le champ d'action de la règle à suivre. A titre d'exemple, il faudra
+utiliser, pour que toutes les portées d'un même système -- contexte
+@code{StaffGroup} -- soient soumises à la même règle :
@example
-#(set-accidental-style 'REGLE #('CONTEXTE#))
+#(set-accidental-style 'voice 'StaffGroup)
@end example
-Si aucun contexte n'est spécifié, le contexte @code{Staff} sera affecté ;
-cependant on peut souhaiter l'appliquer au contexte @code{Voice} en lieu
-et place.
+Nous vous présentons ci-après les différentes régles d'altération prises
+en charge. Pour les besoins de la démonstration, nous partirons de
+l'exemple suivant :
+
+@lilypond[verbatim,quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
-Les régles d'altération suivantes sont possibles :
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'default)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'default)
+ \musicB
+ }
+ >>
+}
+@end lilypond
+
+Notez bien que pour appliquer le même style aux deux portées, seules les
+dernières lignes de cet exemple nous intéressent.
+
+@example
+\new PianoStaff @{
+ <<
+ \context Staff = "haut" @{
+ %%% voici la ligne à modifier en conséquence :
+ #(set-accidental-style 'default 'Score)
+ \musicA
+ @}
+ \context Staff = "bas" @{
+ \musicB
+ @}
+ >>
+@}
+@end example
+
+
+@c don't use verbatim in this table.
@table @code
@item default
+
+@cindex @emph{default}, style d'altérations
+@cindex altérations, style @emph{default}
+
+@funindex default
+
C'est la règle d'impression par défaut, qui se rapporte à l'usage
en vigueur au XVIIIème siècle : les altérations accidentelles sont
-valables tout une mesure, et uniquement à leur propre octave.
-
-
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- %#(set-accidental-style 'default)
- \musicA }
- \context Staff = "down"{
- %#(set-accidental-style 'default)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'default" }}}
+valables tout une mesure, et uniquement à leur propre octave. C'est la
+raison pour laquelle il n'y a pas de bécarre avant le @notation{si} de
+la deuxième mesure, ni avant le dernier @notation{do}.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'default)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'default)
+ \musicB
+ }
+ >>
}
@end lilypond
@item voice
-En principe, LilyPond se souvient de toutes les altérations présentes sur la
-portée (contexte Staff). Avec cette règle, cependant, les altérations
-sont indépendantes pour chacune des voix.
+@cindex @emph{voice}, style d'altérations
+@cindex altérations, style @emph{voice}
+@cindex altérations, style @emph{modern}
+@cindex @emph{modern}, style d'altération
+@cindex altérations, style @emph{modern-cautionary}
+@cindex @emph{modern-cautionary}, style d'altération
+
+@funindex voice
+
+En principe, LilyPond se souvient de toutes les altérations présentes
+sur la portée (contexte @code{Staff}). Avec cette règle, cependant, les
+altérations sont indépendantes pour chacune des voix tout en obéissant
+à la règle @code{default}.
+
+De ce fait, les altérations d'une voix sont ignorées dans les autres
+voix, ce qui peut donner lieu à un résultat malencontreux. Dans
+l'exemple suivant, il est difficile de dire si le deuxième @notation{la}
+est dièse ou naturel. La règle @code{voice} n'est donc à envisager que
+dans le cas de voix devant être lues par des musiciens différents. S'il
+s'agit d'un @qq{conducteur}, ou d'une portée destinée à un seul
+musicien, il vaut mieux utiliser @code{modern} ou
+@code{modern-cautionary}.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
-@example
- \new Staff <<
- #(set-accidental-style 'voice)
- @{ @dots{} @}
- >>
-@end example
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
-De ce fait, les altérations d'une voix sont ignorées dans les autres voix,
-ce qui peut donner lieu à un résultat malencontreux. Dans l'exemple suivant,
-il est difficile de dire si le deuxième @samp{la} est dièse ou naturel.
-
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'voice)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'voice)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'voice" }}}
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'voice)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'voice)
+ \musicB
+ }
+ >>
}
@end lilypond
-La règle @code{voice} n'est à envisager que dans le cas de voix devant
-être lues par des musiciens différents. S'il s'agit d'un
-@qq{conducteur}, ou d'une portée destinée à un seul musicien, il vaut
-mieux utiliser @code{modern} ou @code{modern-cautionary}.
+
+
@item modern
@funindex modern style accidentals
+
+@cindex altération, style @emph{modern}
+@cindex @emph{modern}, style d'altération
+
+@funindex modern
+
Cette règle est la plus courante au XXème siècle. Les altérations
accidentelles sont imprimées comme avec le style @code{default}, mais
lorsqu'une note non-altérée apparaît à une octave différente, ou bien
l'exemple suivant, notez ainsi les deux bécarres dans la deuxième mesure
de la main droite.
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'modern)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'modern)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'modern" }}}
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'modern)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'modern)
+ \musicB
+ }
+ >>
}
@end lilypond
-@item @code{modern-cautionary}
+@item modern-cautionary
+
+@cindex altération, style @emph{modern cautionary}
+@cindex @emph{modern cautionary}, style d'altération
+@cindex altération de précaution, style @emph{modern}
+@cindex @emph{modern}, style d'altération de précaution
+
@funindex modern-cautionary
+
Cette règle est équivalente à @code{modern}, mais les bécarres de
-précaution sont imprimés de façon particulière : soit plus petits, soit
-(par défaut) entre parenthèses. Il est possible de le définir au moyen
-de la propriété @code{cautionary-style} pour l'objet
-@rinternals{AccidentalSuggestion}.
-
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'modern-cautionary)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'modern-cautionary)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'modern-cautionary" }}}
+précaution (absents dans la règle @code{default}) sont imprimés de façon
+particulière : soit plus petits, soit (par défaut) entre parenthèses.
+Il est possible de le définir au moyen de la propriété
+@code{cautionary-style} pour l'objet @code{AccidentalSuggestion}.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'modern-cautionary)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'modern-cautionary)
+ \musicB
+ }
+ >>
}
@end lilypond
-@funindex modern-voice
@item modern-voice
+
+@cindex @emph{modern}, style d'altération
+@cindex style d'altération @emph{modern}
+@cindex altérations multivoix
+@cindex modern accidental style
+@cindex voix pultiples et altérations
+@cindex multivoix, altérations
+
+@funindex modern-voice
+
Cette règle sert aux altérations dans de la musique polyphonique destinée
autant à des musiciens différents qu'à quelqu'un qui lirait l'ensemble
des voix. Les altérations sont imprimées voix par voix, mais les autres
-voix, dans le même contexte @rinternals{Staff}, en @emph{tiennent
-compte} cette fois.
-
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'modern-voice)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'modern-voice)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'modern-voice" }}}
+voix, dans le même contexte @code{Staff}, en @emph{tiennent compte}
+cette fois. C'est pourquoi le @notation{la} de la dernière mesure est
+affublé d'un bécarre bien qu'il y en ait déjà eu un dans la mesure
+précédente, et que le ré de la main gauche en ait un alors qu'il avait
+auparavant concerné la main droite.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'modern-voice)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'modern-voice)
+ \musicB
+ }
+ >>
}
@end lilypond
-@funindex modern-voice-cautionary
@item modern-voice-cautionary
-Cette régle est similaire à la précédente, mais les altérations de précaution
-(celles que n'aurait pas ajoutées @code{voice}), sont imprimées de façon
-particulière. On retrouve donc toutes les altérations qu'imprimerait
-@code{default}, mais certaines sont considérées comme étant @qq{de précaution}.
-
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'modern-voice-cautionary)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'modern-voice-cautionary)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'modern-voice-cautionary" }}}
+
+@cindex altération de précaution style @emph{modern voice}
+@cindex @emph{modern voice}, styme d'altération de précaution
+
+@funindex modern-voice-cautionary
+
+Cette régle est similaire à la précédente, mais les altérations de
+précaution (celles que n'aurait pas ajoutées @code{voice}), sont
+imprimées de façon particulière. On retrouve donc toutes les
+altérations qu'imprimerait @code{default}, mais certaines sont
+considérées comme étant @qq{de précaution}.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'modern-voice-cautionary)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'modern-voice-cautionary)
+ \musicB
+ }
+ >>
}
@end lilypond
@item piano
-@funindex piano accidentals
-Cette règle est adaptée aux contextes GrandStaff -- ce qui n'empêche pas
-de devoir la spécifier pour chaque portée individuelle au sein du
-contexte GrandStaff.
-@example
-\new GrandStaff @{ <<
- \new Staff = "up" @{ <<
- #(set-accidental-style 'piano)
- @{ @dots{} @}
- >> @}
- \new Staff = "down"@{ <<
- #(set-accidental-style 'piano)
- @{ @dots{} @}
- >> @}
->> @}
-@end example
+@cindex @emph{piano}, style d'altérations
+@cindex altérations style @emph{piano}
+@cindex piano et altérations
+
+@funindex piano accidentals
Cette règle est communément employée pour les partitions de piano au
XXème siècle. Très similaire à @code{modern} de par son comportement,
elle s'en distingue en ce que les altérations tiennent compte des autre
-portées du contexte @rinternals{GrandStaff} ou @rinternals{PianoStaff}.
-
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'piano)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'piano)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'piano" }}}
+portées du contexte @code{GrandStaff} ou @code{PianoStaff}.
+
+Cette règle s'applique par défaut dans un @code{GrandStaff} ou dans un
+@code{PianoStaff}.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'piano)
+ \musicA
+ }
+ \context Staff = "down" {
+ \musicB
+ }
+ >>
}
@end lilypond
@item piano-cautionary
-@funindex #(set-accidental-style 'piano-cautionary)
-Identique à @code{#(set-accidental-style 'piano)}, mais les altérations
-de précaution sont imprimées différemment.
-
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'piano-cautionary)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'piano-cautionary)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'piano-cautionary" }}}
+
+@cindex @emph{piano cautionary}, style d'altérations
+@cindex altérations style @emph{piano cautionary}
+@cindex piano et altérations
+
+@funindex piano-cautionary
+
+Identique au style @code{piano}, mais les altérations de précaution sont
+imprimées différemment.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'piano-cautionary)
+ \musicA
+ }
+ \context Staff = "down" {
+ \musicB
+ }
+ >>
+}
+@end lilypond
+
+@item neo-modern
+
+@cindex @emph{neo-modern}, style d'altérations
+@cindex altérations, style @emph{neo-modern}
+
+@funindex neo-modern
+
+Cette règle suit les pratiques de la musique contemporaine : les
+altérations accidentelles apparaîssent comme dans le style
+@code{modern}, à ceci près qu'elles sont répétées dans la même mesure --
+sauf si elles concernent deux notes consécutives.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'neo-modern)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'neo-modern)
+ \musicB
+ }
+ >>
+}
+@end lilypond
+
+@item neo-modern-cautionary
+
+@cindex @emph{neo-modern-cautionary}, style d'altérations
+@cindex style d'altération @emph{neo-modern-cautionary}
+
+@funindex neo-modern-cautionary
+
+Identique au style @code{neo-modern}, mais les altérations de précaution
+sont imprimées différemment.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'neo-modern-cautionary)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'neo-modern-cautionary)
+ \musicB
+ }
+ >>
+}
+@end lilypond
+
+
+@item dodecaphonic
+
+@cindex @emph{dodecaphonic}, style d'altérations
+@cindex altération, style @emph{dodecaphonic}
+
+@funindex dodecaphonic
+
+Cette règle reproduit ce que certains compositeurs du début du XXème
+siècle ont introduit dans leur désir d'abolir la distinction entre les
+notes naturelles ou non. Ainsi, @emph{chaque} note est affublée d'une
+altération, même si elle est naturelle.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'dodecaphonic)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'dodecaphonic)
+ \musicB
+ }
+ >>
+}
+@end lilypond
+
+
+@item teaching
+
+@cindex @emph{teaching}, style d'altérations
+@cindex altérations, style @emph{teaching}
+
+@funindex teaching
+
+Cette règle est à usage pédagogique : l'impression d'une simple gamme
+fera apparaître une altération de précaution pour toute note altérée.
+Les altérations accidentelles sont imprimées selon le style
+@code{modern}, et une altération de précaution est ajoutée pour chaque
+dièse ou bémol à la clef -- sauf dans le cas de notes consécutives.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ \key fis \minor
+ #(set-accidental-style 'teaching)
+ \musicA
+ }
+ \context Staff = "down" {
+ \key fis \minor
+ #(set-accidental-style 'teaching)
+ \musicB
+ }
+ >>
}
@end lilypond
@item no-reset
-@funindex no-reset accidental style
-C'est la même règle que @code{default}, mais l'effet des altérations
+
+@cindex altération, style @emph{no reset}
+@cindex @emph{no reset}, style d'altérations
+
+@funindex no-reset
+
+C'est la même règle que @code{default}, mais l'effet des altérations
accidentelles ne cesse jamais, même dans les mesures suivantes.
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'no-reset)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'no-reset)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'no-reset" }}}
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'no-reset)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'no-reset)
+ \musicB
+ }
+ >>
}
@end lilypond
@item forget
-Tout le contraire de @code{no-reset} : l'effet des altérations cesse aussitôt,
-et de ce fait, toutes les altérations, quelque soit leur place dans la
-mesure, sont imprimées en fonction de l'éventuelle armure.
-
-@lilypond[quote,ragged-right]
-musicA = { << \relative { cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
- \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4
- \change Staff = up cis' \change Staff = down <fis, a>
- \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis
- <f a d>2 | } }}
-
-\score {
- \new PianoStaff {
- << \context Staff = "up" {
- #(set-accidental-style 'forget)
- \musicA }
- \context Staff = "down"{
- #(set-accidental-style 'forget)
- \musicB } >> }
- \header { piece = \markup {\fill-line { \fontsize #3 "'forget" }}}
+
+@cindex @emph{forget}, style d'altérations
+@cindex altérations, style @emph{forget}
+
+@funindex forget
+
+Tout le contraire de @code{no-reset} : l'effet des altérations cesse
+aussitôt, et de ce fait, toutes les altérations, quelque soit leur place
+dans la mesure, sont imprimées en fonction de l'éventuelle armure. A
+l'inverse du style @code{dodecaphonic}, aucun bécarre ne sera ici
+imprimé.
+
+@lilypond[quote]
+musicA = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, g'>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+musicB = {
+ \clef bass
+ \new Voice {
+ \voiceTwo \relative c' {
+ <fis, a cis>4
+ \change Staff = up
+ cis'
+ \change Staff = down
+ <fis, a>
+ \change Staff = up
+ dis' |
+ \change Staff = down
+ <fis, a cis>4 gis <f a d>2 |
+ }
+ }
+}
+
+\new PianoStaff {
+ <<
+ \context Staff = "up" {
+ #(set-accidental-style 'forget)
+ \musicA
+ }
+ \context Staff = "down" {
+ #(set-accidental-style 'forget)
+ \musicB
+ }
+ >>
}
@end lilypond
@end table
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{dodecaphonic-style-accidentals-for-each-note-including-naturals.ly}
+
@seealso
-Référence du programme : @rinternals{Accidental_engraver},
-@rinternals{Accidental}, @rinternals{AccidentalSuggestion} et
+Référence des propriétés internes :
+@rinternals{Accidental},
+@rinternals{Accidental_engraver},
+@rinternals{GrandStaff} et
+@rinternals{PianoStaff},
+@rinternals{Staff},
+@rinternals{AccidentalSuggestion},
@rinternals{AccidentalPlacement}.
+@rinternals{accidental-suggestion-interface}.
+
+
+@cindex altérations et notes simultanées
+@cindex notes simultanées et altérations
+@cindex altérations et accords
+@cindex accords et altérations
@knownissues
-Les notes simultanées sont considérées comme des évènements séquentiels.
-Ce qui implique que, dans un accord, les altérations accidentelles seront
-imprimées comme si les notes de l'accord apparaissaient une par une, en
-fonction de l'ordre dans lequels elles ont été saisies -- ce qui peut
-poser problème lorsqu'au sein d'un accord certaines altérations
+Les notes simultanées sont considérées comme des évènements séquentiels.
+Ce qui implique que, dans un accord, les altérations accidentelles
+seront imprimées comme si les notes de l'accord apparaissaient une par
+une, en fonction de l'ordre dans lequel elles ont été saisies -- ce qui
+peut poser problème lorsqu'au sein d'un accord certaines altérations
dépendent les unes des autres.
-Ce problème est à résoudre manuellement, en insérant des @code{!} et des
+Ce problème est à résoudre manuellement, en insérant des @code{!} et des
@code{?} après les notes concernées.
@node Ambitus
@unnumberedsubsubsec Ambitus
@translationof Ambitus
+
@cindex ambitus
+@cindex tessiture
+@cindex amplitude
L'@emph{ambitus} est l'amplitude des hauteurs d'une voix donnée dans une
partition. Ce terme peut aussi désigner la tessiture qu'un instrument
-est capable d'atteindre. Souvent, cet @emph{ambitus} est imprimé au début des
-partitions vocales, afin que les exécutants puissent voir au premier
-coup d'œil s'ils sont en mesure de tenir la partie en question.
-
-Pour exprimer l'@emph{ambitus} d'une pièce, on indique avant la clé deux notes
-représentant la hauteur la plus basse et la plus haute. Pour imprimer
-cet @emph{ambitus}, il faut ajouter le graveur @rinternals{Ambitus_engraver}
-au contexte @rinternals{Voice}. Ainsi,
-
-@example
-\layout @{
- \context @{
- \Voice
- \consists Ambitus_engraver
- @}
-@}
-@end example
+est capable d'atteindre. Souvent, cet @emph{ambitus} est imprimé au
+début des partitions vocales, afin que les exécutants puissent voir au
+premier coup d'œil s'ils sont en mesure de tenir la partie en question.
-@noindent
-aura pour résultat
+Pour exprimer l'@emph{ambitus} d'une pièce, on indique avant la clé deux
+notes représentant la hauteur la plus basse et la plus haute. Les
+éventuelles altérations accidentelles seront automatiquement ajoutées.
-@lilypond[quote,ragged-right]
+@lilypond[verbatim,quote]
\layout {
\context {
- \Staff
- \consists Ambitus_engraver
+ \Voice
+ \consists "Ambitus_engraver"
}
}
-\relative \new Staff {
- as'' c e2 cis,2
+\relative c'' {
+ aes c e2
+ cis,1
}
@end lilypond
-Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
-graveur @rinternals{Ambitus_engraver} au contexte @rinternals{Staff}
-plutôt qu'au contexte @rinternals{Voice} ; l'ambitus affiché sera
-alors celui de toutes les voix cumulées, non d'une seule des voix
-actives.
-@lilypond[verbatim,ragged-right,quote]
-\new Staff \with {
- \consists "Ambitus_engraver"
-}
-<<
- \new Voice \with {
- \remove "Ambitus_engraver"
- } \relative c'' {
- \override Ambitus #'X-offset = #-1.0
- \voiceOne
- c4 a d e f2
- }
- \new Voice \with {
- \remove "Ambitus_engraver"
- } \relative c' {
- \voiceTwo
- es4 f g as b2
- }
->>
-@end lilypond
+@snippets
-@noindent
-Cet exemple met en œuvre une fonctionnalité avancée :
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{adding-ambitus-per-voice.ly}
-@example
-\override Ambitus #'X-offset = #-1.0
-@end example
-
-@noindent
-Ce réglage déplace l'ambitus vers la gauche. Le même résultat aurait pu
-être obtenu avec @code{extra-offset}, mais alors le système de mise en
-forme n'aurait pas attribué d'espace supplémentaire pour l'objet
-déplacé.
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{ambitus-with-multiple-voices.ly}
@seealso
-Référence du programme : @rinternals{Ambitus},
-@rinternals{AmbitusLine}, @rinternals{AmbitusNoteHead},
-@rinternals{AmbitusAccidental}.
+Glossaire musicologique :
+@rglos{ambitus}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
-Exemples : @rlsr{Pitches}, @rlsr{Vocal music}.
+Référence des propriétés internes :
+@rinternals{Ambitus_engraver},
+@rinternals{Voice},
+@rinternals{Staff},
+@rinternals{Ambitus},
+@rinternals{AmbitusAccidental},
+@rinternals{AmbitusLine},
+@rinternals{AmbitusNoteHead},
+@rinternals{ambitus-interface}.
@knownissues
@subsection Têtes de note
@translationof Note heads
+Nous allons voir dans ce chapitre comment modifier l'aspect des têtes de
+note.
+
@menu
* Têtes de note spécifiques::
* Têtes de note avec nom de note::
@translationof Special note heads
@cindex têtes de note, spéciales
+@cindex croix, tête de note
+@cindex losange, tête de note
+@cindex parlato, tête de note
+@cindex harmonique, tête de note
+@cindex guitare, tête de note
+@cindex styles, tête de note
+
+@funindex cross
Certains instruments utilisent des têtes de note différentes à des
-fins spécifiques --- des croix pour le @emph{parlato} des chanteurs ou les
+fins spécifiques -- des croix pour le @emph{parlato} des chanteurs ou les
notes étouffées des guitares ; des losanges pour les harmoniques des
-cordes. Il existe un raccourci (@code{\harmonic}) pour les notes en
-losange ; pour les autres styles de tête, il vous faudra jouer avec la
-propriété @code{NoteHead}.
+cordes.
-@lilypond[ragged-right,relative=1,fragment,verbatim,quote]
-c4 d
+@lilypond[verbatim,quote,relative=2]
+c4 b a b
\override NoteHead #'style = #'cross
-e f
+c4 b a b
\revert NoteHead #'style
-e d <c f\harmonic> <d a'\harmonic>
+c4 d e f
+@end lilypond
+
+Il existe un raccourci pour les notes en losange :
+
+@lilypond[verbatim,quote,relative=2]
+<c f\harmonic>2 <d a'\harmonic>4 <c g'\harmonic>
@end lilypond
-@noindent
Pour une liste exhaustive des styles de tête de note, consultez
@ref{Styles de tête de note}.
@seealso
-Référence du programme : @rinternals{NoteHead}.
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Manuel de notation :
+@ref{Styles de tête de note},
+@ref{Notes en accord}.
+
+@seealso
+Référence des propriétés internes :
+@rinternals{note-event},
+@rinternals{Note_heads_engraver},
+@rinternals{Ledger_line_engraver},
+@rinternals{NoteHead}.
+@rinternals{LedgerLineSpanner},
+@rinternals{note-head-interface},
+@rinternals{ledger-line-spanner-interface}.
@node Têtes de note avec nom de note
@cindex tête de note, apprentissage
@cindex notation facile
@cindex Hal Leonard
+@cindex @emph{easy play}, têtes de note
+
+@funindex \easyHeadsOn
+@funindex easyHeadsOn
+@funindex \easyHeadsOff
+@funindex easyHeadsOff
Les notes @qq{easy play} comportent le nom de la note à l'intérieur de
-la tête. On l'utilise dans des partitions pour débutants.
+la tête. On l'utilise dans des partitions pour débutants. L'impression
+doit être de plus grande taille, afin que les lettres soient lisibles.
+Voir à ce propos @ref{Définition de la taille de portée}.
-@lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
+@lilypond[verbatim,quote]
+#(set-global-staff-size 26)
+\relative c' {
\easyHeadsOn
- c'2 e'4 f' | g'1
+ c2 e4 f
+ g1
+ \easyHeadsOff
+ c,1
+}
@end lilypond
-La commande @code{\easyHeadsOn} remplace tous les réglages de l'objet
-@rinternals{NoteHead}. L'impression doit être de plus grande
-taille, afin que les lettres soient lisibles. Voir à ce propos
-@ref{Définition de la taille de portée}.
-
@predefined
-@funindex \easyHeadsOn
-@code{\easyHeadsOn}.
+@code{\easyHeadsOn},
+@code{\easyHeadsOff}.
@endpredefined
+@seealso
+Manuel de notation :
+@ref{Définition de la taille de portée}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{note-event},
+@rinternals{Note_heads_engraver},
+@rinternals{NoteHead},
+@rinternals{note-head-interface}.
+
+
@node Têtes de note à forme variable
@unnumberedsubsubsec Têtes de note à forme variable
@translationof Shape note heads
@cindex tête de note, allure
+@cindex tête de note, Aiken
+@cindex tête de note, harpe sacrée
+@cindex notes profilées
+@cindex Aiken, tête de note
+@cindex harpe sacrée, tête de note
+
+@funindex \key
+@funindex key
+@funindex \aikenHeads
+@funindex aikenHeads
+@funindex \sacredHarpHeads
+@funindex sacredHarpHeads
En notation profilée, le profil d'une tête de note correspond à la
fonction harmonique de cette note dans la gamme. Ce style de notation
était très en vogue dans les recueils de chansons américains du XIXe
-siècle.
+siècle. Voici comment procéder :
-Des notes profilées sont produites après activation de
-@code{\aikenHeads} ou @code{\sacredHarpHeads}, selon le style.
-
-@lilypond[verbatim,relative=1,fragment]
- \aikenHeads
- c8 d4 e8 a2 g1
- \sacredHarpHeads
- c8 d4. e8 a2 g1
+@lilypond[verbatim,quote,relative=2]
+\aikenHeads
+c, d e f g a b c
+\sacredHarpHeads
+c, d e f g a b c
@end lilypond
Les profils sont déterminés par la hauteur dans la gamme, le premier
-degré étant défini par la commande @code{\key}.
+degré étant défini par la commande @code{\key}.
-@funindex \key
-@funindex shapeNoteStyles
-@funindex \aikenHeads
-@funindex \sacredHarpHeads
-Les notes profilées sont mises en œuvre par la propriété
-@code{shapeNoteStyles}, dont les valeurs sont constituées d'une liste
-de symboles. Le n-ième élément indique le style à utiliser pour le
-n-ième degré de la gamme. Toutes les combinaisons sont possibles :
+@predefined
+@code{\aikenHeads},
+@code{\sacredHarpHeads}.
+@endpredefined
+
-@lilypond[verbatim,relative=1,fragment]
- \set shapeNoteStyles = #'#(cross triangle fa #f mensural xcircle diamond)
- c8 d4. e8 a2 g1
-@end lilypond
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{applying-note-head-styles-depending-on-the-step-of-the-scale.ly}
+
+Pour une liste exhaustive des styles de tête de note, consultez
+@ref{Styles de tête de note}.
+
+
+@seealso
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Manuel de notation :
+@ref{Note head styles}.
+
+Référence des propriétés internes :
+@rinternals{note-event},
+@rinternals{Note_heads_engraver},
+@rinternals{NoteHead},
+@rinternals{note-head-interface}.
@node Improvisation
@unnumberedsubsubsec Improvisation
@translationof Improvisation
-L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme
-allongée (@emph{slash}). Ces têtes de notes sont créées par
-l'adjonction du graveur @rinternals{Pitch_squash_engraver} au
-contexte @rinternals{Voice}, de telle sorte que la commande
+@cindex improvisation
+@cindex notes penchées
+@cindex note heads, improvisation
+@cindex note heads, slashed
-@example
-\set squashedPosition = #0
-\override NoteHead #'style = #'slash
-@end example
+@funindex \improvisationOn
+@funindex improvisationOn
+@funindex \improvisationOff
+@funindex improvisationOff
-@noindent
-active les notes penchées.
-
-Vous disposez des raccourcis @code{\improvisationOn} et son corollaire
-@code{\improvisationOff} pour cette séquence, comme l'illustre
-l'exemple ci dessous.
+L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme
+allongée (@emph{slash}). L'interprète jouera alors les notes qu'il
+veut, en respectant toutefois le rythme affiché. Ces têtes de notes sont
+créées ainsi :
-@lilypond[verbatim,ragged-right,quote]
+@lilypond[verbatim,quote,relative=2]
\new Voice \with {
- \consists Pitch_squash_engraver
-} \transpose c c' {
- e8 e g a a16(bes)(a8) g \improvisationOn
- e8
- ~e2~e8 f4 fis8
- ~fis2 \improvisationOff a16(bes) a8 g e
+ \consists "Pitch_squash_engraver"
+} {
+ e8 e g a a16( bes) a8 g
+ \improvisationOn
+ e8 ~
+ e2 ~ e8 f4 f8 ~
+ f2
+ \improvisationOff
+ a16( bes) a8 g e
}
@end lilypond
+
+
+@predefined
+@code{\improvisationOn},
+@code{\improvisationOff}.
+@endpredefined
+
+
+@seealso
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{Pitch_squash_engraver},
+@rinternals{Voice},
+@rinternals{RhythmicStaff}.
+
+
@end example
Notez cependant que la commande @code{\override} peut tout de même être appliquée
-à @code{NoteMusicalPaperColumn} et @code{PaperColumn} dans un bloc @code{\context}.
+à @code{NonMusicalPaperColumn} et @code{PaperColumn} dans un bloc @code{\context}.
@end itemize
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 33ba8d40c3493011a4b39ab8b1369701f8013bd6
+ Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c \version "2.12.0"
-@c Translators: Valentin Villenave
+@c Translators: Valentin Villenave, Jean-Charles Malahieude
@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Répétitions et reprises
@cindex reprises
@cindex répétitions
+
La répétition est une notion essentielle en musique, et il existe de
nombreuses façons de mettre en œuvre et noter ce concept. LilyPond
prend en charge les types de répétition suivants :
@item volta
Le passage répété n'est pas développé , mais il est encadré par des
barres de reprises, et peut se terminer par plusieurs fins
-alternatives --- ou @emph{volte} --- imprimées de gauche à droite sous
+alternatives -- ou @emph{volte} -- imprimées de gauche à droite sous
des crochets. Lorsque la répétition commence au début de la pièce,
aucune barre de reprise n'est gravée au début de la partition. Il
s'agit de la notation courante des reprises avec fins alternatives.
@item unfold
La musique répétée est développée dans la partition autant de fois
qu'indiqué. Ceci est particulièrement utile pour de la musique
-répétitive.
+répétitive.
@item percent
Des barres obliques ou signes de pourcentage indiquent la répétition
-de temps ou de mesures, imprimés sous la forme de signes de
-pourcentage.
+de temps ou de mesures.
@item tremolo
Ce type permet de réaliser des trémolos sous forme de liens de croches.
+
@end table
@menu
-* Répétition d'un long passage::
-* Autres types de répétition::
+* Répétition d'un long passage::
+* Autres types de répétition::
@end menu
@node Répétition d'un long passage
@subsection Répétition d'un long passage
@translationof Long repeats
-Cette section présente la syntaxe des répétitions longues ---
+Cette section présente la syntaxe des répétitions longues --
c'est-à-dire plusieurs mesures. Ces répétitions peuvent prendre deux
formes : encadrées par des barres de reprises, ou bien développées
dans la partition. Les barres et autres signe de reprise peuvent être
contrôlés manuellement.
@menu
-* Types de répétitions::
-* Syntaxe des répétitions::
-* Commandes de reprise manuelles::
+* Répétitions courantes::
+* Indications de reprise manuelles::
+* Répétitions explicites::
@end menu
-@cindex barres de reprise
-@cindex reprise
-@cindex répétition avec barres de reprise
@cindex volta
-@cindex fois, pre
+@cindex fois, première
@cindex première fois
@cindex seconde fois
-@funindex \repeat
-
-
-@node Types de répétitions
-@unnumberedsubsubsec Types de répétitions
-@translationof Repeat types
-
-On peut indiquer des répétitions des façons suivantes :
-
-@table @code
-@item bar
-baz
-@end table
-
-@node Syntaxe des répétitions
-@unnumberedsubsubsec Syntaxe des répétitions
-@translationof Repeat syntax
+@cindex reprise courante
+@cindex reprise avec alternative
+@cindex fin alternative
-@cindex volta
+@funindex \repeat
+@funindex \alternative
+@funindex \partial
-Tous les différents types de reprise se spécifient dans
-LilyPond avec une même construction syntaxique, qui est :
+@node Répétitions courantes
+@unnumberedsubsubsec Répétitions courantes
+@translationof Normal repeats
-@example
-\repeat @var{type_de_la_reprise} @var{nombre_de_répétitions} @var{expression_à_répéter}
-@end example
+On peut indiquer une répétition de la façon suivante :
-On peut ajouter, pour indiquer une fin alternative :
-@funindex \alternative
@example
-\alternative @{
- @var{alternative1}
- @var{alternative2}
- @var{alternative3}
- @dots{}
-@}
+\repeat volta @var{nombre_de_fois} @var{expression_musicale}
@end example
@noindent
-chaque @var{alternative} étant une expression musicale. Si l'on donne
-trop peu d'alternatives en regard du nombre de fois où le passage doit
-être rejoué, la première alternative sera jouée plusieurs fois.
-
+où @var{expression_musicale} représente ce qui doît être répété. On
+peut ajouter une fin alternative à l'aide de la commande
+@code{\alternative}. Chaque @var{alternative} étant une expression
+musicale en elle-même, il faudra les regrouper par des accolades. Si
+l'on donne trop peu d'alternatives en regard du nombre de fois où le
+passage doit être rejoué, la première alternative sera jouée plusieurs
+fois.
Les reprises courantes s'indiquent comme ceci :
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-c1
+@lilypond[verbatim,quote,relative=2]
\repeat volta 2 { c4 d e f }
-\repeat volta 2 { f e d c }
+c2 d
+\repeat volta 2 { d4 e f g }
@end lilypond
Et avec des fins alternatives :
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
+@lilypond[verbatim,quote,relative=2]
+\repeat volta 4 { c4 d e f }
+\alternative {
+ { d2 e }
+ { f2 g }
+}
c1
-\repeat volta 2 {c4 d e f}
-\alternative { {d2 d} {f f,} }
@end lilypond
+@warning{Une clause @code{@bs{}relative} ne doît jamais se trouver à
+l'intérieur d'une section @code{@bs{}repeat} : vous aurez
+immanquablement des portées parasites. Voir
+@rlearning{Apparition d'une portée supplémentaire}.}
+
+@cindex reprise avec levée
+@cindex levée dans une reprise
+@cindex anacrouse et reprise
+@cindex reprise et anacrouse
+
+@funindex \partial
+
Il est possible de créer des répétitions avec une levée.
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-\new Staff {
- \partial 4 e |
- \repeat volta 4 { c2 d2 | e2 f2 | }
- \alternative { { g4 g g e } { a a a a | b2. } }
+@lilypond[verbatim,quote,relative=2]
+\partial 4
+e |
+\repeat volta 4 { c2 d | e2 f | }
+\alternative {
+ { g4 g g e }
+ { a4 a a a | b2. }
}
@end lilypond
@noindent
ou
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-\new Staff {
- \partial 4
- \repeat volta 4 { e | c2 d2 | e2 f2 | }
- \alternative { { \partial 4*3 g4 g g } { a a a a | b2. } }
+@lilypond[verbatim,quote,relative=2]
+\partial 4
+\repeat volta 4 { e4 | c2 d | e2 f | }
+\alternative {
+ { \partial 4*3 g4 g g }
+ { a4 a a a | b2. }
}
@end lilypond
-
+@cindex reprise et liaison de prolongation
+@cindex alternative et liaison de prolongation
+@cindex liaison de prolongationt et reprise
+@cindex liaison de prolongation et alternative
@funindex \repeatTie
+
Des liaisons de tenue peuvent être ajoutées à toute alternative :
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
+@lilypond[verbatim,quote,relative=2]
c1
-\repeat volta 2 {c4 d e f ~ }
-\alternative { {f2 d} {f\repeatTie f,} }
-@end lilypond
-
-
-On peut raccourcir les crochets indiquant les fins alternatives,
-en définissant la propriété @code{voltaSpannerDuration}. Dans
-l'exemple suivant, le crochet ne se prolonge que sur une mesure
-à 3/4.
-
-@lilypond[verbatim,ragged-right,quote]
-\relative c''{
- \time 3/4
- c c c
- \set Staff.voltaSpannerDuration = #(ly:make-moment 3 4)
- \repeat volta 5 { d d d }
- \alternative { { e e e f f f }
- { g g g } }
+\repeat volta 2 { c4 d e f ~ }
+\alternative {
+ { f2 d }
+ { f2\repeatTie f, }
}
@end lilypond
-Si l'on souhaite à la fois terminer une ligne par une double barre et
-débuter la ligne suivante avec une section reprise, on peut utiliser
-@example
-@dots{} \bar "||:" \break
-\repeat volta 2 @{ @dots{}
-@end example
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{shortening-volta-brackets.ly}
-Consultez @ref{Barres de mesure} pour plus d'informations.
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{adding-volta-brackets-to-additional-staves.ly}
@seealso
-Program reference: @rinternals{VoltaBracket},
-@rinternals{RepeatedMusic},
-@rinternals{VoltaRepeatedMusic}, et
-@rinternals{UnfoldedRepeatedMusic}.
+Glossaire musicologique :
+@rglos{repeat},
+@rglos{volta}.
+Manuel de notation :
+@ref{Barres de mesure},
+@ref{Modification des greffons de contexte}.
-Exemples
+Morceaux choisis :
+@rlsr{Repeats}.
-Les crochets précédant une reprise s'impriment d'ordinaire seulement
-au-dessus de la portée du haut. On peut ajuster cela en déplaçant le
-graveur @code{Volta_engraver} vers les contextes de portée
-(@code{Staff}) qui doivent comporter ces crochets ;
-voir @ref{Modification des greffons de contexte}, et @rlsr{Repeats}.
+Référence eds propriétés internes :
+@rinternals{VoltaBracket},
+@rinternals{RepeatedMusic},
+@rinternals{VoltaRepeatedMusic},
+@rinternals{UnfoldedRepeatedMusic}.
@knownissues
@cindex reprises ambigües
+@cindex reprises imbriquées
+@cindex imbrication de reprises
+@cindex numéro de mesure et reprises
+@cindex reprise et liaison
+@cindex liaison et reprise
Des reprises imbriquées telles que
@code{\partial}. De même, aucune liaison (de tenue ou autre)
n'est répétée.
-Les crochets qui indiquent les alternatives ne sont pas alignés
-verticalement.
+@node Indications de reprise manuelles
+@unnumberedsubsubsec Indications de reprise manuelles
+@translationof Manual repeat marks
-@node Commandes de reprise manuelles
-@unnumberedsubsubsec Commandes de reprise manuelles
-@translationof Manual repeat commands
+@cindex reprise manuelle
@funindex repeatCommands
+@funindex start-repeat
+
+@warning{Les méthodes présentées dans les lignes qui suivent ne
+devraient servir qu'à indiquer des constructions de répétitions
+inhabituelles. En règle générale, il vaut mieux recourrir à la fonction
+@code{\\repeat} pour créer une reprise, ou bien insérer la barre de
+mesure adéquate. Pour plus d'information, voir le chapitre
+@ref{Barres de mesure}.}
La propriété @code{repeatCommands} sert à contrôler la mise en forme des
reprises. On la définit par une suite de commandes de reprise Scheme.
-@table @asis
-@item @code{start-repeat}
+@table @code
+@item start-repeat
Pour imprimer une barre de reprise @code{|:}
-@item @code{end-repeat}
-Pour imprimer une barre de reprise @code{:|}
+@lilypond[verbatim,quote,relative=2]
+c1
+\set Score.repeatCommands = #'(start-repeat)
+d4 e f g
+c1
+@end lilypond
-@item @code{(volta @var{texte})}
-Pour imprimer un crochet indiquant une alternative. L'argument
-@var{texte} mentionné dans le crochet peut être n'importe quelle chaîne
-de caractères ou indication textuelle --- voir @ref{Mise en forme du texte}.
-Attention cependant à changer la police, car la police employée par
-défaut pour les chiffres ne contient aucun caractère alphabétique.
+Traditionnellement, on n'imprime pas de signe de reprise en début de
+morceau.
-@item @code{(volta #f)}
-Pour terminer un crochet indiquant une alternative.
-@end table
+@item end-repeat
+Pour imprimer une barre de reprise @code{:|}
-@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-c4
- \set Score.repeatCommands = #'((volta "93") end-repeat)
-c4 c4
- \set Score.repeatCommands = #'((volta #f))
-c4 c4
+@lilypond[verbatim,quote,relative=2]
+c1
+d4 e f g
+\set Score.repeatCommands = #'(end-repeat)
+c1
@end lilypond
+@item (volta @var{nombre}) ... (volta #f)
+Pour obtenir un crochet indiquant le numéro de l'alternative. Pour que
+le crochet s'imprime effectivement, il faut specifier explicitement
+l'endroit où il doît se terminer.
-@seealso
-Référence du programme : @rinternals{VoltaBracket},
-@rinternals{RepeatedMusic},
-@rinternals{VoltaRepeatedMusic}, et
-@rinternals{UnfoldedRepeatedMusic}.
-
-
-@node Autres types de répétition
-@subsection Autres types de répétition
-@translationof Other repeats
+@lilypond[verbatim,quote,relative=2]
+f4 g a b
+\set Score.repeatCommands = #'((volta "2"))
+g4 a g a
+\set Score.repeatCommands = #'((volta #f))
+c1
+@end lilypond
-@menu
-* Répétition en trémolo::
-* Subdivision de trémolos::
-* Répétitions de mesure::
-@end menu
+@end table
-@node Répétition en trémolo
-@unnumberedsubsubsec Répétition en trémolo
-@translationof Tremolo repeats
+Plusieurs commande de reprise peuvent intervenir au même moment :
-@cindex ligatures de trémolo
-@cindex trémolo, ligatures de
+@lilypond[verbatim,quote,relative=2]
+f4 g a b
+\set Score.repeatCommands = #'((volta "2, 5") end-repeat)
+g4 a g a
+c1
+\set Score.repeatCommands = #'((volta #f) (volta "95") end-repeat)
+b1
+\set Score.repeatCommands = #'((volta #f))
+@end lilypond
-On peut placer une notation de trémolo entre deux notes, avec la
-commande @code{\repeat} suivie du style trémolo :
-@lilypond[quote,verbatim,ragged-right]
-\new Voice \relative c' {
- \repeat tremolo 8 { c16 d16 }
- \repeat tremolo 4 { c16 d16 }
- \repeat tremolo 2 { c16 d16 }
+@cindex alternative et texte
+@cindex texte et alternative
+
+Le crochet indiquant une alternative peut contenir aussi du texte. Il
+peut s'agir d'un ou plusieurs nombres ou bien d'une indication textuelle
+(@emph{markup}) -- voir @ref{Mise en forme du texte}. Le plus simple,
+dans le cas d'une indication textuelle, est de tout d'abord définir ce
+@code{markup}, puis de l'inclure dans une liste Scheme.
+
+@lilypond[verbatim,quote]
+voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
+\relative c'' {
+ c1
+ \set Score.repeatCommands = #(list(list 'volta voltaAdLib) 'start-repeat)
+ c4 b d e
+ \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat)
+ f1
+ \set Score.repeatCommands = #'((volta #f))
}
@end lilypond
-On peut aussi indiquer un trémolo sur une seule note, qu'il faudra
-alors laisser sans accolades.
+@snippets
-@lilypond[quote,verbatim,ragged-right]
-\repeat tremolo 4 c'16
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
-La subdivision des trémolos aboutit à un résultat semblable : voir
-@ref{Subdivision de trémolos}.
+@seealso
+Manuel de notation :
+@ref{Barres de mesure},
+@ref{Mise en forme du texte}.
+Morceaux choisis :
+@rlsr{Repeats}.
-@seealso
-Dans ce manuel : @ref{Subdivision de trémolos}, @ref{Répétitions et reprises}.
+Référence des propriétés internes :
+@rinternals{VoltaBracket},
+@rinternals{RepeatedMusic},
+@rinternals{VoltaRepeatedMusic}.
-Référence du programme : @rinternals{Beam}, @rinternals{StemTremolo}.
+@node Répétitions explicites
+@unnumberedsubsubsec Répétitions explicites
+@translationof Written-out repeats
-@node Subdivision de trémolos
-@unnumberedsubsubsec Subdivision de trémolos
-@translationof Tremolo subdivisions
+@cindex musique répétitive
+@cindex reprise, expansion
+@cindex expansion de reprise
-@cindex trémolo, indication de
-@funindex tremoloFlags
+@funindex \repeat unfold
+@funindex unfold
-Un trémolo peut être indiqué sur une seule note, en la faisant suivre
-de deux points et d'un nombre :
+Adjoindre à la commande @code{\repeat} l'opion @code{unfold} permet de
+s'affranchir de ressaisir de la musique répétitive. En voici la
+syntaxe :
-@code{note:}[@var{nombre}].
+@example
+\repeat unfold @var{nombre_de_fois} @var{expression_musicale}
+@end example
-Le nombre en question correspond à la valeur de la subdivision ;
-il doit être au moins de 8, auquel cas la hampe sera barrée par un
-seul trait de ligature. Si ce nombre est omis, la dernière valeur ---
-telle que mémorisée dans @code{tremoloFlags} --- sera utilisée.
+@noindent
+Le contenu de @var{expression_musicale} sera donc expansé autant de fois
+que stipulé par @var{nombre_de_fois}.
-@lilypond[quote,ragged-right,verbatim,fragment]
-c'2:8 c':32 | c': c': |
+@lilypond[verbatim,quote,relative=2]
+c1
+\repeat unfold 2 { c4 d e f }
+c1
@end lilypond
+Une répétition expansée peut aussi avoir une fin alternative. Si
+l'on donne trop peu d'alternatives en regard du nombre de fois où le
+passage doit être rejoué, la première alternative sera jouée plusieurs
+fois.
-@knownissues
-
-Les trémolos entrés de cette manière ne sont pas rendus dans
-le fichier MIDI.
+@lilypond[verbatim,quote,relative=2]
+c1
+\repeat unfold 2 { g4 f e d }
+ \alternative {
+ { cis2 g' }
+ { cis,2 b }
+ }
+c1
+@end lilypond
@seealso
-Dans ce manuel : @ref{Répétition en trémolo}.
+Morceaux choisis :
+@rlsr{Repeats}.
-Référence du programme : @rinternals{StemTremolo}.
+Référence des propriétés internes :
+@rinternals{RepeatedMusic},
+@rinternals{UnfoldedRepeatedMusic}.
+@node Autres types de répétition
+@subsection Autres types de répétition
+@translationof Short repeats
+
+Nous abordons ici les reprises de courte durée. Il en existe deux
+formes, à savoir la répétition d'une même note sur quelques mesures --
+représentée par une barre oblique ou le signe pourcent -- et les
+trémolos.
+
+@menu
+* Répétitions de mesure::
+* Répétitions en trémolo::
+@end menu
+
@node Répétitions de mesure
@unnumberedsubsubsec Répétitions de mesure
@translationof Measure repeats
-@cindex percent repeats
-@cindex measure repeats
+@cindex pourcent, répétition
+@cindex mesure, répétition de
+@cindex répétition, pourcent
+@cindex répétition de mesure
+@cindex répétition courte
+
+@funindex \repeat percent
+@funindex percent
Le style de @qq{reprise en pourcent} sert à répéter une séquence de
notes. Elle sera imprimée une fois, puis remplacée par un symbole
spécial. Les séquences d'une ou deux mesures sont remplacées par un
symbole qui ressemble au symbole de pourcentage, tandis que les
séquences inférieures à une mesure sont remplacées par une barre
-oblique. Toutes ces répétitions doivent être déclarées dans un contexte
-@code{Voice}.
+oblique.
-@lilypond[quote,verbatim,ragged-right]
-\new Voice \relative c' {
- \repeat percent 4 { c4 }
- \repeat percent 2 { c2 es2 f4 fis4 g4 c4 }
-}
-@end lilypond
+@example
+@code{\repeat percent @var{nombre} @var{musicexpr}}
+@end example
-Les répétitions de plus de 2 mesures sont surmontées d'un compteur,
-si l'on assigne @emph{vrai} (lettre @q{t}) à la propriété
-@code{countPercentRepeats}.
+@noindent
+où @var{musicexpr} est l'expression musicale à répéter.
-@lilypond[relative=2,fragment,quote,verbatim,ragged-right]
-\new Voice {
-\set countPercentRepeats = ##t
- \repeat percent 4 { c1 }
-}
+@lilypond[verbatim,quote,relative=2]
+\repeat percent 4 { c4 }
+\repeat percent 2 { b4 a g f }
+\repeat percent 2 { c2 es | f4 fis g c | }
@end lilypond
-Des symboles de pourcentage isolés peuvent aussi être obtenus, au
-moyen d'un silence multi-mesures dont on modifie l'aspect :
+@snippets
-@lilypond[fragment,verbatim,quote]
-\override MultiMeasureRest #'stencil
- = #ly:multi-measure-rest::percent
-R1
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{percent-repeat-counter.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{percent-repeat-count-visibility.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{isolated-percent-repeats.ly}
@seealso
-Référence du programme : @rinternals{RepeatSlash},
-@rinternals{PercentRepeat}, @rinternals{DoublePercentRepeat},
+Glossaire musicologique :
+@rglos{percent repeat},
+@rglos{simile}.
+
+Morceaux choisis :
+@rlsr{Repeats}.
+
+Référence des propriétés internes :
+@rinternals{RepeatSlash},
+@rinternals{PercentRepeat},
+@rinternals{DoublePercentRepeat},
@rinternals{DoublePercentRepeatCounter},
@rinternals{PercentRepeatCounter},
@rinternals{PercentRepeatedMusic}.
+
+@knownissues
+
+LilyPond ne dispose que de trois signes différents pour indiquer une
+répétition @qq{en pourcent} : une simple barre oblique qui représente un
+seul temps quelle que soit la durée des notes répétées ; une barre
+oblique simple entourée de points qui représente une mesure entière ;
+une double barre oblique entourée de points et placée sur la barre de
+mesure pour indiquer une répétition de deux mesures.
+
+
+@node Répétitions en trémolo
+@unnumberedsubsubsec Répétitions en trémolo
+@translationof Tremolo repeats
+
+@cindex trémolo
+@cindex trémolo, ligatures de
+
+@funindex \repeat tremolo
+@funindex tremolo
+
+Il y a deux formes de trémolo : la répétition alernative de deux notes
+ou accords, et la répétition rapide d'une seule note ou d'un accord.
+Lorsqu'il est constitué d'une alternance répétitive, le trémolo
+s'indique en ajoutant des barres de ligature entre les deux notes ou
+accords concernés. Lorsqu'il s'agit d'une répétition rapide, des barres
+de ligature penchées sont ajoutée à la note en question.
+
+On peut placer une notation de trémolo entre deux notes, avec la
+commande @code{\repeat} suivie du style trémolo :
+
+@lilypond[quote,verbatim,relative=2]
+\repeat tremolo 8 { c16 d }
+\repeat tremolo 6 { c16 d }
+\repeat tremolo 2 { c16 d }
+@end lilypond
+
+La syntaxe de @code{\repeat tremolo} requiert espressément deux notes
+encadrées par des accolades, et le nombre de répétitions exprimé en
+durée d'une note (pointée ou non). Ainsi, dans l'exemple ci-dessus,
+@w{@code{\repeat tremolo 7}} est valide car correspond à une note
+doublement pointée, à l'inverse de @code{\repeat tremolo 9}.
+
+La durée d'un trémolo est égale à la durée de l'expression entre
+accolades multipliée par le nombre de fois à répéter :
+@code{\repeat@tie{}tremolo@tie{}8@tie{}@{@tie{}c16@tie{}d16@tie{}@}}
+correspond donc à la valeur d'une ronde, et sera représenté par deux
+rondes séparées par des barres de trémolo.
+
+On peut indiquer de la même manière un trémolo sur une seule note, qu'il
+faudra alors laisser sans accolades :
+
+@lilypond[quote,verbatim,ragged-right]
+\repeat tremolo 4 c'16
+@end lilypond
+
+
+@cindex trémolo, indication de
+@funindex tremoloFlags
+@funindex :
+
+Le même résultat s'obtient en faisant suivre la note considérée
+de deux points et d'un nombre (@w{@code{note:}[@var{nombre}]}).
+Le nombre en question correspond à la valeur de la subdivision ;
+il doit être au moins de 8, auquel cas la hampe sera barrée par un
+seul trait de ligature. Si ce nombre est omis, la dernière valeur --
+telle que mémorisée dans @code{tremoloFlags} -- sera utilisée.
+
+@lilypond[quote,verbatim,relative=2]
+c2:8 c:32
+c: c:
+@end lilypond
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{cross-staff-tremolos.ly}
+
+
+@seealso
+Morceaux choisis :
+@rlsr{Repeats}.
+
+@cindex tremolo, cross-staff
+@cindex cross-staff tremolo
+
+@knownissues
+
+Les trémolos distribués sur plusieurs portées peuvent amener des
+résultat inespérés.
+
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
+ Translation of GIT committish: 7b70644b95f383b4281e9ffa146d315d2ada11d3
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
Dans les modes de notes, d'accords et de paroles, les durées sont
écrites avec des chiffres et des points : les durées sont indiquées par
leur valeur fractionnaire par rapport à la durée d'une ronde. Une
-noire, par exemple, qui équivaut à un 1/4 de ronde --- @emph{quarter note}
-en anglais --- s'écrit @code{4}, alors qu'une blanche ---
-@emph{half-note}, 1/2 ronde --- s'écrit @code{2}. Pour des notes plus
+noire, par exemple, qui équivaut à un 1/4 de ronde -- @emph{quarter note}
+en anglais -- s'écrit @code{4}, alors qu'une blanche --
+@emph{half-note}, 1/2 ronde -- s'écrit @code{2}. Pour des notes plus
longues qu'une ronde, vous devrez utiliser les commandes @code{\longa}
pour une longue, et @code{\breve} pour une brève, aussi appelée carrée.
-Des durées plus courtes que la quintuple-croche --- 1/128 de ronde ---
+Des durées plus courtes que la quintuple-croche -- 1/128 de ronde --
sont possibles, à condition de les ligaturer.
@c Two 64th notes are needed to obtain beams
@funindex \times
@funindex times
-Les nolets --- triolets, quintolets, etc. --- sont obtenus en
+Les nolets -- triolets, quintolets, etc. -- sont obtenus en
multipliant toutes les durées d'une expression musicale par une
fraction.
@funindex tupletNeutral
Des commandes prédéfinies permettent de déroger au positionnement
-automatique du crochet en surplomb ou au-dessous des notes --- voir le
+automatique du crochet en surplomb ou au-dessous des notes -- voir le
chapitre @ref{Direction et positionnement}.
Les nolets peuvent être imbriqués ; par exemple,
@cindex durées, échelonnement
Vous pouvez altérer la durée des notes, silences ou accords en leur
-joignant une fraction @var{N/M}, donnant @qq{@code{*}@var{N/M}} --- ou
+joignant une fraction @var{N/M}, donnant @qq{@code{*}@var{N/M}} -- ou
@qq{@code{*}@var{N}} si @var{M=1}. Ceci ne modifiera en rien l'apparence
des notes ou silences produits, mais affectera le rendu MIDI.
@end lilypond
@noindent
-Cette technique est tout à fait appropriée à la notation polymétrique ---
+Cette technique est tout à fait appropriée à la notation polymétrique --
voir @ref{Notation polymétrique}.
Lorsque l'on doit lier de nombreuses notes sur plusieurs mesures, il
devient plus facile d'avoir recours à la division automatique des notes
---- voir @ref{Découpage automatique des notes}. Ce procédé divise
+-- voir @ref{Découpage automatique des notes}. Ce procédé divise
automatiquement les notes trop longues, et les lie par-delà les barres
de mesure.
@funindex tieNeutral
Le positionnement vertical des liaisons de prolongation peut être affiné
---- voir à ce sujet les @qq{commandes prédéfinies} et, pour de plus
+-- voir à ce sujet les @qq{commandes prédéfinies} et, pour de plus
amples détails, @ref{Direction et positionnement}.
@cindex liaison de prolongation, apparence
@funindex \skip
@funindex skip
-Un silence invisible --- que l'on pourrait appeler un @qq{saut} ---
+Un silence invisible -- que l'on pourrait appeler un @qq{saut} --
peut être entré comme une note avec le nom de note @code{s} ou avec
@code{\skip@tie{}@var{durée}}
@end lilypond
Un @code{R} qui s'étend sur une seule mesure s'imprime tantôt comme
-une pause, tantôt comme une brève --- ou @qq{bâton de pause} --- et
+une pause, tantôt comme une brève -- ou @qq{bâton de pause} -- et
sera centré sur la mesure quelle qu'en soit la métrique :
@lilypond[quote,verbatim,fragment]
Par défaut, un silence multimesures sera répété sur autant de mesures
que nécessaire. Il peut aussi n'être imprimé qu'une seule fois,
-surplombé du nombre de mesures vides --- ou @qq{à compter} :
+surplombé du nombre de mesures vides -- ou @qq{à compter} :
@lilypond[quote,fragment,verbatim]
% Default behavior
Les barres de mesure et les numéros de mesure sont calculés
automatiquement, ce qui n'est pas souhaitable dans le cas d'une musique
-non mesurée --- les cadences, par exemple. Les commandes
+non mesurée -- les cadences, par exemple. Les commandes
@code{\cadenzaOn} et @code{\cadenzaOff} permettent de désactiver et de
rétablir la métrique automatique.
@funindex times
LilyPond gère les métriques composites, aussi bien de manière explicite
-que de manière détournée --- modification de l'indicateur de métrique
+que de manière détournée -- modification de l'indicateur de métrique
et échelonnement de la durée des notes.
@strong{@i{Portées aux métriques différentes, mesures d'égale longueur}}
argument à la propriété @code{timeSignatureFraction}. La durée des
notes sera enfin proratisée selon la métrique commune (voir
@ref{Métrique}) grâce à la fonction @code{\scaleDurations}, qui
-s'utilise tout comme la commande @code{\times} --- sans toutefois créer
+s'utilise tout comme la commande @code{\times} -- sans toutefois créer
de crochet de nolet (voir @ref{Changement d'échelle des durées}).
@cindex ligature et musique polymétrique
@knownissues
-Bien que toutes les durées --- particulièrement celles contenant des
-nolets --- ne puissent être exactement représentées avec des notes
+Bien que toutes les durées -- particulièrement celles contenant des
+nolets -- ne puissent être exactement représentées avec des notes
normales et des points, le graveur @code{Completion_heads_engraver}
n'insèrera pas de nolet.
@cindex mélodie, affichage du rythme seul
@cindex rythmique d'une mélodie
-Au moyen d'une portée rythmique --- @emph{rhythmic staff} en anglais ---
+Au moyen d'une portée rythmique -- @emph{rhythmic staff} en anglais --
on peut montrer seulement le rythme d'une mélodie : toutes les notes
sont ramenées à la même hauteur, sur une portée d'une seule ligne.
@end lilypond
Lorsque ce comportement automatisé n'est pas satisfaisant, on peut
-définir des groupements manuellement --- voir @ref{Barres de ligature manuelles}. Dans
-le cas où le groupe de notes en question contient un silence, il est
-@strong{impératif} d'indiquer explicitement les début et fin de la
-ligature.
+définir des groupements manuellement -- voir
+@ref{Barres de ligature manuelles}. Dans le cas où le groupe de notes
+en question contient un silence, il est @strong{impératif} d'indiquer
+explicitement les début et fin de la ligature.
Lorsque les ligatures automatiques ne sont pas nécessaires, il suffit de
-désactiver la fonctionnalité par un @code{\autoBeamOff} --- réactivation
+désactiver la fonctionnalité par un @code{\autoBeamOff} -- réactivation
par @code{\autoBeamOn} :
@lilypond[quote,relative=1,verbatim]
@funindex \set
@funindex set
-The placement of automatic beams is determined by the time signature.
-Three types of rules are used for determining the end of automatic
-beams: @emph{default} rules
-for the time signature, @emph{explicit} rules for the beam in the time
-signature, and the @emph{beatLength} for the time signature.
+La gestion automatisée des ligatures est directement liée à la métrique.
+La terminaison d'une ligature automatique peut se définir selon trois
+différents types de règles : des règles @emph{par défaut} relatives à la
+métrique, des règles @emph{explicites} pour la métrique en question, et
+des règles basées sur la @emph{pulsation} (@code{beatLength}).
Les règles déterminant le positionnement des ligatures automatiques
s'appliquent dans l'ordre suivant de priorité :
@itemize
-@item Une ligature explicite --- indiquée par @code{[@dots{}]} --- sera
+@item Une ligature explicite -- indiquée par @code{[@dots{}]} -- sera
toujours respectée ; sinon
@item si @code{\autoBeamOff} a été activé, il n'y aura pas de ligature ;
sinon
+@item si une règle explicite de terminaison a été définie pour un type
+de ligature dans la métrique en cours, c'est elle qui s'appliquera ; sinon
+
+@item if a default beam-ending rule is defined in the time signature,
+use it to group notes with beams, otherwise
+
@item utiliser la valeur de @code{beatLength} pour regrouper les notes
par des ligatures.
@i{@strong{Modification des ligatures selon la pulsation}}
-@code{beatLength} constituent tous deux des
-@strong{moments}, autrement dit des unités de durée musicale. La
-fonction Scheme @code{ly:make-moment} est tout particulièrement chargée
-de créer cette quantité de type @i{moment} --- pour plus d'information,
-consultez @ref{Gestion du temps}.
+La pulsation -- @emph{beatlength} en anglais -- découle directement de
+la métrique telle que définie par la commande @code{\time}. Elle est
+par défaut égale à un sur le dénominateur de la métrique.
-@code{beatGrouping} représente une liste d'entiers correspondant au
-nombre de pulsations de chaque groupe.
+@code{beatLength} constitue un @strong{moment}, autrement dit une unité
+de durée musicale. La fonction Scheme @code{ly:make-moment} est tout
+particulièrement chargée de créer cette quantité de type @i{moment} --
+pour plus d'information, consultez @ref{Gestion du temps}.
-@snippets
+Les règles de ligature et de subdivision sont enregistrées dans la
+propriété @code{beamSettings}. Ses valeurs par défaut, rangées par
+métrique et type de règle, sont contenues dans le fichier
+@code{scm/@/beam@/-settings@/.scm}.
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{grouping-beats.ly}
+La métrique est constituée d'une paire en langage Scheme -- p.ex.
+@w{@code{#'(4 . 4)}}.
+
+Le type de règle est soit @code{#'end} pour ce qui concerne les
+terminaisons, soit @code{#'subdivide} pour les subdivisions.
+
+Chaque règle, qu'il s'agisse de terminaison ou de subdivision, est
+constituée d'une liste de paires en langage Scheme (un @emph{alist} pour
+les puristes), qui indique le durée de base et sa règle de regroupement.
+
+@example
+#'((durée-type1 . groupement-1)
+ (durée-type2 . groupement-2)
+ (durée-type3 . groupement-3))
+@end example
+
+@var{durée-type} est soit constitué d'une paire indiquant la durée de
+base -- par exemple @w{@code{(1 . 16)}}, soit du caractère @code{*} pour
+indiquer une règle par défaut qui s'appliquera à toutes les ligatures en
+l'absence de règle explicite.
+
+@var{groupement} est constitué d'une liste Scheme qui indique le
+regroupement à effectuer. En ce qui concerne les règles par défaut --
+celles où la durée type est @code{*} -- le regroupement s'indique
+en terme de @code{beatLength} ; pour les règles explicites, en durée
+type.
+
+Les règles de ligature automatique se modifient à l'aide des commandes
+@code{\overrideBeamSettings} et @code{\revertBeamSettings}.
@lilypond[quote,relative=2,verbatim]
\time 5/16
c8^"(3+2)" c16 c8
@end lilypond
+Les effets de règles de ligature peuvent être restreints à un contexte
+particulier. En l'absence de régles particulières déterminées dans un
+contexte de niveau inférieur, les règles définies au niveau directement
+supérieur s'appliqueront.
+
@lilypond[quote, verbatim,relative=1]
\new Staff <<
\time 7/8
>>
@end lilypond
-
Lorsque plusieurs voix cohabitent sur une même portée et que les règles
de ligature doivent s'appliquer sans distinction, il faut spécifier que
ces règles affectent le contexte @code{Staff} :
@funindex revertBeamSettings
+Pour revenir aux règles de ligature par défaut, il suffit d'utiliser la
+commande @code{\revertBeamSettings}. Ses argument sont identiques à ceux
+fournis à @code{\overrideBeamSettings}, sans toutefois mentionner les
+règles de regroupement.
+
+@example
+\revertBeamSettings contexte métrique type-de-règle
+@end example
+
+
@lilypond[quote,verbatim,relative=2]
\time 4/4
\repeat unfold 16 {a16}
@rlsr{Rhythms}.
-@node Barres de mesure
-@subsection Barres de mesure
+@node Mesures
+@subsection Mesures
@translationof Bars
en respectant la métrique en vigueur.
Il est possible de forcer l'impression d'une barre de mesure spéciale,
-avec la commande @code{\bar} --- c'est d'ailleurs l'habitude en fin de
+avec la commande @code{\bar} -- c'est d'ailleurs l'habitude en fin de
morceau, où l'on voit une double barre :
@lilypond[quote,relative=1,verbatim]
@end example
@noindent
-Ceci insérera une barre de mesure invisible, et permettra --- sans pour
-autant le forcer --- de sauter de ligne à cet endroit, sans incrémenter
+Ceci insérera une barre de mesure invisible, et permettra -- sans pour
+autant le forcer -- de sauter de ligne à cet endroit, sans incrémenter
le numéro de mesure. Pour forcer le saut de ligne, référez-vous à
@ref{Sauts de ligne}.
temps annuler le comportement par défaut afin que les numéros puissent
être imprimés ailleurs qu'en début de ligne. Tout ceci est contrôlé par
la propriété @code{break-visibility} du @code{BarNumber}. Elle se
-compose de trois commutateurs --- définis à @qq{vrai} (@code{#t}) ou
-@qq{faux} (@code{#f}) --- pour spécifier si le numéro de mesure est
+compose de trois commutateurs -- définis à @qq{vrai} (@code{#t}) ou
+@qq{faux} (@code{#f}) -- pour spécifier si le numéro de mesure est
visible ou non. Les valeurs sont rangées dans l'ordre suivant :
@code{visible en fin de ligne}, @code{visible en cours de ligne},
@code{visible en début de ligne}. Voici comment imprimer partout les
@knownissues
Les numéros de mesure peuvent entrer en collision avec les crochets d'un
-@rinternals{StaffGroup}. La propriété @code{padding} --- décalage
---- de l'objet @rinternals{BarNumber} permet alors d'ajuster leur
+@rinternals{StaffGroup}. La propriété @code{padding} -- décalage
+-- de l'objet @rinternals{BarNumber} permet alors d'ajuster leur
positionnement.
@translationof Grace notes
@cindex ornements
+@cindex broderies
@cindex notes d'ornement
@cindex appoggiature
@cindex acciaccature
@funindex afterGrace
La commande @code{\afterGrace} sert à placer une petite note après une
-note réelle --- et non @emph{avant} comme d'ordinaire. Cette commande
+note réelle -- et non @emph{avant} comme d'ordinaire. Cette commande
requiert deux arguments : la note réelle, et la ou les petites notes qui
suivent.
@c TODO Add link to LSR snippet to add slash when available
La synchronisation des petites notes se fait de façon parfois
-surprenante, car les autres objets de la portée --- barres de mesure,
-armures, etc. --- sont eux aussi synchrones. Pensez-y lorsque vous
+surprenante, car les autres objets de la portée -- barres de mesure,
+armures, etc. -- sont eux aussi synchrones. Pensez-y lorsque vous
mélez des portées comprenant des petites notes et d'autres sans :
@lilypond[quote,relative=2,verbatim]
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 33ba8d40c3493011a4b39ab8b1369701f8013bd6
+ Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@c \version "2.12.0"
-@c Translators: Frédéric Chiasson, Valentin Villenave
+@c Translators: Frédéric Chiasson, Valentin Villenave, Jean-Charles Malahieude
@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@node Notes simultanées
@menu
* Notes en accords::
+* Expressions simultanées::
* Clusters::
@end menu
@translationof Chorded notes
@cindex accords
+@cindex chevrons
+@cindex hauteur relative et accords
+
+@funindex <
+@funindex >
+@funindex <...>
Un accord est formé en mettant une série de hauteurs entre @code{<}
et @code{>}. Un accord peut être suivi d'une durée et d'indications
d'articulation, comme une simple note.
-@lilypond[verbatim,ragged-right,fragment,quote,relative=1]
-<c e g>4 <c>8
+@lilypond[verbatim,quote,relative=1]
+<c e g>2 <c f a>4-> <e g c>-.
+@end lilypond
+
+Les accords peuvent être saisis en mode relatif. Dans un accord,
+l'octave de chaque hauteur saisie est fonction de la précédente, à
+l'exception de la première qui, elle, sera positionnée en fonction de la
+première hauteur mentionnée dans l'accord précédent.
+
+Pour plus d'information à propos des accords, voir
+@ref{Notation des accords}.
+
+
+@seealso
+Glossaire musical :
+@rglos{chord}.
+
+Manuel d'initiation :
+@rlearning{Combinaison de notes en accords}.
+
+Manuel de notation :
+@ref{Notation des accords}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+
+
+@node Expressions simultanées
+@unnumberedsubsubsec Expressions simultanées
+@translationof Simultaneous expressions
+
+Lorsqu'une ou plusieurs expressions musicales sont encadrées par des
+doubles chevrons, elles sont considérées comme étant simultanées. Si la
+première expression débute par une note unique ou si l'intégralité de
+l'expression simultanée est explicitement rattachée à une voix en
+particulier, elle sera placée sur une seule portée. Dans le cas
+contraire, les éléments d'une expression simultanée seront placés sur
+des portées distinctes.
+
+Voici deux exemples d'expression simultanée sur une même portée :
+
+@lilypond[quote,verbatim,relative=2]
+\new Voice { % explicit single voice
+ << { a4 b g2 } { d4 g c,2 } >>
+}
+@end lilypond
+
+@lilypond[quote,verbatim,relative=2]
+% single first note
+a << { a4 b g } { d4 g c, } >>
@end lilypond
-Pour plus d'information à propos des accords, voir @ref{Notation des accords}.
+Cette manière de procéder est utile lorsque les éléments de l'expression
+ont des rythmes identiques. Dès que vous tenterez d'attacher sur une
+même hampe des notes de durée différente, vous générerez des erreurs.
+
+Dans l'exemple suivant, l'expression simultanée génère implicitement
+plusieurs portées :
+
+@lilypond[quote,verbatim,relative=2]
+% no single first note
+<< { a4 b g2 } { d4 g2 c,4 } >>
+@end lilypond
+
+En pareil cas, des rythmes différents ne sont source d'aucun problème.
@node Clusters
@cindex cluster
-Un cluster indique un agrégat de sons. On peut le représenter par une
-plage limitée par un ambitus (notes extrêmes). On obtient une telle notation en
-appliquant la fonction @code{makeClusters} à une séquence d'accords,
-comme
-@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
-\makeClusters { <c e > <b f'> }
+@funindex \makeClusters
+@funindex makeClusters
+
+Un cluster indique un agrégat de sons. On peut le représenter par une
+plage limitée par un ambitus (notes extrêmes). On obtient une telle
+notation en appliquant la fonction @code{makeClusters} à une séquence
+d'accords, comme
+
+@lilypond[quote,relative=2,verbatim]
+\makeClusters { <g b>2 <c g'> }
@end lilypond
Des notes ordinaires et des clusters peuvent cohabiter sur une même
-portée, y compris simultanément --- en pareil cas, rien ne sera fait
+portée, y compris simultanément -- en pareil cas, rien ne sera fait
pour tenter d'empécher les chevauchements entre notes et clusters.
@seealso
-Référence du programme : @rinternals{ClusterSpanner},
-@rinternals{ClusterSpannerBeacon},
-@rinternals{Cluster_spanner_engraver}.
+Glossaire musicologique :
+@rglos{cluster}.
-Exemples : @rlsr{Simultaneous notes}.
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+Référence des propriétés internes :
+@rinternals{ClusterSpanner},
+@rinternals{ClusterSpannerBeacon},
+@rinternals{Cluster_spanner_engraver}.
@knownissues
Les expressions musicales du type @code{<< @{ g8 e8 @} a4 >>} ne
seront pas imprimées de façon acceptable. utilisez plutôt
-@code{<g a>8 <e a>8} .
+@code{<g a>8 <e a>8}.
+
+Dans la mesure où un cluster ne possède pas de hampe, il n'y a aucun
+moyen d'en connaître la durée ; cependant la longueur du signe imprimé
+dépend directement de la durée affectée aux accords qui le définissent.
+
+Seul un silence peut séparer deux clusters.
+
+Les clusters ne sont pas reproduits en MIDI.
@node Plusieurs voix
@translationof Multiple voices
@menu
-* Polyphonie basique::
+* Polyphonie sur une portée::
+* Styles de voix::
* Résolution des collisions::
* Regroupement automatique de parties::
* Saisie de musique en parallèle::
@end menu
-@node Polyphonie basique
-@unnumberedsubsubsec Polyphonie basique
-@translationof Basic polyphony
+@node Polyphonie sur une portée
+@unnumberedsubsubsec Polyphonie sur une portée
+@translationof Single-staff polyphony
-@cindex polyphonie
+@cindex polyphonie, portée simple
+@cindex voix
+@cindex paroles assignées à une voix
+
+@funindex \voiceOne
+@funindex voiceOne
+@funindex \voiceOne ... \voiceFour
+@funindex Voice
+@funindex \oneVoice
+@funindex oneVoice
+
+@strong{@i{Instanciation explicite des voix}}
La manière la plus facile d'entrer des fragments avec plus d'une voix
-sur une portée est d'entrer chaque voix comme une suite de notes
---- entre accolades : @code{@{...@}} --- puis de les combiner simultanément,
-en séparant les voix avec @code{\\}
+sur une portée est est la suivante :
-@funindex \\
+@lilypond[quote,relative=3,verbatim]
+\new Staff <<
+ \new Voice = "first"
+ { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
+ \new Voice= "second"
+ { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+>>
+@end lilypond
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
- c16 d e f
- <<
- { g4 f e | d2 e2 } \\
- { r8 e4 d c8 ~ | c b16 a b8 g ~ g2 } \\
- { s2. | s4 b4 c2 }
- >>
-}
+@noindent
+Vous constaterez que les voix sont créées explicitement et qu'elles
+sont nommées. Les commandes @code{\voiceOne} @dots{} @code{\voiceFour}
+déterminent les voix de telle sorte que les première et troisième
+auront des hampes vers le haut, et les deuxième et quatrième vers le
+bas. D'utre prt, les notes des troisièmre et quatrième voix seront
+quelque peu décalées, tout comme leurs silences, afin d'éviter les
+collisions. La commande @code{\oneVoice} permet de retrouver les
+réglages par défaut.
+
+@strong{@i{Polyphonie temporaire}}
+
+Un fragement temporairement polyphonique se construit de la manière
+suivante :
+
+@example
+<< @{ \voiceOne ... @}
+ \new Voice @{ \voiceTwo ... @}
+>> \oneVoice
+@end example
+
+@noindent
+En fait, la première expression d'une polyphonie temporaire reste dans
+le même contexte @code{Voice} que celui existant auparavant et qui
+perdurera àprès ce fragment. Les autres expressions entre doubles
+chevrons seront assignées à des voix temporaires distinctes. C'est la
+raison pour laquelle les paroles qui suivaient la voix avant la
+polyphonie continueront à le faire durant ce passage polyphonique et
+après lui.
+
+@lilypond[quote, verbatim, relative=2]
+<<
+ \new Voice = "melody" {
+ a4
+ <<
+ {
+ \voiceOne
+ g f
+ }
+ \new Voice {
+ \voiceTwo
+ d2
+ }
+ >>
+ \oneVoice
+ e4
+ }
+ \new Lyrics \lyricsto "melody" {
+ This is my song.
+ }
+>>
@end lilypond
-Le séparateur permet aux contextes @rinternals{Voice}@footnote{Ces
-voix polyphoniques sont parfois appelées @qq{couches} ou @qq{calques} dans
-d'autres logiciels de notation.}
+@noindent
+Vous remarquerez que les commandes @code{\voiceOne} et @code{\voiceTwo}
+permettent d'obtenir des réglages différents pour chacune des voix.
+
+@strong{@i{La construction avec un double antislash}}
+
@cindex couches
@cindex calques
-d'être identifiés. Les contextes de voix portent les noms @code{"1"},
-@code{"2"}, etc. Dans chacun de ces contextes, la direction verticale
-des liaisons, hampes, etc. est réglée de manière appropriée.
-
-Ces voix sont toutes distinctes de la voix qui contient les notes en
-dehors de la construction @code{<< \\ >>}. On doit le prendre en compte
-lorsqu'on fait des changements au niveau des voix. Cela veut aussi dire
-que les liaisons de prolongation et d'articulation ne peuvent ni entrer
-ni sortir de la construction @code{<< \\ >>}. À l'inverse, des voix
-parallèles venant de constructions @code{<< \\ >>} séparées sur la même
-portée sont dans les mêmes voix. Voici le même exemple, avec des
-couleurs et têtes de note différentes pour chaque voix. Notez que le
-changement de style de tête de note n'affecte pas l'intérieur des
-constructions @code{<< \\ >>}. Aussi, le changement à la deuxième voix
-dans la première construction @code{<< \\ >>} l'affecte aussi dans la
-deuxième construction @code{<< \\ >>}, et la voix est liée entre les
-deux constructions.
+@funindex \\
+
+Une construction de la forme @code{<< @{...@} \\ @{...@} >>}, dans
+laquelle plusieurs expressions sont séparées par des doubles obliques
+inversées, se comporte différemment de celle sans séparateurs :
+@strong{tous} les membres de cette contruction seront assignés à de
+nouveaux contextes de voix. Ces contextes de voix, créés implicitement,
+portent les noms @code{"1"}, @code{"2"}, etc. Dans chacun de ces
+contextes, la direction verticale des liaisons, hampes, etc. est réglée
+de manière appropriée. En voici un exemple :
+
+@lilypond[quote,relative=3,verbatim]
+<<
+ { r8 r16 g e8. f16 g8[ c,] f e16 d }
+ \\
+ { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+>>
+@end lilypond
+
+Cette syntaxe peut être utilisée dans la mesure où la création puis la
+disparition de voix temporaires sont sans conséquence. Les réglages de
+ces voix créées implicitement sont les même que si elles avaient été
+créées à l'aide des commandes @code{\voiceOne} à @code{\voiceFour}, dans
+leur ordre d'apparition.
+
+Dans l'exemple qui suit, la voix intermédiaire à des hampes vers le
+haut. Nous la plaçons donc en troisième position, de telle sorte
+qu'elle adopte les réglages de @code{\voiceThree} qui correspondent à ce
+que nous voulons. Grâce à des espaces invisibles, nous évitons de
+surcharger la portée avec des demis soupirs.
+
+@lilypond[quote,relative=3,verbatim]
+<<
+ { r8 g g g g f16 ees f8 d }
+ \\
+ { ees,8 r ees r d r d r }
+ \\
+ { d'8 s c s bes s a s }
+>>
+@end lilypond
+
+En dehors des cas les plus simples, nous vous invitons à toujours créer
+les contextes de voix de manière explicite. Voir à ce sujet
+@rlearning{Contextes et graveurs} et
+@rlearning{Instanciation explicite des voix}.
+
+@strong{@i{Identité rythmique}}
+
+Lorsque l'on doît saisir des fragments de musique parallèle qui ont le
+même rythme, on peut les combiner dans un contexte de voix unique et par
+voie de conséquence former des accords. Il suffit pour cela de les
+regrouper dans une construction de musique simultanée simple au sein
+d'une voix explicite :
+
+@lilypond[quote,relative=2,verbatim]
+\new Voice <<
+ { e4 f8 d e16 f g8 d4 }
+ { c4 d8 b c16 d e8 b4 }
+>>
+@end lilypond
+
+Prenez garde que les différents éléments doivent impérativement avoir la
+même structure rythmique, sous peine de ligature aléatoire et de
+messages d'avertissement.
+
+
+@predefined
+@code{\voiceOne},
+@code{\voiceTwo},
+@code{\voiceThree},
+@code{\voiceFour},
+@code{\oneVoice}.
+@endpredefined
+
+
+@seealso
+Manuel d'initiation :
+@rlearning{Les voix contiennent la musique},
+@rlearning{Instanciation explicite des voix}.
+
+Manuel de notation :
+@ref{Portées de percussion},
+@ref{Silences invisibles},
+@ref{Hampes}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+
+
+@node Styles de voix
+@unnumberedsubsubsec Styles de voix
+@translationof Voice styles
+
+@cindex voix, styles
+@cindex styles de voix
+@cindex colorier des voix
@cindex têtes de note, styles
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
- \override NoteHead #'style = #'cross
- \override NoteHead #'color = #red
- c16 d e f
- <<
- { g4 f e } \\
- { \override NoteHead #'style = #'triangle
- \override NoteHead #'color = #blue
- r8 e4 d c8 ~ }
- >> |
- <<
- { d2 e2 } \\
- { c8 b16 a b8 g ~ g2 } \\
- { \override NoteHead #'style = #'slash
- \override NoteHead #'color = #green
- s4 b4 c2 }
- >>
-}
+@funindex \voiceOneStyle
+@funindex \voiceTwoStyle
+@funindex \voiceThreeStyle
+@funindex \voiceFourStyle
+@funindex \voiceNeutralStyle
+
+Opter pour des couleurs et des têtes de notes spécifiques selon la voix
+permet de les identifier plus facliement :
+
+@lilypond[quote,relative=2,verbatim]
+<<
+ { \voiceOneStyle d4 c2 b4 }
+ \\
+ { \voiceTwoStyle e,2 e }
+ \\
+ { \voiceThreeStyle b2. c4 }
+ \\
+ { \voiceFourStyle g'2 g }
+>>
@end lilypond
-La polyphonie ne change pas la relation des notes dans un bloc
-@code{\relative @{ @}}. Chaque note est calculée en fonction de la note
-qui la précède immédiatement, sans tenir compte des différentes voix.
+La commande @code{\voiceNeutralstyle} permet de revenir à la
+présentation normale.
-@example
-\relative @{ noteA << noteB \\ noteC >> noteD @}
-@end example
-@code{noteC} est calculé relativement à @code{noteB}, non pas à
-@code{noteA} ; @code{noteD} est calculé relativement à @code{noteC}, non
-pas à @code{noteB} ou @code{noteA}.
+@predefined
+@code{\voiceOneStyle},
+@code{\voiceTwoStyle},
+@code{\voiceThreeStyle},
+@code{\voiceFourStyle},
+@code{\voiceNeutralStyle}.
+@endpredefined
+
+
+@seealso
+Manuel d'initiation :
+@rlearning{J'entends des Voix},
+@rlearning{Autres sources d'information}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
@node Résolution des collisions
@unnumberedsubsubsec Résolution des collisions
@translationof Collision resolution
-D'ordinaire, les têtes de notes pointées et non-pointées ne sont pas
-fusionnées, mais lorsque la propriété @code{merge-differently-dotted} de
-l'objet @rinternals{NoteCollision} est définie, elles se trouvent
-fusionnées :
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\new Voice << {
- g8 g8
- \override Staff.NoteCollision
- #'merge-differently-dotted = ##t
- g8 g8
-} \\ { g8.[ f16] g8.[ f16] } >>
+@cindex fusion de notes
+@cindex collision de notes
+@cindex collisions
+@cindex shift note
+@cindex multiples voix
+@cindex voix multiples
+@cindex polyphonie
+@cindex décélage de voix
+@cindex voix, décalage
+@cindex silences, décalage automatique
+
+@funindex \shiftOn
+@funindex shiftOn
+@funindex \shiftOnn
+@funindex shiftOnn
+@funindex \shiftOnnn
+@funindex shiftOnnn
+@funindex \shiftOff
+@funindex shiftOff
+@funindex \mergeDifferentlyDottedOn
+@funindex mergeDifferentlyDottedOn
+@funindex \mergeDifferentlyDottedOff
+@funindex mergeDifferentlyDottedOff
+@funindex \mergeDifferentlyHeadedOn
+@funindex mergeDifferentlyHeadedOn
+@funindex \mergeDifferentlyHeadedOff
+@funindex mergeDifferentlyHeadedOff
+
+
+Les notes de hauteur identique appartenant à des voix différentes, même
+si leur hampe sont opposées, verront leur tête automatiquement
+fusionnées. Les notes dont la tête diffère ou bien qui ont la hampe dans
+la même direction ne seront pas automatiquement fusionnées. Les
+silences, lorsqu'ils sont dans une autre voix et à l'opposé des
+hampes seront décalés verticalement.
+
+@lilypond[quote,verbatim,relative=2]
+<<
+ {
+ c8 d e d c d c4
+ g'2 fis
+ } \\ {
+ c2 c8. b16 c4
+ e,2 r
+ } \\ {
+ \oneVoice
+ s1
+ e8 a b c d2
+ }
+>>
@end lilypond
-De même, vous pouvez fusionner une tête de blanche avec une tête de
-croche, en définissant @code{merge-differently-headed}
+Cependant, vous pouvez fusionner une tête de blanche avec une tête de
+croche :
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-\new Voice << {
- c8 c4.
- \override Staff.NoteCollision
- #'merge-differently-headed = ##t
-c8 c4. } \\ { c2 c2 } >>
+@lilypond[quote,verbatim,relative=2]
+<<
+ {
+ \mergeDifferentlyHeadedOn
+ c8 d e d c d c4
+ g'2 fis
+ } \\ {
+ c2 c8. b16 c4
+ e,2 r
+ } \\ {
+ \oneVoice
+ s1
+ e8 a b c d2
+ }
+>>
@end lilypond
-LilyPond décale aussi verticalement les silences à l'opposé des hampes,
-par exemple
+De même, vous pouvez fusionner les têtes de notes pointées et
+non-pointées :
-@lilypond[quote,ragged-right,fragment,verbatim]
-\new Voice << c''4 \\ r4 >>
+@lilypond[quote,relative=2,verbatim]
+<<
+ {
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ c8 d e d c d c4
+ g'2 fis
+ } \\ {
+ c2 c8. b16 c4
+ e,2 r
+ } \\ {
+ \oneVoice
+ s1
+ e8 a b c d2
+ }
+>>
@end lilypond
+
+
+
Lorsque trois notes ou plus s'agglutinent dans un même empilement,
-@code{merge-differently-headed} ne peut mener à bien la fusion des deux
+@code{\mergeDifferentlyHeadedOn} ne peut mener à bien la fusion des deux
notes qui devraient l'être. Pour obtenir une fusion optimale, appliquez
-un décalage (@code{\shift}) à la note qui ne devrait pas s'empiler.
-Dans la première mesure de l'exemple suivant,
-@code{merge-differently-headed} ne fonctionne pas --- la tête de la
-blanche est noire. Dans la seconde mesure, @code{\shiftOn} s'applique
-pour sortir le sol (@code{g}) de l'alignement, et
-@code{merge-differently-headed} fonctionne correctement.
-
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-\override Staff.NoteCollision #'merge-differently-headed = ##t
-<<
- { d=''2 g2 } \\
- { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
- { \voiceFour e,,2 e'2}
->>
+un décalage (@code{\shift}) à la note qui ne devrait pas fusionner.
+Ici, on applique un @code{\shiftOn} pour décaler le @notation{sol} de
+l'empilement ; le rendement de @code{\mergeDifferentlyHeadedOn} est
+alors comme il faut.
+
+@lilypond[quote,relative=2,verbatim]
<<
- { d'=''2 \shiftOn g2 } \\
- { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
- { \voiceFour e,,2 e'2}
+ {
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ c8 d e d c d c4
+ \shiftOn
+ g'2 fis
+ } \\ {
+ c2 c8. b16 c4
+ e,2 r
+ } \\ {
+ \oneVoice
+ s1
+ e8 a b c d2
+ }
+
>>
@end lilypond
+Les commandes @code{\shiftOn}, @code{\shiftOnn}, et @code{\shiftOnnn}
+déterminent le niveau de décalage des accords de la voix en cours.
+Les voix externes -- habituellement, les voix une et deux -- ont
+@code{\shiftOff}, alors que les voix internes -- trois et quatre -- ont
+@code{\shiftOn}. @code{\shiftOnn} et @code{\shiftOnnn} sont des niveaux
+supplémentaires de décalage.
+
+
+Les têtes de notes ne seront fusionnées que dans la mesure où leur
+hampe sont opposées.
+
@predefined
-@funindex \oneVoice
-@code{\oneVoice},
-@funindex \voiceOne
-@code{\voiceOne},
-@funindex \voiceTwo
-@code{\voiceTwo},
-@funindex \voiceThree
-@code{\voiceThree},
-@funindex \voiceFour
-@code{\voiceFour}.
+@code{\mergeDifferentlyDottedOn},
+@code{\mergeDifferentlyDottedOff},
+@code{\mergeDifferentlyHeadedOn},
+@code{\mergeDifferentlyHeadedOff}.
-@funindex \shiftOn
@code{\shiftOn},
-@funindex \shiftOnn
@code{\shiftOnn},
-@funindex \shiftOnnn
@code{\shiftOnnn},
-@funindex \shiftOff
-@code{\shiftOff} : toutes ces commandes précisent le degré de décalage
-des notes de la voix courante. Les voix externes --- habituellement,
-les voix une et deux --- ont @code{\shiftOff}, alors que les voix
-internes --- trois et quatre --- ont @code{\shiftOn}. @code{\shiftOnn}
-et @code{\shiftOnnn} sont des niveaux supplémentaires de décalage.
+@code{\shiftOff}.
@endpredefined
-Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet
-@rinternals{NoteColumn}, et des silences à hauteur déterminée, peuvent
-s'avérer utiles pour dicter au programme les choix de placement.
-
-@lilypond[quote,verbatim,ragged-right]
-\relative <<
-{
- <d g>
- <d g>
-} \\ {
- <b f'>
- \once \override NoteColumn #'force-hshift = #1.7
- <b f'>
-} >>
-@end lilypond
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{additional-voices-to-avoid-collisions.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{forcing-horizontal-shift-of-notes.ly}
@seealso
-Référence du programme : les objets appropriés pour résoudre les
-collisions sont @rinternals{NoteCollision} et
+Glossaire musicologique :
+@rglos{polyphony}.
+
+Manuel d'initiation :
+@rlearning{Multiple notes at once},
+@rlearning{Voices contain music},
+@rlearning{Collisions of objects}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+
+Référence des propriétés internes :
+@rinternals{NoteColumn},
+@rinternals{NoteCollision},
@rinternals{RestCollision}.
@knownissues
-Quand @code{merge-differently-headed} est utilisé avec une croche ou
-une valeur plus courte à hampe vers le haut, et une blanche hampe vers
-le bas, la croche se retrouve à la mauvaise place.
+@ignore
+@c TODO investigate! Sometimes it works, sometimes not. --FV
+The requirements for successfully merging different note heads that
+are at the same time differently dotted are not clear.
+@end ignore
Il n'y a aucune prise en charge des agrégats dans lesquels une même note
apparaît avec différentes altérations. Il est conseillé d'avoir recours
@node Regroupement automatique de parties
@unnumberedsubsubsec Regroupement automatique de parties
@translationof Automatic part combining
+
@cindex regroupement automatique de parties
@cindex parties, combiner des
+@cindex a due
+@cindex solo
+
+@funindex \partcombine
+@funindex partcombine
Le regroupement automatique de parties vous permet de fusionner deux
pupitres sur une seule portée, ceci dans le but de créer des
Voici la syntaxe qui permet de combiner des parties :
@example
-\partcombine @var{musicexpr1} @var{musicexpr2}
+\partcombine @var{expression_musicale_1} @var{expression_musicale_2}
@end example
-
L'exemple suivant illustre les fonctionnalités élémentaires du
combinateur de parties : positionner les parties sur une portée, gérer
-la direction des hampes et de la polyphonie.
-
-@lilypond[quote,verbatim,ragged-right,fragment]
-\new Staff \partcombine
- \relative g' { g g a( b) c c r r }
- \relative g' { g g r4 r e e g g }
-@end lilypond
-
-Le premier @code{sol} n'apparaît qu'une seule fois, alors qu'il a été
-spécifié deux fois (une fois dans chacune des parties). La direction
-des hampes et des liaisons de tenue ou de phrasé est gérée
-automatiquement, selon qu'il s'agisse d'un solo ou d'un unisson. La
-première partie, dont le contexte s'appellera @code{one}, aura toujours
-ses hampes dirigées vers le haut et sera notée @q{Solo}, alors que la
-deuxième, appelée @code{two}, aura des hampes vers le bas et sera
-notée @q{Solo@tie{}II}.
-
-Si votre intention n'est que de fusionner les parties, sans ajouter de
-texte, assignez faux à la propriété @code{printPartCombineTexts}.
+la direction des hampes et de la polyphonie. Les identificateurs sont
+les mêmes pour la combinaison que pour les parties séparées.
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-\new Staff <<
- \set Staff.printPartCombineTexts = ##f
- \partcombine
- \relative g' { g a( b) r }
- \relative g' { g r4 r f }
->>
-@end lilypond
+@lilypond[quote,verbatim]
+instrumentOne = \relative c' {
+ c4 d e f
+ R1
+ d'4 c b a
+ b4 g2 f4
+ e1
+}
-Le texte imprimé pour les sections solo ou à l'unisson se règle par
-les propriétés @code{soloText}, @code{soloIIText}, et @code{aDueText}.
+instrumentTwo = \relative g' {
+ R1
+ g4 a b c
+ d c b a
+ g f( e) d
+ e1
+}
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-\new Staff <<
- \set Score.soloText = #"ichi"
- \set Score.soloIIText = #"ni"
- \set Score.aDueText = #"tachi"
- \partcombine
- \relative g' { g4 g a( b) r }
- \relative g' { g4 g r r f }
+<<
+ \new Staff \instrumentOne
+ \new Staff \instrumentTwo
+ \new Staff \partcombine \instrumentOne \instrumentTwo
>>
@end lilypond
-LilyPond interprète dans un contexte @rinternals{Voice} les
-arguments fournis à @code{\partcombine}. Si vous travaillez avec des
-octaves relatives, spécifiez @code{\relative} dans chacune des
-expressions musicales, comme ceci :
+Les notes de la troisième mesure n'apparaîssent qu'une seule fois,
+alors qu'elles ont été spécifiés deux fois (une fois dans chacune des
+parties). La direction des hampes et des liaisons de tenue ou de phrasé
+est gérée automatiquement, selon qu'il s'agisse d'un solo ou d'un
+unisson. La première partie, dont le contexte s'appellera @code{one},
+aura toujours ses hampes dirigées vers le haut et sera notée @qq{Solo},
+alors que la deuxième, appelée @code{two}, aura des hampes vers le bas
+et sera notée @qq{Solo@tie{}II}. Les parties à l'unisson seront
+estampillées d'un @qq{a2} par défaut.
+
+LilyPond interprète dans un contexte @code{Voice} les arguments fournis
+à @code{\partcombine}. Si vous travaillez avec des octaves relatives,
+spécifiez @code{\relative} dans chacune des expressions musicales, comme
+ceci :
@example
\partcombine
- \relative @dots{} @var{musicexpr1}
- \relative @dots{} @var{musicexpr2}
+ \relative @dots{} @var{expression_musicale_1}
+ \relative @dots{} @var{expression_musicale_2}
@end example
@noindent
-Une section @code{\relative} en dehors de @code{\partcombine} sera
-sans effet sur les hauteurs de @var{musicexpr1} et @var{musicexpr2}.
+Une section @code{\relative} à l'extérieur du @code{\partcombine} restera
+sans effet sur les hauteurs de @var{expression_musicale_1} ou de
+@var{expression_musicale_2}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{combining-two-parts-on-the-same-staff.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-partcombine-texts.ly}
@seealso
-Référence du programme : @rinternals{PartCombineMusic}.
+Glossaire musicologique :
+@rglos{a due},
+@rglos{part}.
+
+Manuel de notation :
+@ref{Écriture de parties séparées}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+
+Référence des propriétés internes :
+@rinternals{PartCombineMusic},
+@rinternals{Voice}.
@knownissues
+@code{\partcombine} ne prend en charge que deux voix.
+
Lorsque @code{printPartCombineTexts} est actif et que les deux voix
jouent souvent les mêmes notes, le combinateur peut afficher @code{a2}
plus d'une fois par mesure.
que @code{Voice}s, dénommées @code{one} et @code{two}, puis décide de
quand les parties seront fusionnées. Par conséquent, si les arguments
changent pour d'autres noms de contexte @rinternals{Voice}, les
-événements qu'ils contiendraient seront ignorés.
+événements qu'ils contiendraient seront ignorés. De la même manière, le
+combinateur n'est pas conçu pour travailler avec des paroles ; il
+s'arrête dès qu'il est explicitement fait appel à l'une des voix pour y
+attacher des paroles.
+
+@code{\partcombine} n'examine que l'attaque des notes. Il n'est donc
+pas en mesure de déterminer si une note attaquée précédemment est enore
+jouée ou non, ce qui peut engendrer quelques problèmes.
@node Saisie de musique en parallèle
@cindex musique en parallèle
@cindex musique entremêlée
-On peut écrire plusieurs voix de façon entremêlée :
+@funindex \parallelMusic
+@funindex parallelMusic
+
+On peut écrire plusieurs voix de façon entremêlée. La fonction
+@code{\parallelMusic} prend en charge une liste des variables à créer,
+ainsi qu'une expression musicale. Le contenu des différentes mesures de
+l'expression musicale deviennent les valeurs des variables respectives
+que vous pourrez ensuite utiliser pour imprimer la partition.
+
+@warning{Les contrôles de barre de mesure @code{|} sont obligatoires et
+le mesures doivent être de longueur identique.}
+
+@lilypond[quote,verbatim]
+\parallelMusic #'(voiceA voiceB voiceC) {
+ % Bar 1
+ r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
+ r16 e'8.~ e'4 r16 e'8.~ e'4 |
+ c'2 c'2 |
+
+ % Bar 2
+ r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
+ r16 d'8.~ d'4 r16 d'8.~ d'4 |
+ c'2 c'2 |
-@lilypond[quote,fragment,verbatim]
-\parallelMusic #'(voiceA voiceB) {
- r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] |
- c'2 c'2 |
- r8 a'16[ d''] f''[ a' d'' f''] r8 a'16[ d''] f''[ a' d'' f''] |
- c'2 c'2 |
}
\new StaffGroup <<
- \new Staff \new Voice \voiceA
- \new Staff \new Voice \voiceB
+ \new Staff << \voiceA \\ \voiceB >>
+ \new Staff { \clef bass \voiceC }
>>
@end lilypond
-Ceci fonctionne bien avec la musique pour piano :
+Vous pouvez travailler en mode relatif. Notez cependant que la commande
+@code{\relative} n'apparaît pas au sein du bloc @code{\parallelMusic}.
+Le calcul des hauteurs relatives s'effectue voix par voix, et non au fil
+des lignes saisies ; en d'autre termes, les notes de la @code{voiceA}
+ignorent tout de celles de la @code{voiceB}.
@lilypond[quote,verbatim]
-music = {
- \key c \major
- \time 4/4
- \parallelMusic #'(voiceA voiceB voiceC voiceD) {
- % Bar 1
- r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c''
-e''] |
- c'2 c'2 |
- r8 a16[ d'] f'[ a d' f'] r8 a16[ d'] f'[ a d' f'] |
- c2 c2 |
-
- % Bar 2
- a'8 b' c'' d'' e'' f'' g'' a'' |
- d'4 d' d' d' |
- c16 d e f d e f g e f g a f g a b |
- a,4 a,4 a,4 a,4 |
-
- % Bar 3 ...
- }
+\parallelMusic #'(voiceA voiceB voiceC) {
+ % Bar 1
+ r8 g16 c e g, c e r8 g,16 c e g, c e |
+ r16 e8.~ e4 r16 e8.~ e4 |
+ c2 c |
+
+ % Bar 2
+ r8 a,16 d f a, d f r8 a,16 d f a, d f |
+ r16 d8.~ d4 r16 d8.~ d4 |
+ c2 c |
+
+ }
+\new StaffGroup <<
+ \new Staff << \relative c'' \voiceA \\ \relative c' \voiceB >>
+ \new Staff \relative c' { \clef bass \voiceC }
+>>
+@end lilypond
+
+Ceci fonctionne bien avec la musique pour piano. L'exemple suivant
+affecte quatre mesures à quatre variables :
+
+@lilypond[quote,verbatim]
+global = {
+ \key g \major
+ \time 2/4
+}
+
+\parallelMusic #'(voiceA voiceB voiceC voiceD) {
+ % Bar 1
+ a8 b c d |
+ d4 e |
+ c16 d e fis d e fis g |
+ a4 a |
+
+ % Bar 2
+ e8 fis g a |
+ fis4 g |
+ e16 fis g a fis g a b |
+ a4 a |
+
+ % Bar 3 ...
}
\score {
\new PianoStaff <<
- \music
- \new Staff <<
- \voiceA \\
- \voiceB
- >>
- \new Staff {
- \clef bass
- <<
- \voiceC \\
- \voiceD
- >>
- }
+ \new Staff {
+ \global
+ <<
+ \relative c'' \voiceA
+ \\
+ \relative c' \voiceB
+ >>
+ }
+ \new Staff {
+ \global \clef bass
+ <<
+ \relative c \voiceC
+ \\
+ \relative c \voiceD
+ >>
+ }
>>
}
@end lilypond
+@seealso
+Manuel d'initiation :
+@rlearning{Organisation du code source avec des variables}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: a6b100669bfc3847b3a03029d6a46ee9b1609e73
+ Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@menu
* Références en matière d'instruments à vent::
-* Doigtés::
+* Doigtéspour vents::
@end menu
@node Références en matière d'instruments à vent
@rlsr{Winds}
-@node Doigtés
-@unnumberedsubsubsec Doigtés
+@node Doigtés pour vents
+@unnumberedsubsubsec Doigtés pour vents
@translationof Fingerings
@c TODO add link to LSR snippet by Libero Mureddo once he has added
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+L'@code{ambitus} peut être individualisé par voix. Il faut en pareil
+cas éviter qu'ils se chevauchent.
+
+"
+ doctitlefr = "Un ambitus par voix"
+
%% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
texidocfr = "
Grâce à la puissance des outils préconfigurés tels que la fonction
-@code{\\drummode} et le contexte @code{DrumStaff}, la saisie de
+@code{\\drummode} et le contexte @code{DrumStaff}, la saisie de
parties pour percussions est extrêmement simplifiée : chaque composant
-d'une batterie trouve sa place sur une portée dédiée (avec une clef
-spécifique) et les têtes de note sont spécifiques à chaque élément.
-Il est également possible d'affecter un symbole particulier à chaque
+d'une batterie trouve sa place sur une portée dédiée (avec une clef
+spécifique) et les têtes de note sont spécifiques à chaque élément.
+Il est également possible d'affecter un symbole particulier à chaque
élément, tout comme de restreindre le nombre de lignes de la portée.
"
Avec un peu de code Scheme, voici comment ajouter facilement
la date du jour à votre partition.
"
-
+
doctitlefr = "Ajout de la date du jour à une partition"
--- /dev/null
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte
+@code{Score} ; les crochets précédant une reprise s'impriment donc
+seulement au-dessus de la portée du haut. On peut ajuster cela en
+déplaçant ce graveur vers les contextes de portée (@code{Staff}) qui
+doivent comporter ces crochets.
+
+"
+ doctitlefr = "Ajout du crochet de reprise à d'autres portées"
+
--- /dev/null
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+ texidocfr = "
+Dans certains cas de musique polyphonie complexe, une voix
+supplémentaire peut permettre d'éviter les risques de collision.
+Lorsque quatre voix parallèles ne suffisent pas, la fonction Scheme
+@code{context-spec-music} permet d'ajouter des d'autres voix.
+
+"
+ doctitlefr = "Ajout de voix pour éviter les collisions"
+
%% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
texidocfr = "
-Cet extrait illustre la manière de rapprocher la ligne de paroles
+Cet extrait illustre la manière de rapprocher la ligne de paroles
de la portée.
"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+La propriété @code{shortest-duration-space} peut devoir être retouchée
+pour ajuster l'apparence des chutes ou sauts.
+
+"
+ doctitlefr = "Ajustement du galbe des chutes ou sauts"
+
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
-Les numéros de mesure s'alignent en principe sur la droite de l'objet
-dont ils dépendent. C'est normalement le coin gauche de la portée ou,
-en cours de ligne, à gauche de la barre. Vous pouvez toutefois les
+Les numéros de mesure s'alignent en principe sur la droite de l'objet
+dont ils dépendent. C'est normalement le coin gauche de la portée ou,
+en cours de ligne, à gauche de la barre. Vous pouvez toutefois les
centrer par rapport à la barre ou les afficher à droite de la barre.
"
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
+graveur @code{Ambitus_engraver} au contexte @code{Staff} afin d'obtenir
+l'ambitus de toutes les voix cumulées, non d'une seule des voix actives.
+
+"
+ doctitlefr = "Ambitus sur plusieurs voix"
+
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+La propriété @code{shapeNoteStyles} permet d'affecter un profil
+particulier à chaque degré de la gamme -- à partir de l'armure ou
+de la propriété @code{tonic}. Ses valeurs sont constituées d'une liste
+de symboles, qu'il s'agisse de formes géométriques (@code{triangle},
+@code{cross}, ou @code{xcircle}) ou basés sur la tradition des graveurs
+américains (avec quelques noms de note latins).
+
+LilyPond dispose de deux raccourcis, @code{\aikenHeads} et
+@code{\sacredHarpHeads}, permettant de reproduire déanciens recueils de
+chansons américaines.
+
+L'exemple suivant montre plusieurs manières de profiler les têtes de
+note, ainsi que la capacité de trnsposer tout en respectant la fonction
+harmonique de chaque note dans la gamme.
+
+"
+ doctitlefr = "Profilage des notes selon leur degré dans la gamme"
+
Dans une métrique simple comme 4/4 ou 2/2, les croches sont ligaturées
par défaut en deux groupes de quatre.
-En utilisant une macro qui modifie le comportement des ligatures
-automatiques, voici comment obtenir des ligatures basées sur la valeur
+En utilisant une macro qui modifie le comportement des ligatures
+automatiques, voici comment obtenir des ligatures basées sur la valeur
d'une noire.
"
%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
-
+
texidocfr = "
Il est normalement impensable qu'un saut de ligne tombe au milieu d'une
ligature. LilyPond permet néanmoins de l'obtenir.
%% Translation of GIT committish: 0099693675b95c7ec6664d7277f22411a14e9c1b
texidocfr = "
-Il est possible de rapetisser le cercle d'un @code{\\flageolet} grâce
-à une fonction Scheme.
+Il est possible de rapetisser le cercle d'un @code{\\flageolet} grâce
+à une fonction Scheme.
"
doctitlefr = "Modifier la taille d'un \\flageolet"
--- /dev/null
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+ texidocfr = "
+Lorsque vous regroupez automatiquement des parties, vous pouvez
+modifier le texte qui sera affiché pour les solos et pour les parties à
+l'unisson :
+
+"
+ doctitlefr = "Modification des indications de parties combinées"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Le texte par défaut des crescendos et decrescendos se change en
+modifiant les propriétés de contexte @code{crescendoText} et
+@code{decrescendoText}. L'aspect de la ligne d'extension est fonction
+de la propriété @code{'style} du @code{DynamicTextSpanner}. Sa valeur
+par défaut est @code{'hairpin}, mais d'autres valeurs sont disponibles,
+comme @code{'line}, @code{'dashed-line} et @code{'dotted-line}.
+
+"
+ doctitlefr = "Modifidation du texte et de l'extension de nuances textuelles"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+On peut choisir le glyphe imprimé par cette commande, en modifiant la
+propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter
+n'importe quelle indication textuelle.
+
+"
+ doctitlefr = "Modification de l'indicateur de respiration"
+
--- /dev/null
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+ texidocfr = "
+L'outil de combinaison de parties (la commande @code{\\partcombine})
+permet d'avoir deux parties différentes sur une même portée. LilyPond
+ajoute automatiquement des indications textuelles, telles que @qq{solo}
+ou @qq{a2}. Si votre intention n'est que de fusionner les parties, sans
+ajouter de texte, assignez faux à la propriété
+@code{printPartCombineTexts}. Dans le cas de partitions vocales, et
+plus particulièrement d'hymnes, ces @qq{solo/a2} ne sont d'aucune
+utilité, aussi vaut-il mieux les désactiver. Dans le cas où il y aurait
+alternance entre @emph{solo} et @emph{tutti}, il vaut mieux faire appel
+à de la musique polyphonique standard.
+
+Voici trois moyens d'imprimer deux parties sur un même portée : en
+polyphonie normale, avec @code{\\partcombine} sans indication
+supplémentaire, et avec @code{\\partcombine} commentée.
+
+"
+ doctitlefr = "Combinaison de deux parties sur une même portée"
+
-%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
+%% Translation of GIT committish: 7b70644b95f383b4281e9ffa146d315d2ada11d3
texidocfr = "
+Les règles de ligature par mesure sont gérées par la propriété
+@code{beamSettings}. Elles peuvent être modifiées par la commande
+@code{\\overrideBeamSettings}.
Il existe des options qui permettent de grouper les ligatures au sein
d'une mesure, grâce à la fonction Scheme @code{set-time-signature}.
Celle-ci prend trois arguments : le nombre de pulsations, la durée de la
pulsation et le regroupement des pulsations dans la mesure. Si l'on
-fait appel au @code{Measure_grouping_engraver}, la fonction
+fait appel au @code{Measure_grouping_engraver}, la fonction
@code{set-time-signature} créera aussi des symboles
@code{MeasureGrouping}. Ces symboles aident à la lecture des œuvres
modernes à la rythmique complexe. Dans l'exemple qui suit, la mesure à
-9/8 est divisée en 2, 2, 2 et 3. Ceci est fourni en tant que troisième
-argument à @code{set-time-signature} : @code{'(2 2 2 3)}.
+9/8 est divisée en 2, 2, 2 et 3, alors que la mesure à 5/8 répond aux
+règles par défaut contenues dans le fichier @w{@code{scm/beam-settings.scm}}.
"
doctitlefr = "Signes de direction, signes de sous-groupe"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+De nos jours, il peut arriver que la note d'arrivée d'un glissando soit
+absente de la partition. Pour ce faire, il vous faudra utiliser une
+cadence et « masquer » la note d'arrivée.
+
+"
+ doctitlefr = "Glissando contemporain"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Les symboles s'ordonnent verticalement suivant la propriété
+@code{script-priority}. Plus sa valeur numérique est faible, plus le
+symbole sera proche de la note. Dans l'exemple suivant, l'objet
+@code{TextScript} -- le dièse -- a d'abord la propriété la
+plus basse, et il est donc placé plus près de la note ; ensuite c'est
+l'objet @code{Script} -- le mordant -- qui a la propriété la plus basse,
+et il se place alors sous le dièse. Lorsque deux objets ont la même
+priorité, c'est l'ordre dans lequel ils sont indiqués qui détermine
+lequel sera placé en premier.
+
+"
+ doctitlefr = "Contrôle de l'ordre vertical des articulations et ornements"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse
+est altérée requiert quelques surcharges. La propriété
+@w{@code{outside-staff-priority}} doît être désactivée (@code{#f}) pour
+éviter qu'elle prenne le pas sur la propriété @w{@code{avoid-slur}}. La
+valeur assignée à @code{halign} permet de gérer horizonalement le
+@w{« retard »}.
+
+"
+
+ doctitlefr = "Création d'un grupetto retardé"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la
+portée (@code{Staff}) permet de distribuer un arpège sur plusieurs voix :
+
+"
+ doctitlefr = "Arpège distribué sur plusieurs voix"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Dans une double portée pour piano (@code{PianoStaff}), un arpège peut
+s'étendre sur les deux portées grâce à la propriété
+@code{PianoStaff.connectArpeggios}.
+
+"
+ doctitlefr = "Arpège distribué sur une partition pour piano"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Il est possible de distribuer un arpège sur plusieurs portées d'un
+système autre que le @code{PianoStaff} dès lors que vous incluez le
+@code{Span_arpeggio_engraver} au contexte @code{Score}.
+
+"
+ doctitlefr = "Arpège distribué pour un autre contexte que le piano"
+
--- /dev/null
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Dans la mesure où @code{\\repeat tremolo} requiert deux arguments
+musicaux pour un trémolo d'accords, la note ou l'accord de la
+portée opposée doît être encadré par des accolades et se voir adjoindre
+la commande @code{\\change Staff}.
+
+"
+ doctitlefr = "Trémolo et changement de portée"
+
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
-Les propriétés d'un diagramme de fret sont modifiables grâce au
-@code{'fret-diagram-details}. Lorsqu'ils sont générés sous forme
-de @code{\markup}, rien n'empêche de les modifier en jouant sur les
-réglages de l'objet @code{Voice.TextScript} ou bien directement sur
+Les propriétés d'un diagramme de fret sont modifiables grâce au
+@code{'fret-diagram-details}. Lorsqu'ils sont générés sous forme
+de @code{\markup}, rien n'empêche de les modifier en jouant sur les
+réglages de l'objet @code{Voice.TextScript} ou bien directement sur
le @qq{markup}.
"
texidocfr = "
La liste des diagrammes standards prédéfinis pour la guitare peut être
- augmentée d'autres définitions spécifiques à d'autres instruments.
-Voici comment définir un nouvel accordage ainsi que quelques diagrammes
+ augmentée d'autres définitions spécifiques à d'autres instruments.
+Voici comment définir un nouvel accordage ainsi que quelques diagrammes
prédéfinis pour le @qq{cuatro vénézuélien}.
-Cet exemple illustre aussi la manière d'ajouter des doigtés aux
-accords ; ils serviront de référence pour la boucle d'accord et seront
-indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique.
+Cet exemple illustre aussi la manière d'ajouter des doigtés aux
+accords ; ils serviront de référence pour la boucle d'accord et seront
+indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique.
-Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils
+Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils
contiennent des informations sur les cordes. Ceci est amené à évoluer.
"
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Au début du XXème siècle, Schoenberg, Berg et Webern -- la « Seconde »
+école de Vienne -- imaginèrent de donner une importance comparable aux
+douze notes de la gamme chromatique, et éviter ainsi toute tonalité.
+Pour ce faire, ces compositions font apparaître une altération à chaque
+note, y compris un bécarre, pour mettre en exergue cette nouvelle
+approche de la théorie et du langage musicaux.
+
+Voici comment obtenir une telle notation.
+
+"
+ doctitlefr = "Le dodécaphonisme : toute note est altérée"
+
texidocfr = "
La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de
chaque crochet. Avec elle, vous pouvez faire plusieurs nolets en ne
-tapant @code{\\times} qu'une fois, ce qui évite une longue saisie.
+tapant @code{\\times} qu'une fois, ce qui évite une longue saisie.
Dans l'exemple suivant, deux triolets sont imprimés avec une seule fonction
@code{\\times}.
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
-L'exemple suivant illustre comment combiner des doigtés pour la main
+L'exemple suivant illustre comment combiner des doigtés pour la main
gauche, des indications de corrde et des doigtés pour la main droite.
"
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
-En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des
-paires de @code{[]}, vous pourrez obtenir des crochets rectilignes et
+En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des
+paires de @code{[]}, vous pourrez obtenir des crochets rectilignes et
des ligatures qui débordent à leurs extrémités.
-Pour des crochets rectilignes à droite sur des notes isolées, il suffit
-d'ajouter une paire d'indicateurs de ligature @code{[]} et de déterminer
+Pour des crochets rectilignes à droite sur des notes isolées, il suffit
+d'ajouter une paire d'indicateurs de ligature @code{[]} et de déterminer
@code{stemLeftBeamCount} à zéro, comme dans l'exemple 1.
-Pour des crochets rectiligne à gauche, c'est @code{stemRightBeamCount}
+Pour des crochets rectiligne à gauche, c'est @code{stemRightBeamCount}
qu'il faudra déterminer (exemple 2).
-Pour que les barres de ligature débordent sur la droite,
-@code{stemRightBeamCount} doit avoir une valeur positive ; pour un
-débrodement à gauche, c'est sur @code{stemLeftBeamCount} qu'il faut
+Pour que les barres de ligature débordent sur la droite,
+@code{stemRightBeamCount} doit avoir une valeur positive ; pour un
+débrodement à gauche, c'est sur @code{stemLeftBeamCount} qu'il faut
jouer. Tout ceci est illustré par l'exemple 3.
-Il est parfois judicieux, lorsqu'une note est encadrée de silences, de
-l'affubler de crochets rectilignes de part et d'autre. L'exemple 4
+Il est parfois judicieux, lorsqu'une note est encadrée de silences, de
+l'affubler de crochets rectilignes de part et d'autre. L'exemple 4
montre qu'il suffit d'adjoindre à cette note un @code{[]}.
-(Notez bien que @code{\\set stemLeftBeamCount} sera toujours synonyme de
+(Notez bien que @code{\\set stemLeftBeamCount} sera toujours synonyme de
@code{\\once \\set}. Autrement dit, la détermination des ligatures
n'est pas @qq{permanente} ; c'est la raison pour laquelle les crochets
-du @code{c'16[]} isolé du dernier exemple n'ont rien à voir avec le
+du @code{c'16[]} isolé du dernier exemple n'ont rien à voir avec le
@code{\\set} indiqué deux notes auparavant.)
"
--- /dev/null
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+ texidocfr = "
+Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet
+@code{NoteColumn}, et des silences à hauteur déterminée, peuvent
+s'avérer utiles pour dicter au programme les choix de placement. On
+travaille ici en espace de portée.
+
+"
+ doctitlefr = "Décalage horizontal forcé"
+
%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
texidocfr = "
-La manière de gérer les ligatures est influencée par la propriété
+La manière de gérer les ligatures est influencée par la propriété
@code{beatGrouping} :
"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Les crescendos et decrescendos indiqués textuellement -- tels que
+@emph{cresc.} ou @emph{dim.} -- sont suivis de pointillés qui montrent
+leur étendue. On peut empêcher l'impression de ces pointillés avec :
+
+"
+ doctitlefr = "Masquage de l'extension des nuances textuelles"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Une surcharge de la propriété @code{'text} de l'objet
+@code{BreathingSign} permet de créer une marque de césure. LilyPond
+dispose également d'une variante courbée.
+
+"
+ doctitlefr = "Insertion d'une césure"
+
--- /dev/null
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Des symboles de pourcentage isolés peuvent aussi être obtenus, au
+moyen d'un silence multi-mesures dont on modifie l'aspect :
+
+"
+ doctitlefr = "Répétition en pourcent isolée"
+
pour les ensembles de jazz. Vous noterez que tous les instruments sont
notés en ut (@code{\key c \major}), la tonalité de concert. Les notes
seront automatiquement transposée dès lors qu'elles seront inscrites
-dans une section @code{\\transpose}.
+dans une section @code{\\transpose}.
"
doctitlefr = "Symboles de jazz"
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Le «makam» est une forme de mélodie turque qui utilise des altérations
+d'un neuvième de ton. Consultez le fichier d'initialisation
+@code{makam.ly} pour plus de détails sur les hauteurs et altérations
+utilisées (voir le chapitre 4.6.3 - Autres sources d'information du
+manuel d'initiation pour le localiser).
+
+"
+ doctitlefr = "Exemple de musique « Makam »"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Grâce à la propriété @code{dash-definition}, une liaison d'articulation
+peut être formée de traits discontinus variables.
+@code{dash-definition} se compose d'une liste de
+@code{segments-discontinus} (@emph{dash-elements}). Chaque
+@code{segment-discontinu} contient une liste de paramètres qui
+déterminent le comportement du trait pour une section de la liaison.
+
+Cette liaison se définit selon le paramètre de Bézier @code{t} qui est
+compris entre 0 (l'extrémité gauche de la liaison) et 1 (l'extrémité
+droite de la liaison). Chaque @code{segment-discontinu} se composera
+selon la liste @code{(t-début t-fin segment-style segment-taille)}.
+La portion de liaison allant de @code{t-début} à @code{t-fin} aura un
+trait @code{segment-style} de longueur @code{segment-taille}.
+@code{segment-taille} est exprimé en espace de portée ; un
+@code{segment-style} à 1 donnera un trait plein.
+
+"
+ doctitlefr = "Dessin d'une liaison d'articulation au trait discontinu"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Les raccourcis sont répertoriés dans le fichier
+@code{ly/script-init.ly}, dans lequel on retrouve les variables
+@code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar},
+@code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que
+leur valeur par défaut. Ces valeurs peuvent être modifiées selon vos
+besoins. Il suffit par exemple, pour affecter au raccourci @code{-+}
+(@code{dashPlus}) le symbole du trille en lieu et place du @code{+}
+(caractère plus), d'assigner la valeur @code{trill} à la variable
+@code{dashPlus} :
+
+"
+ doctitlefr = "Modification de la signification des raccourcis pour les signes d'articulation"
+
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+La commande @code{\\key} détermine la propriété @code{keySignature} d'un
+contexte @code{Staff}.
+
+Des armures inhabituelles peuvent être spécifiées en modifiant
+directement cette propriété. Il s'agit en l'occurence de définir une
+liste :
+
+@code{\\set Staff.keySignature = #`(((octave . pas) . altération) ((octave
+. pas) . altération) @dots{})}
+
+dans laquelle, et pour chaque élément,
+@code{octave} spécifie l'octave (0@tie{}pour celle allant du
+do@tie{}médium au si supérieur), @code{pas} la note dans cette octave
+(0@tie{}pour@tie{}do et 6@tie{}pour@tie{}si), et @code{altération} sera
+@code{,SHARP ,FLAT ,DOUBLE-SHARP} etc. (attention à la virgule en
+préfixe).
+
+Une formulation abrégée -- @code{(pas . altération)} -- signifie que
+l'altération de l'élément en question sera valide quel que soit l'octave.
+
+
+Voici, par exemple, comment générer une gamme par ton :
+
+"
+ doctitlefr = "Armures inhabituelles"
+
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+En interne, la fonction @code{\\ottava} détermine les
+propriétés @code{ottavation} (p.ex. en @code{\"8va\"} ou @code{\"8vb\"})
+et @code{centralCPosition}. Vous pouvez modifier le texte d'une marque
+d'octaviation en définissant @code{ottavation} après avoir fait appel
+à @code{ottava} :
+
+"
+
+ doctitlefr = "Texte des marques d'octaviation"
+
--- /dev/null
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Le numéro de mesure répétée sera imprimé à intervalle régulier si vous
+déterminez la propriété de contexte @code{repeatCountVisibility}.
+
+"
+ doctitlefr = "Affichage du numéro de répétition en pourcent"
+
--- /dev/null
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Les répétitions de plus de 2 mesures sont surmontées d'un compteur,
+si l'on active la propriété @code{countPercentRepeats} comme le montre
+l'exemple suivant :
+
+"
+ doctitlefr = "Compteur de répétition en pourcent"
+
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
-Cet exemple peu académique démontre comment il est possible d'insérer un saut
+Cet exemple peu académique démontre comment il est possible d'insérer un saut
de ligne dans un nolet portant une ligature. Ces ligatures doivent toutefois
être explicites.
%% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
texidocfr = "
Il s'agit du format classique pour le chant : une portée pour la mélodie
-et les paroles au-dessus de l'accompagnement au piano.
+et les paroles au-dessus de l'accompagnement au piano.
"
doctitlefr = "Piano, mélodie et paroles"
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
-Vous disposez d'une propriété spécifique qui permet de contrôler plus
-finement le positionnement des doigtés main droite, comme l'indique
+Vous disposez d'une propriété spécifique qui permet de contrôler plus
+finement le positionnement des doigtés main droite, comme l'indique
l'exemple suivant.
"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison,
+la propriété @code{outside-staff-priority} doît être désactivée.
+
+"
+ doctitlefr = "Positionnement d'une annotation à l'intérieur d'une liaison"
+
-%% Translation of GIT committish: 203ab4a7388f36b9c89c66671498dbaefccbf86e
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
texidocfr = "
En accord avec les règles standards de l'écriture musicale, on grave
un bécarre avant un dièse ou un bémol si on a besoin d'annuler une
@code{extraNatural} du contexte @code{Staff} à la valeur @code{##f} (faux).
"
+ doctitlefr = "Suppression des bécarres superflus"
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Après un changement de tonalité, un bécarre est imprimé pour annuler
+toute altération précédente. Ceci peut être supprimé en réglant à
+@code{\"false\"} la propriété @code{printKeyCancellation} du contexte
+@code{Staff}.
+
+"
+
+ doctitlefr = "Suppression des bécarres superflus après un changement de
+tonalité"
--- /dev/null
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Bien qu'allant à l'encontre des usages en matière de gravure, vous
+imprimerez une barre de reprise (@code{|:}) en début de partition si
+vous surchargez la propriété adéquate :
+
+"
+ doctitlefr = "Impression d'une barre de reprise en début de morceau"
+
texidocfr = "
Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt
qu'en tête de chaque ligne seulement, en recourrant à la propriété
-@code{barNumberVisibility}. Voici comment afficher le numéro toutes les
+@code{barNumberVisibility}. Voici comment afficher le numéro toutes les
deux mesures sauf en fin de ligne.
"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de
+manière graphique, en assignant @emph{vrai} (@code{#t}) à la
+propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité.
+
+"
+ doctitlefr = "Impression de soufflets « al niente »"
+
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
-Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est
-inférieur à 2. Le fait de définir @code{barNumberVisibility} à
-@code{all-bar-numbers-visible} vous permettra d'imprimer n'importe quel
-numéro pour la première mesure. À noter que l'impression d'un numéro
-de mesure ne peut intervenir que s'il y a une barre. Aussi, pour
-pouvoir le faire au début d'un morceau, devrez-vous ajouter une barre
-vide avant la première note.
+Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est
+inférieur à 2. Le fait de définir @code{barNumberVisibility} à
+@code{all-bar-numbers-visible} vous permettra d'imprimer n'importe quel
+numéro pour la première mesure. À noter que l'impression d'un numéro
+de mesure ne peut intervenir que s'il y a une barre. Aussi, pour
+pouvoir le faire au début d'un morceau, devrez-vous ajouter une barre
+vide avant la première note.
"
doctitlefr = "Afficher le numéro de la première mesure"
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
-Vous pouvez modifier les valeurs des variables @code{startGraceMusic},
-@code{stopGraceMusic}, @code{startAcciaccaturaMusic},
-@code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, et
-@code{stopAppoggiaturaMusic} afin d'en personnaliser les effets. Pour
-plus de détails, voir le fichier @code{ly/grace-init.ly}.
+Vous pouvez modifier les valeurs des variables @code{startGraceMusic},
+@code{stopGraceMusic}, @code{startAcciaccaturaMusic},
+@code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, et
+@code{stopAppoggiaturaMusic} afin d'en personnaliser les effets. Pour
+plus de détails, voir le fichier @code{ly/grace-init.ly}.
"
doctitlefr = "Redéfinition des réglages de mise en forme par défaut des notes d'ornement"
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
-Désactiver le graveur concerné --- @code{Bar_number_engraver} ---
-donnera une partition --- contexte @code{Score} --- sans numéros de
+Désactiver le graveur concerné --- @code{Bar_number_engraver} ---
+donnera une partition --- contexte @code{Score} --- sans numéros de
mesure.
"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+En principe, un soufflet -- (de)crescendo imprimé sous forme graphique --
+commence au bord gauche de la note de départ, et se termine au
+bord droit de la note d'arrivée. Cependant, si la note d'arrivée
+est sur un premier temps, le soufflet s'arrêtera au niveau de la
+barre de mesure qui la précède. Ce comportement peut être annulé
+en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline} :
+
+"
+ doctitlefr = "Soufflets et barres de mesure"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Si un soufflet est trop court, il suffit d'ajuster la propriété
+@code{minimum-length} de l'objet @code{Hairpin} pour l'allonger.
+
+"
+ doctitlefr = "Ajustement de la longueur d'un soufflet"
+
--- /dev/null
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Les crochets indiquant les fins alternatives s'étalent tout au long ce
+celle-ci. On peut les raccourcir en définissant la propriété
+@code{voltaSpannerDuration}. Dans l'exemple suivant, le crochet ne se
+prolonge que sur une mesure à 3/4.
+
+"
+ doctitlefr = "Diminution de la taille du crochet d'alternative"
+
%% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
texidocfr = "
-Ce cannevas comporte tous les éléments d'une chanson : la mélodie,
-les paroles, les accords.
+Ce cannevas comporte tous les éléments d'une chanson : la mélodie,
+les paroles, les accords.
"
doctitlefr = "Paroles, musique et accords"
%% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
texidocfr = "
-Vous avez besoin de la partition d'une mélodie avec les accords ?
+Vous avez besoin de la partition d'une mélodie avec les accords ?
N'allez pas plus loin !
"
%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
texidocfr = "
-Le fait de spécifier un contexte à @code{beatGrouping} permet d'en
+Le fait de spécifier un contexte à @code{beatGrouping} permet d'en
limiter les effets. Par voie de conséquence, il sera possible
d'outrepasser les règles définies à un niveau supérieur. La commande
-@code{\\set} destinée à en modifier les valeurs doit se placer après la
+@code{\\set} destinée à en modifier les valeurs doit se placer après la
commande @code{\\time} :
"
%% Translation of GIT committish: cd4950757ab1ab6c89805b0b7c978bfca034f940
texidocfr = "
-La direction des hampes se gère dans les tablatures tout comme en
-notation traditionnelle. Les ligatures peuvent être mises à l'horizontale
+La direction des hampes se gère dans les tablatures tout comme en
+notation traditionnelle. Les ligatures peuvent être mises à l'horizontale
comme le montre cet exemple.
"
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
-Voici un canevas pour quatuor à cordes. Notez l'utilisation de la
+Voici un canevas pour quatuor à cordes. Notez l'utilisation de la
variable @code{\\global} pour traiter la métrique et la tonalité.
"
diviser la ligature en sous-groupes grâce à la propriété
@code{subdivideBeams}. Lorsqu'elle est activée, les ligatures seront
subdivisées selon un intervalle défini par @code{beatLength} ; il n'y
-aura alors plus qu'un seul trait de ligature entre chaque sous-groupe.
+aura alors plus qu'un seul trait de ligature entre chaque sous-groupe.
Par défaut, @code{beatLength} fixe la valeur de référence à une noire.
Il faudra donc lui fournir, à l'aide de la fonction @code{make-moment},
une fraction correspondant au sous-groupe désiré, comme dans l'exemple
-suivant.
+suivant.
"
doctitlefr = "Subdivision des ligatures"
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Cet exemple, grâce à un peu de code Scheme, donne la priorité aux
+enharmoniques afin de limiter le nombre d'altérations supplémentaires.
+La règle appliquable est :
+
+@itemize
+@item
+Les altérations doubles sont supprimées
+
+@item
+Si dièse -> Do
+
+@item
+Mi dièse -> Fa
+
+@item
+Do bémol -> Si
+
+@item
+Fa bémol -> Mi
+
+@end itemize
+
+Cette façon de procéder aboutit à plus d'enharmoniques naturelles.
+
+"
+
+ doctitlefr = "Transposition et réduction du nombrer d'altérations accidentelles"
--- /dev/null
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph},
+@code{clefPosition} -- qui contrôle la position verticale de la clé --
+@code{middleCPosition} et @code{clefOctavation}. Une clé est imprimée
+lorsque l'une de ces propriétés, hormis @code{middleCPosition}, est
+modifiée.
+ Les exemples suivant font
+apparaître des possibilités de réglage manuel de ces propriétés.
+
+
+Modifier le glyphe, la position de la clef ou son octaviation ne
+changera pas la position des notes ; il faut pour y parvenir modifier
+aussi la position du do médium. Le positionnement est relatif à la
+ligne médiane, un nombre positif faisant monter, chaque ligne ou
+interligne comptant pour 1. La valeur de @code{clefOctavation} devrait
+être de 7, -7, 15 ou -15, bien que rien ne vous empêche de lui affecter
+une autre valeur.
+
+
+Lorsqu'un changement de clef intervient en même temps qu'un saut de
+ligne, la nouvelle clef est imprimer à la fois en fin de ligne et au
+début de la suivante. Vous pouvez toujours supprimer cette « clef de
+précaution » en affectant la valeur @code{end-of-line-invisible} à la
+propriété @code{explicitClefVisibility} du contexte @code{Staff}. Le
+comportement par défaut sera réactivé par
+@w{@code{\\unset@tie{}Staff.explicitClefVisibility}}.
+
+
+Les exemples qui suivent illustrent les différentes possibilités de
+définir ces propriétés manuellement. Sur la première ligne, la
+position relative des notes par rapport aux clefs sont préservées, ce
+qui n'est pas le cas pour la deuxième ligne.
+
+"
+ doctitlefr = "Affinage des propriétés d'une clef"
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
-Il est possible de changer globalement la mise en forme des petites
-notes dans un morceau, au moyen de la fonction
-@code{add-grace-property}. Ici, par exemple, on ôte la définition de
-l'orientation des objets @code{Stem} pour toutes les petites notes,
-afin que les hampes ne soient pas toujours orientées vers le haut, et on
+Il est possible de changer globalement la mise en forme des petites
+notes dans un morceau, au moyen de la fonction
+@code{add-grace-property}. Ici, par exemple, on ôte la définition de
+l'orientation des objets @code{Stem} pour toutes les petites notes,
+afin que les hampes ne soient pas toujours orientées vers le haut, et on
leur préfère des têtes en forme de croix.
"
@code{beatLength} et @code{beatGrouping}, comment générer les ligatures
automatiques selon les durées et la métrique lorsqu'aucune règle n'a été
définie. L'exemple commenté qui suit indique différentes façons de
-contrôler les ligatures à l'aide de ces propriétés.
+contrôler les ligatures à l'aide de ces propriétés.
"
doctitlefr = "Utilisation conjointe de beatLength et beatGrouping"
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Certains auteurs utilisent deux liaisons lorsqu'ils veulent
+lier des accords. Dans LilyPond, il faut pour cela activer
+la propriété @code{doubleSlurs} :
+
+"
+ doctitlefr = "Accords et double liaison d'articulation"
+
--- /dev/null
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les
+différents objets @code{DynamicLineSpanner} (souflets ou textuels)
+quelle que soit leur étendue, par rapport à un même point de référence.
+Tous les éléments seront alors centrés sur une même ligne, ce qui sera
+visuellement plus agréable.
+
+C'est le même principe qui sert à aligner les indications textuelles sur
+une ligne de référence.
+
+"
+ doctitlefr = "Alignement vertical des nuances indications textuelles"
+
texidocfr = "
Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes.
La différence réside dans le fait que les paroles sont positionnées en
-ayant recours à @code{alignAboveContext} et @code{alignBelowContext}.
+ayant recours à @code{alignAboveContext} et @code{alignBelowContext}.
"
doctitlefr = "Ensemble vocal avec alignement des paroles selon le contexte"
tout particulièrement pour gérer la métrique et la tonalité qui,
la plupart du temps, sont communes à tous les pupitres. Comme il est
d'usage pour les hymnes, les quatre voix sont réparties sur deux
-portées.
+portées.
"
doctitlefr = "Ensemble vocal (simple)"
version that you are working on. See TRANSLATION for details.
@end ignore
-@setfilename lilypond.info
-@settitle GNU LilyPond New Website
+@setfilename general.info
+@settitle LilyPond -- Music notation for everyone
@documentencoding UTF-8
@documentlanguage en
@afourpaper
+@c don't remove this comment.
+@ignore
+@omfcreator Graham Percival and Patrick McCarty
+@omfdescription General info about the LilyPond music engraving system
+@omftype program usage
+@omfcategory Applications|Publishing
+@omflanguage English
+@end ignore
+
+
+@copying
+Copyright @copyright{} 2009 by the authors.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+@end copying
+
+
+@c TITLE PAGE
@ifnottex
@node Top
-@top GNU LilyPond --- Web site
-@chapheading The music typesetter
+@top LilyPond... music notation for everyone
@end ifnottex
+@c hack for texi2html, bleh -gp
+@ifnothtml
+
@finalout
@titlepage
@title LilyPond
@subtitle The music typesetter
-@titlefont{New Website}
+@titlefont{General Information}
@author The LilyPond development team
-Copyright @copyright{} 1999--2009 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
+@vskip 0pt plus 1filll
+@c @vskip 20pt
-@vskip 20pt
+@insertcopying{}
-For LilyPond version
+For LilyPond version @version{}
@end titlepage
+@end ifnothtml
+@c end hack for texi2html
-@copying
-Copyright @copyright{} 1999--2009 by the authors
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
+@c ************************ WEBSITE START ***************
+
@divId{pageHeader}
@heading LilyPond
@divEnd
@c @imageId{cmws,web-clef-g-eight-alpha.png,Catchy Musical Web Snippet}
-@imageId{lilylogo,double-lily-modified3.png,LilyPond logo}
+@imageId{lilylogo,double-lily-modified3,png,LilyPond logo}
@c @im ageId{cmws,web-snippet-alpha.png,Catchy Musical Web Snippet}
@divId{quickSummary}
@subheading What is LilyPond?
LilyPond is an open-source music engraving program, devoted to
-producing the highest-quality sheet music possible. We bring the
-aesthetics of traditionally engraved music to computer printouts.
+producing the highest-quality sheet music possible. This free
+software brings the aesthetics of traditionally engraved music to
+computer printouts.
@divClass{align-right}
Read more in our @ref{Introduction}!
+
@divEnd
@divEnd
select first 4 items to insert here, and generate
RSS.
-@c @include news-front.itexi
-
@divClass{float-right}
(@ref{Old news})
@divEnd
@divEnd
+@ifnottex
+
@divClass{hide}
@menu
* Introduction:: Start here to creating sheet music.
@end menu
@divEnd
+@end ifnottex
+
@contents
depth = ../..
-
LOCALSTEPMAKE_TEMPLATES = ly
-
+SUBDIRS = examples
include $(depth)/make/stepmake.make
@divClass{column-left-bottom}
@subheading User Discussions and Help
-@subsubheading User mailist
+@subsubheading User mailing list: @code{lilypond-user@@gnu.org}
-The main place for users to discuss and help each other is the
+This mailing list is the main place for users to discuss and help
+each other.
+
+@quotation
@uref{http://mail.gnu.org/mailman/listinfo/lilypond-user,
-lilypond-user@@gnu.org} mailist. To see what this mailist is
-like, read the
+lilypond-user subscribe and info}
+
@uref{http://mail.gnu.org/archive/html/lilypond-user/,
-lilypond-user archives}.
+user archive1}
+@uref{http://www.mail-archive.com/lilypond-user@@gnu.org/,
+archive2}
+@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general,
+archive3}
-You may easily post messages to the mailist with the
@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.general,
-lilypond.general gmane interface}.
+send to lilypond-user with gmane}
+@end quotation
@warning{When asking questions, please use @ref{Tiny examples}!}
-@help{we could add a "subscribe to -user" box here?}
-
@subsubheading IRC
@subsubheading Other languages
-@help{send mailists or forums where non-English discussion occurs.}
+@quotation
+@uref{http://es.groups.yahoo.com/group/lilypond-es,
+Spanish yahoo group}
+
+@uref{http://www.lilypondforum.de/,
+German forum}
+
+@uref{http://groups.google.com/group/lilypond-brasil,
+Portugese group}
+
+@uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
+French mailing list}
+
+@uref{http://www.lilypondforum.nl/,
+Dutch forum}
+@end quotation
@divEnd
The easiest way to keep touch is by reading our community
newsletter, the @uref{http://news.lilynet.net/, LilyPond Report}.
-@subsubheading Releases mailing list
+@subsubheading Releases mailing list: @code{info-lilypond@@gnu.org}
+
+This mailing list is a low-volume, read-only list which receives
+notifications of new releases.
+
+@quotation
+@uref{http://lists.gnu.org/mailman/listinfo/info-lilypond,
+info-lilypond subscribe and info}
-@uref{http://mail.gnu.org/mailman/listinfo/info-lilypond,
-info-lilypond@@gnu.org}
-is a low-volume, read-only list which receives notifications of
-new releases. To see what the mailist is like, browse the
@uref{http://mail.gnu.org/archive/html/info-lilypond/,
-info-lilypond archive}.
+info archive1}
+@uref{http://www.mail-archive.com/info-lilypond@@gnu.org/,
+archive2}
+@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.announce,
+archive3}
+
+@c don't include gmane posting here. -gp
+@end quotation
+
@divEnd
@divClass{column-right-bottom}
@subheading Developer Discussion
-Most developer discussion takes place on
+@subsubheading Developer mailing list: @code{lilypond-devel@@gnu.org}
+
+Most developer discussion takes place on this list. Patches
+should be sent here.
+
+@quotation
@uref{http://mail.gnu.org/mailman/listinfo/lilypond-devel,
-lilypond-devel@@gnu.org}. Patches should be sent here. You can
-browse the @uref{http://mail.gnu.org/archive/html/lilypond-devel/,
-lilypond-devel archives}, or send a message directly with the
-@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.development,
-lilypond.development gmane interface}.
+lilypond-devel subscribe and info}
+
+@uref{http://mail.gnu.org/archive/html/lilypond-devel/,
+devel archive1}
+@uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/,
+archive2}
+@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.devel,
+archive3}
+
+@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.devel,
+send to lilypond-devel with gmane}
+@end quotation
-Bug-specific discussion takes place on the
+
+@subsubheading Bug mailing list: @code{bug-lilypond@@gnu.org}
+
+Bug-specific discussion takes place here.
+
+@quotation
@uref{http://mail.gnu.org/mailman/listinfo/bug-lilypond,
-bug-lilypond@@gnu.org}. You can browse the
-@uref{http://mail.gnu.org/archive/html/bug-lilypond/, bug-lilypond
-archives}.
+bug-lilypond subscribe and info}
+
+@uref{http://mail.gnu.org/archive/html/bug-lilypond/,
+bug archive1}
+@uref{http://www.mail-archive.com/bug-lilypond@@gnu.org/,
+archive2}
+@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.bugs,
+archive3}
+
+@c don't include gmane posting here. -gp
+@end quotation
@warning{Before sending a message to the bug list, please read our
guidelines for @ref{Bug reports}.}
@item
@c TODO: duplicate to avoid underlined refs in HTML? icky.
-@ref{Unix, @sourceimage{logo-linux} @sourceimage{logo-freebsd}}
+@ref{Unix, @sourceimage{logo-linux,,,}
+@sourceimage{logo-freebsd,,,}}
@ref{Unix, Unix (Linux and FreeBSD)}
@item
-@ref{MacOS X, @sourceimage{logo-macosx}}
+@ref{MacOS X, @sourceimage{logo-macosx,,,}}
@ref{MacOS X, MacOS X}
@item
-@ref{Windows, @sourceimage{logo-windows}}
+@ref{Windows, @sourceimage{logo-windows,,,}}
@ref{Windows, Microsoft Windows}
@end itemize
@uref{http://www.linuxaudio.org/, linuxaudio.org} for sponsoring
our bandwidth.
-@sourceimage{VTlogo_ITF} @sourceimage{lao_banner_06_on_white_demo}
+@sourceimage{VTlogo_ITF,,,}
+@sourceimage{lao_banner_06_on_white_demo,,,}
@subheading Legalese
@itemize
@item
-@sourceimage{logo-linux}
+@sourceimage{logo-linux,,,}
@uref{http://download.linuxaudio.org/lilypond/binaries/linux-x86/lilypond-2.12.2-1.linux-x86.sh,
Linux x86: LilyPond 2.12.2} (if in doubt, use this)
@item
-@sourceimage{logo-linux}
+@sourceimage{logo-linux,,,}
@uref{http://download.linuxaudio.org/lilypond/binaries/linux-64/lilypond-2.12.2-1.linux-64.sh,
Linux 64-bit: LilyPond 2.12.2}
@item
-@sourceimage{logo-linux}
+@sourceimage{logo-linux,,,}
@uref{http://download.linuxaudio.org/lilypond/binaries/linux-ppc/lilypond-2.12.2-1.linux-ppc.sh,
Linux PPC: LilyPond 2.12.2}
@item
-@sourceimage{logo-freebsd}
+@sourceimage{logo-freebsd,,,}
@uref{http://download.linuxaudio.org/lilypond/binaries/freebsd-x86/lilypond-2.12.2-1.freebsd-x86.sh,
FreeBSD i386: LilyPond 2.12.2}
@item
-@sourceimage{logo-freebsd}
+@sourceimage{logo-freebsd,,,}
@uref{http://download.linuxaudio.org/lilypond/binaries/freebsd-64/lilypond-2.12.2-1.freebsd-64.sh,
FreeBSD amd64: LilyPond 2.12.2}
@itemize
@item
-@sourceimage{logo-fedora}
+@sourceimage{logo-fedora,,,}
@uref{https://admin.fedoraproject.org/pkgdb/packages/name/lilypond,
Fedora: LilyPond 2.12.0}
@item
-@sourceimage{logo-ubuntu}
+@sourceimage{logo-ubuntu,,,}
@uref{https://launchpad.net/ubuntu/+source/lilypond,
Ubuntu: LilyPond 2.12.1}
@item
-@sourceimage{logo-slackware}
+@sourceimage{logo-slackware,,,}
@uref{http://www.johannes-schoepfer.de/lilypond/,
Slackware: LilyPond 2.12.1}
@item
-@sourceimage{logo-debian}
+@sourceimage{logo-debian,,,}
@uref{http://packages.debian.org/search?keywords=lilypond,
Debian: LilyPond 2.10.33}
@item
-@sourceimage{logo-suse}
+@sourceimage{logo-suse,,,}
@uref{http://opensuse.org/?fixme=urg-no-lilypond-package-page,
openSUSE: LilyPond 2.10.33}
@itemize
@item
-@sourceimage{logo-macosx}
+@sourceimage{logo-macosx,,,}
@uref{
http://download.linuxaudio.org/lilypond/binaries/darwin-x86/lilypond-2.12.2-1.darwin-x86.tar.bz2,
lilypond-2.12.2-1.darwin-x86.tar.bz2}
For Intel chips (if in doubt, use this).
@item
-@sourceimage{logo-macosx}
+@sourceimage{logo-macosx,,,}
@uref{
http://download.linuxaudio.org/lilypond/binaries/darwin-x86/lilypond-2.12.2-1.darwin-ppc.tar.bz2,
lilypond-2.12.2-1.darwin-ppc.tar.bz2}
@itemize
@item
-@sourceimage{logo-windows}
+@sourceimage{logo-windows,,,}
@uref{
http://download.linuxaudio.org/lilypond/binaries/mingw/lilypond-2.12.2-1.mingw.exe,
lilypond-2.12.2-1.mingw-exe}
--- /dev/null
+depth=../../..
+LOCALSTEPMAKE_TEMPLATES=lilypond ly
+include $(depth)/make/stepmake.make
+
+LILYPOND_PREVIEW = $(LILYPOND_BINARY) -dpreview -dresolution=150
+
+OUT_PNG_FILES = $(LY_FILES:%.ly=$(outdir)/%.png)
+OUT_PNG_PAGES = $(PNG_PAGES:%=$(outdir)/%.png)
+
+OUT_SMALL_PNG_FILES = $(OUT_PNG_FILES:%.png=%-small.png)
+
+ifeq ($(out),www)
+all: $(OUT_PNG_FILES) $(OUT_SMALL_PNG_FILES)
+endif
+
+$(outdir)/%.png: %.ly
+ $(LILYPOND_PREVIEW) -o $(outdir) $<
+ mv $(outdir)/$*.preview.png $@
+
+$(outdir)/%-small.png: $(outdir)/%.png
+ pngtopnm $< | pnmscale -w=600 | pnmtopng > $@
+
--- /dev/null
+\version "2.12.0"
+\include "example-header.ily"
+
+#(set-global-staff-size 15)
+
+\include "gregorian.ly"
+
+\score {
+ <<
+ \new VaticanaVoice = "cantus" {
+ \clef "vaticana-do3"
+ % Verse 1 — Salve, Regína
+ a\melisma \[ a \flexa g \pes a\melismaEnd \] d
+ \divisioMinima
+ \[ a\melisma \flexa g\melismaEnd \]
+ \[ f\melisma \flexa e f \pes g \flexa f\melismaEnd \]
+ \[ e\melisma \flexa d\melismaEnd \]
+ \divisioMaior
+ c d \[d\melisma \flexa c\melismaEnd \] d
+ \[ e\melisma \pes f\melismaEnd\] g
+ \[d\melisma \pes e \flexa c\melismaEnd \] d
+ \finalis
+ % Verse 2 — Vita, dulcédo
+ % a\melisma \[ a \flexa g \pes a\melismaEnd \] d
+ % \divisioMinima
+ % \[ a\melisma \flexa g\melismaEnd \]
+ % \[ f\melisma \flexa e f \pes g \flexa f\melismaEnd \]
+ % \[ e\melisma \flexa d\melismaEnd \]
+ % \divisioMaior
+ % c d \[e\melisma \pes f\melismaEnd \] g
+ % \[d\melisma \pes e \flexa c\melismaEnd \] d
+ % \finalis
+ % Verse 3 — Ad te clamámus
+ \[ d\melisma \pes f\melismaEnd\] a g
+ \[ g\melisma \flexa f \pes a\melismaEnd\] e
+ \divisioMaior
+ g f \[ e\melisma \flexa d \pes g\melismaEnd \]
+ \divisioMinima
+ c d \[ e\melisma \flexa d \pes g\melismaEnd \]
+ \[ f\melisma \flexa e\melismaEnd \] d
+ \finalis
+ % Verse 4 — Ad te suspirámus
+ \[ d\melisma \pes f\melismaEnd \] a c' g
+ \[ g\melisma \flexa f \pes g\melismaEnd \] a
+ \divisioMaior
+ d \[ f\melisma \pes \deminutum g\melismaEnd \] g d
+ \[ \virga f\melisma \inclinatum e \inclinatum d\melismaEnd \]
+ c \divisioMaior
+ d \[ d\melisma \flexa c \pes f\melismaEnd \]
+ \[ g\melisma \pes a\melismaEnd \]
+ g \[ f\melisma \flexa e\melismaEnd \] g
+ \[ f\melisma \flexa \deminutum e\melismaEnd \]
+ \[ d\melisma \flexa c \pes d\melismaEnd \]
+ \finalis
+ % Verse 5 — Eia ergo, Advocáta nostra
+ f\melisma \[ f \pes g\melismaEnd \] f
+ \[ g\melisma \pes \deminutum a\melismaEnd \] a
+ \divisioMinima
+ c' g \[ \virga a\melisma \inclinatum g \inclinatum f\melismaEnd \] d g a
+ \divisioMaior
+ d' d' \[ c'\melisma \flexa b c' \pes d'\melismaEnd \] a
+ \divisioMinima
+ d' c' a \[ g\melisma \flexa f \pes a\melismaEnd \] g
+ \[ d\melisma \pes e\melismaEnd \] f
+ \[ \virga e\melisma \inclinatum d \inclinatum c\melismaEnd \]
+ \divisioMaior
+ \[ c\melisma \pes d\melismaEnd \]
+ f \[ g\melisma \flexa \deminutum f\melismaEnd \]
+ \[ d\melisma \flexa c \pes d\melismaEnd \] d
+ \finalis
+ % Verse 6 — Et Jesum
+ d a, \[ c\melisma \pes d\melismaEnd \]
+ \divisioMinima
+ d \[ d\melisma \pes e\melismaEnd \] \[ e\melisma \flexa d d\melismaEnd \]
+ c g f \[ e\melisma \flexa \deminutum d\melismaEnd \] g
+ \[ f\melisma \flexa e\melismaEnd \]
+ \[ d\melisma \flexa c \pes d\melismaEnd \]
+ \[ d\melisma \pes a \] \virga bes\melismaEnd a
+ \divisioMinima
+ \[ \virga a\melisma \inclinatum g \inclinatum f\melismaEnd \] g d f
+ \[ f\melisma \flexa e\melismaEnd \] \[ d\melisma \flexa c\melismaEnd \]
+ \divisioMinima
+ \[ e\melisma \pes f \flexa e\melismaEnd \] d d
+ \finalis
+ % Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María
+ a\melisma \[a \flexa g a \quilisma b \pes c'\melismaEnd \]
+ \[ \virga b\melisma \inclinatum a \inclinatum g\melismaEnd \] a
+ \finalis
+ \[ g\melisma \pes a \quilisma b \pes c' \] \[ c' \flexa b\melismaEnd \]
+ \[ a\melisma \flexa g\melismaEnd \] \[ g\melisma \pes a\melismaEnd \]
+ \finalis
+ \[ a\melisma \flexa d \virga f \inclinatum e \inclinatum d \inclinatum c d \]
+ \divisioMinima
+ \[ d \pes e f \pes g\melismaEnd \]
+ \[ g\melisma \flexa \deminutum f\melismaEnd \]
+ \[ g\melisma \pes a\melismaEnd \]
+ d c d \[ d\melisma \pes g \flexa f f\melismaEnd \]
+ \[ e\melisma \flexa d\melismaEnd \]
+ \finalis
+ }
+ \new Lyrics \lyricsto "cantus" {
+ Sal- ve, Re- gí- na, ma- ter mi- se- ri- cór- di- ae:
+ % Vi- ta, dul- cé- do, et spes no- stra, sal- ve.
+ Ad te cla- má- mus, éx- su- les, fi- li- i He- vae.
+ Ad te su- spi- rá- mus, ge- mén- tes et flen- tes in hac la- cri- má- rum
+ val- le.
+ E- ia er- go, Ad- vo- cá- ta no- stra, il- los tu- os mi- se- ri- cór- des
+ ó- cu- los ad nos con- vér- te.
+ Et Je- sum, be- ne- díc- tum fruc- tum ven- tris tu- i, no- bis post hoc
+ ex- sí- li- um os- tén- de.
+ O cle- mens:
+ O pi- a:
+ O dul- cis Vir- go Ma- rí- a.
+ }
+ >>
+}
+
+\layout {
+ \context {
+ \Staff
+ \consists Custos_engraver
+ }
+}
+
--- /dev/null
+\version "2.12.0"
+\include "example-header.ily"
+
+\paper {
+% line-width=158\mm % produces 624 pixels
+ line-width = 143\mm % reserve 15mm for incipit
+}
+
+% Aucun ont trouvé, from Montpellier Codex
+%
+% Put brackets in where the original has ligatures, using
+% "Analysis Brackets," and adjust the "bracket-flare" property
+% to make the ends vertical instead of slanted.
+
+#(set-global-staff-size 15)
+
+%%%%%%%%%%% INCIPIT DEFS %%%%%%%%%%
+
+incipitGlobal = {
+ \override NoteHead #'style = #'mensural
+ \override Accidental #'style = #'mensural
+ \override KeySignature #'style = #'mensural
+ \override Rest #'style = #'mensural
+% \override Staff.TimeSignature #'style = #'mensural
+ \cadenzaOn
+ \override Score.Clef #'extra-offset = #'(-0.0 . 0.5)
+ \override Score.Clef #'font-size = #3
+ \clef "vaticana-do1"
+}
+
+incipitTriplum = \markup{
+ \score{
+ {
+ \set Staff.instrumentName="Triplum "
+ \incipitGlobal
+ s1.
+ }
+ \layout {
+ %indent = 1\cm
+ \context {\Voice
+ \remove Ligature_bracket_engraver
+ \consists Mensural_ligature_engraver
+ }
+ \context {\Staff
+ \remove "Time_signature_engraver"
+ }
+ line-width=5\mm
+ }
+ }
+}
+
+incipitMotetus = \markup{
+ \score{
+ {
+ \set Staff.instrumentName="Motetus"
+ \incipitGlobal
+ s1.
+ }
+ \layout {
+ % indent = 1\cm
+ \context {\Voice
+ \remove Ligature_bracket_engraver
+ \consists Mensural_ligature_engraver
+ }
+ \context {\Staff
+ \remove "Time_signature_engraver"
+ }
+ line-width=5\mm
+ }
+ }
+}
+
+incipitTenor = \markup{
+ \score{
+ {
+ \set Staff.instrumentName = "Tenor "
+ \incipitGlobal
+ s1.*2
+ }
+ \layout {
+ %indent = 1\cm
+ \context {\Voice
+ \remove Ligature_bracket_engraver
+ \consists Mensural_ligature_engraver
+ }
+ \context {\Staff
+ \remove "Time_signature_engraver"
+ }
+ line-width=5\mm
+}
+}
+}
+
+incipitBassus = \markup{
+ \score{ {
+ \set Staff.instrumentName = "Bassus "
+ \override NoteHead #'style = #'neomensural
+ \override Accidental #'style = #'neomensural
+ \override Rest #'style = #'neomensural
+ \override Staff.TimeSignature #'style = #'neomensural
+ \cadenzaOn
+ \clef "petrucci-f3"
+ \key f \major
+ \time 3/2
+ \relative c' {
+ s1. % R1.*2
+ }
+ }
+ \layout {
+ \context { \Voice
+ \remove Ligature_bracket_engraver
+ \consists Mensural_ligature_engraver
+ }
+ line-width=5\mm
+ }
+ }
+}
+
+%%%%%%%%%%% END INCIPIT DEFS %%%%%%%%%%%
+
+#(ly:set-option 'point-and-click #f)
+
+global = {
+ \override Staff.TimeSignature #'stencil = #(lambda (grob)
+ (bracketify-stencil (ly:time-signature::print grob) Y 0.1 0.2 0.1))
+ \time 3/4
+ \override Staff.BarLine #'transparent = ##t
+ \override HorizontalBracket #'direction = #UP
+ \override HorizontalBracket #'bracket-flare = #'(0 . 0)
+}
+
+%%%%%%%%% MACRO FOR MAKING SLASHES THROUGH STEMS %%%%%%%%%%
+MakeSlash = #(define-music-function (parser location angle len-left len-right
+thick y-factor offset)
+ (number? number? number? number? number?
+pair?)
+#{
+\once \override Voice.Stem #'text = \markup {
+ \postscript #(let ((x-off (car $offset))
+ (y-off (cdr $offset)))
+ (string-append
+ (ly:number->string (car $offset)) " " (ly:number->string (cdr $offset)) "
+translate "
+ (ly:number->string $angle) " rotate "
+ (ly:number->string (- x-off)) " "
+ (ly:number->string (- y-off)) " translate 0 setlinewidth "
+ (ly:number->string (- x-off $len-left)) " " (ly:number->string (+ y-off
+$thick)) " moveto "
+ (ly:number->string (- x-off $len-left)) " " (ly:number->string y-off)
+ " " (ly:number->string $thick) "
+90 270 arc "
+ (ly:number->string (+ x-off $len-right)) " " (ly:number->string y-off)
+ " " (ly:number->string $thick) "
+270 90 arc "
+ " gsave fill grestore stroke")) }
+
+\once \override Voice.Stem #'stencil = #(lambda (grob)
+ (let* ((sten1 (ly:stem::print grob))
+ (sten2 (ly:text-interface::print grob))
+ (extent1 (ly:stencil-extent sten1 Y))
+ (extent2 (ly:stencil-extent sten2 Y)))
+ (ly:stencil-add
+ sten1
+ (ly:stencil-translate sten2
+ (cons 0 (+ (* $y-factor (cdr extent1))
+ (* (- 1 $y-factor) (car extent1))))))))
+#})
+
+
+slash = { \MakeSlash #20 #1.0 #1.1 #0.05 #0.75 #'(0 . -.5) }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+triplumWords = \lyricmode {
+ Au -- cun ont trou -- ve chant par u -- sa -- ge,
+ mes a moi en doune o -- choi -- son __
+ a -- mours, qui res -- bou -- dist mon cou -- ra -- ge
+ si que m'ès -- tuet fai -- re _ chan -- _ _ çon
+}
+
+triplumNotes = \relative c' {
+ \clef "treble_8"
+ %\set Staff.midiInstrument = "flute"
+% \global
+ \override StemTremolo #'beam-thickness = #.125
+ \override StemTremolo #'slope = #1.0
+ f8 f4 e8 d c f f f | % 1
+ % the \scaleDurations command below makes 5 notes last the
+ % duration of a dotted quarter
+ e8 c4 \scaleDurations #'(3 . 2) { \times 4/5{e16[ d e d e]} } e8 f4 | % 2
+ g2. ~ g4. | % 3
+ f8 d4 f4. \scaleDurations #'(3 . 2) { \times 4/6{ g16[ f e f e f]}} % 4
+ g8 g4 g4. e4. | % 5
+ fis8 d4 e8\startGroup g4\stopGroup f8[ e d] | % 6
+ c2. r4. | % 7
+}
+
+motetusWords = \lyricmode {
+ lonc tans _ _ me fiu -- te -- nu de chan -- _ _ ter __
+ mes or ai _ _
+}
+
+motetusNotes = \relative c' {
+ \clef "treble_8"
+ c2. c8\startGroup b8 \slash c\stopGroup | % 1
+ a2. c4. | d2. e4. | % 2-3
+ f2. f8 e d | % 4
+ c2. ~ c4. | r2. r4. | % 5-6
+ g'4. g g8 f e | % 7
+}
+
+
+tenorNotes = \relative c {
+ \clef "treble_8"
+ f2. | a2. | g2. | r2. | % 1-4
+ c2. | b2. | c2. | % 5-7
+}
+
+\score {
+ \new StaffGroup <<
+ \new Staff = "triplum" <<
+ %\set Staff.instrumentName = "Triplum"
+ \set Staff.instrumentName = \incipitTriplum
+ \set Staff.shortInstrumentName = "Tr."
+ \set Staff.timeSignatureFraction = #'(9 . 8)
+ \scaleDurations #'(2 . 3)
+ \context Voice = "triplum" { \global \triplumNotes }
+% \scaleDurations #'(2 . 3)
+% \context Voice = "slashes" { \triplumSkips }
+ \new Lyrics { \lyricsto "triplum" { \triplumWords }}
+ >>
+ \new Staff = "motetus" <<
+ %\set Staff.instrumentName = "Motetus"
+ \set Staff.instrumentName = \incipitMotetus
+ \set Staff.shortInstrumentName = "M."
+ \set Staff.timeSignatureFraction = #'(9 . 8)
+ \scaleDurations #'(2 . 3)
+ \context Voice = "motetus" { \global \motetusNotes }
+ \new Lyrics { \lyricsto "motetus" { \motetusWords }}
+ >>
+ \new Staff = "tenor" {
+ %\set Staff.instrumentName = "Tenor"
+ \set Staff.instrumentName = \incipitTenor
+ \set Staff.shortInstrumentName = "T."
+ \global \tenorNotes
+ }
+ >>
+ %\midi {}
+ \layout {
+ %\context {
+ % \Staff \consists "Horizontal_bracket_engraver"
+ %}
+ \context {
+ \Voice \consists "Horizontal_bracket_engraver"
+ }
+ }
+}
--- /dev/null
+\version "2.12.0"
+%\include "example-header.ily"
+
+
+\header {
+ mutopiatitle = "Jesu, meine Freude"
+ mutopiacomposer = "BachJS"
+ poet = "BWV 610"
+ %mutopiaopus = "BWV 610"
+ mutopiainstrument = "Organ"
+ date = ""
+ source = "Bach-Album, Ernst H. Wolfram (editor), 6787, C. F. Peters, Leipzig"
+ style = "Baroque"
+ copyright = "Public Domain"
+ maintainer = "Urs Metzger"
+ maintainerEmail = "urs@ursmetzger.de"
+ lastupdated = "2006/Mar/15"
+
+ title = "Jesu, meine Freude"
+ composer = "Johann Sebastian Bach"
+ %opus="BWV 610"
+
+ footer = "Mutopia-2006/03/27-706"
+ tagline = \markup { \override #'(box-padding . 1.0) \override #'(baseline-skip . 2.7) \box \center-column { \small \line { Sheet music from \with-url #"http://www.MutopiaProject.org" \line { \teeny www. \hspace #-1.0 MutopiaProject \hspace #-1.0 \teeny .org \hspace #0.5 } • \hspace #0.5 \italic Free to download, with the \italic freedom to distribute, modify and perform. } \line { \small \line { Typeset using \with-url #"http://www.LilyPond.org" \line { \teeny www. \hspace #-1.0 LilyPond \hspace #-1.0 \teeny .org } by \maintainer \hspace #-1.0 . \hspace #0.5 Reference: \footer } } \line { \teeny \line { This sheet music has been placed in the public domain by the typesetter, for details see: \hspace #-0.5 \with-url #"http://creativecommons.org/licenses/publicdomain" http://creativecommons.org/licenses/publicdomain } } } }
+
+}
+
+\include "deutsch.ly"
+
+global = {
+ \key c \minor
+ \time 4/4
+ #(set-accidental-style 'default)
+}
+
+halsup = {
+ \stemUp
+ \tieUp
+}
+
+halsdown = {
+ \stemDown
+ \tieDown
+}
+
+staffup = {
+ \change Staff = "right" \halsdown
+}
+
+staffdown = {
+ \change Staff = "left" \halsup
+}
+
+sopran = {
+ \new Voice \relative g' {
+ \global
+ \halsup
+ \repeat volta 2 {
+ g4^\markup { \hspace #-4 \large "Largo" } g f es
+ d2 c\fermata
+ g'4 g a h
+ c2 h\fermata
+ %% Takt 5 ==============================================
+ c8. d16 es4 d4. d8
+ c1\fermata
+ }
+ g4 g as g
+ f4. f8 es2\fermata
+ g4 g a h
+ %% Takt 10 =============================================
+ c4 b! a2
+ g1\fermata
+ g4 g f es
+ d2 c2\fermata \bar "|."
+ }
+}
+
+alt = {
+ \new Voice \relative es' {
+ \global
+ \halsdown
+ \repeat volta 2 {
+ es16 d es8~ es16 f es d c8 d~ d c
+ c8 c4 h8 c8. \staffdown g16 \staffup c h c d
+ es16 d es8~ es16 f es d c8 d16 es f as g f~
+ f16 e f8~ f16 g f es d es d8~ d16 es f d
+ %% Takt 5 ==============================================
+ g8 f es16 g as es f es f d g as g f
+ e8 f16 g as g as e f g f8~ f16 f es d
+ }
+ es16 d es8~ es16 f es des c8 \staffdown b~ b16 b c g
+ as16 g as f b c b as g f g8~ g16 b \staffup c d
+ es16 d es8~ es16 f es d c8 d16 es f as g f
+ %% Takt 10 =============================================
+ es16 d es8 d g~g g4 fis8
+ g16 d es c \staffdown d h c a h a h c d h g h
+ c16 h c \staffup d es d es8~ es d4 c8~
+ c16 h c8~ c h c16 \staffdown g as8 g4\fermata
+ }
+}
+
+tenor = {
+ \new Voice \relative c' {
+ \global
+ \repeat volta 2 {
+ c16 h c8~ c16 h c g a8 g~ g16 g as es
+ f16 es f d g as g f es d \tieDown es8~ es16 \tieNeutral f es d
+ c16 h c g' c h c c, f8. g16 as!4~
+ as16 g as b c h c8 d8. c16 h c d h
+ %% Takt 5 ==============================================
+ es16 d es d~ d8 c~c c4 h8
+ c4~ c8. b16 as b as8 g16 as g f
+ }
+ \halsdown es16 f g as b des c b as g f8~ f es
+ es8 es4 d8 es8. b16 es d es f
+ es16 f g8 c16 d c b a g f8~ f4
+ %% Takt 10 =============================================
+ g16 fis g a b a b g c b c a d es d c
+ h8 c16 a h g a fis g8 d16 es f es f8~
+ f16 d es h c h c8 r16 f g d es g as fis
+ g16 d f! es f as g f e8. f16~ f d e8\fermata
+ }
+}
+
+right = {
+ \clef treble
+ <<
+ \alt
+ \sopran
+ >>
+}
+
+left = {
+ \clef bass
+ <<
+ \tenor
+ >>
+}
+
+pedal = {
+ \global
+ \clef "bass"
+ \relative c {
+ \repeat volta 2 {
+ r8 c16 d es d es8~ es16 a, h g c h c8
+ r16 g as f g f g8 c,2
+ r8 c'16 d es d es8~ es16 c f es d c d8
+ c8 f16 g as g as8~ as16 d, fis d g fis g8
+ %% Takt 5 ==============================================
+ r8 a16 h c h c8
+ r16 g as f g f g8
+ r16 g as e f e f8 r16 e f h, c h c8
+ }
+ r8 es16 f g f g8~ g16 c, d! b es d es8
+ r16 b c as b as b8 es,2
+ r8 c'16 d es d es8~ es16 c f es d c d8
+ %% Takt 10 =============================================
+ c8 es16 f! g fis g8 r16 d es c d c d8
+ g,1
+ c4 c,8 c'16 b! a8 h c16 h c8
+ r16 g as fis g fis g8 c,2_\fermata
+ }
+}
+
+\score {
+ \new PianoStaff
+ { \set PianoStaff.instrumentName = \markup { \large \center-column {
+ "a" "" "2 Clav." "" "e" "" "Pedale." } \hspace #0.5 }
+ <<
+ \context Staff = right
+ {
+ \context Voice = right \right
+ }
+ \context Staff = left {
+ \context Voice = left \left
+ }
+ \context Staff = pedal {
+ \context Voice = pedal \pedal
+ }
+ >>
+ }
+ \layout{}
+}
--- /dev/null
+% -*-coding: utf-8 -*-
+
+\header{
+ 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
+%%
+
+I = \once \override NoteColumn #'ignore-collision = ##t
+
+\version "2.12.0"
+
+staffPiano = \new PianoStaff {
+ \set Score.timing = ##f
+ \set PianoStaff.followVoice = ##t
+
+ <<
+ \new Staff = "RH" { % Right hand
+ \clef treble
+ \key g \major
+ \relative c'' {
+ \override Staff.NoteCollision
+ #'merge-differently-headed = ##t
+ <<
+ {
+ \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.
+ \revert Beam #'positions
+ \revert NoteHead #'transparent
+ \revert NoteHead #'duration-log
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ s1
+ \once \override Slur #'height-limit = #6
+ \once \override Slur #'extra-offset = #'(1.25 . 0)
+ \slurDashed
+ \I 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
+ }
+ \\
+ \override Staff.NoteCollision
+ #'merge-differently-headed = ##t
+ {
+ \override Beam #'positions = #'(4 . -3.25)
+ \stemUp
+ g8[ s s4 s2
+ \stemDown
+ \once \override NoteHead #'transparent = ##t
+ \I b8] s8
+ \override Beam #'positions = #'(3 . -2.25)
+ \stemUp
+ a8[ s s4
+ \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
+ 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 "|."
+ }
+ }
+
+ \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
+ \I g8[_\markup { \bold I } s4. s1 s s2
+ \I d8_\markup { \bold V } s4.
+ \I 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)
+ \I g'2 s1 s s2 \I 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)
+ \I fis,4_(
+ \revert Stem #'transparent
+ \override Stem #'length = #10
+ \stemDown
+ g4) s
+ \once \override Slur #'extra-offset = #'(0 . 0.25)
+ \I c8_( s
+ \override Stem #'transparent = ##t
+ \revert Stem #'length
+ a4)
+ \once \override NoteHead #'transparent = ##t
+ \I d4^( d,4) s2
+ }
+ \\
+ {
+ \override Stem #'transparent = ##t
+ \override NoteHead #'transparent = ##t
+ \I 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)
+ \I 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 {
+ indent = 0.0
+ ragged-right = ##f
+ \context { \Staff \remove "Time_signature_engraver" }
+ }
+}
+
+
+\paper {
+}
--- /dev/null
+\version "2.11.62"
+\include "example-header.ily"
+
+% Example of Tab Polyphony from Bach Lute Suite in E Minor
+
+
+
+%#(define (fret-letter-tablature-format string tuning pitch)
+%(make-string 1 (integer->char
+%(+ (char->integer #\a)
+%(- (pitch-semitones pitch)
+%(list-ref tuning (- string 1)))))))
+
+global = {
+ \time 12/8
+ \key e \minor
+ \set Staff.midiInstrument = "acoustic guitar (nylon)"
+% \set TabStaff.tablatureFormat = #fret-letter-tablature-format
+}
+
+upper = \relative c' {
+ \global
+ \voiceOne
+ r4. r8 e, fis g16 b g e e' b c b a g fis e
+}
+
+lower = \relative c {
+ \global
+ \voiceTwo
+ r16 e d c b a g4 fis8 e fis g a b c |
+}
+
+\score {
+ <<
+ \new StaffGroup = "tab with traditional" <<
+ \new Staff = "guitar" <<
+ \clef "treble_8"
+ \context Voice = "upper" \upper
+ \context Voice = "lower" \lower
+ >>
+ \new TabStaff = "guitar" <<
+ \context TabVoice = "upper" \upper
+ \context TabVoice = "lower" \lower
+ >>
+ >>
+ >>
+ \layout {}
+ %\midi {}
+}
+
--- /dev/null
+
+\version "2.12.0"
+
+\layout {
+ indent = #0
+ ragged-right = ##t
+ \context {
+ \Score
+
+ proportionalNotationDuration = #(ly:make-moment 1 64)
+ \override Beam #'breakable = ##t
+ autoBeaming = ##f
+ tupletFullLength = ##t
+ \override BarNumber #'transparent = ##t
+ \override BarLine #'transparent = ##t
+ \override SpanBar #'transparent = ##t
+ \override Beam #'break-overshoot = #'(-0.5 . 1.0)
+ \override TextScript #'staff-padding = #6
+ \override Glissando #'thickness = #3
+ \override SpacingSpanner #'strict-grace-spacing = ##t
+ \override TupletBracket #'bracket-visibility = ##t
+ \override NoteColumn #'ignore-collision = ##t
+ }
+}
+
+\paper {
+ oddHeaderMarkup = \markup \fill-line { " " }
+ evenHeaderMarkup = \markup \fill-line { " " }
+ oddFooterMarkup = \markup {
+ \fill-line {
+ \bold \fontsize #3 \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string } }
+ evenFooterMarkup = \markup {
+ \fill-line {
+ \bold \fontsize #3 \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string } }
+ printfirst-page-number = ##t
+ print-page-number = ##t
+ ragged-last-bottom = ##t
+}
+
+#(set-global-staff-size 14)
+
+
+%% definitions.
+
+
+ppX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "pp" #:hspace 0)))
+pX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "p" #:hspace 0)))
+mpX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "mp" #:hspace 0)))
+fX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "f" #:hspace 0)))
+ffX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "ff" #:hspace 0)))
+sfp = #(make-dynamic-script "sfp")
+sfpp = #(make-dynamic-script "sfpp")
+sffp = #(make-dynamic-script "sffp")
+sffpp = #(make-dynamic-script "sffpp")
+
+beam = #(define-music-function (parser location left right) (number? number?)
+ (cond ((and (= left 0) (> right 0))
+ #{
+ \set stemRightBeamCount = #$right
+ #})
+
+ ((and (> left 0) (= right 0))
+ #{
+ \set stemLeftBeamCount = #$left
+ #})
+
+ (else
+ #{
+ \set stemLeftBeamCount = #$left
+ \set stemRightBeamCount = #$right
+ #})
+ )
+)
+
+fraction = #(define-music-function (parser location music) (ly:music?)
+ #{ \tweak #'text #tuplet-number::calc-fraction-text $music #})
+
+triangle = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \set shapeNoteStyles = #'#(do do do do do do do) $music #})
+
+semicircle = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \set shapeNoteStyles = #'#(re re re re re re re) $music #})
+
+blackdiamond = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \set shapeNoteStyles = #'#(mi mi mi mi mi mi mi) $music #})
+
+tiltedtriangle = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \set shapeNoteStyles = #'#(fa fa fa fa fa fa fa) $music #})
+
+square = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \set shapeNoteStyles = #'#(la la la la la la la) $music #})
+
+wedge = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \set shapeNoteStyles = #'#(ti ti ti ti ti ti ti) $music #})
+
+harmonic = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \set shapeNoteStyles = #'#(harmonic harmonic harmonic harmonic harmonic harmonic harmonic) $music #})
+
+cross = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \set shapeNoteStyles = #'#(cross cross cross cross cross cross cross) $music #})
+
+white = #(define-music-function (parser location music) (ly:music?)
+ #{ \once \override NoteHead #'duration-log = #1 $music #})
+
--- /dev/null
+\version "2.12.0"
+% the example header file caused the head to be chopped off
+%\include "example-header.ily"
+
+
+\header {
+ dedication = "Carin Levine"
+ instrument = "bass flute"
+ title = "ČÁRY"
+ year = "2004--2006"
+
+ subtitle = \markup { \italic Sorcery (extract) }
+ % Measures 6 - 10;
+
+ composer = "Trevor Bača"
+ copyright = "Copyright 2006 Trevor Bača - all rights reserved."
+
+}
+
+% Verbatim from composer's score.
+%
+% Upper staff gives fingerings;
+% Lower staff gives special types of breath.
+%
+% Copyright 2006 for the entire score;
+% All rights reserved by the composer.
+
+\include "english.ly"
+\include "cary-layout.ily"
+
+\new Score <<
+
+ \new StaffGroup <<
+
+ \new Staff \with {
+ \override Stem #'direction = #down
+ \override Beam #'positions = #'(-7 . -7)
+ \override TupletBracket #'direction = #down
+ \override TupletBracket #'staff-padding = #5
+ \override TupletBracket #'padding = #2.25
+ \override VerticalAxisGroup #'minimum-Y-extent = #'(10 . 10)
+ } <<
+
+ \new Voice {
+
+ \override Score.MetronomeMark #'extra-offset = #'(0 . 6)
+ \override Score.MetronomeMark #'font-size = #3
+ \tempo 8=42
+ \time 5/16 s4 ~ s16 \noBreak % measure 6
+ \time 4/8 s2 \noBreak % measure 7
+ \time 4/8 s2 \noBreak % measure 8
+
+ }
+
+ \new Voice \with {
+ \remove Forbid_line_break_engraver
+ } {
+
+ % measure 6
+ \fraction \times 5/3 {
+ \times 4/5 {
+ a'64 [ % 36
+ cs''64 % 37
+ f''64 % 38
+ cs''64 % 39
+ ef'''64 ] % 40
+ }
+ \times 4/5 {
+ g''64 [ % 41
+ c''64 % 42
+ e''64 % 43
+ g''64 % 44
+ ef'''64 ] % 45
+ }
+ bf''16 % 46
+ }
+
+ % measure 7
+ r8 % 47
+ \times 4/5 {
+ d''32 [ % 48
+ af''32 % 49
+ e'32 % 50
+ b'32 % 51
+ b'32 ] % 52
+ }
+ ef'''4 % 53
+
+ % measure 8
+ b''8 [ % 54
+ g''8 ] % 55
+ d''4 % 56
+
+ }
+ >>
+
+ \new Staff \with {
+ \override Clef #'transparent = ##t
+ \override StaffSymbol #'line-positions = #'(-4 -2 2 4)
+ \override Stem #'direction = #down
+ \override TupletBracket #'staff-padding = #5
+ \override TupletBracket #'padding = #2.25
+ \override VerticalAxisGroup #'minimum-Y-extent = #'(10 . 10)
+ } <<
+
+ \new Voice \with {
+ \remove Forbid_line_break_engraver
+ \override Stem #'direction = #up
+ \override Stem #'stroke-style = #"grace"
+ \override Stem #'font-size = #-3
+ \override Rest #'transparent = ##t
+ \override NoteHead #'no-ledgers = ##t
+ \override Dots #'transparent = ##t
+ \override TupletBracket #'transparent = ##t
+ \override TupletNumber #'transparent = ##t
+ } {
+
+ % measure 6
+ \fraction \times 5/3 {
+ \square f''16 * 1/8 % 40
+ \square f''16 * 1/8 % 41
+ \square f''16 * 1/8 % 42
+ \square f''16 * 1/8 % 43
+ \square f''16 * 1/8 % 44
+ \square f''16 * 1/8 % 45
+ \square f''16 * 1/8 % 46
+ \square f''16 * 1/8 % 47
+ \times 2/3 {
+ \square f''16 % 48
+ \square f''16 * 1/2 % 49
+ }
+ \times 2/3 {
+ \square f''16 * 1/4 % 50
+ \square f''16 * 1/4 % 51
+ \square f''16 * 1/4 % 52
+ \square f''16 * 1/4 % 53
+ \square f''16 * 1/4 % 54
+ \square f''16 * 1/4 % 55
+ }
+ }
+
+ % measure 7
+ s8 % 56
+ \square g''16 * 2/1 % 57
+ \square g''16 % 58
+ \square g''16 % 59
+ \times 8/9 {
+ s16 % 60
+ f''16 * 1/4 % 61
+ f''16 * 1/4 % 62
+ f''16 * 1/4 % 63
+ f''16 * 1/4 % 64
+ f''16 * 1/4 % 65
+ }
+
+ % measure 8
+ \times 4/5 {
+ \times 4/7 {
+ s4 % 66
+ \triangle a''16 % 67
+ \triangle a''16 % 68
+ \triangle a''16 % 69
+ }
+ s8 % 70
+ \triangle a''16 * 1/2 % 71
+ \triangle a''16 * 1/2 % 72
+ \triangle a''16 * 1/2 % 73
+ \triangle a''16 * 1/2 % 74
+ \triangle a''16 * 1/2 % 75
+ \triangle g''16 * 1/2 % 76
+ \triangle g''16 * 1/2 % 77
+ \triangle g''16 * 1/2 % 78
+ }
+
+ }
+
+ \new Voice \with {
+ \remove Forbid_line_break_engraver
+ \override Stem #'transparent = ##t
+ \override Rest #'transparent = ##t
+ \override Rest #'staff-position = #-0.5
+ \override Dots #'transparent = ##t
+ \override Beam #'transparent = ##t
+ \override TupletBracket #'transparent = ##t
+ \override TupletNumber #'transparent = ##t
+ } {
+
+ % measure 6
+ \fraction \times 5/3 {
+ \blackdiamond f'128 [ % 40
+ \blackdiamond f'128 % 41
+ \blackdiamond f'128 % 42
+ \blackdiamond f'128 % 43
+ \blackdiamond f'128 % 44
+ \blackdiamond f'128 % 45
+ \blackdiamond f'128 % 46
+ \blackdiamond f'128 ] % 47
+ \times 2/3 {
+ \blackdiamond f'16 % 48
+ \blackdiamond f'32 % 49
+ }
+ \times 2/3 {
+ \blackdiamond f'64 % 50
+ \blackdiamond f'64 % 51
+ \blackdiamond f'64 % 52
+ \blackdiamond f'64 % 53
+ \blackdiamond f'64 % 54
+ \blackdiamond f'64 % 55
+ }
+ }
+
+ % measure 7
+ s8 % 56
+ \harmonic a'8 \glissando % 57
+ \harmonic a'16 \glissando % 58
+ \blackdiamond a'16 % 59
+ \times 8/9 {
+ s16 % 60
+ \harmonic g'64 \glissando % 61
+ \harmonic g'64 \glissando % 62
+ \harmonic g'64 \glissando % 63
+ \harmonic g'64 \glissando % 64
+ \blackdiamond g'64 % 65
+ }
+
+ % measure 8
+ \times 4/5 {
+ \times 4/7 {
+ s4 % 66
+ \blackdiamond f'16 % 67
+ \blackdiamond f'16 % 68
+ \blackdiamond f'16 % 69
+ }
+ s8 % 70
+ \blackdiamond f'32 % 71
+ \blackdiamond f'32 % 72
+ \blackdiamond f'32 % 73
+ \blackdiamond f'32 % 74
+ \blackdiamond f'32 % 75
+ \harmonic e'32 \glissando % 76
+ \harmonic e'32 \glissando % 77
+ \blackdiamond e'32 % 78
+ }
+
+ }
+
+ \new Voice \with {
+ \remove Forbid_line_break_engraver
+ \override Stem #'direction = #down
+ \override Stem #'font-size = #-3
+ \override Stem #'stroke-style = #"grace"
+ \override Rest #'transparent = ##t
+ \override NoteHead #'no-ledgers = ##t
+ \override Dots #'transparent = ##t
+ \override TupletBracket #'transparent = ##t
+ \override TupletNumber #'transparent = ##t
+ } {
+
+ % measure 6
+ \fraction \times 5/3 {
+ s128 % 40
+ s128 % 41
+ s128 % 42
+ s128 % 43
+ s128 % 44
+ s128 % 45
+ s128 % 46
+ s128 % 47
+ \times 2/3 {
+ \semicircle a16 % 48
+ \semicircle a16 * 1/2 % 49
+ }
+ \times 2/3 {
+ \semicircle a16 * 1/4 % 50
+ \semicircle a16 * 1/4 % 51
+ \semicircle a16 * 1/4 % 52
+ \semicircle a16 * 1/4 % 53
+ \semicircle a16 * 1/4 % 54
+ \semicircle a16 * 1/4 % 55
+ }
+ }
+
+ % measure 7
+ s8 % 56
+ s8 % 57
+ s16 % 58
+ \triangle a16 % 59
+ \times 8/9 {
+ s16 % 60
+ s64 % 61
+ s64 % 62
+ s64 % 63
+ s64 % 64
+ \triangle a16 * 1/4 % 65
+ }
+
+ % measure 8
+ \times 4/5 {
+ \times 4/7 {
+ s4 % 66
+ \semicircle a16 % 67
+ \semicircle a16 % 68
+ \semicircle a16 % 69
+ }
+ s8 % 70
+ \semicircle a16 * 1/2 % 71
+ \semicircle a16 * 1/2 % 72
+ \semicircle a16 * 1/2 % 73
+ \semicircle a16 * 1/2 % 74
+ \semicircle a16 * 1/2 % 75
+ s32 % 76
+ s32 % 77
+ \semicircle a16 * 1/2 % 78
+ }
+
+ }
+
+ \new Voice \with {
+ \remove Forbid_line_break_engraver
+ \override Stem #'direction = #down
+ \override NoteHead #'transparent = ##t
+ \override NoteHead #'no-ledgers = ##t
+ \override Rest #'staff-position = #-18
+ \override Stem #'length = #10
+ \override Beam #'positions = #'(-13 . -13)
+ \override DynamicLineSpanner #'staff-padding = #18
+ \override TextSpanner #'(bound-details left text) = #(markup (#:italic "covered"))
+ \override TextSpanner #'dash-period = #1
+ \override TextSpanner #'dash-fraction = #0.2
+ \override TextSpanner #'(bound-details left padding) = #0.5
+ \override TextSpanner #'(bound-details right padding) = #0.5
+ \override TextSpanner #'staff-padding = #4
+ } {
+
+ % measure 6
+ \fraction \times 5/3 {
+ \beam #0 #5 g,128 \sffp \< [ % 40
+ \beam #5 #5 g,128 % 41
+ \beam #5 #5 g,128 % 42
+ \beam #5 #5 g,128 % 43
+ \beam #5 #5 g,128 % 44
+ \beam #5 #5 g,128 % 45
+ \beam #5 #5 g,128 % 46
+ \beam #5 #1 g,128 % 47
+ \times 2/3 {
+ \beam #1 #2 g,16 % 48
+ \beam #3 #1 g,32 \fX % 49
+ }
+ \times 2/3 {
+ \beam #1 #4 g,64 \sffp \< % 50
+ \beam #4 #4 g,64 % 51
+ \beam #4 #4 g,64 % 52
+ \beam #4 #4 g,64 % 53
+ \beam #4 #4 g,64 % 54
+ \beam #4 #0 g,64 \fX ] % 55
+ }
+ }
+
+ % measure 7
+ r8 % 56
+ g,8 \sf \< [ % 57
+ g,16 % 58
+ \beam #2 #0 g,16 \ffX ] % 59
+ \times 8/9 {
+ r16 % 60
+ \beam #4 #4 g,64 \sfp \< [ % 61
+ \beam #4 #4 g,64 % 62
+ \beam #4 #4 g,64 % 63
+ \beam #4 #4 g,64 % 64
+ \beam #4 #0 g,64 \fX ] % 65
+ }
+
+ % measure 8
+ \times 4/5 {
+ \times 4/7 {
+ r4 % 66
+ \beam #2 #2 g,16 \fX [ % 67
+ \beam #2 #2 g,16 \f % 68
+ \beam #2 #0 g,16 \fX ] % 69
+ }
+ r8 % 70
+ \beam #3 #3 g,32 \fX [ % 71
+ \beam #3 #3 g,32 \fX % 72
+ \beam #3 #3 g,32 \fX % 73
+ \beam #3 #3 g,32 \fX % 74
+ \beam #3 #3 g,32 \fX % 75
+ \beam #3 #3 g,32 \sf \< % 76
+ \beam #3 #3 g,32 % 77
+ \beam #3 #0 g,32 \ffX ] % 78
+ }
+
+ }
+ >>
+ >>
+>>
--- /dev/null
+\version "2.12.0"
+\include "example-header.ily"
+
+\include "predefined-guitar-fretboards.ly"
+
+#(set-global-staff-size 17)
+
+global = {
+ \time 4/4
+ \key g \major
+ \partial 4
+ \numericTimeSignature
+}
+
+melody = \relative c' {
+ \global
+ d4
+ g4 b8( a) g4 fis
+ e e e e
+ a c8( b) a4 g
+ fis a d
+}
+
+harmonies = \chordmode {
+ \global
+ s4 g1 | c | a:m | d % 1-3
+}
+
+text = \lyricmode {
+ My eyes are dim, I can -- not see,
+ I have not brought my specs with me!
+}
+
+\score {
+ <<
+ \new ChordNames { \harmonies }
+ \new FretBoards { \harmonies }
+ \new Staff {
+ \context Voice = "vocal" { \melody }
+ }
+ \new Lyrics \lyricsto "vocal" \text
+ >>
+}
+
--- /dev/null
+\version "2.11.33"
+\paper{
+ indent=0\mm
+ ragged-last=##f
+ ragged-right=##f
+ line-width=158\mm % produces 624 pixels
+ oddFooterMarkup=##f
+ oddHeaderMarkup=##f
+ bookTitleMarkup = ##f
+ scoreTitleMarkup = ##f
+}
+
+\layout {
+ \context { \Score
+ \override PaperColumn #'keep-inside-line = ##t
+ \override NonMusicalPaperColumn #'keep-inside-line = ##t
+ }
+}
+
+
--- /dev/null
+\version "2.12.0"
+\include "example-header.ily"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This is a brief passage from Enrique Granados %
+% Goyescas, "Coloquio en la Reja." %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#(set-global-staff-size 17)
+
+\paper {
+ ragged-right = ##f
+ #(set-paper-size "letter" 'landscape)
+ system-count = 1
+}
+
+
+csh = \change Staff = "high"
+csm = \change Staff = "middle"
+csl = \change Staff = "low"
+
+crmolto = \markup { \italic \large "cresc. molto" }
+appassmolto = \markup { \italic \large "appassionato molto" }
+
+#(ly:set-option 'point-and-click #f)
+
+global = {
+ \time 3/4
+ \set fontSize = #1
+ \override Beam #'thickness = #0.5
+ \override NoteColumn #'ignore-collision = ##t
+}
+
+upperVoiceOne = \relative c'' {
+ \voiceOne
+ \override TupletBracket #'transparent = ##t
+ <aes f'>8\([ \times 4/5{g'32( aes g f g]) }
+ <es aes>8[ \times 4/5{<d bes'>32( c' bes aes bes]) }
+ <es, aes es'>8 <d fis b d>\) | % end m. 1
+ %--------------------------------------------------%
+ <c g' c>4\( \voiceTwo <bes es bes'\arpeggio>\)
+ \slurUp <aes aes'>16( <bes bes'> <g g'>8) % end m. 2
+ %--------------------------------------------------%
+ \noBreak
+ \voiceOne
+ <f aes d f>8\([ \times 4/5{<g g'>32( aes' g f g]) }
+ \set subdivideBeams = ##t
+ \set beatLength = #(ly:make-moment 1 8)
+ <aes, aes'>16 <c f> \times 4/5{ bes'32( c bes aes bes]) }
+ \set subdivideBeams = ##f
+ \ottava #1 <es es'>16 <f f'> <d d'> \appoggiatura f8 <es es'>16\)
+}
+
+upperVoiceTwo = \relative c'' {
+ \voiceTwo
+ s8 c8\< <bes, f'>[ <bes aes'> c' <bes, d fis>\!]
+ s32 s32_\appassmolto s8. \voiceOne r8 <bes'' es bes'>-> s4
+ \override Stem #'cross-staff = ##t
+ \override Stem #'length = #28
+ \override Stem #'flag-style = #'no-flag
+ s8 \voiceTwo g,8 aes4 s4
+}
+
+middleVoiceOne = \relative c' {
+ \override Stem #'cross-staff = ##t
+ \override Stem #'length = #32
+ \override Stem #'flag-style = #'no-flag
+ d!8\noBeam s8 s8 s8_\crmolto s4 % 1
+ s4 <g bes\arpeggio>8[ <es' g>] \voiceOne e,8( dis16 e) | % 2
+ \revert Stem #'length
+ \revert Stem #'cross-staff
+ \showStaffSwitch
+ \csh \stemUp f4 s2
+ %s2. % beginning m. 3
+}
+
+middleVoiceTwo = \relative c' {
+ s2. | % 1
+ \override Stem #'cross-staff = ##t
+ \override Stem #'length = #24
+ \override Stem #'flag-style = #'no-flag
+ s2 \voiceTwo e!4 | % 2
+ s4 \voiceTwo <bes c es f>8 <f' aes es'>16 d' <bes, f' aes c>8 <bes' fis'> | % 3
+}
+
+lowerVoiceOne = \relative c, {
+ \override Staff.NoteCollision #'merge-differently-headed = ##t
+ \override Staff.NoteCollision #'merge-differently-dotted = ##t
+ bes8 \csm \stemDown <bes'' c es>8 s2
+ \csl \stemUp
+ \set subdivideBeams = ##t
+ \set beatLength = #(ly:make-moment 1 16)
+ s8 \hideNotes \slurUp \stemDown
+ es,,64( bes'' s64 \unHideNotes \stemUp g64[ bes c d c]) s2
+ \set subdivideBeams = ##f
+ bes,,8 \csm \stemDown <bes'' c es>8 s2
+}
+
+lowerVoiceTwo = \relative c, {
+ \voiceTwo
+ bes2.
+ \csh
+ \once \override Beam #'damping = #+inf.0
+ <bes'' es g>8 \csl \slurUp
+ %\once\override Slur #'extra-offset = #'(0 . 4)
+ es,,64 bes' es g s32.
+ c64
+ s4 <bes des>
+ bes,,2.
+}
+
+
+\score {
+ \new PianoStaff <<
+ \set PianoStaff.connectArpeggios = ##t
+% \override PianoStaff.Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket
+ \new Staff = "high" <<
+ \global
+ \context Voice = "upperVoiceOne" { \upperVoiceOne }
+ \context Voice = "upperVoiceTwo" { \upperVoiceTwo }
+ >>
+ \new Staff = "middle" <<
+ \global
+ \context Voice = "middleVoiceOne" { \middleVoiceOne }
+ \context Voice = "middleVoiceTwo" { \middleVoiceTwo }
+ >>
+ \new Staff = "low" <<
+ \clef bass
+ \global
+ \context Voice = "lowerVoiceOne" { \lowerVoiceOne }
+ \context Voice = "lowerVoiceTwo" { \lowerVoiceTwo }
+ >>
+ >>
+ \layout {
+ \context {
+ \Score
+ \override TimeSignature #'stencil = ##f
+ \remove "Bar_number_engraver"
+ }
+ }
+ %{\midi {
+ \context {
+ \Score
+ tempoWholesPerMinute = #(ly:make-moment 120 4)
+ }
+ }%}
+}
--- /dev/null
+{
+ c'4^"NO EXAMPLE HERE YET"
+}
+
--- /dev/null
+%%% G.F Haendel, Giulio Cesare in Egitto
+%%% Act I, scene IV
+%%% Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)
+%%%
+%%% Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+\version "2.12.2"
+\include "sesto.ily"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Lead sheet
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\book {
+ \paper {
+ #(layout-set-staff-size 14)
+ }
+ \score {
+ \new StaffGroupNoBar <<
+ \new StaffGroupNoBracket <<
+ \new Staff <<
+ \set Staff.instrumentName = "Violino I."
+ \global \clef treble \keepWithTag #'violin \violinoI
+ >>
+ \new Staff <<
+ \set Staff.instrumentName = "Violino II."
+ \global \clef treble \keepWithTag #'violin \violinoII
+ >>
+ >>
+ \new Staff <<
+ \new Voice = "sesto" \with { autoBeaming = ##f } <<
+ \set Staff.instrumentName = \markup \smallCaps Sesto.
+ \global \clef treble \sesto
+ >>
+ \lyricsto "sesto" \new Lyrics \sestoLyrics
+ >>
+ \new Staff <<
+ \set Staff.instrumentName = "Bassi."
+ \global \clef bass \bassi
+ >>
+ >>
+ \layout {
+ indent = 20\mm
+ \context {
+ \Score
+ \name Score
+%% FIXME: vertical engine changed!
+%% \override VerticalAlignment #'max-stretch = #ly:align-interface::calc-max-stretch
+ \accepts "StaffGroupNoBar"
+ skipBars = ##t
+ }
+ \context {
+ \StaffGroup
+ \name StaffGroupNoBar
+ \description "Like StaffGroup, but without spanbar"
+ \remove "Span_bar_engraver"
+ \accepts "StaffGroupNoBracket"
+ }
+ \context {
+ \StaffGroup
+ \name StaffGroupNoBracket
+ \description "Like StaffGroup, but without brackets"
+ \remove "System_start_delimiter_engraver"
+ }
+ }
+% \midi { }
+ }
+}
+
+
--- /dev/null
+%%% G.F Haendel, Giulio Cesare in Egitto
+%%% Act I, scene IV
+%%% Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)
+%%%
+%%% Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+\version "2.12.2"
+\include "sesto.ily"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Reduction
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\book {
+ \header { instrument = "Vocal part and keyboard reduction" }
+ \paper {
+ #(layout-set-staff-size 16)
+ }
+ \score {
+ <<
+ \new Staff <<
+ \new Voice = "sesto" \with { autoBeaming = ##f } <<
+ \set Staff.instrumentName = \markup \smallCaps Sesto.
+ \global \clef treble \sesto
+ >>
+ \lyricsto "sesto" \new Lyrics \sestoLyrics
+ >>
+ \new PianoStaff <<
+ \new Staff <<
+ \global \clef treble
+ \partcombine \keepWithTag #'reduction \violinoI \keepWithTag #'reduction \violinoII
+ >>
+ \new Staff <<
+ \global \clef bass \bassi
+ >>
+ >>
+ >>
+ \layout {
+ indent = 20\mm
+ \context { \Voice printPartCombineTexts = ##f }
+ }
+ }
+}
+
--- /dev/null
+%%% G.F Haendel, Giulio Cesare in Egitto
+%%% Act I, scene IV
+%%% Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)
+%%%
+%%% Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+\version "2.12.2"
+\include "sesto.ily"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Violino I
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\book {
+ \header { instrument = "Violino I" }
+ \paper {
+ #(layout-set-staff-size 18)
+ }
+ \score {
+ \new Staff <<
+ \global \clef treble \keepWithTag #'violin \violinoI
+ >>
+ \layout { indent = 5\mm }
+ }
+}
--- /dev/null
+%%% G.F Haendel, Giulio Cesare in Egitto
+%%% Act I, scene IV
+%%% Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)
+%%%
+%%% Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+\version "2.12.2"
+\header {
+ title = "Giulio Cesare in Egitto"
+ subtitle = "Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)"
+ composer = "G.F Handel"
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Notes and lyrics
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+sesto = {
+ R1*6 |
+ r4 r8 g' c'' ees''16[ d''] c''8 c'' |
+ c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+ aes' g' r c'' c'' b'16[ c''] d''8 g' |
+
+%{
+ %%10
+ f'4 r8 d'' ees'' d''16[ c''] b'4 |
+ c'' r8 c'' c''8. c'16 c'4 |
+ r r8 c'' aes' c''16[ bes'] aes'8 g' |
+ f' f' r4 bes'8 bes'16 aes' g'8 f' |
+ ees' ees' r ees'' ees'' d''16[ ees''] f''8 bes' |
+ %%15
+ aes'4. bes'8 g' ees'' f'4 |
+ ees' r8 ees'' ees''8. ees'16 ees'4 |
+ r r8 c'' c''8. c'16 c'4 |
+ r r8 c'' c'' d''16[ ees''] f''8 ees'' |
+ d'' bes' r4 bes'8 c''16 d'' ees''8 d'' |
+ %%20
+ c'' c'' r c'' f' f''16[ ees''] d''8 c'' |
+ b'16[ a'] g'8 r4 ees''8 ees''16 d'' c''8 bes' |
+ aes' g' r g' aes' f' d'' b' |
+ f''2 ~ f''8 d'' b' g' |
+ ees'4 r8 d'' ees'' d''16[ c''] b'4 |
+ %%25
+ c'' r8 g' c'' g' ees' g' |
+ c'4 r8 g' aes' f' d'' b' |
+ f''2 ~ f''8 d'' b' g' |
+ ees'4 r8 g'' ees'' d''16[ c''] b'4 |
+ c''2 r |
+ %%30
+ R1*5 |
+%}
+}
+
+sestoLyrics = \lyricmode {
+ Sve -- glia -- te -- vi nel co -- re,
+ fu -- rie "d'un" al -- "ma of" -- fe -- sa,
+%{
+ a far "d'un" tra -- di -- tor a -- spra ven -- det -- ta!
+ sve -- glia -- te -- vi,
+ sve -- glia te -- vi nel co -- re,
+ fu -- rie d'un al -- "ma of" -- fe -- sa,
+ a far "d'un" tra -- di -- tor as -- pra ven -- det -- ta,
+ sve -- glia -- te -- vi,
+ sve -- glia -- te -- vi,
+ sve -- glia -- te -- vi nel co -- re,
+ fu -- rie d'un al -- "ma of" -- fe -- sa,
+ sve -- glia -- te -- vi nel co -- re,
+ fu -- rie d'un al -- "ma of" -- fe -- sa,
+ a far d'un tra -- di -- tor, __
+ d'un tra -- di -- tor as -- spra ven -- det -- ta,
+ a far d'un tra -- di -- tor,
+ a far d'un tra -- di -- tor, __
+ d'un tra -- di -- tor as -- pra ven -- det -- ta!
+%}
+}
+
+violinoI = {
+ r4 r8 g' c'' ees''16 d'' c''8 c'' |
+ c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+ aes' g' r c'' c''8.^\trill b'32 c'' d''8 g' |
+ f'4. d''8 ees'' d''16 c'' b'4 |
+ %%5
+ c''16 g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
+ c'' g'' f'' g'' ees'' g'' f'' g'' aes''8 g''16 f'' f''4^\trill |
+ ees'' r8 g'_\p c'' ees''16 d'' c''8 c'' |
+ c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+ aes' g' r c'' c'' b'16 c'' d''8 g' |
+%{
+ %%10
+ f'4 r8 d'' ees'' d''16 c'' b'4 |
+ c''16 g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
+ ees'' g'' f'' g'' ees'' g'' f'' g'' aes''8 aes' r4 |
+ d''16 f'' ees'' f'' d'' f'' ees'' f'' g''8 g' r4 |
+ ees'16 g' f' g' ees'8 ees'' ees'' d''16 ees'' f''8 bes' |
+ %%15
+ aes'4. bes'8 g' ees'' d''4 |
+ ees''16 bes'' aes'' bes'' g'' bes'' aes'' bes'' g'' bes'' aes'' bes'' g'' bes'' aes'' bes'' |
+ g'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
+ ees'' g'' f'' g'' ees'' g'' f'' g'' aes'' c'' c'' bes' aes' c'' bes' c'' |
+ d'' f'' ees'' f'' d'' f'' ees'' f'' g'' bes' bes' aes' g' bes' aes' bes' |
+ %%20
+ c'' ees'' ees'' f'' g'' ees'' f'' g'' aes'' f'' g'' ees'' f'' d'' ees'' c'' |
+ \tag #'violin { g'' g' g'' g'' } \tag #'reduction { g'' d'' g'' g'' } g'' b' g'' g'' g'' f'' ees'' d'' c''8 bes' |
+ aes' g' r g' aes' f' d'' b' |
+ f''2 ~ f''8 d'' b' g' |
+ ees'16 c' g' ees' c'' g' g'' d'' g'4 r |
+ %%25
+ c'''16 ees''' d''' ees''' c''' ees''' d''' ees''' g'' c''' b'' c''' g'' c''' b'' c''' |
+ ees'' g'' f'' g'' ees'' g'' f'' g'' \tag #'violin { aes'8 f' } \tag #'reduction { c''8 aes' } d'' b' |
+ f''2 ~ f''8 d'' b' g' |
+ ees'4^\fermata r r2 |
+ r4 r8 c'_\f c'' ees''16 d'' c''8 c'' |
+ %%30
+ c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+ aes' g' r g' aes' f' d'' b' |
+ f''2 ~ f''8 d'' b' g' |
+ c''16 g'' f'' g'' ees'' g'' f'' g'' c'' g'' f'' g'' ees'' g'' f'' g'' |
+ b'8 c''16 d'' ees''8 d'' c''4^\fermata r
+%}
+}
+
+violinoII = {
+ r4 r8 g' c'' ees''16 d'' c''8 c'' |
+ c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+ aes' g' r c'' c''8.^\trill b'32 c'' d''8 g' |
+ f'4. d''8 ees'' d''16 c'' b'4 |
+ %%5
+ c''16 ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+ c'' ees'' d'' ees'' c'' ees'' d'' ees'' d''8[ ees''] ees'' d'' |
+ ees''4 r8 g' c'' ees''16 d'' c''8 c'' |
+ c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+ aes' g' r c'' c'' b'16 c'' d''8 g' |
+%{
+ %%10
+ f'4 r8 d'' ees'' d''16 c'' b'4 |
+ c''16 ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+ c'' ees'' d'' ees'' c'' ees'' d'' ees'' f''8 f' r4 |
+ bes'16 d'' c'' d'' bes' d'' c'' d'' ees''8 ees' r4 |
+ c'16 ees' d' ees' c'8 ees'' ees'' d''16 ees'' f''8 bes' |
+ %%15
+ aes'4. bes'8 g' ees'' d''4 |
+ ees''16 g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
+ ees'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+ c'' ees'' d'' ees'' c'' ees'' d'' ees'' f'' aes' aes' g' f' aes' g' aes' |
+ bes' d'' c'' d'' bes' d'' c'' d'' ees'' g' g' f' ees' g' f' g' |
+ %%20
+ aes' c'' c'' d'' ees'' c'' d'' ees'' f'' d'' ees'' c'' d'' b' c'' a' |
+ \tag #'violin { b' d' d' b' } \tag #'reduction { b' g' d'' b' } b' g' b' d'' g'' f'' ees'' d'' c''8 bes' |
+ d' ees' r g' aes' f' d'' b' |
+ f''2 ~ f''8 d'' b' g' |
+ ees'16 c' g' ees' c'' g' g'' d'' g'4 r |
+ %%25
+ ees''16 g'' f'' g'' ees'' g'' f'' g'' ees'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+ g' ees'' d'' ees'' c'' ees'' d'' ees'' \tag #'violin { c''8 aes' } \tag #'reduction { aes'8 f' } f' d' |
+ f''2 ~ f''8 d'' b' g' |
+ ees'4^\fermata r r2 |
+ r4 r8 c' c'' ees''16 d'' c''8 c'' |
+ %%30
+ c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+ aes' g' r g' aes' f' d'' b' |
+ f''2 ~ f''8 d'' b' g' |
+ c''16 ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+ d'8 ees'16 f' g'8 b' c''4^\fermata r
+%}
+}
+
+bassi = {
+ c4 r8 g c' ees'16 d' c'8 c' |
+ c' c r g aes f bes bes, |
+ ees ees, r c ees c g ees |
+ aes f d' b c' f g g, |
+ %%5
+ c4 r c'8 c bes bes, |
+ aes aes, g g, f ees bes bes, |
+ ees4 r r r8 c_\p |
+ c' ees'16 d' c'8 bes aes f bes bes, |
+ ees ees, r c ees c g ees |
+%{
+ %%10
+ aes f d' b c' f g g, |
+ c4 r r r8 c' |
+ c'8. c16 c4 r8 f d ees |
+ bes bes, r bes g aes bes g |
+ c' c c' bes16 aes g8 ees bes g |
+ %%15
+ c' c d bes, ees g bes bes, |
+ ees4 r r r8 ees' |
+ ees'8. ees16 ees4 r r8 c' |
+ c'8. c16 c8 c' aes f r f |
+ bes bes, bes, bes g ees r ees |
+ %%20
+ aes aes, g g, f f, r f |
+ g g, r4 c'8 g aes g |
+ f ees r4 r r8 g, |
+ aes, f, d b, aes f d' b |
+ c'4 r8 b c' f g g, |
+ %%25
+ c' g c g, c,4 r |
+ c'8 g c c' f4 r8 g, |
+ aes, f, d b, aes f d' b |
+ c'4 r8 b c' f g g, |
+ c4 r8 c_\f c' ees'16 d' c'8 c' |
+ %%30
+ c' c r g aes f bes bes, |
+ ees g ees c f,4 r8 g, |
+ aes, f, d b, aes f d' b |
+ c' c bes bes, aes aes, g g, |
+ f c g g, c4^\fermata r
+%}
+}
+
+global = {
+ \key c \minor
+ \set Score . tempoWholesPerMinute = #(ly:make-moment (/ 80 4) 1 0 1)
+ \time 4/4
+%s1*34 \bar "|."
+}
+
--- /dev/null
+\version "2.12.0"
+\include "example-header.ily"
+
+#(ly:set-option 'point-and-click #f)
+
+global = {
+ \time 4/4
+ \numericTimeSignature
+ \key c \major
+ #(set-global-staff-size 24)
+}
+
+cf = \relative c {
+ \clef bass
+ \global
+ c4 c' b a |
+ g a f d |
+ e f g g, |
+ c1
+}
+
+upper = \relative c'' {
+ \global
+ r4 s4 s2 |
+ s1*2 |
+ s2 s4 s
+ \bar "||"
+}
+
+bassFigures = \figuremode {
+ s1*2 | s4 <6> <6 4> <7> | s1
+}
+
+\markup { "Exercise 3: Write 8th notes against the given bass line." }
+
+\score {
+ \new PianoStaff <<
+ \new Staff {
+ \context Voice = "added voice" \with {
+ \consists "Balloon_engraver"
+ }
+ \upper
+ }
+
+ \new Staff = lower {
+ <<
+% \context Voice = "cantus firmus" \with {
+% \consists "Balloon_engraver"
+% }
+ \context Staff = lower \cf
+ \new FiguredBass \bassFigures
+ >>
+ }
+ >>
+ \layout {}
+ %{\midi {
+ \context {
+ \Score
+ tempoWholesPerMinute = #(ly:make-moment 120 4)
+ }
+ }%}
+}
+
@divClass{column-center-top}
@subheading Our Goal
-@imageFloat{flat-design.png,right}
+@imageFloat{flat-design,png,right}
The inspiration for LilyPond came when two musicians became
annoyed with the bland and boring look of computer-printed
@item
@ref{Freedom}: LilyPond is Free Software.
+@item
+@ref{Background}: Our computational aesthetics.
+
@end itemize
@divEnd
@item
@ref{Text input}: You write music as @emph{text}?!
+@item
+@ref{Alternate input}: Other ways of working with LilyPond.
+
@end itemize
@divEnd
-
@divClass{hide}
@menu
* Features:: What can LilyPond do?
* Examples:: I want to see some music!
* Freedom:: Freedom and the GPL.
+* Background:: Computational aesthetics.
* Productions:: Real-life use of LilyPond.
* Testimonials:: What do people say about it?
* Text input:: You write music as text?!
+* Alternate input:: Other ways of working with LilyPond.
@end menu
@divEnd
@help{hoping to delegate this. Desired: an enthusiastic
attempt to sway people towards trying lilypond. The warnings
-about writing music as text come in Crash Course, not here. Maybe
-draw inspiration from
-http://lilypond.org/web/about/features
-and
-http://lilypond.org/web/switch/tour
-and
-http://lilypond.org/web/switch/advantages
-}
+about writing music as text come in Crash Course, not here.}
+
+Maybe draw inspiration from
+@uref{http://lilypond.org/web/about/features} and
+@uref{http://lilypond.org/web/switch/tour} and
+@uref{http://lilypond.org/web/switch/advantages}
+
+
@subheading Why switch to LilyPond?
@subsubheading Excellent classical engraving
-@imageFloat{flat-design.png,right}
+@imageFloat{flat-design,png,right}
The point of using LilyPond is to produce elegant sheet music that
is easy to read. LilyPond's developer community has spent
style settings, font designs and algorithms have been inspired by
the finest hand-engraved music. LilyPond output has the same
strong, balanced and elegant look as the best-engraved classical
-scores
+scores. This is further explained in our @ref{Essay}.
-@subsubheading No fiddling
+@subsubheading Less fiddling
-Don't waste time with tweaking the output; LilyPond gets the
+Spend less time with tweaking the output; LilyPond gets the
formatting correct right from the start. It determines spacing by
itself, and breaks lines and pages to provide a tight and uniform
layout. Clashes between lyrics, notes, and chords are resolved
for later reference.
+@subsubheading Accessibility
+
+Text-based input also makes score-writing possible for users with
+severe physical disabilities. Dexterity-impaired users who are
+unable to type or control a computer mouse can use
+speech-recognition software to edit LilyPond files. Even users
+who are totally blind can use screen-reading software to write
+LilyPond files -- an impossible task in graphical-based
+score-writing programs.
+
+
@subsubheading Mix music and text
-@imageFloat{lilypond-book.png,right}
+@imageFloat{lilypond-book,png,right}
Put fragments of music into texts without cutting and pasting
pictures. Integrate music into LaTeX or HTML seamlessly, or add
@subsubheading Excellent support
LilyPond runs on all popular platforms: Linux, MacOS X, and
-Windows. LilyPond comes with extensive documetation and hundreds
+Windows. LilyPond comes with extensive documentation and hundreds
of example files. There is an active user community answering
questions on the Lilypond user mailing list, while the development
team makes sure that problems are solved quickly.
handles cross-staff beaming gracefully and puts the system brace
perfectly around all three staves.
-@imageClickable{liszt-wagner-small.png, (click to enlarge),
-liszt-wagner.png, center}
+@exampleImage{liszt-wagner}
@end ignore
@newsItem
This organ work by J.S. Bach is a fairly typical engraving project
in Lilypond.
-@imageClickable{bach-bwv610-small.png, (click for longer
-excerpt), bach-bwv610.png, center}
+@exampleImage{bach-bwv610}
@newsEnd
@newsItem
of the more advanced features of typesetting, including kneed
beams, cross-staff stems, and voice-follow lines.
-@imageClickable{granados-small.png, (click to enlarge),
-granados.png, center}
+@exampleImage{granados}
@newsEnd
@newsItem
Lilypond also supports various types of ancient notation, such
as this passage of Gregorian chant.
-@imageClickable{ancient-headword-small.png, (click to enlarge),
-ancient-headword.png, center}
+@exampleImage{ancient-headword}
@newsEnd
@newsItem
unusual notation. Here is an excerpt from Trevor Bača's
@emph{Čáry}, for unaccompanied bass flute.
-@imageClickable{cary-small.png, (click to enlarge),
-cary.png, center}
+@exampleImage{cary}
@newsEnd
Nicolas Sceaux's} engraving of Handel's @emph{Giulio Cesare}, in
full score, piano-vocal reduction, and a violin part.
-@imageClickable{sesto-small.png, (click to enlarge),
-sesto.png, center}
+@exampleImage{sesto-full}
-@imageClickable{sesto-1-small.png, (click to enlarge),
-sesto-1.png, center}
+@exampleImage{sesto-piano}
-@imageClickable{sesto-2-small.png, (click to enlarge),
-sesto-2.png, center}
+@exampleImage{sesto-violin}
@newsEnd
from a Bach Lute Suite, with tablature generated automatically
from the notes entered for the traditional staff.
-@imageClickable{bach-tab-example-small.png, (click to enlarge),
-bach-tab-example.png, center}
+@exampleImage{bach-tab-example}
@newsEnd
@newsItem
Standard output can be modified heavily. Here someone has created
an impressive Schenkerian analysis.
-@imageClickable{bach-schenker-small.png, (click to enlarge),
-bach-schenker.png, center}
+@exampleImage{bach-schenker}
@newsEnd
@newsItem
Vaticana style clefs, the slashed stems indicating plicated notes,
and the ligature braces above certain groups of notes.
-@imageClickable{aucun-snippet-small.png, (click to enlarge),
-aucun-snippet.png, center}
+@exampleImage{aucun-snippet}
@newsEnd
@newsItem
Lilypond is perfectly suited for educational purposes as well.
Here is an example of a simple counterpoint exercise.
-@imageClickable{theory-small.png, (click to enlarge),
-theory.png, center}
+@exampleImage{theory}
@newsEnd
@help NEED BETTER POP EXAMPLE!! Also a better theory example would be nice.
predefined fretboard diagrams, but these can be heavily customized
to suit nearly any situation.
-@imageClickable{chart-small.png, (click to enlarge),
-chart.png, center}
+@exampleImage{chart}
@newsEnd
@help NEED DIFFERENT ORCHESTRAL OR OPERA EXAMPLE?!
full symphony orchestra, as well. Score, parts, piano reductions,
and conductors' scores can be produced from the same source files.
-@imageClickable{orchestral-small.png, (click to enlarge),
-orchestral.png, center}
+@exampleImage{orchestral}
@newsEnd
@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+
+Still not convinced? Read about some of our users'
+@ref{Productions} and sheet music. If you've already decided to
+try LilyPond, first read about our @ref{Text input}.
+
+FIXME: rewrite for Background.
+@divEnd
+
+
+@node Background
+@unnumberedsec Background
+
+@divClass{column-center-top}
+@subheading Background essay
+
+We have an extensive essay describing computational aesthetics:
+the art of creating beauty with a computer. FIXME blah blah.
+
+FIXME: simplify the verbosity below.
+
+If you just want a quick introduction to LilyPond, the essay might
+be too much material to read. If you would like to read it now,
+please progress to @ref{Essay}.
+
+@divEnd
+
@divClass{column-center-bottom}
@subheading Where now?
@node Productions
@unnumberedsec Productions
-@help{more references to publishers who use lilypond}
-
@divClass{column-left-top}
@subheading Concerts
@divClass{keep-bullets}
@itemize
+@item
+@uref{http://www.mutopiaproject.org/index.html, Mutopia Project},
+over 1500 pieces of classical sheet music for free download, and
+the main showcase of LilyPond scores.
+
@item
@uref{http://www.adoromusicpub.com/, Adoro Music Publishing},
high-quality scores of sacred music, available for immediate
download or in traditional paper format.
+
+@item
+@uref{http://theshadylanepublishing.com/, The Shady Lane
+Publishing},
+a @qq{micro musical publishing house} whose goal is to promote a
+new form of musical economy closer to the musicians and music
+lovers.
+
@end itemize
+
@divEnd
@divEnd
@unnumberedsec Testimonials
@divClass{testimonial-item}
-@imageFloat{carter-brey.jpg, right}
+@imageFloat{carter-brey,jpg, right}
@subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey}, Principal Cellist, New York Philharmonic
@qq{... I've written a couple of encore pieces for solo cello
@divClass{testimonial-item}
-@imageFloat{orm-finnendahl.jpg, left}
+@imageFloat{orm-finnendahl,jpg, left}
@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg
@qq{Although I don't know [LilyPond] very well yet, I'm *very*
@divClass{testimonial-item}
-@imageFloat{darius-blasband.jpg, right}
+@imageFloat{darius-blasband,jpg, right}
@subsubheading Darius Blasband, composer (Brussels, Belgium)
@qq{[..after the first orchestra rehearsal] I got numerous
@subheading @qq{Compiling} Music
-@imageClickable{nereid-shot-small.png, (click to enlarge),
-nereid-shot.png, right}
+@imageClickable{nereid-shot-small,png, (click to enlarge), nereid-shot,png, right}
LilyPond is a @emph{compiled} system: it is run on a text file
containing the notes. The resulting output is viewed on-screen or
Notes are encoded with letters and numbers. Special commands are
entered with backslashes.
-@imageFloat{text-input-1-annotate.png,center}
-@imageFloat{text-input-1-output.png,center}
+@imageFloat{text-input-1-annotate,png,center}
+@imageFloat{text-input-1-output,png,center}
Alterations are made with different names: add @code{-is} for
sharp, and @code{-es} for flat (these are Dutch note names, other
languages are available). LilyPond figures out where to put
accidentals.
-@imageFloat{text-input-2-annotate.png,center}
-@imageFloat{text-input-2-output.png,center}
+@imageFloat{text-input-2-annotate,png,center}
+@imageFloat{text-input-2-output,png,center}
@subsubheading Pop music
Put chords and lyrics together to get a lead sheet:
-@help{change the lyrics. svg available}
-
-@imageFloat{text-input-pop-annotate.png,center}
-@imageFloat{text-input-pop-output.png,center}
+@imageFloat{text-input-pop-annotate,png,center}
+@imageFloat{text-input-pop-output,png,center}
affects both parts and score. To share the notes, the music is
assigned to a variable:
-@imageFloat{text-input-parts-both-annotate.png,center}
+@imageFloat{text-input-parts-both-annotate,png,center}
This variable is then used in a single part (here transposed, with
condensed multi rests):
-@imageFloat{text-input-parts-single-annotate.png,center}
-@imageFloat{text-input-parts-single-output.png,center}
+@imageFloat{text-input-parts-single-annotate,png,center}
+@imageFloat{text-input-parts-single-output,png,center}
The same variable is used in the full score (here in concert
pitch):
-@imageFloat{text-input-score-annotate.png,center}
-@imageFloat{text-input-score-output.png,center}
+@imageFloat{text-input-score-annotate,png,center}
+@imageFloat{text-input-score-output,png,center}
@subsubheading Beginner Documentation
faster than with a piano keyboard or mouse+GUI! Perhaps you would
like to review the @ref{Features}, @ref{Examples}, or
@ref{Freedom} that LilyPond provides, or read about users'
-@ref{Productions} and @ref{Testimonials}.
+@ref{Productions} and @ref{Testimonials}. In addition, our
+approach to the computational aesthetics of classical engraving is
+explained in our @ref{Background}. FIXME
+@divEnd
+
+
+@node Alternate input
+@unnumberedsec Alternate input
+
+@divClass{column-center-top}
+@subheading Graphical environment: Denemo
+
+@sourceimage{logo-linux,,,}
+
+FIXME: insert text and a graphic
+
+@divEnd
+
+@divClass{column-center-top}
+@subheading Mixed environment: LilyPondTool
+
+@sourceimage{logo-linux,,,}
+@sourceimage{logo-freebsd,,,}
+@sourceimage{logo-macosx,,,}
+@sourceimage{logo-windows,,,}
+
+
+FIXME: insert text and a graphic
+
+@divEnd
+
+@divClass{column-center-top}
+@subheading Text environment: Emacs and Vim
+
+@sourceimage{logo-linux,,,}
+@sourceimage{logo-freebsd,,,}
+@sourceimage{logo-macosx,,,}
+@sourceimage{logo-windows,,,}
+
+
+FIXME: insert text and a graphic
+
@divEnd
+@divClass{column-center-top}
+@subheading Other
+
+FIXME: insert text and a graphic(s)
+
+@divEnd
+
+@divClass{column-center-bottom}
+@subheading Legalese
+
+@divClass{legal}
+All logos and product images are copyright and trademark
+acknowledged.
+
+@logoLegalLinux
+
+@logoLegalFreeBSD
+
+@logoLegalMacOSX
+
+@logoLegalWindows
+
+@divEnd
+
+@divEnd
+
+
+
+
@item @ref{Translated}:
translation status for non-English readers.
-@item @ref{Old}:
-manuals for older versions.
+@item @ref{All}:
+manuals for older versions and downloadable versions.
@item @ref{Development}:
manuals for the unstable version.
* Changes:: NEWS.
* Internals:: Internals.
* Translated:: Translation.
-* Old:: Old.
+* All:: All manuals.
* FDL:: Licence.
@end menu
@node Learning
@unnumberedsec Learning
+@divClass{column-left-top}
+@subheading Learning manual
+
This book explains how to begin learning LilyPond, as well as
explaining some key concepts in easy terms. You should read these
chapters in a linear fashion.
There is a paragraph @strong{See also} at the end of each section,
which contains cross-references to other sections: you should not
-follow these cross-references at first reading; when you have read
-all of the Learning, you may want to read some sections
-again and follow cross-references for further reading.
+follow these cross-references at first reading. When you have
+read all of the manual, you may want to read some sections again
+and follow those cross-references for more information.
+@divEnd
+
+@divClass{column-right-top}
+@subheading Read it now
+
+@itemize
+
+@item @rlearningnamed{Top,Learning}:
+read this manual in the same format as this one.
+
+@end itemize
+@divEnd
+
+@divClass{column-center-bottom}
+@subheading Other formats
+
+@divClass{keep-bullets}
+@itemize
+
+@item @uref{../learning/index.html, Learning (split HTML)}:
+the manual is split between many HTML pages.
+@emph{(small download for each page)}
+
+@item @uref{../learning-big-page.html, Learning (big HTML)}:
+read this manual as one huge HTML page.
+@emph{(large single download, around 10? Mb)}
+
+@item @uref{../learning.pdf, learning.pdf}:
+download as a PDF file.
+@emph{(large single download, 2.8 Mb)}
+@item @uref{FIXME, learning.info}:
+GNU info format for documentation. FIXME, link broken.
+
+@end itemize
+@divEnd
+@divEnd
+
+@ignore
@itemize
@item
all.
@end itemize
+@end ignore
@node Glossary
basic material covered in the Learning and is familiar with
the English musical terms presented in the Musical Glossary.}
+@ignore
@itemize
@item
a complete index.
@end itemize
+@end ignore
@node Usage
This book explains how to execute the programs and how to integrate
LilyPond notation with other programs.
+@ignore
@itemize
@item
formats to the @code{.ly} format.
@end itemize
+@end ignore
@node Snippets
blah
-@node Old
-@unnumberedsec Old
+@node All
+@unnumberedsec All
+
+@divClass{column-left-top}
+@subheading Downloadable versions
-Documentation for previous stable versions:
+FIXME: compare tarball vs. zip size, ask about windows users
+dealing with tarballs (both gz and bz2), etc.
+@divClass{keep-bullets}
+@itemize
+
+@item html-split zip
+
+@item html-big zip
+
+@item pdf zip
+
+@item info zip maybe?!?!
+
+@end itemize
+
+@divEnd
+@divEnd
+
+@divClass{column-right-top}
+@subheading Previous stable versions
+
+@divClass{keep-bullets}
@itemize
@item @uref{http://lilypond.org/doc/v2.12/Documentation/,
@end itemize
+@divEnd
+@divEnd
+
@node FDL
@unnumberedsec FDL
<li><a class="title" href="DEDICATION.html">Dedication</a>
<br>(by Jan and Han-Wen)</li>
+<li><a class="title" href="general/index.html">New website</a>
+<br>(total hack; to be replaced ASAP)</li>
</ul>
</td>
</tr>
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.12.0"
+@c \version "2.13.4"
@ignore
Tutorial guidelines: (different from policy.txt!)
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
-これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために
+これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために
@code{@bs{}global} セクションを使っています。
"
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
\"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c
-パート譜を譜刻する必要がある場合はどうでしょうか?今度の新しいテンプレートは
+パート譜を譜刻する必要がある場合はどうでしょうか?今度の新しいテンプレートは
@code{@bs{}tag} 機能を用いて容易に楽曲を個々のパートに分ける方法を示しています。
このテンプレートは別々のファイルに分ける必要があります。ファイル名は各ファイル@c
の開始部分のコメントの中に記述されています。@code{piece.ly} はすべての音楽定義@c
-を保持しています。他のファイル - @code{score.ly}, @code{vn1.ly}, @code{vn2.ly},
+を保持しています。他のファイル - @code{score.ly}, @code{vn1.ly}, @code{vn2.ly},
@code{vla.ly} それに @code{vlc.ly} - は対応するパートを作り出します。
texidocja = "
このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c
ピアノ譜を付け加えています。これは LilyPond の強みの 1 つを示しています - 音楽@c
-定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic}
+定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic}
の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。
"
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
-このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が
+このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が
@code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。
"
@documentlanguage en
@include macros.itexi
+@c This produces the unified index
+@syncodeindex fn cp
+@syncodeindex vr cp
@afourpaper
-
@c don't remove this comment.
@ignore
@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival
@omflanguage English
@end ignore
-@ifnottex
-@node Top
-@top GNU LilyPond --- Learning Manual
-@end ifnottex
+@copying
+Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009 by the authors.
-@ifhtml
-@ifclear bigpage
-This document is also available as a
-@uref{source/Documentation/learning.pdf,PDF} and as
-@uref{source/Documentation/learning-big-page.html,one big page}.
-@end ifclear
-@ifset bigpage
-This document is also available as a
-@uref{source/Documentation/learning.pdf,PDF} and as
-@uref{source/Documentation/learning/index.html,HTML indexed multiple pages}.
-@end ifset
-@end ifhtml
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+@end copying
+@macro introText
+@cartouche
+This file provides an introduction to GNU LilyPond version
+@version{}. For more information about how this fits with the
+other documentation, see @rgeneral{Manuals}.
+@end cartouche
+@end macro
-@c This produces the unified index
-@syncodeindex fn cp
-@syncodeindex vr cp
+@c TITLE PAGE
+@ifnottex
+@node Top
+@top GNU LilyPond --- Learning Manual
+@end ifnottex
@finalout
@titlefont{Learning Manual}
@author The LilyPond development team
+@vskip 100pt
-Copyright @copyright{} 1999--2009 by the authors
+@introText{}
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
+@vskip 0pt plus 1filll
+@c @vskip 20pt
-@vskip 20pt
+@insertcopying{}
For LilyPond version @version{}
@end titlepage
-@copying
-Copyright @copyright{} 1999--2009 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
-
-@ifnottex
-This file documents GNU LilyPond for beginners.
-
-Copyright 1999--2009 by the authors
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end ifnottex
+@c TOC -- non-tex
@ifnottex
-This is the Learning Manual (LM) for GNU LilyPond version @version{}.
-For more information about how this fits with the other
-documentation, see
-FIXME FIXME FIXME
-@c @ref{About the documentation}.
-
-@cindex web site
-@cindex URL
+@introText{}
-More information can be found at
-@uref{http://@/www@/.lilypond@/.org/}. The website contains on-line copies
-of this and other documentation.
-
-@c * Preface:: Preface.
-@c * Introduction:: What, Why, How.
@menu
-* Generating output:: Begin here.
+* Introduction:: Begin here.
* Common notation:: A tutorial introduction.
* Fundamental concepts:: Basic concepts required for reading the rest of this manual.
* Tweaking output:: Introduction to modifying output.
-* Working on LilyPond projects:: Discusses real-life usage.
Appendices
* GNU Free Documentation License:: License of this document.
* LilyPond index::
@end menu
+
+
+@ifhtml
+@ifclear bigpage
+This document is also available as a
+@uref{source/Documentation/learning.pdf,PDF} and as
+@uref{source/Documentation/learning-big-page.html,one big page}.
+@end ifclear
+@ifset bigpage
+This document is also available as a
+@uref{source/Documentation/learning.pdf,PDF} and as
+@uref{source/Documentation/learning/index.html,HTML indexed multiple pages}.
+@end ifset
+@end ifhtml
+
@end ifnottex
+
+@c TOC - tex
@contents
-@c @include learning/preface.itely
-@c @include learning/introduction.itely
-@include learning/generating.itely
-@include learning/tutorial.itely
+@c INCLUDES
+
+@include learning/introduction.itely
+@include learning/common-notation.itely
@include learning/fundamental.itely
@include learning/tweaks.itely
-@include learning/working.itely
@include learning/templates.itely
@include learning/scheme-tutorial.itely
@include fdl.itexi
+
@node LilyPond index
@appendix LilyPond index
--- /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"
+
+@ignore
+Tutorial guidelines: (different from policy.txt!)
+- unless you have a really good reason, use either
+ @lilypond[verbatim,quote]
+ or
+ @lilypond[verbatim,quote,relative=2]
+
+ Don't use any other relative=X commands.
+
+- use "aes" and "ees" instead of "as" and "es". I know it's not
+ correct Dutch naming, but let's not confuse people with this
+ until we get to the Basic notation chapter.
+
+- Add "Music Glossary: @rglos{foo}" to the *top* of the relevant
+ portions of the tutorial.
+
+@end ignore
+
+
+@node Common notation
+@chapter Common notation
+
+This chapter explains how to create beautiful printed music
+containing common musical notation, following the material in
+@ref{Introduction}.
+
+@menu
+* Single staff notation::
+* Multiple notes at once::
+* Songs::
+* Final touches::
+@end menu
+
+
+@node Single staff notation
+@section Single staff notation
+
+This section introduces common notation that is used for one voice
+on one staff.
+
+@menu
+* Accidentals and key signatures::
+* Ties and slurs::
+* Articulation and dynamics::
+* Adding text::
+* Automatic and manual beams::
+* Advanced rhythmic commands::
+@end menu
+
+
+@node Accidentals and key signatures
+@subsection Accidentals and key signatures
+
+@subheading Accidentals
+
+@cindex accidentals
+@cindex accidentals and key signatures
+@cindex sharp
+@cindex double sharp
+@cindex sharp, double
+@cindex flat
+@cindex double flat
+@cindex flat, double
+
+@funindex es
+@funindex is
+@funindex eses
+@funindex isis
+
+Music Glossary: @rglos{sharp}, @rglos{flat}, @rglos{double sharp},
+@rglos{double flat}, @rglos{accidental}.
+
+A @notation{sharp} pitch is made by adding @code{is} to the name,
+and a @notation{flat} pitch by adding @code{es}. As you might
+expect, a @notation{double sharp} or @notation{double flat} is
+made by adding @code{isis} or @code{eses}. This syntax is derived
+from note naming conventions in Nordic and Germanic languages,
+like German and Dutch. To use other names for
+@notation{accidentals}, see @ruser{Note names in other languages}.
+
+@lilypond[verbatim,quote,relative=2]
+cis1 ees fisis, aeses
+@end lilypond
+
+@cindex key signature, setting
+@subheading Key signatures
+
+@cindex key signature
+@cindex major
+@cindex minor
+@cindex accidentals and key signature
+@cindex content vs. layout
+@cindex layout vs. content
+
+@funindex \key
+@funindex key
+@funindex \major
+@funindex major
+@funindex \minor
+@funindex minor
+
+Music Glossary: @rglos{key signature}, @rglos{major},
+@rglos{minor}.
+
+The @notation{key signature} is set with the command @code{\key}
+followed by a pitch and @code{\major} or @code{\minor}.
+
+@lilypond[verbatim,quote,relative=2]
+\key d \major
+a1
+\key c \minor
+a
+@end lilypond
+
+@smallspace
+
+@subheading Warning: key signatures and pitches
+
+Music Glossary: @rglos{accidental}, @rglos{key signature},
+@rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
+@rglos{transposition}.
+
+To determine whether to print an @notation{accidental}, LilyPond
+examines the pitches and the @notation{key signature}. The key
+signature only affects the @emph{printed} accidentals, not the
+note's @notation{pitch}! This is a feature that often causes
+confusion to newcomers, so let us explain it in more detail.
+
+LilyPond makes a sharp distinction between musical content and
+layout. The alteration (@notation{flat}, @notation{natural sign} or
+@notation{sharp}) of a note is part of the pitch, and is therefore
+musical content. Whether an accidental (a @emph{printed} flat,
+natural or sharp sign) is printed in front of the corresponding
+note is a question of layout. Layout is something that follows
+rules, so accidentals are printed automatically according to those
+rules. The pitches in your music are works of art, so they will
+not be added automatically, and you must enter what you want to
+hear.
+
+In this example:
+
+@lilypond[verbatim,quote,relative=2]
+\key d \major
+d cis fis
+@end lilypond
+
+@noindent
+No note has a printed accidental, but you must still add
+@code{is} and type @code{cis} and @code{fis} in the input file.
+
+The code @code{b} does not mean @qq{print a black dot just on
+the middle line of the staff.} Rather, it means @qq{there is a
+note with pitch B-natural.} In the key of A-flat major, it
+@emph{does} get an accidental:
+
+@lilypond[verbatim,quote,relative=2]
+\key aes \major
+b
+@end lilypond
+
+Adding all alterations explicitly might require a little more
+effort when typing, but the advantage is that
+@notation{transposing} is easier, and accidentals can be printed
+according to different conventions. For some examples of how
+accidentals can be printed according to different rules, see
+@ruser{Automatic accidentals}.
+
+
+@seealso
+Notation Reference: @ruser{Note names in other languages},
+@ruser{Accidentals}, @ruser{Automatic accidentals},
+@ruser{Key signature}.
+
+Music Glossary: @rglos{Pitch names}.
+
+
+@node Ties and slurs
+@subsection Ties and slurs
+
+@cindex tie
+@cindex slur
+@cindex slur, phrasing
+@cindex phrasing slur
+
+@funindex ~
+@funindex ( ... )
+@funindex \( ... \)
+
+@subheading Ties
+
+
+Music Glossary: @rglos{tie}.
+
+A @notation{tie} is created by appending a tilde @code{~} to the
+first note being tied.
+
+@lilypond[verbatim,quote,relative=2]
+g4~ g c2~
+c4 ~ c8 a8 ~ a2
+@end lilypond
+
+@subheading Slurs
+
+
+Music Glossary: @rglos{slur}.
+
+A @notation{slur} is a curve drawn across many notes. The
+starting note and ending note are marked with @code{(} and
+@code{)} respectively.
+
+@lilypond[verbatim,quote,relative=2]
+d4( c16) cis( d e c cis d) e( d4)
+@end lilypond
+
+@subheading Phrasing slurs
+
+Music Glossary: @rglos{slur}, @rglos{phrasing}.
+
+Slurs to indicate longer @notation{phrasing} can be entered with
+@code{\(} and @code{\)}. You can have both @notation{slurs}
+and phrasing slurs at the same time, but you cannot have
+simultaneous slurs or simultaneous phrasing slurs.
+
+@lilypond[verbatim,quote,relative=2]
+a8(\( ais b c) cis2 b'2 a4 cis,\)
+@end lilypond
+
+@smallspace
+
+@cindex slurs versus ties
+@subheading Warnings: slurs vs. ties
+
+Music Glossary: @rglos{articulation}, @rglos{slur}, @rglos{tie}.
+
+A @notation{slur} looks like a @notation{tie}, but it has a
+different meaning. A tie simply makes the first note longer, and
+can only be used on pairs of notes with the same pitch. Slurs
+indicate the @notation{articulation} of notes, and can be used on
+larger groups of notes. Slurs and ties can be nested.
+
+@lilypond[verbatim,quote,relative=2]
+c2~( c8 fis fis4 ~ fis2 g2)
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Ties}, @ruser{Slurs},
+@ruser{Phrasing slurs}.
+
+
+@node Articulation and dynamics
+@subsection Articulation and dynamics
+
+
+@subheading Articulations
+
+@cindex articulation
+@cindex accent
+@cindex staccato
+
+Music Glossary: @rglos{articulation}.
+
+Common @notation{articulations} can be added to a note using a
+dash @code{-} and a single character:
+
+@lilypond[verbatim,quote,relative=2]
+c-. c-- c-> c-^ c-+ c-_
+@end lilypond
+
+@subheading Fingerings
+
+@cindex fingering
+
+@funindex ^
+@funindex _
+
+Music Glossary: @rglos{fingering}.
+
+Similarly, @notation{fingering} indications can be added to a note
+using a dash (@code{-}) and the digit to be printed:
+
+@lilypond[verbatim,quote,relative=2]
+c-3 e-5 b-2 a-1
+@end lilypond
+
+Articulations and fingerings are usually placed automatically, but
+you can specify a direction by replacing the dash (@code{-}) with
+@code{^} (up) or @code{_} (down). You can also use multiple
+articulations on the same note. However, in most cases it is best
+to let LilyPond determine the articulation directions.
+
+@lilypond[verbatim,quote,relative=2]
+c_-^1 d^. f^4_2-> e^-_+
+@end lilypond
+
+@subheading Dynamics
+
+@cindex dynamics
+@cindex decrescendo
+@cindex crescendo
+
+@funindex \f
+@funindex \ff
+@funindex \mp
+@funindex \p
+@funindex \mf
+@funindex \pp
+@funindex \<
+@funindex <
+@funindex \>
+@funindex >
+@funindex \!
+@funindex !
+
+Music Glossary: @rglos{dynamics}, @rglos{crescendo},
+@rglos{decrescendo}.
+
+@notation{Dynamic} signs are made by adding the markings (with a
+backslash) to the note:
+
+@lilypond[verbatim,quote,relative=2]
+c\ff c\mf c\p c\pp
+@end lilypond
+
+
+@notation{Crescendi} and @notation{decrescendi} are started with
+the commands @code{\<} and @code{\>}. The next dynamics sign, for
+example @code{\f}, will end the (de)crescendo, or the command
+@code{\!} can be used:
+
+@lilypond[verbatim,quote,relative=2]
+c2\< c2\ff\> c2 c2\!
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Articulations and ornamentations},
+@ruser{Fingering instructions}, @ruser{Dynamics}.
+
+
+@node Adding text
+@subsection Adding text
+
+@cindex text, adding
+@cindex adding text
+@cindex markup
+
+@funindex \markup
+@funindex markup
+
+Text may be added to your scores:
+
+@lilypond[verbatim,quote,relative=2]
+c1^"espr" a_"legato"
+@end lilypond
+
+Extra formatting may be added with the @code{\markup} command:
+
+@lilypond[verbatim,quote,relative=2]
+c1^\markup{ \bold espr}
+a1_\markup{
+ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
+}
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Writing text}.
+
+
+@node Automatic and manual beams
+@subsection Automatic and manual beams
+
+@cindex beaming
+@cindex automatic beams
+@cindex manual beams
+@cindex beams, automatic
+@cindex beams, manual
+@cindex beams, by hand
+
+@funindex [ ... ]
+@funindex [
+@funindex ]
+@funindex \autoBeamOff
+@funindex autoBeamOff
+@funindex \autoBeamOn
+@funindex autoBeamOn
+
+Music Glossary: @rglos{beam}.
+
+All @notation{beams} are drawn automatically:
+
+@lilypond[verbatim,quote,relative=2]
+a8 ais d ees r d c16 b a8
+@end lilypond
+
+If you do not like the automatic beams, they may be overridden
+manually. To correct just an occasional beam mark the first note
+to be beamed with @code{[} and the last one with @code{]}.
+
+@lilypond[verbatim,quote,relative=2]
+a8[ ais] d[ ees r d] a b
+@end lilypond
+
+If you want to turn off automatic beaming entirely or for an
+extended section of music, use the command @code{\autoBeamOff}
+to turn off automatic beaming and @code{\autoBeamOn} to turn it
+on again.
+
+@lilypond[verbatim,quote,relative=2]
+\autoBeamOff
+a8 c b4 d8. c16 b4
+\autoBeamOn
+a8 c b4 d8. c16 b4
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Automatic beams}, @ruser{Manual beams}.
+
+
+@node Advanced rhythmic commands
+@subsection Advanced rhythmic commands
+
+@subheading Partial measure
+
+@cindex pickup
+@cindex anacrusis
+@cindex partial measure
+
+@funindex \partial
+@funindex partial
+
+Music Glossary: @rglos{anacrusis}.
+
+A pickup (or @notation{anacrusis}) is entered with the keyword
+@code{\partial}. It is followed by a duration: @code{\partial 4}
+is a quarter note pickup and @code{\partial 8} an eighth note.
+
+@lilypond[verbatim,quote,relative=2]
+\partial 8
+f8 c2 d
+@end lilypond
+
+@subheading Tuplets
+
+@cindex tuplets
+@cindex triplets
+
+@funindex \times
+@funindex times
+
+Music Glossary: @rglos{note value}, @rglos{triplet}.
+
+@notation{Tuplets} are made with the @code{\times} keyword. It
+takes two arguments: a fraction and a piece of music. The
+duration of the piece of music is multiplied by the fraction.
+Triplets make notes occupy 2/3 of their notated duration, so a
+@notation{triplet} has 2/3 as its fraction
+
+@lilypond[verbatim,quote,relative=2]
+\times 2/3 { f8 g a }
+\times 2/3 { c r c }
+\times 2/3 { f,8 g16[ a g a] }
+\times 2/3 { d4 a8 }
+@end lilypond
+
+@subheading Grace notes
+
+@cindex grace notes
+@cindex acciaccatura
+@cindex appoggiatura
+
+@funindex \grace
+@funindex grace
+@funindex \acciaccatura
+@funindex acciaccatura
+@funindex \appoggiatura
+@funindex acciaccatura
+
+Music Glossary: @rglos{grace notes}, @rglos{acciaccatura},
+@rglos{appoggiatura}.
+
+@notation{Grace notes} are created with the @code{\grace} command,
+although they can also be created by prefixing a music expression
+with the keyword @code{\appoggiatura} or @code{\acciaccatura}:
+
+@lilypond[verbatim,quote,relative=2]
+c2 \grace { a32[ b] } c2
+c2 \appoggiatura b16 c2
+c2 \acciaccatura b16 c2
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Grace notes}, @ruser{Tuplets},
+@ruser{Upbeats}.
+
+
+@node Multiple notes at once
+@section Multiple notes at once
+
+This section introduces having more than one note at the same
+time: multiple instruments, multiple staves for a single
+instrument (i.e. piano), and chords.
+
+Polyphony in music refers to having more than one voice occurring
+in a piece of music. Polyphony in LilyPond refers to having more
+than one voice on the same staff.
+
+@menu
+* Music expressions explained::
+* Multiple staves::
+* Staff groups::
+* Combining notes into chords::
+* Single staff polyphony::
+@end menu
+
+
+@node Music expressions explained
+@subsection Music expressions explained
+
+@cindex music expression
+@cindex expression, music
+@cindex compound music expression
+@cindex music expression, compound
+
+In LilyPond input files, music is represented by @emph{music
+expressions}. A single note is a music expression:
+
+@lilypond[verbatim,quote,relative=2]
+a4
+@end lilypond
+
+Enclosing a note in braces creates a @emph{compound music
+expression}. Here we have created a compound music expression
+with two notes:
+
+@lilypond[verbatim,quote,relative=2]
+{ a4 g4 }
+@end lilypond
+
+Putting a group of music expressions (e.g. notes) in braces means
+that they are in sequence (i.e. each one follows the previous
+one). The result is another music expression:
+
+@lilypond[verbatim,quote,relative=2]
+{ { a4 g } f g }
+@end lilypond
+
+@subheading Analogy: mathematical expressions
+
+This mechanism is similar to mathematical formulas: a big formula
+is created by composing small formulas. Such formulas are called
+expressions, and they can contain other expressions, so you can
+make arbitrarily complex and large expressions. For example,
+
+@example
+1
+
+1 + 2
+
+(1 + 2) * 3
+
+((1 + 2) * 3) / (4 * 5)
+@end example
+
+This is a sequence of expressions, where each expression is
+contained in the next (larger) one. The simplest expressions are
+numbers, and larger ones are made by combining expressions with
+operators (like @code{+}, @code{*} and @code{/}) and parentheses.
+Like mathematical expressions, music expressions can be nested
+arbitrarily deep, which is necessary for complex music like
+polyphonic scores.
+
+
+@subheading Simultaneous music expressions: multiple staves
+
+@cindex multiple staves
+@cindex staves, multiple
+@cindex polyphony
+@cindex combining expressions in parallel
+@cindex parallel expressions
+@cindex expressions, parallel
+@cindex relative notes and simultaneous music
+@cindex relative notes and parallel expressions
+@cindex simultaneous music and relative notes
+@cindex parallel expressions and relative notes
+
+@funindex <<
+@funindex >>
+@funindex << ... >>
+
+Music Glossary: @rglos{polyphony}.
+
+This technique is useful for @notation{polyphonic} music. To
+enter music with more voices or more staves, we combine
+expressions in parallel. To indicate that two voices should play
+at the same time, simply enter a simultaneous combination of music
+expressions. A @q{simultaneous} music expression is formed by
+enclosing expressions inside @code{<<} and @code{>>}. In the
+following example, three sequences (all containing two separate
+notes) are combined simultaneously:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ <<
+ { a4 g }
+ { f e }
+ { d b }
+ >>
+}
+@end lilypond
+
+Note that we have indented each level of the input with a
+different amount of space. LilyPond does not care how much (or
+little) space there is at the beginning of a line, but indenting
+LilyPond code like this makes it much easier for humans to read.
+
+@warning{each note is relative to the previous note in
+the input, not relative to the @code{c''} in the initial
+@code{@bs{}relative} command.}
+
+
+@subheading Simultaneous music expressions: single staff
+
+To determine the number of staves in a piece, LilyPond looks at
+the beginning of the first expression. If there is a single note,
+there is one staff; if there is a simultaneous expression, there
+is more than one staff. The following example shows a complex
+expression, but as it begins with a single note it will be set
+out on a single staff.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ c2 <<c e>>
+ << { e f } { c <<b d>> } >>
+}
+@end lilypond
+
+@node Multiple staves
+@subsection Multiple staves
+
+@cindex multiple staves
+@cindex staves, multiple
+@cindex context
+@cindex context, notation
+@cindex notation context
+
+@funindex \new Staff
+@funindex new Staff
+@funindex Staff
+@funindex \new
+@funindex new
+@funindex Score
+@funindex Voice
+@funindex Lyrics
+@funindex ChordNames
+
+LilyPond input files are constructed out of music expressions, as
+we saw in @ref{Music expressions explained}. If the score begins
+with simultaneous music expressions, LilyPond creates multiples
+staves. However, it is easier to see what happens if we create
+each staff explicitly.
+
+To print more than one staff, each piece of music that makes up a
+staff is marked by adding @code{\new Staff} before it. These
+@code{Staff} elements are then combined in parallel with @code{<<}
+and @code{>>}:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ <<
+ \new Staff { \clef treble c }
+ \new Staff { \clef bass c,, }
+ >>
+}
+@end lilypond
+
+The command @code{\new} introduces a @q{notation context.} A
+notation context is an environment in which musical events (like
+notes or @code{\clef} commands) are interpreted. For simple
+pieces, such notation contexts are created automatically. For
+more complex pieces, it is best to mark contexts explicitly.
+
+There are several types of contexts. @code{Score}, @code{Staff},
+and @code{Voice} handle melodic notation, while @code{Lyrics} sets
+lyric texts and @code{ChordNames} prints chord names.
+
+In terms of syntax, prepending @code{\new} to a music expression
+creates a bigger music expression. In this way it resembles the
+minus sign in mathematics. The formula @math{(4+5)} is an
+expression, so @math{-(4+5)} is a bigger expression.
+
+Time signatures entered in one staff affect all other staves by
+default. On the other hand, the key signature of one staff does
+@emph{not} affect other staves. This different default behavior
+is because scores with transposing instruments are more common
+than polyrhythmic scores.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ <<
+ \new Staff { \clef treble \key d \major \time 3/4 c }
+ \new Staff { \clef bass c,, }
+ >>
+}
+@end lilypond
+
+
+
+
+@node Staff groups
+@subsection Staff groups
+
+@cindex piano staff
+@cindex staff, piano
+@cindex choir staff
+@cindex staff, choir
+@cindex grand staff
+@cindex staff, grand
+@cindex staff group
+
+@funindex PianoStaff
+@funindex GrandStaff
+@funindex ChoirStaff
+
+Music Glossary: @rglos{brace}.
+
+Piano music is typeset in two staves connected by a
+@notation{brace}.
+Printing such a staff is similar to the polyphonic example in
+@ref{Multiple staves}. However, now this entire expression is
+inserted inside a @code{PianoStaff}:
+
+@example
+\new PianoStaff <<
+ \new Staff @dots{}
+ \new Staff @dots{}
+>>
+@end example
+
+Here is a small example:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ \new PianoStaff <<
+ \new Staff { \time 2/4 c4 e g g, }
+ \new Staff { \clef bass c,, c' e c }
+ >>
+}
+@end lilypond
+
+Other staff groupings are introduced with @code{\new GrandStaff},
+suitable for orchestral scores, and @w{@code{\new ChoirStaff}},
+suitable for vocal scores. These staff groups each form another
+type of context, one that generates the brace at the left end of
+every system and also controls the extent of bar lines.
+
+
+@seealso
+Notation Reference: @ruser{Keyboard and other multi-staff
+instruments},
+@ruser{Displaying staves}.
+
+
+@node Combining notes into chords
+@subsection Combining notes into chords
+
+@cindex chords
+@cindex note durations in chords
+
+@funindex <
+@funindex >
+@funindex < ... >
+
+Music Glossary: @rglos{chord}.
+
+We saw earlier how notes can be combined into @notation{chords} by
+indicating they are simultaneous by enclosing them in double angle
+brackets. However, the normal way of indicating a chord is to
+surround the pitches with @emph{single} angle brackets. Note that
+all the notes in a chord must have the same duration, and that the
+duration is placed after the closing bracket.
+
+@lilypond[verbatim,quote,relative=2]
+r4 <c e g>4 <c f a>2
+@end lilypond
+
+Think of chords as almost equivalent to single notes:
+almost everything you can attach to a single note can be attached
+to a chord, and everything must go @emph{outside} the angle
+brackets. For example, you can combine markings like beams and
+ties with chords. They must be placed outside the angle brackets.
+
+@lilypond[verbatim,quote,relative=2]
+r4 <c e g>8[ <c f a>]~ <c f a>2
+r4 <c e g>8( <c e g>\> <c e g>4 <c f a>\!)
+@end lilypond
+
+
+@node Single staff polyphony
+@subsection Single staff polyphony
+
+@cindex polyphony
+@cindex multiple voices
+@cindex voices, more on one staff
+@cindex single staff polyphony
+@cindex spacer rest
+@cindex rest, spacer
+
+@funindex << ... \\ ... >>
+@funindex <<
+@funindex \\
+@funindex >>
+
+Polyphonic music in lilypond, while not difficult, uses concepts
+that we haven't discussed yet, so we're not going to introduce
+them here. Instead, the following sections introduce these concepts
+and explain them thoroughly.
+
+@seealso
+Learning Manual: @ref{Voices contain music}.
+
+Notation Reference: @ruser{Simultaneous notes}.
+
+@node Songs
+@section Songs
+
+This section introduces vocal music and simple song sheets.
+
+@menu
+* Setting simple songs::
+* Aligning lyrics to a melody::
+* Lyrics to multiple staves::
+@end menu
+
+
+@node Setting simple songs
+@subsection Setting simple songs
+
+@cindex lyrics
+@cindex songs
+
+@funindex \addlyrics
+@funindex addlyrics
+
+Music Glossary: @rglos{lyrics}.
+
+Here is the start of the melody to a nursery
+rhyme, @notation{Girls and boys come out to play}:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ \key g \major
+ \time 6/8
+ d4 b8 c4 a8 d4 b8 g4
+}
+@end lilypond
+
+The @notation{lyrics} can be set to these notes, combining both
+with the @code{\addlyrics} keyword. Lyrics are entered by
+separating each syllable with a space.
+
+@lilypond[verbatim,quote]
+<<
+ \relative c'' {
+ \key g \major
+ \time 6/8
+ d4 b8 c4 a8 d4 b8 g4
+ }
+ \addlyrics {
+ Girls and boys come out to play,
+ }
+>>
+@end lilypond
+
+Note the curly brackets delimiting both the music and the lyrics.
+It is essential that the final syllable is separated from the
+terminating curly bracket by a space or a newline, or it will be
+assumed to be part of the syllable, giving rise to an obscure
+error, see @rprogram{Apparent error in ../ly/init.ly}.
+
+Note also the double angle brackets @w{@code{<< ... >>}} around the
+whole piece to show that the music and lyrics are to occur at the
+same time.
+
+@node Aligning lyrics to a melody
+@subsection Aligning lyrics to a melody
+
+@cindex melisma
+@cindex extender line
+@cindex hyphens
+@cindex underscore
+@cindex lyrics, aligning
+@cindex aligning lyrics
+@cindex lyrics, multi-syllable words
+@cindex words with multiple syllables in lyrics
+
+Music Glossary: @rglos{melisma}, @rglos{extender line}.
+
+The next line in the nursery rhyme is @notation{The moon doth
+shine as bright as day}. Let's extend it:
+
+@lilypond[verbatim,quote]
+<<
+ \relative c'' {
+ \key g \major
+ \time 6/8
+ d4 b8 c4 a8 d4 b8 g4
+ g8 a4 b8 c b a d4 b8 g4.
+ }
+ \addlyrics {
+ Girls and boys come out to play,
+ The moon doth shine as bright as day;
+ }
+>>
+@end lilypond
+
+We see the extra lyrics do not align properly with the notes. The
+word @notation{shine} should be sung on two notes, not one. This
+is called a @notation{melisma}, a single syllable sung to more
+than one note. There are several ways to spread a syllable over
+multiple notes, the simplest being to add a slur across them, for
+details, see @ref{Ties and slurs}:
+
+@lilypond[verbatim,quote]
+<<
+ \relative c'' {
+ \key g \major
+ \time 6/8
+ d4 b8 c4 a8 d4 b8 g4
+ g8 a4 b8 c( b) a d4 b8 g4.
+ }
+ \addlyrics {
+ Girls and boys come out to play,
+ The moon doth shine as bright as day;
+ }
+>>
+@end lilypond
+
+The words now line up correctly with the notes, but the automatic
+beaming for the notes above @notation{shine as} does not look right.
+We can correct this by inserting manual beaming commands to override
+the automatic beaming here, for details, see @ref{Automatic and
+manual beams}.
+
+@lilypond[verbatim,quote]
+<<
+ \relative c'' {
+ \key g \major
+ \time 6/8
+ d4 b8 c4 a8 d4 b8 g4
+ g8 a4 b8 c([ b]) a d4 b8 g4.
+ }
+ \addlyrics {
+ Girls and boys come out to play,
+ The moon doth shine as bright as day;
+ }
+>>
+@end lilypond
+
+As an alternative to using slurs, the melismata may be indicated
+in just the lyrics by using an underscore @code{_} for each note
+that should be included in the melisma:
+
+@lilypond[verbatim,quote]
+<<
+ \relative c'' {
+ \key g \major
+ \time 6/8
+ d4 b8 c4 a8 d4 b8 g4
+ g8 a4 b8 c[ b] a d4 b8 g4.
+ }
+ \addlyrics {
+ Girls and boys come out to play,
+ The moon doth shine _ as bright as day;
+ }
+>>
+@end lilypond
+
+If a syllable extends over several notes or a single very long
+note an @notation{extender line} is usually drawn from the
+syllable extending under all the notes for that syllable. It is
+entered as two underscores @code{__}. Here is an example from the
+first three bars of @notation{Dido's Lament}, from Purcell's
+@notation{Dido and Æneas}:
+
+@lilypond[verbatim,quote]
+<<
+ \relative c'' {
+ \key g \minor
+ \time 3/2
+ g2 a bes bes( a)
+ b c4.( bes8 a4. g8 fis4.) g8 fis1
+ }
+ \addlyrics {
+ When I am laid,
+ am laid __ in earth,
+ }
+>>
+@end lilypond
+
+None of the examples so far have involved words containing more
+than one syllable. Such words are usually split one syllable to a
+note, with hyphens between syllables. Such hyphens are entered as
+two dashes, resulting in a centered hyphen between the syllables.
+Here is an example showing this and everything we have learned so
+far about aligning lyrics to notes.
+
+@c no ragged-right here because otherwise the hyphens get lost,
+@c but the example is long enough to avoid looking strange.
+@lilypond[verbatim,quote,noragged-right]
+<<
+ \relative c' {
+ \key g \major
+ \time 3/4
+ \partial 4
+ d4 g4 g a8( b) g4 g4
+ b8( c) d4 d e4 c2
+ }
+ \addlyrics {
+ A -- way in a __ man -- ger,
+ no __ crib for a bed, __
+ }
+>>
+@end lilypond
+
+Some lyrics, especially those in Italian, require the opposite:
+setting more than one syllable to a single note. This is
+achieved by linking the syllables together with a single
+underscore @code{_} (with no spaces), or enclosing them in quotes.
+Here's an example from Rossini's @notation{Figaro}, where
+@notation{al} has to be sung on the same note as the @notation{go} of
+@notation{Largo} in Figaro's aria @notation{Largo al factotum}:
+
+@c no ragged-right here because otherwise the hyphens get lost,
+@c but the example is long enough to avoid looking strange.
+@lilypond[verbatim,quote,noragged-right]
+<<
+ \relative c' {
+ \clef bass
+ \key c \major
+ \time 6/8
+ c4.~ c8 d b c([ d]) b c d b c
+ }
+ \addlyrics {
+ Lar -- go_al fac -- to -- tum del -- la cit -- tà
+ }
+>>
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Vocal music}.
+
+
+@node Lyrics to multiple staves
+@subsection Lyrics to multiple staves
+
+@cindex lyrics and multiple staves
+@cindex multiple staves and lyrics
+
+The simple approach using @code{\addlyrics} can be used for
+placing lyrics under more than one staff. Here is an
+example from Handel's @notation{Judas Maccabæus}:
+
+@lilypond[verbatim,quote]
+<<
+ \relative c'' {
+ \key f \major
+ \time 6/8
+ \partial 8
+ c8 c([ bes]) a a([ g]) f f'4. b, c4.~ c4
+ }
+ \addlyrics {
+ Let flee -- cy flocks the hills a -- dorn, __
+ }
+ \relative c' {
+ \key f \major
+ \time 6/8
+ \partial 8
+ r8 r4. r4 c8 a'([ g]) f f([ e]) d e([ d]) c bes'4
+ }
+ \addlyrics {
+ Let flee -- cy flocks the hills a -- dorn,
+ }
+>>
+@end lilypond
+
+Scores any more complex than this simple example are better
+produced by separating out the score structure from the notes and
+lyrics with variables. These are discussed in @ref{Organizing
+pieces with variables}.
+
+
+@seealso
+Notation Reference: @ruser{Vocal music}.
+
+
+@node Final touches
+@section Final touches
+
+This is the final section of the tutorial; it demonstrates how to
+add the final touches to simple pieces, and provides an
+introduction to the rest of the manual.
+
+@menu
+* Organizing pieces with variables::
+* Version number::
+* Adding titles::
+* Absolute note names::
+* After the tutorial::
+@end menu
+
+
+@node Organizing pieces with variables
+@subsection Organizing pieces with variables
+
+@cindex variables
+@cindex variables, defining
+@cindex identifiers
+@cindex macros
+@cindex assigning variables
+@cindex using variables
+@cindex variables, using
+@cindex variables, characters allowed in
+@cindex characters allowed in variables
+
+When all of the elements discussed earlier are combined to produce
+larger files, the music expressions get a lot bigger. In
+polyphonic music with many staves, the input files can become very
+confusing. We can reduce this confusion by using
+@emph{variables}.
+
+With variables (also known as identifiers or macros), we can break
+up complex music expressions. A variable is assigned as
+follows:
+
+@example
+namedMusic = @{ @dots{} @}
+@end example
+
+The contents of the music expression @code{namedMusic} can be used
+later by placing a backslash in front of the name
+(@code{\namedMusic}, just like a normal LilyPond command).
+
+@lilypond[verbatim,quote]
+violin = \new Staff {
+ \relative c'' {
+ a4 b c b
+ }
+}
+cello = \new Staff {
+ \relative c {
+ \clef bass
+ e2 d
+ }
+}
+{
+ <<
+ \violin
+ \cello
+ >>
+}
+@end lilypond
+
+@noindent
+The name of a variable must have alphabetic characters only, no
+numbers, underscores, or dashes.
+
+Variables must be defined @emph{before} the main music
+expression, but may be used as many times as required anywhere after
+they have been defined. They may even be used in a later definition
+of another variable, giving a way of shortening the input if a
+section of music is repeated many times.
+
+@lilypond[verbatim,quote]
+tripletA = \times 2/3 { c,8 e g }
+barA = { \tripletA \tripletA \tripletA \tripletA }
+
+\relative c'' {
+ \barA \barA
+}
+@end lilypond
+
+Variables may be used for many other types of objects in
+the input. For example,
+
+@example
+width = 4.5\cm
+name = "Wendy"
+aFivePaper = \paper @{ paperheight = 21.0 \cm @}
+@end example
+
+Depending on its contents, the variable can be used in different
+places. The following example uses the above variables:
+
+@example
+\paper @{
+ \aFivePaper
+ line-width = \width
+@}
+@{
+ c4^\name
+@}
+@end example
+
+
+@node Version number
+@subsection Version number
+
+@cindex versioning
+@cindex version
+@cindex version number
+@cindex upgrades
+@cindex future upgrades
+@cindex updating files
+@cindex files, updating
+
+@funindex \version
+@funindex version
+@funindex convert-ly
+
+The @code{\version} statement records the version of LilyPond that
+was used to write the file:
+
+@example
+\version @w{"@version{}"}
+@end example
+
+@noindent
+By convention, this is placed at the top of your LilyPond file.
+
+These annotations make future upgrades of LilyPond go more
+smoothly. Changes in the syntax are handled with a special
+program, @command{convert-ly}, and it uses @code{\version} to
+determine what rules to apply. For details, see
+@rprogram{Updating files with convert-ly}.
+
+
+@node Adding titles
+@subsection Adding titles
+
+@cindex title
+@cindex headers
+@cindex header block
+
+@funindex \header
+@funindex header
+
+The title, composer, opus number, and similar information are
+entered in the @code{\header} block. This exists outside of the
+main music expression; the @code{\header} block is usually placed
+underneath the version number.
+
+@example
+\version @w{"@version{}"}
+\header @{
+ title = "Symphony"
+ composer = "Me"
+ opus = "Op. 9"
+@}
+
+@{
+ @dots{} music @dots{}
+@}
+@end example
+
+When the file is processed, the title and composer are printed
+above the music. More information on titling can be found in
+@ruser{Creating titles}.
+
+
+@node Absolute note names
+@subsection Absolute note names
+
+@cindex note names
+@cindex note names, absolute
+@cindex absolute mode
+@cindex absolute values for pitches
+@cindex pitches, absolute values
+@cindex absolute note names
+
+So far we have always used @code{\relative} to define pitches.
+This is the easiest way to enter most music, but another way of
+defining pitches exists: absolute mode.
+
+If you omit the @code{\relative}, LilyPond treats all pitches as
+absolute values. A @code{c'} will always mean middle C, a
+@code{b} will always mean the note one step below middle C, and a
+@code{g,} will always mean the note on the bottom staff of the
+bass clef.
+
+@lilypond[verbatim,quote]
+{
+ \clef bass
+ c' b g, g,
+ g, f, f c'
+}
+@end lilypond
+
+Here is a four-octave scale:
+
+@lilypond[verbatim,quote]
+{
+ \clef bass
+ c, d, e, f,
+ g, a, b, c
+ d e f g
+ a b c' d'
+ \clef treble
+ e' f' g' a'
+ b' c'' d'' e''
+ f'' g'' a'' b''
+ c'''1
+}
+@end lilypond
+
+As you can see, writing a melody in the treble clef involves a lot
+of quote @code{'} marks. Consider this fragment from Mozart:
+
+@lilypond[verbatim,quote]
+{
+ \key a \major
+ \time 6/8
+ cis''8. d''16 cis''8 e''4 e''8
+ b'8. cis''16 b'8 d''4 d''8
+}
+@end lilypond
+
+All these quotes makes the input less readable and they are a source
+of errors. With @code{\relative}, the previous example is much
+easier to read and type:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ \key a \major
+ \time 6/8
+ cis8. d16 cis8 e4 e8
+ b8. cis16 b8 d4 d8
+}
+@end lilypond
+
+If you make a mistake with an octave mark (@code{'} or @code{,})
+while working in @code{\relative} mode, it is very obvious -- many
+notes will be in the wrong octave. When working in absolute mode,
+a single mistake will not be as visible, and will not be as easy
+to find.
+
+However, absolute mode is useful for music which has large
+intervals, and is extremely useful for computer-generated LilyPond
+files.
+
+
+
+@node After the tutorial
+@subsection After the tutorial
+
+After finishing the tutorial, you should probably try writing a
+piece or two. Start by adding notes to one of the
+@ref{Templates}. If you need any notation that was not covered in
+the tutorial, look at the Notation Reference, starting with
+@ruser{Musical notation}. If you want to write for an instrument
+ensemble that is not covered in the templates, take a look at
+@ref{Extending the templates}.
+
+Once you have written a few short pieces, read the rest of the
+Learning Manual (chapters 3-5). There's nothing wrong with
+reading it now, of course! However, the rest of the Learning
+Manual assumes that you are familiar with LilyPond input. You may
+wish to skim these chapters right now, and come back to them after
+you have more experience.
+
+In this tutorial and in the rest of the Learning Manual, there is a
+paragraph @strong{See also} at the end of each section, which contains
+cross-references to other sections: you should not follow these
+cross-references at first reading; when you have read all of the
+Learning Manual, you may want to read some sections again and follow
+cross-references for further reading.
+
+If you have not done so already, @emph{please} read
+FIXME FIXME FIXME
+@c @ref{About the documentation}.
+There is a lot of information about LilyPond, so
+newcomers often do not know where they should look for help. If
+you spend five minutes reading that section carefully, you might
+save yourself hours of frustration looking in the wrong places!
+
@cindex book
@cindex score
-Up to this point none of the examples you have seen has used a
+Up to this point none of the examples you have seen have used a
@code{\score@{@}} command. This is because LilyPond automatically
adds the extra commands which are needed when you give it simple
input. LilyPond treats input like this:
@cindex contexts, naming
@cindex naming contexts
-The @code{\new} command may also give a identifying name to the
+The @code{\new} command may also give an identifying name to the
context to distinguish it from other contexts of the same type,
@example
@code{##t} and @code{##f}, with two hash signs. A text property
should be enclosed in double quotation signs, as above, although we
shall see later that text can actually be specified in a much more
-general way by using the very powerful @code{markup} command.
+general way by using the very powerful @code{\markup} command.
@subsubheading Setting context properties with @code{\with}
Start off with the template that seems closest to what you want to end
up with. Let's say that you want to write something for soprano and
-cello. In this case, we would start with @q{Notes and lyrics} (for the
+cello. In this case, we would start with the @q{Notes and lyrics} template (for the
soprano part).
@example
@end lilypond
However, you can also use these variables (also known as
-variables, macros, or (user-defined) command) for tweaks:
+macros, or user-defined commands) for tweaks:
@c TODO Avoid padtext - not needed with skylining
@lilypond[quote,verbatim,ragged-right]
@end lilypond
Using variables is also a good way to reduce work if the
-LilyPond input syntax changes (see @ref{Updating old input files}). If
+LilyPond input syntax changes (see @rprogram{Updating old input files}). If
you have a single definition (such as @code{\dolce}) for all your
input files (see @ref{Style sheets}), then if the syntax changes, you
only need to update your single @code{\dolce} definition,
+++ /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 Generating output
-@chapter Generating output
-
-This chapter gives a basic introduction to working with LilyPond.
-
-@menu
-* Compiling a file::
-* Advanced editors::
-* How to write input files::
-* How to read the manuals::
-@end menu
-
-@node Compiling a file
-@section Compiling a file
-
-FIXME: insert text
-
-@menu
-* Entering input::
-* MacOS X::
-* Windows::
-* Command-line::
-@end menu
-
-@node Entering input
-@subsection Entering input
-
-@cindex compiling
-@cindex first example
-@cindex example, first
-@cindex case sensitive
-
-@qq{Compiling} is the term used for processing an input file
-in LilyPond format to produce a file which can be printed and
-(optionally) a MIDI file which can be played. LilyPond input
-files are simple text files. The first example
-shows what a simple input file looks like.
-
-To create sheet music, we write an input file that specifies the
-notation. For example, if we write:
-
-@example
-@{
- c' e' g' e'
-@}
-@end example
-
-@noindent
-the result looks like this:
-
-@c in this case we don't want verbatim
-@lilypond[quote]
-{
- c' e' g' e'
-}
-@end lilypond
-
-@warning{Notes and lyrics in LilyPond input must always be
-surrounded by @strong{@{ curly braces @}}. The braces
-should also be surrounded by a space unless they are at the
-beginning or end of a line to avoid ambiguities. The braces may
-be omitted in some examples in this manual, but don't forget them
-in your own music! For more information about the display of
-examples in the manual, see @ref{How to read the manuals}.}
-
-In addition, LilyPond input is @strong{case sensitive}.
-@w{@code{@{ c d e @}}} is valid input; @w{@code{@{ C D E @}}} will
-produce an error message.
-
-@smallspace
-
-@subheading Entering music and viewing output
-
-@cindex PDF file
-@cindex viewing music
-@cindex text editors
-@cindex running LilyPond under MacOS X
-@cindex MacOS X, running LilyPond
-@cindex running LilyPond under Windows
-@cindex Windows, running LilyPond
-@cindex running LilyPond under Unix
-@cindex Unix, running LilyPond
-
-In this section we will explain what commands to run and how to
-view or print the output.
-
-Note that there are several other text editors available with
-better support for LilyPond. For more information, see
-@ref{Advanced editors}.
-
-@warning{The first time you ever run LilyPond, it may take a
-minute or two because all of the system fonts have to be analyzed
-first. After this, LilyPond will be much faster!}
-
-
-@node MacOS X
-@subsection MacOS X
-
-If you double click @command{LilyPond.app}, it will open with an
-example file. Save it, for example, to @file{test.ly} on your
-Desktop, and then process it with the menu command
-@w{@code{Compile > Typeset File}}. The resulting PDF file will be
-displayed on your screen.
-
-For future use of LilyPond, you should begin by selecting @q{New}
-or @q{Open}. You must save your file before typesetting it. If
-any errors occur in processing, please see the log window.
-
-
-@node Windows
-@subsection Windows
-
-On Windows, if you double-click in the LilyPond icon on the
-Desktop, it will open a simple text editor with an example file.
-Save it, for example, to @file{test.ly} on your Desktop and then
-double-click on the file to process it (the file icon looks like a
-note). After some seconds, you will get a file @file{test.pdf} on
-your desktop. Double-click on this PDF file to view the typeset
-score. An alternative method to process the @file{test.ly} file
-is to drag and drop it onto the LilyPond icon using your mouse
-pointer.
-
-To edit an existing @file{.ly} file, right-click on it and
-select @qq{Edit source}. To get an empty file to start from, run
-the editor as described above and use @qq{New} in
-the @qq{File} menu, or right-click on the desktop and select
-@qq{New..Text Document}, change its name to a name of your choice
-and change the file extension to @code{.ly}. Double-click the
-icon to type in your LilyPond source code as before.
-
-Double-clicking the file does not only result in a PDF file, but
-also produces a @file{.log} file that contains some information on
-what LilyPond has done to the file. If any errors occur, please
-examine this file.
-
-
-@node Command-line
-@subsection Command-line
-
-Create a text file called @file{test.ly} and enter:
-
-@example
-@{
- c' e' g' e'
-@}
-@end example
-
-To process @file{test.ly}, proceed as follows:
-
-@example
-lilypond test.ly
-@end example
-
-@noindent
-You will see something resembling:
-
-@example
-lilypond test.ly
-GNU LilyPond @version{}
-Processing `test.ly'
-Parsing...
-Interpreting music...
-Preprocessing graphical objects...
-Finding the ideal number of pages...
-Fitting music on 1 page...
-Drawing systems...
-Layout output to `test.ps'...
-Converting to `test.pdf'...
-@end example
-
-
-
-@node Advanced editors
-@section Advanced editors
-
-FIXME: add text
-
-@menu
-* Denemo::
-* LilyPondTool::
-* Emacs::
-* Vim::
-@end menu
-
-
-@node Denemo
-@subsection Denemo
-
-Available on:
-
-
-
-@node LilyPondTool
-@subsection LilyPondTool
-
-Available on:
-
-
-@node Emacs
-@subsection Emacs
-
-Available on: Windows, MacOS X, Unix
-
-
-@node Vim
-@subsection Vim
-
-Available on: Windows, MacOS X, Unix
-
-
-
-
-@node How to write input files
-@section How to write input files
-
-FIXME: insert text
-
-@menu
-* Simple notation::
-* Working on input files::
-@end menu
-
-
-@node Simple notation
-@subsection Simple notation
-
-@cindex simple notation
-@cindex notation, simple
-
-LilyPond will add some notation elements automatically. In the
-next example, we have only specified four pitches, but LilyPond
-has added a clef, time signature, and rhythms.
-
-@lilypond[verbatim,quote]
-{
- c' e' g' e'
-}
-@end lilypond
-
-@noindent
-This behavior may be altered, but in most cases these automatic
-values are useful.
-
-
-@subheading Pitches
-
-@cindex pitches
-@cindex relative mode
-@cindex quote, single
-@cindex comma
-@cindex accidentals and relative mode
-@cindex relative mode, and accidentals
-
-@funindex \relative
-@funindex relative
-@funindex '
-@funindex ,
-
-Music Glossary: @rglos{pitch}, @rglos{interval},
-@rglos{scale}, @rglos{middle C}, @rglos{octave},
-@rglos{accidental}.
-
-The easiest way to enter notes is by using @code{\relative} mode.
-In this mode, the octave is chosen automatically by assuming the
-following note is always to be placed closest to the previous
-note, i.e., it is to be placed in the octave which is within three
-staff spaces of the previous note. We begin by entering the most
-elementary piece of music, a @notation{scale}, in which every note
-is within just one staff space of the previous note.
-
-@lilypond[verbatim,quote]
-% set the starting point to middle C
-\relative c' {
- c d e f
- g a b c
-}
-@end lilypond
-
-The initial note is @notation{middle C}. Each successive note is
-placed closest to the previous note -- in other words, the first
-@code{c} is the closest C to middle C. This is followed by the
-closest D to the previous note. We can create melodies which have
-larger intervals, still using only @code{\relative} mode:
-
-@lilypond[verbatim,quote]
-\relative c' {
- d f a g
- c b f d
-}
-@end lilypond
-
-@noindent
-It is not necessary for the first note of the melody to start on
-the note which specifies the starting pitch. In the previous
-example, the first note -- the @code{d} -- is the closest D to
-middle C.
-
-By adding (or removing) quotes @code{'} or commas @code{,} from
-the @code{@w{\relative c' @{}} command, we can change the starting
-octave:
-
-@lilypond[verbatim,quote]
-% one octave above middle C
-\relative c'' {
- e c a c
-}
-@end lilypond
-
-Relative mode can be confusing initially, but is the easiest way
-to enter most melodies. Let us see how this relative calculation
-works in practice. Starting from a B, which is on the middle line
-in a treble clef, you can reach a C, D and E within 3 staff spaces
-going up, and an A, G and F within 3 staff spaces going down. So
-if the note following a B is a C, D or E it will be assumed to be
-above the B, and an A, G or F will be assumed to be below.
-
-@lilypond[verbatim,quote]
-\relative c'' {
- b c % c is 1 staff space up, so is the c above
- b d % d is 2 up or 5 down, so is the d above
- b e % e is 3 up or 4 down, so is the e above
- b a % a is 6 up or 1 down, so is the a below
- b g % g is 5 up or 2 down, so is the g below
- b f % f is 4 up or 3 down, so is the f below
-}
-@end lilypond
-
-Exactly the same happens even when any of these notes are
-sharpened or flattened. @notation{Accidentals} are
-@strong{totally ignored} in the calculation of relative position.
-Precisely the same staff space counting is done from a note at any
-other position on the staff.
-
-To add intervals that are larger than three staff spaces, we can
-raise the @notation{octave} by adding a single quote @code{'} (or
-apostrophe) to the note name. We can lower the octave by adding a
-comma @code{,} to the note name.
-
-@lilypond[verbatim,quote]
-\relative c'' {
- a a, c' f,
- g g'' a,, f'
-}
-@end lilypond
-
-@noindent
-To change a note by two (or more!) octaves, we use multiple
-@code{''} or @code{,,} -- but be careful that you use two single
-quotes @code{''} and not one double quote @code{"}@tie{}! The
-initial value in @code{@w{\relative c'}} may also be modified like
-this.
-@c " - keeps quotes in order for context-sensitive editor -td
-
-@subheading Durations (rhythms)
-
-@cindex note durations
-@cindex durations
-@cindex rhythms
-@cindex whole note
-@cindex half note
-@cindex quarter note
-@cindex dotted note
-@cindex notating durations
-
-Music Glossary: @rglos{beam}, @rglos{duration},
-@rglos{whole note}, @rglos{half note}, @rglos{quarter note},
-@rglos{dotted note}.
-
-The @notation{duration} of a note is specified by a number after
-the note name: @code{1} for a @notation{whole note}, @code{2} for
-a @notation{half note}, @code{4} for a @notation{quarter note} and
-so on. @notation{Beams} are added automatically.
-
-If you do not specify a duration, the previous duration is used
-for the next note. The duration of the first note defaults to a
-quarter.
-
-@lilypond[verbatim,quote]
-\relative c'' {
- a1
- a2 a4 a8 a
- a16 a a a a32 a a a a64 a a a a a a a a2
-}
-@end lilypond
-
-To create @notation{dotted notes}, add a dot @code{.} to the
-duration number. The duration of a dotted note must be stated
-explicitly (i.e., with a number).
-
-@lilypond[verbatim,quote]
-\relative c'' {
- a a a4. a8
- a8. a16 a a8. a8 a4.
-}
-@end lilypond
-
-
-@subheading Rests
-
-@cindex rest
-@cindex notating rests
-
-Music Glossary: @rglos{rest}.
-
-A @notation{rest} is entered just like a note with the name
-@code{r}@tie{}:
-
-@lilypond[verbatim,quote]
-\relative c'' {
- a r r2
- r8 a r4 r4. r8
-}
-@end lilypond
-
-
-@subheading Time signature
-
-@cindex time signature
-
-@funindex \time
-@funindex time
-
-Music Glossary: @rglos{time signature}.
-
-The @notation{time signature} can be set with the @code{\time}
-command:
-
-@lilypond[verbatim,quote]
-\relative c'' {
- \time 3/4
- a4 a a
- \time 6/8
- a4. a
- \time 4/4
- a4 a a a
-}
-@end lilypond
-
-
-@subheading Clef
-
-@cindex clef
-@cindex treble
-@cindex alto
-@cindex tenor
-@cindex bass
-
-@funindex \clef
-@funindex clef
-
-Music Glossary: @rglos{clef}.
-
-The @notation{clef} can be set using the @code{\clef} command:
-
-@lilypond[verbatim,quote]
-\relative c' {
- \clef treble
- c1
- \clef alto
- c1
- \clef tenor
- c1
- \clef bass
- c1
-}
-@end lilypond
-
-
-@subheading All together
-
-Here is a small example showing all these elements together:
-
-@lilypond[verbatim,quote]
-\relative c, {
- \time 3/4
- \clef bass
- c2 e8 c' g'2.
- f4 e d c4 c, r4
-}
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Writing pitches},
-@ruser{Writing rhythms}, @ruser{Writing rests},
-@ruser{Time signature}, @ruser{Clef}.
-
-
-@node Working on input files
-@subsection Working on input files
-
-@cindex curly braces
-@cindex braces, curly
-@cindex comments
-@cindex line comment
-@cindex comment, line
-@cindex block comment
-@cindex comment, line
-@cindex case sensitive
-@cindex whitespace insensitive
-@cindex expressions
-
-@funindex { ... }
-@funindex %
-@funindex %@{ ... %@}
-
-LilyPond input files are similar to source files in many common
-programming languages. They are case sensitive, and white-space
-is generally ignored. Expressions are formed with curly braces
-@{ @}, and comments are denoted with @code{%} or
-@w{@code{%@{ ... %@}}}.
-
-If the previous sentences sound like nonsense, don't worry! We'll
-explain what all these terms mean:
-
-@itemize
-
-@item
-@strong{Case sensitive}:
-it matters whether you enter a letter in lower case (e.g.
-@w{@code{a, b, s, t}}) or upper case (e.g. @w{@code{A, B, S, T}}).
-Notes are lower case: @w{@code{@{ c d e @}}} is valid input;
-@w{@code{@{ C D E @}}} will produce an error message.
-
-@item
-@strong{Whitespace insensitive}:
-it does not matter how many spaces (or tabs or new lines) you add.
-@w{@code{@{ c d e @}}} means the same thing as
-@w{@code{@{ c @tie{}} @tie{} @tie{} d e @}} and:
-
-@example
-@{ c d
- e @}
-@end example
-
-@noindent
-Of course, the previous example is hard to read. A good rule of
-thumb is to indent code blocks with either a tab or two spaces:
-
-@example
-@{
- c d e
-@}
-@end example
-
-However, whitespace @emph{is} required to separate many syntactical
-elements from others. In other words, whitespace can always be
-@emph{added}, but it cannot be @emph{eliminated}. As missing
-whitespace can give rise to strange errors it is advisable to
-always insert whitespace before and after every syntactic element,
-for example, before and after every curly brace.
-
-@item
-@strong{Expressions}:
-every piece of LilyPond input needs to have @strong{@{ curly
-braces @}} placed around the input. These braces tell LilyPond
-that the input is a single music expression, just like parentheses
-@code{()} in mathematics. The braces should be surrounded by a
-space unless they are at the beginning or end of a line to avoid
-ambiguities.
-
-A LilyPond command followed by a simple expression in braces (such
-as @w{@code{\relative @{ @}}}) also counts as a single music
-expression.
-
-@cindex comments
-@cindex line comment
-@cindex block comment
-@item
-@strong{Comments}:
-a comment is a remark for the human reader of the music input; it
-is ignored while parsing, so it has no effect on the printed
-output. There are two types of comments. The percent symbol
-@code{%} introduces a line comment; anything after @code{%} on
-that line is ignored. By convention, a line comment is placed
-@emph{above} the code it refers to.
-
-@example
-a4 a a a
-% this comment refers to the Bs
-b2 b
-@end example
-
-A block comment marks a whole section of music input as a comment.
-Anything that is enclosed in @code{%@{} and @code{%@}} is ignored.
-However, block comments do not @q{nest}. This means that you
-cannot place a block comment inside another block comment. If you
-try, the first @code{%@}} will terminate @emph{both} block
-comments. The following fragment shows possible uses for
-comments:
-
-@example
-% notes for twinkle twinkle follow
- c4 c g' g a a g2
-
-%@{
- This line, and the notes below are ignored,
- since they are in a block comment.
-
- f f e e d d c2
-%@}
-@end example
-
-@end itemize
-
-
-@node How to read the manuals
-@section How to read the manuals
-
-FIXME: fluff here
-
-@menu
-* Omitting braces::
-* Clickable examples::
-* Keyboard navigation::
-* Overview of manuals::
-@end menu
-
-
-@node Omitting braces
-@unnumberedsubsec Omitting braces
-
-
-@cindex how to read the manual
-@cindex manual, reading
-@cindex reading the manual
-@cindex examples, clickable
-@cindex clickable examples
-@cindex tips for constructing files
-@cindex templates
-@cindex constructing files, tips
-@cindex files, tips for constructing
-
-LilyPond input must be surrounded by @{ @} marks or a
-@code{@w{\relative c'' @{ ... @}}}, as we saw in @ref{Working on
-input files}. For the rest of this manual, most examples will
-omit this. To replicate the examples, you may copy and paste the
-displayed input, but you @strong{must} add the
-@code{@w{\relative c'' @{ @}}} like this:
-
-@example
-\relative c'' @{
- ... example goes here...
-@}
-@end example
-
-Why omit the braces? Most examples in this manual can be inserted
-into the middle of a longer piece of music. For these examples,
-it does not make sense to add @code{@w{\relative c'' @{ @}}} --
-you should not place a @code{\relative} inside another
-@code{\relative}! If we included @code{@w{\relative c'' @{ @}}}
-around every example, you would not be able to copy a small
-documentation example and paste it inside a longer piece of your
-own. Most people want to add material to an existing piece, so we
-format the manual this way.
-
-
-@node Clickable examples
-@unnumberedsubsec Clickable examples
-
-Many people learn programs by trying and fiddling around with the
-program. This is also possible with LilyPond. If you click on a
-picture in the HTML version of this manual, you will see the exact
-LilyPond input that was used to generate that image. Try it on
-this image:
-
-@c no verbatim here
-@lilypond[quote]
-\relative c'' {
- c-\markup { \bold \huge { Click here. } }
-}
-@end lilypond
-
-By cutting and pasting everything in the @qq{ly snippet} section,
-you have a starting template for experiments. To see exactly the
-same output (line-width and all), copy everything from @qq{Start
-cut-&-pastable section} to the bottom of the file.
-
-
-@node Keyboard navigation
-@unnumberedsubsec Keyboard navigation
-
-
-
-@node Overview of manuals
-@unnumberedsubsec Overview of manuals
-
-FIXME: a brief discussion about the rest of the LM, and pointers
-to specific places. like NR for general reference, AU for
-suggestions for writing files, etc.
-
-
@node Introduction
@chapter Introduction
-This chapter introduces readers to LilyPond and the
-documentation.
+This chapter gives a basic introduction to working with LilyPond.
@menu
-* About the documentation::
+* Compiling a file::
+* How to write input files::
+* How to read the manuals::
@end menu
+@node Compiling a file
+@section Compiling a file
+FIXME: insert text
-@node About the documentation
-@section About the documentation
-
-This section explains the different portions of the documentation.
-
-@cindex Learning Manual
-@cindex Music Glossary
-@cindex Notation Reference
-@cindex Application Usage
-@cindex Snippet List
-@cindex Internals Reference
-
-@c leave these lines wrapping around. It's some texinfo 4.12 thing. -gp
-@c This is actually a limitation of texi2html. -jm
@menu
-* About the Learning Manual:: this manual introduces LilyPond, giving in-depth explanations of how to create notation.
-* About the Music Glossary:: this manual explains musical terms and gives translations of terms in other languages.
-* About the Notation Reference:: this manual is the main portion of the documentation. It provides detailed information about creating notation. This book assumes that the reader knows basic material covered in the Learning Manual and is familiar with the English musical terms presented in the Musical Glossary.
-* About the Application Usage:: this discusses the actual programs and operating system-specific issues.
-* About the Snippet List:: this is a collection of short LilyPond examples.
-* About the Internals Reference:: this document gives reference information about LilyPond's internal structures, which is required for constructing tweaks.
-* Other documentation:: there are a few other portions of the documentation, such as News items and the mailist archives.
+* Entering input::
+* MacOS X::
+* Windows::
+* Command-line::
@end menu
+@node Entering input
+@subsection Entering input
+
+@cindex compiling
+@cindex first example
+@cindex example, first
+@cindex case sensitive
+
+@qq{Compiling} is the term used for processing an input file
+in LilyPond format to produce a file which can be printed and
+(optionally) a MIDI file which can be played. LilyPond input
+files are simple text files. The first example
+shows what a simple input file looks like.
+
+To create sheet music, we write an input file that specifies the
+notation. For example, if we write:
+
+@example
+@{
+ c' e' g' e'
+@}
+@end example
+
+@noindent
+the result looks like this:
+
+@c in this case we don't want verbatim
+@lilypond[quote]
+{
+ c' e' g' e'
+}
+@end lilypond
+
+@warning{Notes and lyrics in LilyPond input must always be
+surrounded by @strong{@{ curly braces @}}. The braces
+should also be surrounded by a space unless they are at the
+beginning or end of a line to avoid ambiguities. The braces may
+be omitted in some examples in this manual, but don't forget them
+in your own music! For more information about the display of
+examples in the manual, see @ref{How to read the manuals}.}
+
+In addition, LilyPond input is @strong{case sensitive}.
+@w{@code{@{ c d e @}}} is valid input; @w{@code{@{ C D E @}}} will
+produce an error message.
+
+@smallspace
+
+@subheading Entering music and viewing output
-@node About the Learning Manual
-@unnumberedsubsec About the Learning Manual
+@cindex PDF file
+@cindex viewing music
+@cindex text editors
+@cindex running LilyPond under MacOS X
+@cindex MacOS X, running LilyPond
+@cindex running LilyPond under Windows
+@cindex Windows, running LilyPond
+@cindex running LilyPond under Unix
+@cindex Unix, running LilyPond
+
+In this section we will explain what commands to run and how to
+view or print the output.
+
+Note that there are several other text editors available with
+better support for LilyPond. For more information, see
+@rgeneral{Alternate input}.
+
+@warning{The first time you ever run LilyPond, it may take a
+minute or two because all of the system fonts have to be analyzed
+first. After this, LilyPond will be much faster!}
-@cindex Learning Manual
-This book explains how to begin learning LilyPond, as well as
-explaining some key concepts in easy terms. You should read these
-chapters in a linear fashion.
+@node MacOS X
+@subsection MacOS X
-There is a paragraph @strong{See also} at the end of each section,
-which contains cross-references to other sections: you should not
-follow these cross-references at first reading; when you have read all
-of the Learning Manual, you may want to read some sections again and
-follow cross-references for further reading.
+@warning{These instructions assume that you are using the built-in
+LilyPad editor. If you are using any of the programs described in
+@rgeneral{Alternate input}, please consult the documentation for
+those programs if you have any problems compiling a file.}
-@itemize
-@item
-@ref{Introduction}: explains the background and overall goal of
-LilyPond.
+If you double click @command{LilyPond.app}, it will open with an
+example file. Save it, for example, to @file{test.ly} on your
+Desktop, and then process it with the menu command
+@w{@code{Compile > Typeset File}}. The resulting PDF file will be
+displayed on your screen.
-@item
-@ref{Tutorial}: gives a gentle introduction to typesetting music.
-First time users should start here.
+For future use of LilyPond, you should begin by selecting @q{New}
+or @q{Open}. You must save your file before typesetting it. If
+any errors occur in processing, please see the log window.
-@item
-@ref{Fundamental concepts}: explains some general concepts about
-the LilyPond file format. If you are not certain where to place a
-command, read this chapter!
-@item
-@ref{Tweaking output}: shows how to change the default engraving
-that LilyPond produces.
+@node Windows
+@subsection Windows
-@item
-@ref{Working on LilyPond projects}: discusses practical uses of
-LilyPond and how to avoid some common problems. Read this before
-undertaking large projects!
+@warning{These instructions assume that you are using the built-in
+LilyPad editor. If you are using any of the programs described in
+@rgeneral{Alternate input}, please consult the documentation for
+programs if you have any problems compiling a file.}
-@end itemize
+On Windows, if you double-click in the LilyPond icon on the
+Desktop, it will open a simple text editor with an example file.
+Save it, for example, to @file{test.ly} on your Desktop and then
+double-click on the file to process it (the file icon looks like a
+note). After some seconds, you will get a file @file{test.pdf} on
+your desktop. Double-click on this PDF file to view the typeset
+score. An alternative method to process the @file{test.ly} file
+is to drag and drop it onto the LilyPond icon using your mouse
+pointer.
+
+To edit an existing @file{.ly} file, right-click on it and
+select @qq{Edit source}. To get an empty file to start from, run
+the editor as described above and use @qq{New} in
+the @qq{File} menu, or right-click on the desktop and select
+@qq{New..Text Document}, change its name to a name of your choice
+and change the file extension to @code{.ly}. Double-click the
+icon to type in your LilyPond source code as before.
-The Learning Manual also contains appendices which are not part of the
-recommended linear reading. They may be useful for later
-viewing:
+Double-clicking the file does not only result in a PDF file, but
+also produces a @file{.log} file that contains some information on
+what LilyPond has done to the file. If any errors occur, please
+examine this file.
-@itemize
-@item
-@ref{Templates}: shows ready-made templates of LilyPond pieces.
-Just cut and paste a template into a file, add notes, and you're
-done!
+@node Command-line
+@subsection Command-line
-@item
-@ref{Scheme tutorial}: presents a short introduction to Scheme,
-the programming language that music functions use. This is
-material for advanced tweaks; many users never touch Scheme at
-all.
+@warning{These instructions assume that you are using the built-in
+LilyPad editor. If you are using any of the programs described in
+@rgeneral{Alternate input}, please consult the documentation for
+programs if you have any problems compiling a file.}
-@end itemize
+Create a text file called @file{test.ly} and enter:
-@node About the Music Glossary
-@unnumberedsubsec About the Music Glossary
+@example
+@{
+ c' e' g' e'
+@}
+@end example
-@cindex Music Glossary
-@cindex idiom
-@cindex jargon
-@cindex terminology
-@cindex foreign languages
-@cindex language
+To process @file{test.ly}, proceed as follows:
-@rglosnamed{Top,Music glossary}
-this explains musical terms, and includes translations to various
-languages. If you are not familiar with music notation or music
-terminology (especially if you are a non-native English speaker),
-it is highly advisable to consult the glossary.
+@example
+lilypond test.ly
+@end example
+@noindent
+You will see something resembling:
-@node About the Notation Reference
-@unnumberedsubsec About the Notation Reference
+@example
+lilypond test.ly
+GNU LilyPond @version{}
+Processing `test.ly'
+Parsing...
+Interpreting music...
+Preprocessing graphical objects...
+Finding the ideal number of pages...
+Fitting music on 1 page...
+Drawing systems...
+Layout output to `test.ps'...
+Converting to `test.pdf'...
+@end example
-@cindex Notation Reference
-@cindex appendices
-@cindex reference charts
-@cindex charts, reference
-This book explains all the LilyPond commands which produce
-notation. It assumes that readers are familiar with the concepts
-in the Learning Manual.
-@itemize
+@node How to write input files
+@section How to write input files
-@item
-@ruser{Musical notation}:
-discusses topics grouped by notation construct. This section
-gives details about basic notation that will be useful in almost
-any notation project.
+FIXME: insert text
-@item
-@ruser{Specialist notation}:
-discusses topics grouped by notation construct. This section
-gives details about special notation that will only be useful for
-particular instrument (or vocal) groups.
+@menu
+* Simple notation::
+* Working on input files::
+@end menu
-@item
-@ruser{General input and output}:
-discusses general information about LilyPond input files and
-controlling output.
-@item
-@ruser{Spacing issues}:
-discusses issues which affect the global output, such as selecting
-paper size or specifying page breaks.
+@node Simple notation
+@subsection Simple notation
+
+@cindex simple notation
+@cindex notation, simple
+
+LilyPond will add some notation elements automatically. In the
+next example, we have only specified four pitches, but LilyPond
+has added a clef, time signature, and rhythms.
+
+@lilypond[verbatim,quote]
+{
+ c' e' g' e'
+}
+@end lilypond
+
+@noindent
+This behavior may be altered, but in most cases these automatic
+values are useful.
+
+
+@subheading Pitches
+
+@cindex pitches
+@cindex relative mode
+@cindex quote, single
+@cindex comma
+@cindex accidentals and relative mode
+@cindex relative mode, and accidentals
+
+@funindex \relative
+@funindex relative
+@funindex '
+@funindex ,
+
+Music Glossary: @rglos{pitch}, @rglos{interval},
+@rglos{scale}, @rglos{middle C}, @rglos{octave},
+@rglos{accidental}.
+
+The easiest way to enter notes is by using @code{\relative} mode.
+In this mode, the octave is chosen automatically by assuming the
+following note is always to be placed closest to the previous
+note, i.e., it is to be placed in the octave which is within three
+staff spaces of the previous note. We begin by entering the most
+elementary piece of music, a @notation{scale}, in which every note
+is within just one staff space of the previous note.
+
+@lilypond[verbatim,quote]
+% set the starting point to middle C
+\relative c' {
+ c d e f
+ g a b c
+}
+@end lilypond
+
+The initial note is @notation{middle C}. Each successive note is
+placed closest to the previous note -- in other words, the first
+@code{c} is the closest C to middle C. This is followed by the
+closest D to the previous note. We can create melodies which have
+larger intervals, still using only @code{\relative} mode:
+
+@lilypond[verbatim,quote]
+\relative c' {
+ d f a g
+ c b f d
+}
+@end lilypond
+
+@noindent
+It is not necessary for the first note of the melody to start on
+the note which specifies the starting pitch. In the previous
+example, the first note -- the @code{d} -- is the closest D to
+middle C.
+
+By adding (or removing) quotes @code{'} or commas @code{,} from
+the @code{@w{\relative c' @{}} command, we can change the starting
+octave:
+
+@lilypond[verbatim,quote]
+% one octave above middle C
+\relative c'' {
+ e c a c
+}
+@end lilypond
+
+Relative mode can be confusing initially, but is the easiest way
+to enter most melodies. Let us see how this relative calculation
+works in practice. Starting from a B, which is on the middle line
+in a treble clef, you can reach a C, D and E within 3 staff spaces
+going up, and an A, G and F within 3 staff spaces going down. So
+if the note following a B is a C, D or E it will be assumed to be
+above the B, and an A, G or F will be assumed to be below.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ b c % c is 1 staff space up, so is the c above
+ b d % d is 2 up or 5 down, so is the d above
+ b e % e is 3 up or 4 down, so is the e above
+ b a % a is 6 up or 1 down, so is the a below
+ b g % g is 5 up or 2 down, so is the g below
+ b f % f is 4 up or 3 down, so is the f below
+}
+@end lilypond
+
+Exactly the same happens even when any of these notes are
+sharpened or flattened. @notation{Accidentals} are
+@strong{totally ignored} in the calculation of relative position.
+Precisely the same staff space counting is done from a note at any
+other position on the staff.
+
+To add intervals that are larger than three staff spaces, we can
+raise the @notation{octave} by adding a single quote @code{'} (or
+apostrophe) to the note name. We can lower the octave by adding a
+comma @code{,} to the note name.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ a a, c' f,
+ g g'' a,, f'
+}
+@end lilypond
+
+@noindent
+To change a note by two (or more!) octaves, we use multiple
+@code{''} or @code{,,} -- but be careful that you use two single
+quotes @code{''} and not one double quote @code{"}@tie{}! The
+initial value in @code{@w{\relative c'}} may also be modified like
+this.
+@c " - keeps quotes in order for context-sensitive editor -td
+
+@subheading Durations (rhythms)
+
+@cindex note durations
+@cindex durations
+@cindex rhythms
+@cindex whole note
+@cindex half note
+@cindex quarter note
+@cindex dotted note
+@cindex notating durations
+
+Music Glossary: @rglos{beam}, @rglos{duration},
+@rglos{whole note}, @rglos{half note}, @rglos{quarter note},
+@rglos{dotted note}.
+
+The @notation{duration} of a note is specified by a number after
+the note name: @code{1} for a @notation{whole note}, @code{2} for
+a @notation{half note}, @code{4} for a @notation{quarter note} and
+so on. @notation{Beams} are added automatically.
+
+If you do not specify a duration, the previous duration is used
+for the next note. The duration of the first note defaults to a
+quarter.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ a1
+ a2 a4 a8 a
+ a16 a a a a32 a a a a64 a a a a a a a a2
+}
+@end lilypond
+
+To create @notation{dotted notes}, add a dot @code{.} to the
+duration number. The duration of a dotted note must be stated
+explicitly (i.e., with a number).
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ a a a4. a8
+ a8. a16 a a8. a8 a4.
+}
+@end lilypond
+
+
+@subheading Rests
+
+@cindex rest
+@cindex notating rests
+
+Music Glossary: @rglos{rest}.
+
+A @notation{rest} is entered just like a note with the name
+@code{r}@tie{}:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ a r r2
+ r8 a r4 r4. r8
+}
+@end lilypond
+
+
+@subheading Time signature
+
+@cindex time signature
+
+@funindex \time
+@funindex time
+
+Music Glossary: @rglos{time signature}.
+
+The @notation{time signature} can be set with the @code{\time}
+command:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+ \time 3/4
+ a4 a a
+ \time 6/8
+ a4. a
+ \time 4/4
+ a4 a a a
+}
+@end lilypond
+
+
+@subheading Clef
+
+@cindex clef
+@cindex treble
+@cindex alto
+@cindex tenor
+@cindex bass
+
+@funindex \clef
+@funindex clef
-@item
-@ruser{Changing defaults}:
-explains how to tweak LilyPond to produce exactly the notation you
-want.
+Music Glossary: @rglos{clef}.
-@item
-@ruser{Interfaces for programmers}:
-explains how to create music functions with scheme.
+The @notation{clef} can be set using the @code{\clef} command:
-@end itemize
+@lilypond[verbatim,quote]
+\relative c' {
+ \clef treble
+ c1
+ \clef alto
+ c1
+ \clef tenor
+ c1
+ \clef bass
+ c1
+}
+@end lilypond
-The Notation Reference also contains appendices with useful
-reference charts.
-@itemize
+@subheading All together
-@item
-@ruser{Literature list}:
-contains a set of useful reference books for those who wish to
-know more on notation and engraving.
+Here is a small example showing all these elements together:
-@item
-@ruser{Notation manual tables}:
-are a set of tables showing the chord names, MIDI instruments, a
-list of color names, and the Feta font.
+@lilypond[verbatim,quote]
+\relative c, {
+ \time 3/4
+ \clef bass
+ c2 e8 c' g'2.
+ f4 e d c4 c, r4
+}
+@end lilypond
-@item
-@ruser{Cheat sheet}:
-is a handy reference of the most common LilyPond commands.
-@item
-@ruser{LilyPond command index}:
-an index of all LilyPond @code{\commands}.
+@seealso
+Notation Reference: @ruser{Writing pitches},
+@ruser{Writing rhythms}, @ruser{Writing rests},
+@ruser{Time signature}, @ruser{Clef}.
-@item
-@ruser{LilyPond index}:
-a complete index.
-@end itemize
+@node Working on input files
+@subsection Working on input files
+@cindex curly braces
+@cindex braces, curly
+@cindex comments
+@cindex line comment
+@cindex comment, line
+@cindex block comment
+@cindex comment, line
+@cindex case sensitive
+@cindex whitespace insensitive
+@cindex expressions
-@node About the Application Usage
-@unnumberedsubsec About the Application Usage
+@funindex { ... }
+@funindex %
+@funindex %@{ ... %@}
-@cindex Application Usage
-@cindex integrating LilyPond with other programs
+LilyPond input files are similar to source files in many common
+programming languages. They are case sensitive, and white-space
+is generally ignored. Expressions are formed with curly braces
+@{ @}, and comments are denoted with @code{%} or
+@w{@code{%@{ ... %@}}}.
-This book explains how to execute the programs and how to integrate
-LilyPond notation with other programs.
+If the previous sentences sound like nonsense, don't worry! We'll
+explain what all these terms mean:
@itemize
@item
-@rprogram{Install}:
-explains how to install LilyPond, including compilation if
-desired.
+@strong{Case sensitive}:
+it matters whether you enter a letter in lower case (e.g.
+@w{@code{a, b, s, t}}) or upper case (e.g. @w{@code{A, B, S, T}}).
+Notes are lower case: @w{@code{@{ c d e @}}} is valid input;
+@w{@code{@{ C D E @}}} will produce an error message.
@item
-@rprogram{Setup}:
-describes how to configure your computer for optimum LilyPond
-usage, such as using special environments for certain text
-editors.
+@strong{Whitespace insensitive}:
+it does not matter how many spaces (or tabs or new lines) you add.
+@w{@code{@{ c d e @}}} means the same thing as
+@w{@code{@{ c @tie{}} @tie{} @tie{} d e @}} and:
+
+@example
+@{ c d
+ e @}
+@end example
+
+@noindent
+Of course, the previous example is hard to read. A good rule of
+thumb is to indent code blocks with either a tab or two spaces:
+
+@example
+@{
+ c d e
+@}
+@end example
+
+However, whitespace @emph{is} required to separate many syntactical
+elements from others. In other words, whitespace can always be
+@emph{added}, but it cannot be @emph{eliminated}. As missing
+whitespace can give rise to strange errors it is advisable to
+always insert whitespace before and after every syntactic element,
+for example, before and after every curly brace.
@item
-@rprogram{Running LilyPond}:
-shows how to run LilyPond and its helper programs. In addition,
-this section explains how to upgrade input files from previous
-versions of LilyPond.
-
-@item
-@rprogram{LilyPond-book}:
-explains the details behind creating documents with in-line music
-examples, like this manual.
-
+@strong{Expressions}:
+every piece of LilyPond input needs to have @strong{@{ curly
+braces @}} placed around the input. These braces tell LilyPond
+that the input is a single music expression, just like parentheses
+@code{()} in mathematics. The braces should be surrounded by a
+space unless they are at the beginning or end of a line to avoid
+ambiguities.
+
+A LilyPond command followed by a simple expression in braces (such
+as @w{@code{\relative @{ @}}}) also counts as a single music
+expression.
+
+@cindex comments
+@cindex line comment
+@cindex block comment
@item
-@rprogram{Converting from other formats}:
-explains how to run the conversion programs. These programs are
-supplied with the LilyPond package, and convert a variety of music
-formats to the @code{.ly} format.
+@strong{Comments}:
+a comment is a remark for the human reader of the music input; it
+is ignored while parsing, so it has no effect on the printed
+output. There are two types of comments. The percent symbol
+@code{%} introduces a line comment; anything after @code{%} on
+that line is ignored. By convention, a line comment is placed
+@emph{above} the code it refers to.
+
+@example
+a4 a a a
+% this comment refers to the Bs
+b2 b
+@end example
+
+A block comment marks a whole section of music input as a comment.
+Anything that is enclosed in @code{%@{} and @code{%@}} is ignored.
+However, block comments do not @q{nest}. This means that you
+cannot place a block comment inside another block comment. If you
+try, the first @code{%@}} will terminate @emph{both} block
+comments. The following fragment shows possible uses for
+comments:
+
+@example
+% notes for twinkle twinkle follow
+ c4 c g' g a a g2
+
+%@{
+ This line, and the notes below are ignored,
+ since they are in a block comment.
+
+ f f e e d d c2
+%@}
+@end example
@end itemize
-@node About the Snippet List
-@unnumberedsubsec About the Snippet List
+@node How to read the manuals
+@section How to read the manuals
-@cindex snippets
-@cindex LSR
-@cindex Snippet List
-@cindex LilyPond Snippet Repository
+FIXME: fluff here
-@rlsrnamed{Top,LilyPond Snippet List}: this shows a
-selected set of LilyPond snippets from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
-(LSR). All the snippets are in the public domain.
+@menu
+* Omitting braces::
+* Clickable examples::
+* Keyboard navigation::
+* Overview of manuals::
+@end menu
-Please note that this document is not an exact subset of LSR. LSR
-is running a stable LilyPond version, so any snippet which
-demonstrates new features of a development version must be added
-separately. These are stored in @file{input/new/} in the LilyPond
-source tree.
-The list of snippets for each subsection of the Notation Reference are
-also linked from the @strong{See also} portion.
+@node Omitting braces
+@unnumberedsubsec Omitting braces
-@node About the Internals Reference
-@unnumberedsubsec About the Internals Reference
+@cindex how to read the manual
+@cindex manual, reading
+@cindex reading the manual
+@cindex examples, clickable
+@cindex clickable examples
+@cindex tips for constructing files
+@cindex templates
+@cindex constructing files, tips
+@cindex files, tips for constructing
-@cindex Internals Reference
+LilyPond input must be surrounded by @{ @} marks or a
+@code{@w{\relative c'' @{ ... @}}}, as we saw in @ref{Working on
+input files}. For the rest of this manual, most examples will
+omit this. To replicate the examples, you may copy and paste the
+displayed input, but you @strong{must} add the
+@code{@w{\relative c'' @{ @}}} like this:
-@rinternalsnamed{Top,Internals Reference}: this is a set
-of heavily cross linked HTML pages which document the nitty-gritty
-details of each and every LilyPond class, object, and function.
-It is produced directly from the formatting definitions in the
-source code.
+@example
+\relative c'' @{
+ ... example goes here...
+@}
+@end example
-Almost all formatting functionality that is used internally is
-available directly to the user. For example, most variables that
-control thickness values, distances, etc., can be changed in input
-files. There are a huge number of formatting options, and all of
-them are described in this document. Each section of the Notation
-Reference has a @b{See also} subsection, which refers to the
-generated documentation. In the HTML document, these subsections
-have clickable links.
+Why omit the braces? Most examples in this manual can be inserted
+into the middle of a longer piece of music. For these examples,
+it does not make sense to add @code{@w{\relative c'' @{ @}}} --
+you should not place a @code{\relative} inside another
+@code{\relative}! If we included @code{@w{\relative c'' @{ @}}}
+around every example, you would not be able to copy a small
+documentation example and paste it inside a longer piece of your
+own. Most people want to add material to an existing piece, so we
+format the manual this way.
-@node Other documentation
-@unnumberedsubsec Other documentation
+@node Clickable examples
+@unnumberedsubsec Clickable examples
-There are a number of other sources of information which may be
-very valuable.
+Many people learn programs by trying and fiddling around with the
+program. This is also possible with LilyPond. If you click on a
+picture in the HTML version of this manual, you will see the exact
+LilyPond input that was used to generate that image. Try it on
+this image:
-@itemize
+@c no verbatim here
+@lilypond[quote]
+\relative c'' {
+ c-\markup { \bold \huge { Click here. } }
+}
+@end lilypond
-@item
-@ifhtml
-@ifset bigpage
-@uref{../topdocs/NEWS.html,News}:
-@end ifset
-@ifclear bigpage
-@uref{../../topdocs/NEWS.html,News}:
-@end ifclear
-@end ifhtml
-@ifnothtml
-News:
-@end ifnothtml
-this is a summary of important changes
-and new features in LilyPond since the previous version.
-
-@item @uref{http://lists.gnu.org/archive/html/lilypond-user/, The
-lilypond-user mailist archives}: this is a collection of previous
-emails sent to the user list. Many questions have been asked
-multiple times; there is a very good chance that if you have a
-question, the answer might be found in these archives.
-
-@item @uref{http://lists.gnu.org/archive/html/lilypond-devel/, The
-lilypond-devel mailist archives}: this is a collection of previous
-emails sent to the developer's list. The discussion here is more
-technical; if you have an advanced question about lilypond
-internals, the answer might be in these archives.
-
-@item Embedded music fragments: in all HTML documents that have
-music fragments embedded, the exact LilyPond input that was used
-to produce that image can be viewed by clicking the image.
-
-@item Init files: the location of the documentation files that are
-mentioned here can vary from system to system. On occasion, this
-manual refers to initialization and example files. Throughout this
-manual, we refer to input files relative to the top-directory of the
-source archive. For example, @file{input/@/lsr/@/dirname/@/bla@/.ly}
-may refer to the file
-@file{lilypond@/2.x.y/@/input/@/lsr/@/dirname/@/bla@/.ly}. On binary
-packages for the UNIX platform, the documentation and examples can
-typically be found somewhere below
-@file{/usr/@/share/@/doc/@/lilypond/}. Initialization files, for
-example @file{scm/@/lily@/.scm}, or @file{ly/@/engraver@/-init@/.ly},
-are usually found in the directory @file{/usr/@/share/@/lilypond/}.
-For more details, see @ref{Other sources of information}.
+By cutting and pasting everything in the @qq{ly snippet} section,
+you have a starting template for experiments. To see exactly the
+same output (line-width and all), copy everything from @qq{Start
+cut-&-pastable section} to the bottom of the file.
+
+
+@node Keyboard navigation
+@unnumberedsubsec Keyboard navigation
+
+
+
+@node Overview of manuals
+@unnumberedsubsec Overview of manuals
+
+FIXME: a brief discussion about the rest of the LM, and pointers
+to specific places. like NR for general reference, AU for
+suggestions for writing files, etc.
-@end itemize
+++ /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"
-
-@ignore
-Tutorial guidelines: (different from policy.txt!)
-- unless you have a really good reason, use either
- @lilypond[verbatim,quote]
- or
- @lilypond[verbatim,quote,relative=2]
-
- Don't use any other relative=X commands.
-
-- use "aes" and "ees" instead of "as" and "es". I know it's not
- correct Dutch naming, but let's not confuse people with this
- until we get to the Basic notation chapter.
-
-- Add "Music Glossary: @rglos{foo}" to the *top* of the relevant
- portions of the tutorial.
-
-@end ignore
-
-
-@node Common notation
-@chapter Common notation
-
-This tutorial starts with an introduction to the LilyPond music
-language and explains how to produce printed music. After this first
-contact we will explain how to create beautiful printed music
-containing common musical notation.
-
-@menu
-* Single staff notation::
-* Multiple notes at once::
-* Songs::
-* Final touches::
-@end menu
-
-
-@node Single staff notation
-@section Single staff notation
-
-This section introduces common notation that is used for one voice
-on one staff.
-
-@menu
-* Accidentals and key signatures::
-* Ties and slurs::
-* Articulation and dynamics::
-* Adding text::
-* Automatic and manual beams::
-* Advanced rhythmic commands::
-@end menu
-
-
-@node Accidentals and key signatures
-@subsection Accidentals and key signatures
-
-@subheading Accidentals
-
-@cindex accidentals
-@cindex accidentals and key signatures
-@cindex sharp
-@cindex double sharp
-@cindex sharp, double
-@cindex flat
-@cindex double flat
-@cindex flat, double
-
-@funindex es
-@funindex is
-@funindex eses
-@funindex isis
-
-Music Glossary: @rglos{sharp}, @rglos{flat}, @rglos{double sharp},
-@rglos{double flat}, @rglos{accidental}.
-
-A @notation{sharp} pitch is made by adding @code{is} to the name,
-and a @notation{flat} pitch by adding @code{es}. As you might
-expect, a @notation{double sharp} or @notation{double flat} is
-made by adding @code{isis} or @code{eses}. This syntax is derived
-from note naming conventions in Nordic and Germanic languages,
-like German and Dutch. To use other names for
-@notation{accidentals}, see @ruser{Note names in other languages}.
-
-@lilypond[verbatim,quote,relative=2]
-cis1 ees fisis, aeses
-@end lilypond
-
-@cindex key signature, setting
-@subheading Key signatures
-
-@cindex key signature
-@cindex major
-@cindex minor
-@cindex accidentals and key signature
-@cindex content vs. layout
-@cindex layout vs. content
-
-@funindex \key
-@funindex key
-@funindex \major
-@funindex major
-@funindex \minor
-@funindex minor
-
-Music Glossary: @rglos{key signature}, @rglos{major},
-@rglos{minor}.
-
-The @notation{key signature} is set with the command @code{\key}
-followed by a pitch and @code{\major} or @code{\minor}.
-
-@lilypond[verbatim,quote,relative=2]
-\key d \major
-a1
-\key c \minor
-a
-@end lilypond
-
-@smallspace
-
-@subheading Warning: key signatures and pitches
-
-Music Glossary: @rglos{accidental}, @rglos{key signature},
-@rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
-@rglos{transposition}.
-
-To determine whether to print an @notation{accidental}, LilyPond
-examines the pitches and the @notation{key signature}. The key
-signature only affects the @emph{printed} accidentals, not the
-note's @notation{pitch}! This is a feature that often causes
-confusion to newcomers, so let us explain it in more detail.
-
-LilyPond makes a sharp distinction between musical content and
-layout. The alteration (@notation{flat}, @notation{natural sign} or
-@notation{sharp}) of a note is part of the pitch, and is therefore
-musical content. Whether an accidental (a @emph{printed} flat,
-natural or sharp sign) is printed in front of the corresponding
-note is a question of layout. Layout is something that follows
-rules, so accidentals are printed automatically according to those
-rules. The pitches in your music are works of art, so they will
-not be added automatically, and you must enter what you want to
-hear.
-
-In this example:
-
-@lilypond[verbatim,quote,relative=2]
-\key d \major
-d cis fis
-@end lilypond
-
-@noindent
-No note has a printed accidental, but you must still add
-@code{is} and type @code{cis} and @code{fis} in the input file.
-
-The code @code{b} does not mean @qq{print a black dot just on
-the middle line of the staff.} Rather, it means @qq{there is a
-note with pitch B-natural.} In the key of A-flat major, it
-@emph{does} get an accidental:
-
-@lilypond[verbatim,quote,relative=2]
-\key aes \major
-b
-@end lilypond
-
-Adding all alterations explicitly might require a little more
-effort when typing, but the advantage is that
-@notation{transposing} is easier, and accidentals can be printed
-according to different conventions. For some examples how
-accidentals can be printed according to different rules, see
-@ruser{Automatic accidentals}.
-
-
-@seealso
-Notation Reference: @ruser{Note names in other languages},
-@ruser{Accidentals}, @ruser{Automatic accidentals},
-@ruser{Key signature}.
-
-Music Glossary: @rglos{Pitch names}.
-
-
-@node Ties and slurs
-@subsection Ties and slurs
-
-@cindex tie
-@cindex slur
-@cindex slur, phrasing
-@cindex phrasing slur
-
-@funindex ~
-@funindex ( ... )
-@funindex \( ... \)
-
-@subheading Ties
-
-
-Music Glossary: @rglos{tie}.
-
-A @notation{tie} is created by appending a tilde @code{~} to the
-first note being tied.
-
-@lilypond[verbatim,quote,relative=2]
-g4~ g c2~
-c4 ~ c8 a8 ~ a2
-@end lilypond
-
-@subheading Slurs
-
-
-Music Glossary: @rglos{slur}.
-
-A @notation{slur} is a curve drawn across many notes. The
-starting note and ending note are marked with @code{(} and
-@code{)} respectively.
-
-@lilypond[verbatim,quote,relative=2]
-d4( c16) cis( d e c cis d) e( d4)
-@end lilypond
-
-@subheading Phrasing slurs
-
-Music Glossary: @rglos{slur}, @rglos{phrasing}.
-
-Slurs to indicate longer @notation{phrasing} can be entered with
-@code{\(} and @code{\)}. You can have both @notation{slurs}
-and phrasing slurs at the same time, but you cannot have
-simultaneous slurs or simultaneous phrasing slurs.
-
-@lilypond[verbatim,quote,relative=2]
-a8(\( ais b c) cis2 b'2 a4 cis,\)
-@end lilypond
-
-@smallspace
-
-@cindex slurs versus ties
-@subheading Warnings: slurs vs. ties
-
-Music Glossary: @rglos{articulation}, @rglos{slur}, @rglos{tie}.
-
-A @notation{slur} looks like a @notation{tie}, but it has a
-different meaning. A tie simply makes the first note longer, and
-can only be used on pairs of notes with the same pitch. Slurs
-indicate the @notation{articulation} of notes, and can be used on
-larger groups of notes. Slurs and ties can be nested.
-
-@lilypond[verbatim,quote,relative=2]
-c2~( c8 fis fis4 ~ fis2 g2)
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Ties}, @ruser{Slurs},
-@ruser{Phrasing slurs}.
-
-
-@node Articulation and dynamics
-@subsection Articulation and dynamics
-
-
-@subheading Articulations
-
-@cindex articulation
-@cindex accent
-@cindex staccato
-
-Music Glossary: @rglos{articulation}.
-
-Common @notation{articulations} can be added to a note using a
-dash @code{-} and a single character:
-
-@lilypond[verbatim,quote,relative=2]
-c-. c-- c-> c-^ c-+ c-_
-@end lilypond
-
-@subheading Fingerings
-
-@cindex fingering
-
-@funindex ^
-@funindex _
-
-Music Glossary: @rglos{fingering}.
-
-Similarly, @notation{fingering} indications can be added to a note
-using a dash (@code{-}) and the digit to be printed:
-
-@lilypond[verbatim,quote,relative=2]
-c-3 e-5 b-2 a-1
-@end lilypond
-
-Articulations and fingerings are usually placed automatically, but
-you can specify a direction by replacing the dash (@code{-}) with
-@code{^} (up) or @code{_} (down). You can also use multiple
-articulations on the same note. However, in most cases it is best
-to let LilyPond determine the articulation directions.
-
-@lilypond[verbatim,quote,relative=2]
-c_-^1 d^. f^4_2-> e^-_+
-@end lilypond
-
-@subheading Dynamics
-
-@cindex dynamics
-@cindex decrescendo
-@cindex crescendo
-
-@funindex \f
-@funindex \ff
-@funindex \mp
-@funindex \p
-@funindex \mf
-@funindex \pp
-@funindex \<
-@funindex <
-@funindex \>
-@funindex >
-@funindex \!
-@funindex !
-
-Music Glossary: @rglos{dynamics}, @rglos{crescendo},
-@rglos{decrescendo}.
-
-@notation{Dynamic} signs are made by adding the markings (with a
-backslash) to the note:
-
-@lilypond[verbatim,quote,relative=2]
-c\ff c\mf c\p c\pp
-@end lilypond
-
-
-@notation{Crescendi} and @notation{decrescendi} are started with
-the commands @code{\<} and @code{\>}. The next dynamics sign, for
-example @code{\f}, will end the (de)crescendo, or the command
-@code{\!} can be used:
-
-@lilypond[verbatim,quote,relative=2]
-c2\< c2\ff\> c2 c2\!
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Articulations and ornamentations},
-@ruser{Fingering instructions}, @ruser{Dynamics}.
-
-
-@node Adding text
-@subsection Adding text
-
-@cindex text, adding
-@cindex adding text
-@cindex markup
-
-@funindex \markup
-@funindex markup
-
-Text may be added to your scores:
-
-@lilypond[verbatim,quote,relative=2]
-c1^"espr" a_"legato"
-@end lilypond
-
-Extra formatting may be added with the @code{\markup} command:
-
-@lilypond[verbatim,quote,relative=2]
-c1^\markup{ \bold espr}
-a1_\markup{
- \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
-}
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Writing text}.
-
-
-@node Automatic and manual beams
-@subsection Automatic and manual beams
-
-@cindex beaming
-@cindex automatic beams
-@cindex manual beams
-@cindex beams, automatic
-@cindex beams, manual
-@cindex beams, by hand
-
-@funindex [ ... ]
-@funindex [
-@funindex ]
-@funindex \autoBeamOff
-@funindex autoBeamOff
-@funindex \autoBeamOn
-@funindex autoBeamOn
-
-Music Glossary: @rglos{beam}.
-
-All @notation{beams} are drawn automatically:
-
-@lilypond[verbatim,quote,relative=2]
-a8 ais d ees r d c16 b a8
-@end lilypond
-
-If you do not like the automatic beams, they may be overridden
-manually. To correct just an occasional beam mark the first note
-to be beamed with @code{[} and the last one with @code{]}.
-
-@lilypond[verbatim,quote,relative=2]
-a8[ ais] d[ ees r d] a b
-@end lilypond
-
-If you want to turn off automatic beaming entirely or for an
-extended section of music, use the command @code{\autoBeamOff}
-to turn off automatic beaming and @code{\autoBeamOn} to turn it
-on again.
-
-@lilypond[verbatim,quote,relative=2]
-\autoBeamOff
-a8 c b4 d8. c16 b4
-\autoBeamOn
-a8 c b4 d8. c16 b4
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Automatic beams}, @ruser{Manual beams}.
-
-
-@node Advanced rhythmic commands
-@subsection Advanced rhythmic commands
-
-@subheading Partial measure
-
-@cindex pickup
-@cindex anacrusis
-@cindex partial measure
-
-@funindex \partial
-@funindex partial
-
-Music Glossary: @rglos{anacrusis}.
-
-A pickup (or @notation{anacrusis}) is entered with the keyword
-@code{\partial}. It is followed by a duration: @code{\partial 4}
-is a quarter note pickup and @code{\partial 8} an eighth note.
-
-@lilypond[verbatim,quote,relative=2]
-\partial 8
-f8 c2 d
-@end lilypond
-
-@subheading Tuplets
-
-@cindex tuplets
-@cindex triplets
-
-@funindex \times
-@funindex times
-
-Music Glossary: @rglos{note value}, @rglos{triplet}.
-
-@notation{Tuplets} are made with the @code{\times} keyword. It
-takes two arguments: a fraction and a piece of music. The
-duration of the piece of music is multiplied by the fraction.
-Triplets make notes occupy 2/3 of their notated duration, so a
-@notation{triplet} has 2/3 as its fraction
-
-@lilypond[verbatim,quote,relative=2]
-\times 2/3 { f8 g a }
-\times 2/3 { c r c }
-\times 2/3 { f,8 g16[ a g a] }
-\times 2/3 { d4 a8 }
-@end lilypond
-
-@subheading Grace notes
-
-@cindex grace notes
-@cindex acciaccatura
-@cindex appoggiatura
-
-@funindex \grace
-@funindex grace
-@funindex \acciaccatura
-@funindex acciaccatura
-@funindex \appoggiatura
-@funindex acciaccatura
-
-Music Glossary: @rglos{grace notes}, @rglos{acciaccatura},
-@rglos{appoggiatura}.
-
-@notation{Grace notes} are created with the @code{\grace} command,
-although they can also be created by prefixing a music expression
-with the keyword @code{\appoggiatura} or @code{\acciaccatura}:
-
-@lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2
-c2 \appoggiatura b16 c2
-c2 \acciaccatura b16 c2
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Grace notes}, @ruser{Tuplets},
-@ruser{Upbeats}.
-
-
-@node Multiple notes at once
-@section Multiple notes at once
-
-This section introduces having more than one note at the same
-time: multiple instruments, multiple staves for a single
-instrument (i.e. piano), and chords.
-
-Polyphony in music refers to having more than one voice occurring
-in a piece of music. Polyphony in LilyPond refers to having more
-than one voice on the same staff.
-
-@menu
-* Music expressions explained::
-* Multiple staves::
-* Staff groups::
-* Combining notes into chords::
-* Single staff polyphony::
-@end menu
-
-
-@node Music expressions explained
-@subsection Music expressions explained
-
-@cindex music expression
-@cindex expression, music
-@cindex compound music expression
-@cindex music expression, compound
-
-In LilyPond input files, music is represented by @emph{music
-expressions}. A single note is a music expression:
-
-@lilypond[verbatim,quote,relative=2]
-a4
-@end lilypond
-
-Enclosing a note in braces creates a @emph{compound music
-expression}. Here we have created a compound music expression
-with two notes:
-
-@lilypond[verbatim,quote,relative=2]
-{ a4 g4 }
-@end lilypond
-
-Putting a group of music expressions (e.g. notes) in braces means
-that they are in sequence (i.e. each one follows the previous
-one). The result is another music expression:
-
-@lilypond[verbatim,quote,relative=2]
-{ { a4 g } f g }
-@end lilypond
-
-@subheading Analogy: mathematical expressions
-
-This mechanism is similar to mathematical formulas: a big formula
-is created by composing small formulas. Such formulas are called
-expressions, and they can contain other expressions, so you can
-make arbitrarily complex and large expressions. For example,
-
-@example
-1
-
-1 + 2
-
-(1 + 2) * 3
-
-((1 + 2) * 3) / (4 * 5)
-@end example
-
-This is a sequence of expressions, where each expression is
-contained in the next (larger) one. The simplest expressions are
-numbers, and larger ones are made by combining expressions with
-operators (like @code{+}, @code{*} and @code{/}) and parentheses.
-Like mathematical expressions, music expressions can be nested
-arbitrarily deep, which is necessary for complex music like
-polyphonic scores.
-
-
-@subheading Simultaneous music expressions: multiple staves
-
-@cindex multiple staves
-@cindex staves, multiple
-@cindex polyphony
-@cindex combining expressions in parallel
-@cindex parallel expressions
-@cindex expressions, parallel
-@cindex relative notes and simultaneous music
-@cindex relative notes and parallel expressions
-@cindex simultaneous music and relative notes
-@cindex parallel expressions and relative notes
-
-@funindex <<
-@funindex >>
-@funindex << ... >>
-
-Music Glossary: @rglos{polyphony}.
-
-This technique is useful for @notation{polyphonic} music. To
-enter music with more voices or more staves, we combine
-expressions in parallel. To indicate that two voices should play
-at the same time, simply enter a simultaneous combination of music
-expressions. A @q{simultaneous} music expression is formed by
-enclosing expressions inside @code{<<} and @code{>>}. In the
-following example, three sequences (all containing two separate
-notes) are combined simultaneously:
-
-@lilypond[verbatim,quote]
-\relative c'' {
- <<
- { a4 g }
- { f e }
- { d b }
- >>
-}
-@end lilypond
-
-Note that we have indented each level of the input with a
-different amount of space. LilyPond does not care how much (or
-little) space there is at the beginning of a line, but indenting
-LilyPond code like this makes it much easier for humans to read.
-
-@warning{each note is relative to the previous note in
-the input, not relative to the @code{c''} in the initial
-@code{@bs{}relative} command.}
-
-
-@subheading Simultaneous music expressions: single staff
-
-To determine the number of staves in a piece, LilyPond looks at
-the beginning of the first expression. If there is a single note,
-there is one staff; if there is a simultaneous expression, there
-is more than one staff. The following example shows a complex
-expression, but as it begins with a single note it will be set
-out on a single staff.
-
-@lilypond[verbatim,quote]
-\relative c'' {
- c2 <<c e>>
- << { e f } { c <<b d>> } >>
-}
-@end lilypond
-
-@node Multiple staves
-@subsection Multiple staves
-
-@cindex multiple staves
-@cindex staves, multiple
-@cindex context
-@cindex context, notation
-@cindex notation context
-
-@funindex \new Staff
-@funindex new Staff
-@funindex Staff
-@funindex \new
-@funindex new
-@funindex Score
-@funindex Voice
-@funindex Lyrics
-@funindex ChordNames
-
-LilyPond input files are constructed out of music expressions, as
-we saw in @ref{Music expressions explained}. If the score begins
-with simultaneous music expressions, LilyPond creates multiples
-staves. However, it is easier to see what happens if we create
-each staff explicitly.
-
-To print more than one staff, each piece of music that makes up a
-staff is marked by adding @code{\new Staff} before it. These
-@code{Staff} elements are then combined in parallel with @code{<<}
-and @code{>>}:
-
-@lilypond[verbatim,quote]
-\relative c'' {
- <<
- \new Staff { \clef treble c }
- \new Staff { \clef bass c,, }
- >>
-}
-@end lilypond
-
-The command @code{\new} introduces a @q{notation context.} A
-notation context is an environment in which musical events (like
-notes or @code{\clef} commands) are interpreted. For simple
-pieces, such notation contexts are created automatically. For
-more complex pieces, it is best to mark contexts explicitly.
-
-There are several types of contexts. @code{Score}, @code{Staff},
-and @code{Voice} handle melodic notation, while @code{Lyrics} sets
-lyric texts and @code{ChordNames} prints chord names.
-
-In terms of syntax, prepending @code{\new} to a music expression
-creates a bigger music expression. In this way it resembles the
-minus sign in mathematics. The formula @math{(4+5)} is an
-expression, so @math{-(4+5)} is a bigger expression.
-
-Time signatures entered in one staff affects all other staves by
-default. On the other hand, the key signature of one staff does
-@emph{not} affect other staves. This different default behavior
-is because scores with transposing instruments are more common
-than polyrhythmic scores.
-
-@lilypond[verbatim,quote]
-\relative c'' {
- <<
- \new Staff { \clef treble \key d \major \time 3/4 c }
- \new Staff { \clef bass c,, }
- >>
-}
-@end lilypond
-
-
-
-
-@node Staff groups
-@subsection Staff groups
-
-@cindex piano staff
-@cindex staff, piano
-@cindex choir staff
-@cindex staff, choir
-@cindex grand staff
-@cindex staff, grand
-@cindex staff group
-
-@funindex PianoStaff
-@funindex GrandStaff
-@funindex ChoirStaff
-
-Music Glossary: @rglos{brace}.
-
-Piano music is typeset in two staves connected by a
-@notation{brace}.
-Printing such a staff is similar to the polyphonic example in
-@ref{Multiple staves}. However, now this entire expression is
-inserted inside a @code{PianoStaff}:
-
-@example
-\new PianoStaff <<
- \new Staff @dots{}
- \new Staff @dots{}
->>
-@end example
-
-Here is a small example:
-
-@lilypond[verbatim,quote]
-\relative c'' {
- \new PianoStaff <<
- \new Staff { \time 2/4 c4 e g g, }
- \new Staff { \clef bass c,, c' e c }
- >>
-}
-@end lilypond
-
-Other staff groupings are introduced with @code{\new GrandStaff},
-suitable for orchestral scores, and @w{@code{\new ChoirStaff}},
-suitable for vocal scores. These staff groups each form another
-type of context, one that generates the brace at the left end of
-every system and also controls the extent of bar lines.
-
-
-@seealso
-Notation Reference: @ruser{Keyboard and other multi-staff
-instruments},
-@ruser{Displaying staves}.
-
-
-@node Combining notes into chords
-@subsection Combining notes into chords
-
-@cindex chords
-@cindex note durations in chords
-
-@funindex <
-@funindex >
-@funindex < ... >
-
-Music Glossary: @rglos{chord}.
-
-We saw earlier how notes can be combined into @notation{chords} by
-indicating they are simultaneous by enclosing them in double angle
-brackets. However, the normal way of indicating a chord is to
-surround the pitches with @emph{single} angle brackets. Note that
-all the notes in a chord must have the same duration, and that the
-duration is placed after the closing bracket.
-
-@lilypond[verbatim,quote,relative=2]
-r4 <c e g>4 <c f a>2
-@end lilypond
-
-Think of chords as almost equivalent to single notes:
-almost everything you can attach to a single note can be attached
-to a chord, and everything must go @emph{outside} the angle
-brackets. For example, you can combine markings like beams and
-ties with chords. They must be placed outside the angle brackets.
-
-@lilypond[verbatim,quote,relative=2]
-r4 <c e g>8[ <c f a>]~ <c f a>2
-r4 <c e g>8( <c e g>\> <c e g>4 <c f a>\!)
-@end lilypond
-
-
-@node Single staff polyphony
-@subsection Single staff polyphony
-
-@cindex polyphony
-@cindex multiple voices
-@cindex voices, more on one staff
-@cindex single staff polyphony
-@cindex spacer rest
-@cindex rest, spacer
-
-@funindex << ... \\ ... >>
-@funindex <<
-@funindex \\
-@funindex >>
-
-Polyphonic music in lilypond, while not difficult, uses concepts
-that we haven't discussed yet, so we're not going to introduce
-them here. Instead, the following sections introduce these concepts
-and explain them thoroughly.
-
-@seealso
-Learning Manual: @ref{Voices contain music}.
-
-Notation Reference: @ruser{Simultaneous notes}.
-
-@node Songs
-@section Songs
-
-This section introduces vocal music and simple song sheets.
-
-@menu
-* Setting simple songs::
-* Aligning lyrics to a melody::
-* Lyrics to multiple staves::
-@end menu
-
-
-@node Setting simple songs
-@subsection Setting simple songs
-
-@cindex lyrics
-@cindex songs
-
-@funindex \addlyrics
-@funindex addlyrics
-
-Music Glossary: @rglos{lyrics}.
-
-Here is the start of the melody to a nursery
-rhyme, @notation{Girls and boys come out to play}:
-
-@lilypond[verbatim,quote]
-\relative c'' {
- \key g \major
- \time 6/8
- d4 b8 c4 a8 d4 b8 g4
-}
-@end lilypond
-
-The @notation{lyrics} can be set to these notes, combining both
-with the @code{\addlyrics} keyword. Lyrics are entered by
-separating each syllable with a space.
-
-@lilypond[verbatim,quote]
-<<
- \relative c'' {
- \key g \major
- \time 6/8
- d4 b8 c4 a8 d4 b8 g4
- }
- \addlyrics {
- Girls and boys come out to play,
- }
->>
-@end lilypond
-
-Note the curly brackets delimiting both the music and the lyrics,
-and the double angle brackets @w{@code{<< ... >>}} around the
-whole piece to show that the music and lyrics are to occur at the
-same time.
-
-@node Aligning lyrics to a melody
-@subsection Aligning lyrics to a melody
-
-@cindex melisma
-@cindex extender line
-@cindex hyphens
-@cindex underscore
-@cindex lyrics, aligning
-@cindex aligning lyrics
-@cindex lyrics, multi-syllable words
-@cindex words with multiple syllables in lyrics
-
-Music Glossary: @rglos{melisma}, @rglos{extender line}.
-
-The next line in the nursery rhyme is @notation{The moon doth
-shine as bright as day}. Let's extend it:
-
-@lilypond[verbatim,quote]
-<<
- \relative c'' {
- \key g \major
- \time 6/8
- d4 b8 c4 a8 d4 b8 g4
- g8 a4 b8 c b a d4 b8 g4.
- }
- \addlyrics {
- Girls and boys come out to play,
- The moon doth shine as bright as day;
- }
->>
-@end lilypond
-
-We see the extra lyrics do not align properly with the notes. The
-word @notation{shine} should be sung on two notes, not one. This
-is called a @notation{melisma}, a single syllable sung to more
-than one note. There are several ways to spread a syllable over
-multiple notes, the simplest being to add a slur across them, for
-details, see @ref{Ties and slurs}:
-
-@lilypond[verbatim,quote]
-<<
- \relative c'' {
- \key g \major
- \time 6/8
- d4 b8 c4 a8 d4 b8 g4
- g8 a4 b8 c( b) a d4 b8 g4.
- }
- \addlyrics {
- Girls and boys come out to play,
- The moon doth shine as bright as day;
- }
->>
-@end lilypond
-
-The words now line up correctly with the notes, but the automatic
-beaming for the notes above @notation{shine as} does not look right.
-We can correct this by inserting manual beaming commands to override
-the automatic beaming here, for details, see @ref{Automatic and
-manual beams}.
-
-@lilypond[verbatim,quote]
-<<
- \relative c'' {
- \key g \major
- \time 6/8
- d4 b8 c4 a8 d4 b8 g4
- g8 a4 b8 c([ b]) a d4 b8 g4.
- }
- \addlyrics {
- Girls and boys come out to play,
- The moon doth shine as bright as day;
- }
->>
-@end lilypond
-
-As an alternative to using slurs, the melismata may be indicated
-in just the lyrics by using an underscore @code{_} for each note
-that should be included in the melisma:
-
-@lilypond[verbatim,quote]
-<<
- \relative c'' {
- \key g \major
- \time 6/8
- d4 b8 c4 a8 d4 b8 g4
- g8 a4 b8 c[ b] a d4 b8 g4.
- }
- \addlyrics {
- Girls and boys come out to play,
- The moon doth shine _ as bright as day;
- }
->>
-@end lilypond
-
-If a syllable extends over several notes or a single very long
-note an @notation{extender line} is usually drawn from the
-syllable extending under all the notes for that syllable. It is
-entered as two underscores @code{__}. Here is an example from the
-first three bars of @notation{Dido's Lament}, from Purcell's
-@notation{Dido and Æneas}:
-
-@lilypond[verbatim,quote]
-<<
- \relative c'' {
- \key g \minor
- \time 3/2
- g2 a bes bes( a)
- b c4.( bes8 a4. g8 fis4.) g8 fis1
- }
- \addlyrics {
- When I am laid,
- am laid __ in earth,
- }
->>
-@end lilypond
-
-None of the examples so far have involved words containing more
-than one syllable. Such words are usually split one syllable to a
-note, with hyphens between syllables. Such hyphens are entered as
-two dashes, resulting in a centered hyphen between the syllables.
-Here is an example showing this and everything we have learned so
-far about aligning lyrics to notes.
-
-@c no ragged-right here because otherwise the hyphens get lost,
-@c but the example is long enough to avoid looking strange.
-@lilypond[verbatim,quote,noragged-right]
-<<
- \relative c' {
- \key g \major
- \time 3/4
- \partial 4
- d4 g4 g a8( b) g4 g4
- b8( c) d4 d e4 c2
- }
- \addlyrics {
- A -- way in a __ man -- ger,
- no __ crib for a bed, __
- }
->>
-@end lilypond
-
-Some lyrics, especially those in Italian, require the opposite:
-setting more than one syllable to a single note. This is
-achieved by linking the syllables together with a single
-underscore @code{_} (with no spaces), or enclosing them in quotes.
-Here's an example from Rossini's @notation{Figaro}, where
-@notation{al} has to be sung on the same note as the @notation{go} of
-@notation{Largo} in Figaro's aria @notation{Largo al factotum}:
-
-@c no ragged-right here because otherwise the hyphens get lost,
-@c but the example is long enough to avoid looking strange.
-@lilypond[verbatim,quote,noragged-right]
-<<
- \relative c' {
- \clef bass
- \key c \major
- \time 6/8
- c4.~ c8 d b c([ d]) b c d b c
- }
- \addlyrics {
- Lar -- go_al fac -- to -- tum del -- la cit -- tà
- }
->>
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Vocal music}.
-
-
-@node Lyrics to multiple staves
-@subsection Lyrics to multiple staves
-
-@cindex lyrics and multiple staves
-@cindex multiple staves and lyrics
-
-The simple approach using @code{\addlyrics} can be used for
-placing lyrics under more than one staff. Here is an
-example from Handel's @notation{Judas Maccabæus}:
-
-@lilypond[verbatim,quote]
-<<
- \relative c'' {
- \key f \major
- \time 6/8
- \partial 8
- c8 c([ bes]) a a([ g]) f f'4. b, c4.~ c4
- }
- \addlyrics {
- Let flee -- cy flocks the hills a -- dorn, __
- }
- \relative c' {
- \key f \major
- \time 6/8
- \partial 8
- r8 r4. r4 c8 a'([ g]) f f([ e]) d e([ d]) c bes'4
- }
- \addlyrics {
- Let flee -- cy flocks the hills a -- dorn,
- }
->>
-@end lilypond
-
-Scores any more complex than this simple example are better
-produced by separating out the score structure from the notes and
-lyrics with variables. These are discussed in @ref{Organizing
-pieces with variables}.
-
-
-@seealso
-Notation Reference: @ruser{Vocal music}.
-
-
-@node Final touches
-@section Final touches
-
-This is the final section of the tutorial; it demonstrates how to
-add the final touches to simple pieces, and provides an
-introduction to the rest of the manual.
-
-@menu
-* Organizing pieces with variables::
-* Version number::
-* Adding titles::
-* Absolute note names::
-* After the tutorial::
-@end menu
-
-
-@node Organizing pieces with variables
-@subsection Organizing pieces with variables
-
-@cindex variables
-@cindex variables, defining
-@cindex identifiers
-@cindex macros
-@cindex assigning variables
-@cindex using variables
-@cindex variables, using
-@cindex variables, characters allowed in
-@cindex characters allowed in variables
-
-When all of the elements discussed earlier are combined to produce
-larger files, the music expressions get a lot bigger. In
-polyphonic music with many staves, the input files can become very
-confusing. We can reduce this confusion by using
-@emph{variables}.
-
-With variables (also known as identifiers or macros), we can break
-up complex music expressions. A variable is assigned as
-follows:
-
-@example
-namedMusic = @{ @dots{} @}
-@end example
-
-The contents of the music expression @code{namedMusic} can be used
-later by placing a backslash in front of the name
-(@code{\namedMusic}, just like a normal LilyPond command).
-
-@lilypond[verbatim,quote]
-violin = \new Staff {
- \relative c'' {
- a4 b c b
- }
-}
-cello = \new Staff {
- \relative c {
- \clef bass
- e2 d
- }
-}
-{
- <<
- \violin
- \cello
- >>
-}
-@end lilypond
-
-@noindent
-The name of a variable must have alphabetic characters only, no
-numbers, underscores, or dashes.
-
-Variables must be defined @emph{before} the main music
-expression, but may be used as many times as required anywhere after
-they have been defined. They may even be used in a later definition
-of another variable, giving a way of shortening the input if a
-section of music is repeated many times.
-
-@lilypond[verbatim,quote]
-tripletA = \times 2/3 { c,8 e g }
-barA = { \tripletA \tripletA \tripletA \tripletA }
-
-\relative c'' {
- \barA \barA
-}
-@end lilypond
-
-Variables may be used for many other types of objects in
-the input. For example,
-
-@example
-width = 4.5\cm
-name = "Wendy"
-aFivePaper = \paper @{ paperheight = 21.0 \cm @}
-@end example
-
-Depending on its contents, the variable can be used in different
-places. The following example uses the above variables:
-
-@example
-\paper @{
- \aFivePaper
- line-width = \width
-@}
-@{
- c4^\name
-@}
-@end example
-
-
-@node Version number
-@subsection Version number
-
-@cindex versioning
-@cindex version
-@cindex version number
-@cindex upgrades
-@cindex future upgrades
-@cindex updating files
-@cindex files, updating
-
-@funindex \version
-@funindex version
-@funindex convert-ly
-
-The @code{\version} statement records the version of LilyPond that
-was used to write the file:
-
-@example
-\version @w{"@version{}"}
-@end example
-
-@noindent
-By convention, this is placed at the top of your LilyPond file.
-
-These annotations make future upgrades of LilyPond go more
-smoothly. Changes in the syntax are handled with a special
-program, @command{convert-ly}, and it uses @code{\version} to
-determine what rules to apply. For details, see
-@rprogram{Updating files with convert-ly}.
-
-
-@node Adding titles
-@subsection Adding titles
-
-@cindex title
-@cindex headers
-@cindex header block
-
-@funindex \header
-@funindex header
-
-The title, composer, opus number, and similar information are
-entered in the @code{\header} block. This exists outside of the
-main music expression; the @code{\header} block is usually placed
-underneath the version number.
-
-@example
-\version @w{"@version{}"}
-\header @{
- title = "Symphony"
- composer = "Me"
- opus = "Op. 9"
-@}
-
-@{
- @dots{} music @dots{}
-@}
-@end example
-
-When the file is processed, the title and composer are printed
-above the music. More information on titling can be found in
-@ruser{Creating titles}.
-
-
-@node Absolute note names
-@subsection Absolute note names
-
-@cindex note names
-@cindex note names, absolute
-@cindex absolute mode
-@cindex absolute values for pitches
-@cindex pitches, absolute values
-@cindex absolute note names
-
-So far we have always used @code{\relative} to define pitches.
-This is the easiest way to enter most music, but another way of
-defining pitches exists: absolute mode.
-
-If you omit the @code{\relative}, LilyPond treats all pitches as
-absolute values. A @code{c'} will always mean middle C, a
-@code{b} will always mean the note one step below middle C, and a
-@code{g,} will always mean the note on the bottom staff of the
-bass clef.
-
-@lilypond[verbatim,quote]
-{
- \clef bass
- c' b g, g,
- g, f, f c'
-}
-@end lilypond
-
-Here is a four-octave scale:
-
-@lilypond[verbatim,quote]
-{
- \clef bass
- c, d, e, f,
- g, a, b, c
- d e f g
- a b c' d'
- \clef treble
- e' f' g' a'
- b' c'' d'' e''
- f'' g'' a'' b''
- c'''1
-}
-@end lilypond
-
-As you can see, writing a melody in the treble clef involves a lot
-of quote @code{'} marks. Consider this fragment from Mozart:
-
-@lilypond[verbatim,quote]
-{
- \key a \major
- \time 6/8
- cis''8. d''16 cis''8 e''4 e''8
- b'8. cis''16 b'8 d''4 d''8
-}
-@end lilypond
-
-All these quotes makes the input less readable and they are a source
-of errors. With @code{\relative}, the previous example is much
-easier to read and type:
-
-@lilypond[verbatim,quote]
-\relative c'' {
- \key a \major
- \time 6/8
- cis8. d16 cis8 e4 e8
- b8. cis16 b8 d4 d8
-}
-@end lilypond
-
-If you make a mistake with an octave mark (@code{'} or @code{,})
-while working in @code{\relative} mode, it is very obvious -- many
-notes will be in the wrong octave. When working in absolute mode,
-a single mistake will not be as visible, and will not be as easy
-to find.
-
-However, absolute mode is useful for music which has large
-intervals, and is extremely useful for computer-generated LilyPond
-files.
-
-
-
-@node After the tutorial
-@subsection After the tutorial
-
-After finishing the tutorial, you should probably try writing a
-piece or two. Start by adding notes to one of the
-@ref{Templates}. If you need any notation that was not covered in
-the tutorial, look at the Notation Reference, starting with
-@ruser{Musical notation}. If you want to write for an instrument
-ensemble that is not covered in the templates, take a look at
-@ref{Extending the templates}.
-
-Once you have written a few short pieces, read the rest of the
-Learning Manual (chapters 3-5). There's nothing wrong with
-reading it now, of course! However, the rest of the Learning
-Manual assumes that you are familiar with LilyPond input. You may
-wish to skim these chapters right now, and come back to them after
-you have more experience.
-
-In this tutorial and in the rest of the Learning Manual, there is a
-paragraph @strong{See also} at the end of each section, which contains
-cross-references to other sections: you should not follow these
-cross-references at first reading; when you have read all of the
-Learning Manual, you may want to read some sections again and follow
-cross-references for further reading.
-
-If you have not done so already, @emph{please} read
-FIXME FIXME FIXME
-@c @ref{About the documentation}.
-There is a lot of information about LilyPond, so
-newcomers often do not know where they should look for help. If
-you spend five minutes reading that section carefully, you might
-save yourself hours of frustration looking in the wrong places!
-
hairpins are given a thickness of 1 unit of @code{line-thickness},
while the @code{thickness} of a note stem is 1.3. Note, though,
that some thickness properties are different; for example, the
-thickness of beams is measured in staff-spaces.
+thickness of beams is controlled by the value of the
+@code{beam-thickness} property, which is measured in staff-spaces.
So how are lengths to be scaled in proportion to the font size?
This can be done with the help of a special function called
followed after the affected note by the corresponding
@code{\xxxNeutral} command.
-@subheading Fingering
+@unnumberedsubsubsec Fingering
@cindex fingering, placement
@cindex fingering, chords
+++ /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 Working on LilyPond projects
-@chapter Working on LilyPond projects
-
-This section explains how to solve or avoid certain common
-problems. If you have programming experience, many of these
-tips may seem obvious, but it is still advisable to read
-this chapter.
-
-
-@menu
-* Suggestions for writing LilyPond input files::
-* When things don't work::
-* Make and Makefiles::
-@end menu
-
-
-@node Suggestions for writing LilyPond input files
-@section Suggestions for writing LilyPond input files
-
-Now you're ready to begin writing larger LilyPond input files --
-not just the little examples in the tutorial, but whole pieces.
-But how should you go about doing it?
-
-As long as LilyPond can understand your input files and produce
-the output that you want, it doesn't matter what your input files
-look like. However, there are a few other things to consider when
-writing LilyPond input files.
-
-@itemize
-@item What if you make a mistake? The structure of a LilyPond
-file can make certain errors easier (or harder) to find.
-
-@item What if you want to share your input files with somebody
-else? In fact, what if you want to alter your own input files in
-a few years? Some LilyPond input files are understandable at
-first glance; others may leave you scratching your head
-for an hour.
-
-@item What if you want to upgrade your LilyPond file for use
-with a later version of LilyPond? The input syntax changes
-occasionally as LilyPond improves. Most changes can be
-done automatically with @code{convert-ly}, but some changes
-might require manual assistance. LilyPond input files can be
-structured in order to be easier (or harder) to update.
-
-@end itemize
-
-@menu
-* General suggestions::
-* Typesetting existing music::
-* Large projects::
-@end menu
-
-
-@node General suggestions
-@subsection General suggestions
-
-Here are a few suggestions that can help you to avoid or fix
-problems:
-
-@itemize
-@item @strong{Include @code{\version} numbers in every file}. Note that all
-templates contain @code{\version} information. We
-highly recommend that you always include the @code{\version}, no matter
-how small your file is. Speaking from personal experience, it's
-quite frustrating to try to remember which version of LilyPond you were
-using a few years ago. @command{convert-ly} requires you to declare
-which version of LilyPond you used.
-
-@item @strong{Include checks}: @ruser{Bar and bar number checks},
-@ruser{Octave checks}. If you include checks every so often, then
-if you make a mistake, you can pinpoint it quicker. How often is
-@q{every so often}? It depends on the complexity of the music.
-For very simple music, perhaps just once or twice. For very
-complex music, perhaps every bar.
-
-@item @strong{One bar per line of text}. If there is anything complicated,
-either in the music
-itself or in the output you desire, it's often good to write only one bar
-per line. Saving screen space by cramming eight bars per line just isn't
-worth it if you have to @q{debug} your input files.
-
-@item @strong{Comment your input files}. Use either bar numbers
-(every so often) or
-references to musical themes (@q{second theme in violins,} @q{fourth
-variation,} etc.). You may not need comments when you're writing the piece
-for the first time, but if you want to go back to change something two or
-three years later, or if you pass the source over to a friend, it will
-be much more
-challenging to determine your intentions or how your file is structured if
-you didn't comment the file.
-
-@item @strong{Indent your braces}. A lot of problems are caused by an
-imbalance
-in the number of @code{@{} and @code{@}}.
-
-@item @strong{Explicitly add durations} at the beginnings of sections
-and variables. If you specify @code{c4 d e} at the beginning of a
-phrase (instead of just @code{c d e}) you can save yourself some
-problems if you rearrange your music later.
-
-@item @strong{Separate tweaks} from music definitions. See
-@ref{Saving typing with variables and functions}, and
-@ref{Style sheets}.
-
-@end itemize
-
-
-@node Typesetting existing music
-@subsection Typesetting existing music
-
-If you are entering music from an existing score (i.e., typesetting a
-piece of existing sheet music),
-
-@itemize
-
-@item Enter the manuscript (the physical copy of the music) into
-LilyPond one system at a time (but still only one bar per line of text),
-and check each system when you finish it. You may use the
-@code{showLastLength} or @code{showFirstLength} properties to speed up
-processing -- see @ruser{Skipping corrected music}.
-
-@item Define @code{mBreak = @{ \break @}} and insert @code{\mBreak}
-in the input file whenever the manuscript has a line break. This
-makes it much easier to compare the LilyPond music to the original
-music. When you are finished proofreading your score, you may
-define @code{mBreak = @{ @}} to remove all those line breaks. This
-will allow LilyPond to place line breaks wherever it feels are
-best.
-
-@item When entering a part for a transposing instrument into a
-variable, it is recommended that the notes are wrapped in
-
-@example
-\transpose c natural-pitch @{...@}
-@end example
-(where @code{natural-pitch} is the open pitch of the instrument) so
-that the music in the variable is effectively in C. You can transpose
-it back again when the variable is used, if required, but you might
-not want to (e.g., when printing a score in concert pitch,
-converting a trombone part from treble to bass clef, etc.)
-Mistakes in transpositions are less likely if all the music in
-variables is at a consistent pitch.
-
-Also, only ever transpose to/from C. That means that the only other
-keys you will use are the natural pitches of the instruments - bes
-for a B-flat trumpet, aes for an A-flat clarinet, etc.
-
-@end itemize
-
-
-@node Large projects
-@subsection Large projects
-
-When working on a large project, having a clear structure to your
-lilypond input files becomes vital.
-
-@itemize
-
-@item @strong{Use a variable for each voice}, with a minimum of
-structure inside the definition. The structure of the
-@code{\score} section is the most likely thing to change;
-the @code{violin} definition is extremely unlikely to change
-in a new version of LilyPond.
-
-@example
-violin = \relative c'' @{
-g4 c'8. e16
-@}
-...
-\score @{
- \new GrandStaff @{
- \new Staff @{
- \violin
- @}
- @}
-@}
-@end example
-
-@item @strong{Separate tweaks from music definitions}. This
-point was made previously, but for large
-projects it is absolutely vital. We might need to change
-the definition of @code{fthenp}, but then we only need
-to do this once, and we can still avoid touching anything
-inside @code{violin}.
-
-@example
-fthenp = _\markup@{
- \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
-violin = \relative c'' @{
-g4\fthenp c'8. e16
-@}
-@end example
-
-@end itemize
-
-
-@node When things don't work
-@section When things don't work
-
-@menu
-* Updating old input files::
-* Common errors::
-* Troubleshooting (taking it all apart)::
-* Minimal examples::
-@end menu
-
-@node Updating old input files
-@subsection Updating old input files
-
-@cindex convert-ly
-@cindex updating old input files
-
-The LilyPond input syntax occasionally changes. As LilyPond itself
-improves, the syntax (input language) is modified accordingly. Sometimes
-these changes are made to make the input easier to read and write or
-sometimes the changes are made to accommodate new features of LilyPond.
-
-LilyPond comes with a file that makes this updating easier:
-@code{convert-ly}. For details about how to run this program, see
-@rprogram{Updating files with convert-ly}.
-
-Unfortunately, @code{convert-ly} cannot handle all input changes. It
-takes care of simple search-and-replace changes (such as @code{raggedright}
-becoming @code{ragged-right}), but some changes are too
-complicated. The syntax changes that @code{convert-ly} cannot handle
-are listed in @rprogram{Updating files with convert-ly}.
-
-For example, in LilyPond 2.4 and earlier, accents and non-English
-letters were entered using LaTeX -- for example,
-@code{No\"el} (this would print the French word for
-@q{Christmas}). In LilyPond 2.6 and above, the special
-@code{ë} must be entered directly into the LilyPond file as an
-UTF-8 character. @code{convert-ly} cannot change all the LaTeX
-special characters into UTF-8 characters; you must manually update
-your old LilyPond input files.
-
-@node Common errors
-@subsection Common errors
-
-The error conditions described below occur often, yet the cause
-is not obvious or easily found. Once seen and understood, they
-are easily handled.
-
-
-@menu
-* Music runs off the page::
-* An extra staff appears::
-* Apparent error in ../ly/init.ly::
-* Error message Unbound variable %::
-* Error message FT_Get_Glyph_Name::
-@end menu
-
-@node Music runs off the page
-@unnumberedsubsubsec Music runs off the page
-
-Music running off the page over the right margin or appearing
-unduly compressed is almost always due to entering an incorrect
-duration on a note, causing the final note in a measure to extend
-over the bar line. It is not invalid if the final note in a
-measure does not end on the automatically entered bar line, as the
-note is simply assumed to carry over into the next measure. But
-if a long sequence of such carry-over measures occurs the music
-can appear compressed or may flow off the page because automatic
-line breaks can be inserted only at the end of complete measures,
-i.e., where all notes end before or at the end of the measure.
-
-@warning{An incorrect duration can cause line breaks to be
-inhibited, leading to a line of highly compressed music or
-music which flows off the page.}
-
-The incorrect duration can be found easily if bar checks are used,
-see @ruser{Bar and bar number checks}.
-
-If you actually intend to have a series of such carry-over measures
-you will need to insert an invisible bar line where you want the
-line to break. For details, see @ruser{Bar lines}.
-
-
-@node An extra staff appears
-@unnumberedsubsubsec An extra staff appears
-
-If contexts are not created explicitly with @code{\new} they will be
-silently created as soon as a command is encountered which cannot
-be applied to an existing context. In simple scores the automatic
-creation of contexts is useful, and most of the examples in the
-LilyPond manuals take advantage of this simplification. But
-occasionally the silent creation of contexts can give rise to
-unexpected new staves or scores. For example, it might be expected
-that the following code would cause all note heads within the
-following staff to be colored red, but in fact it results in two
-staves with the note heads remaining the default black in the lower
-staff.
-
-@lilypond[quote,verbatim,relative=2]
-\override Staff.NoteHead #'color = #red
-\new Staff { a }
-@end lilypond
-
-This is because a @code{Staff} context does not exist when the
-override is processed, so one is implicitly created and the override
-is applied to it, but then the @code{\new Staff} command creates
-another, separate, staff into which the notes are placed. The
-correct code to color all note heads red is
-
-@lilypond[quote,verbatim,relative=2]
-\new Staff {
- \override Staff.NoteHead #'color = #red
- a
-}
-@end lilypond
-
-As a second example, if a @code{\relative} command is placed inside
-a @code{\repeat} command two staves result, the second offset from
-the first, because the @code{\repeat} command generates two
-@code{\relative} blocks, which each implicitly create @code{Staff}
-and @code{Voice} blocks.
-
-@lilypond[quote,verbatim]
-\repeat unfold 2 \relative { c d e f }
-@end lilypond
-
-The correct way is to reverse the @code{\repeat} and
-@code{\relative} commands, like this:
-
-@lilypond[quote,verbatim]
-\relative {
- \repeat unfold 2 { c d e f }
-}
-@end lilypond
-
-
-@node Apparent error in ../ly/init.ly
-@unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
-
-Various obscure error messages may appear about syntax errors in
-@code{../ly/init.ly} if the input file is not correctly formed,
-for example, if it does not contain correctly
-matched braces or quote signs.
-
-The most common error is a missing brace, (@code{@}}), at the end of
-a @code{score} block. Here the solution is obvious: check the
-@code{score} block is correctly terminated. The correct structure
-of an input file is described in @ref{How LilyPond input files work}.
-Using an editor which automatically highlights matching brackets and
-braces is helpful to avoid such errors.
-
-This error message can also appear if a terminating quote sign,
-(@code{"}), is omitted. In this case an accompanying error message
-should give a line number close to the line in error. The
-mismatched quote will usually be on the line one or two above.
-
-@node Error message Unbound variable %
-@unnumberedsubsubsec Error message Unbound variable %
-
-This error message will appear at the bottom of the console
-output or log file together with a @qq{GUILE signalled an error ...}
-message every time a Scheme routine is called which (invalidly)
-contains a @emph{LilyPond} rather than a @emph{Scheme} comment.
-
-LilyPond comments begin with a percent sign, (@code{%}), and must
-not be used within Scheme routines. Scheme comments begin with a
-semi-colon, (@code{;}).
-
-@node Error message FT_Get_Glyph_Name
-@unnumberedsubsubsec Error message FT_Get_Glyph_Name
-
-This error messages appears in the console output or log file if
-an input file contains a non-ASCII character and was not saved in
-UTF-8 encoding. For details, see @ruser{Text encoding}.
-
-@node Troubleshooting (taking it all apart)
-@subsection Troubleshooting (taking it all apart)
-
-Sooner or later, you will write a file that LilyPond cannot
-compile. The messages that LilyPond gives may help
-you find the error, but in many cases you need to do some
-investigation to determine the source of the problem.
-
-The most powerful tools for this purpose are the
-single line comment (indicated by @code{%}) and the block
-comment (indicated by @code{%@{ ... %@}}). If you don't
-know where a problem is, start commenting out huge portions
-of your input file. After you comment out a section, try
-compiling the file again. If it works, then the problem
-must exist in the portion you just commented. If it doesn't
-work, then keep on commenting out material until you have
-something that works.
-
-In an extreme case, you might end up with only
-
-@example
-\score @{
- <<
- % \melody
- % \harmony
- % \bass
- >>
- \layout@{@}
-@}
-@end example
-
-@noindent
-(in other words, a file without any music)
-
-If that happens, don't give up. Uncomment a bit -- say,
-the bass part -- and see if it works. If it doesn't work,
-then comment out all of the bass music (but leave
-@code{\bass} in the @code{\score} uncommented.
-
-@example
-bass = \relative c' @{
-%@{
- c4 c c c
- d d d d
-%@}
-@}
-@end example
-
-Now start slowly uncommenting more and more of the
-@code{bass} part until you find the problem line.
-
-Another very useful debugging technique is constructing
-@ref{Minimal examples}.
-
-
-@node Minimal examples
-@subsection Minimal examples
-
-A minimal example is an example which is as small as possible. These
-examples are much easier to understand than long examples. Minimal
-examples are used for
-
-@itemize
-@item Bug reports
-@item Sending a help request to mailing lists
-@item Adding an example to the @uref{http://lsr.dsi.unimi.it/,
-LilyPond Snippet Repository}
-@end itemize
-
-To construct an example which is as small as possible, the rule is
-quite simple: remove anything which is not necessary. When trying to
-remove unnecessary parts of a file, it is a very good idea to comment
-out lines instead of deleting them. That way, if you discover that you
-actually @emph{do} need some lines, you can uncomment them, instead of
-typing them in from scratch.
-
-There are two exceptions to the @qq{as small as possible} rule:
-
-@itemize
-@item Include the @code{\version} number.
-@item If possible, use @code{\paper@{ ragged-right=##t @}} at the
-top of your example.
-@end itemize
-
-The whole point of a minimal example is to make it easy to read:
-
-@itemize
-@item Avoid using complicated notes, keys, or time signatures, unless you
-wish to demonstrate something is about the behavior of those items.
-@item Do not use @code{\override} commands unless that is the point of the
-example.
-@end itemize
-
-
-
-@node Make and Makefiles
-@section Make and Makefiles
-
-@cindex makefiles
-@cindex make
-
-Pretty well all the platforms Lilypond can run on support a software
-facility called @code{make}. This software reads a special file called a
-@code{Makefile} that defines what files depend on what others and what
-commands you need to give the operating system to produce one file from
-another. For example the makefile would spell out how to produce
-@code{ballad.pdf} and @code{ballad.midi} from @code{ballad.ly} by
-running Lilypond.
-
-There are times when it is a good idea to create a @code{Makefile}
-for your project, either for your own convenience or
-as a courtesy to others who might have access to your source files.
-This is true for very large projects with many included files and
-different output options (e.g. full score, parts, conductor's
-score, piano reduction, etc.), or for projects that
-require difficult commands to build them (such as
-@code{lilypond-book} projects). Makefiles vary greatly in
-complexity and flexibility, according to the needs and skills of
-the authors. The program GNU Make comes installed on GNU/Linux
-distributions and on MacOS X, and it is also available for Windows.
-
-See the @strong{GNU Make Manual} for full details on using
-@code{make}, as what follows here gives only a glimpse of what it
-can do.
-
-The commands to define rules in a makefile differ
-according to platform; for instance the various forms of Linux and
-MacOS use @code{bash}, while Windows uses @code{cmd}. Note that on
-MacOS X, you need to configure the system to use the command-line
-intepreter. Here are some example makefiles, with versions for both
-Linux/MacOS and Windows.
-
-The first example is for an orchestral work in four
-movements with a directory structure as follows:
-
-@example
-Symphony/
-|-- MIDI/
-|-- Makefile
-|-- Notes/
-| |-- cello.ily
-| |-- figures.ily
-| |-- horn.ily
-| |-- oboe.ily
-| |-- trioString.ily
-| |-- viola.ily
-| |-- violinOne.ily
-| `-- violinTwo.ily
-|-- PDF/
-|-- Parts/
-| |-- symphony-cello.ly
-| |-- symphony-horn.ly
-| |-- symphony-oboes.ly
-| |-- symphony-viola.ly
-| |-- symphony-violinOne.ly
-| `-- symphony-violinTwo.ly
-|-- Scores/
-| |-- symphony.ly
-| |-- symphonyI.ly
-| |-- symphonyII.ly
-| |-- symphonyIII.ly
-| `-- symphonyIV.ly
-`-- symphonyDefs.ily
-@end example
-
-The @code{.ly} files in the @code{Scores} and
-@code{Parts} directories get their notes from @code{.ily}
-files in the @code{Notes} directory:
-
-@example
-%%% top of file "symphony-cello.ly"
-\include ../definitions.ily
-\include ../Notes/cello.ily
-@end example
-
-The makefile will have targets of @code{score} (entire piece in
-full score), @code{movements} (individual movements in full score),
-and @code{parts} (individual parts for performers). There
-is also a target @code{archive} that will create a tarball of
-the source files, suitable for sharing via web or email. Here is
-the makefile for GNU/Linux or MacOS X. It should be saved with the
-name @code{Makefile} in the top directory of the project:
-
-@warning{When a target or pattern rule is defined, the
-subsequent lines must begin with tabs, not spaces.}
-
-@example
-# the name stem of the output files
-piece = symphony
-# determine how many processors are present
-CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
-# The command to run lilypond
-LILY_CMD = lilypond -ddelete-intermediate-files \
- -dno-point-and-click -djob-count=$(CPU_CORES)
-
-# The suffixes used in this Makefile.
-.SUFFIXES: .ly .ily .pdf .midi
-
-# Input and output files are searched in the directories listed in
-# the VPATH variable. All of them are subdirectories of the current
-# directory (given by the GNU make variable `CURDIR').
-VPATH = \
- $(CURDIR)/Scores \
- $(CURDIR)/PDF \
- $(CURDIR)/Parts \
- $(CURDIR)/Notes
-
-# The pattern rule to create PDF and MIDI files from a LY input file.
-# The .pdf output files are put into the `PDF' subdirectory, and the
-# .midi files go into the `MIDI' subdirectory.
-%.pdf %.midi: %.ly
- $(LILY_CMD) $<; \ # this line begins with a tab
- if test -f "$*.pdf"; then \
- mv "$*.pdf" PDF/; \
- fi; \
- if test -f "$*.midi"; then \
- mv "$*.midi" MIDI/; \
- fi
-
-notes = \
- cello.ily \
- horn.ily \
- oboe.ily \
- viola.ily \
- violinOne.ily \
- violinTwo.ily
-
-# The dependencies of the movements.
-$(piece)I.pdf: $(piece)I.ly $(notes)
-$(piece)II.pdf: $(piece)II.ly $(notes)
-$(piece)III.pdf: $(piece)III.ly $(notes)
-$(piece)IV.pdf: $(piece)IV.ly $(notes)
-
-# The dependencies of the full score.
-$(piece).pdf: $(piece).ly $(notes)
-
-# The dependencies of the parts.
-$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
-$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
-$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
-$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
-$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
-$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
-
-# Type `make score' to generate the full score of all four
-# movements as one file.
-.PHONY: score
-score: $(piece).pdf
-
-# Type `make parts' to generate all parts.
-# Type `make foo.pdf' to generate the part for instrument `foo'.
-# Example: `make symphony-cello.pdf'.
-.PHONY: parts
-parts: $(piece)-cello.pdf \
- $(piece)-violinOne.pdf \
- $(piece)-violinTwo.pdf \
- $(piece)-viola.pdf \
- $(piece)-oboes.pdf \
- $(piece)-horn.pdf
-
-# Type `make movements' to generate files for the
-# four movements separately.
-.PHONY: movements
-movements: $(piece)I.pdf \
- $(piece)II.pdf \
- $(piece)III.pdf \
- $(piece)IV.pdf
-
-all: score parts movements
-
-archive:
- tar -cvvf stamitz.tar \ # this line begins with a tab
- --exclude=*pdf --exclude=*~ \
- --exclude=*midi --exclude=*.tar \
- ../Stamitz/*
-@end example
-
-
-There are special complications on the Windows platform. After
-downloading and installing GNU Make for Windows, you must set the
-correct path in the system's environment variables so that the
-DOS shell can find the Make program. To do this, right-click on
-"My Computer," then choose @code{Properties} and
-@code{Advanced}. Click @code{Environment Variables}, and then
-in the @code{System Variables} pane, highlight @code{Path}, click
-@code{edit}, and add the path to the GNU Make executable file, which
- will look something like this:
-
-@example
-C:\Program Files\GnuWin32\bin
-@end example
-
-The makefile itself has to be altered to handle different shell
-commands and to deal with spaces that are present
-in some default system directories. The @code{archive} target
-is eliminated since Windows does not have the @code{tar} command,
-and Windows also has a different default extension for midi files.
-
-
-@example
-## WINDOWS VERSION
-##
-piece = symphony
-LILY_CMD = lilypond -ddelete-intermediate-files \
- -dno-point-and-click \
- -djob-count=$(NUMBER_OF_PROCESSORS)
-
-#get the 8.3 name of CURDIR (workaround for spaces in PATH)
-workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
- do @@echo %%~sb)
-
-.SUFFIXES: .ly .ily .pdf .mid
-
-VPATH = \
- $(workdir)/Scores \
- $(workdir)/PDF \
- $(workdir)/Parts \
- $(workdir)/Notes
-
-%.pdf %.mid: %.ly
- $(LILY_CMD) $< # this line begins with a tab
- if exist "$*.pdf" move /Y "$*.pdf" PDF/ # begin with tab
- if exist "$*.mid" move /Y "$*.mid" MIDI/ # begin with tab
-
-notes = \
- cello.ily \
- figures.ily \
- horn.ily \
- oboe.ily \
- trioString.ily \
- viola.ily \
- violinOne.ily \
- violinTwo.ily
-
-$(piece)I.pdf: $(piece)I.ly $(notes)
-$(piece)II.pdf: $(piece)II.ly $(notes)
-$(piece)III.pdf: $(piece)III.ly $(notes)
-$(piece)IV.pdf: $(piece)IV.ly $(notes)
-
-$(piece).pdf: $(piece).ly $(notes)
-
-$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
-$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
-$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
-$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
-$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
-$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
-
-.PHONY: score
-score: $(piece).pdf
-
-.PHONY: parts
-parts: $(piece)-cello.pdf \
- $(piece)-violinOne.pdf \
- $(piece)-violinTwo.pdf \
- $(piece)-viola.pdf \
- $(piece)-oboes.pdf \
- $(piece)-horn.pdf
-
-.PHONY: movements
-movements: $(piece)I.pdf \
- $(piece)II.pdf \
- $(piece)III.pdf \
- $(piece)IV.pdf
-
-all: score parts movements
-@end example
-
-
-The next Makefile is for a @command{lilypond-book} document done in
-LaTeX. This project has an index, which requires that the
-@command{latex} command be run twice to update links. Output files are
-all stored in the @code{out} directory for .pdf output and in the
-@code{htmlout} directory for the html output.
-
-@example
-SHELL=/bin/sh
-FILE=myproject
-OUTDIR=out
-WEBDIR=htmlout
-VIEWER=acroread
-BROWSER=firefox
-LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
-LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
-PDF=cd $(OUTDIR) && pdflatex $(FILE)
-HTML=cd $(WEBDIR) && latex2html $(FILE)
-INDEX=cd $(OUTDIR) && makeindex $(FILE)
-PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
-
-all: pdf web keep
-
-pdf:
- $(LILYBOOK_PDF) # begin with tab
- $(PDF) # begin with tab
- $(INDEX) # begin with tab
- $(PDF) # begin with tab
- $(PREVIEW) # begin with tab
-
-web:
- $(LILYBOOK_HTML) # begin with tab
- $(HTML) # begin with tab
- cp -R $(WEBDIR)/$(FILE)/ ./ # begin with tab
- $(BROWSER) $(FILE)/$(FILE).html & # begin with tab
-
-keep: pdf
- cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # begin with tab
-
-clean:
- rm -rf $(OUTDIR) # begin with tab
-
-web-clean:
- rm -rf $(WEBDIR) # begin with tab
-
-archive:
- tar -cvvf myproject.tar \ # begin this line with tab
- --exclude=out/* \
- --exclude=htmlout/* \
- --exclude=myproject/* \
- --exclude=*midi \
- --exclude=*pdf \
- --exclude=*~ \
- ../MyProject/*
-@end example
-
-TODO: make this thing work on Windows
-
-The previous makefile does not work on Windows. An alternative
-for Windows users would be to create a simple batch file
-containing the build commands. This will not
-keep track of dependencies the way a makefile does, but it at
-least reduces the build process to a single command. Save the
-following code as @command{build.bat} or @command{build.cmd}.
-The batch file can be run at the DOS prompt or by simply
-double-clicking its icon.
-
-@example
-lilypond-book --output=out --pdf myproject.lytex
-cd out
-pdflatex myproject
-makeindex myproject
-pdflatex myproject
-cd ..
-copy out\myproject.pdf MyProject.pdf
-@end example
-
-
-@seealso
-Application Usage:
-FIXME
-@c @rprogram{Setup for MacOS X},
-@rprogram{Command-line usage},
-@rprogram{lilypond-book}
@ifhtml
@macro warning{TEXT}
-@cartouche
-@b{Note:} \TEXT\
-@end cartouche
+@html
+<div class="warning">
+@end html
+@strong{Note:} \TEXT\
+@html
+</div>
+@end html
@end macro
@end ifhtml
@c Definitions for references:
@c
+@c @rgeneral
+@c @ressay
@c @rglos
+@c @rinternals
@c @rlearning
-@c @ruser
-@c @ressay
-@c @rprogram
@c @rlsr
-@c @rinternals
+@c @rprogram
+@c @ruser
@c
@c All these also have a @...named version which allows to specify the
@c displayed text for the reference as second argument.
@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
@end macro
+@macro rgeneral{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,general-big-page,General Information}
+@end macro
+
+@macro rgeneralnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,general-big-page,General Information}
+@end macro
+
@macro ressay{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,essay-big-page,Essay}
@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
@end macro
+@macro rgeneral{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,general,General Information}
+@end macro
+
+@macro rgeneralnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@end macro
+
@macro ressay{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,essay,Essay}
@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
@end macro
+@macro rgeneral{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,lilypond-general,General Information}
+@end macro
+
+@macro rgeneralnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,lilypond-general, General Information}
+@end macro
+
@macro ressay{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,lilypond-essay,Essay}
@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
@end macro
+@macro rgeneral{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,general,General Information}
+@end macro
+
+@macro rgeneralnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@end macro
+
@macro ressay{TEXT}
@lilyvindex{\TEXT\}
@ref{\TEXT\,,,essay,Essay}
FI: ?.
A grace note which takes its time from the rest or note preceding the
-principal note to which it is attached. The acciaccatura is drawn as a small
-eighth note (quaver) with a line drawn through the flag and stem.
+principal note to which it is attached. The acciaccatura is drawn as a
+small eighth note (quaver) with a line drawn through the flag and stem.
@seealso
@ref{appoggiatura}, @ref{grace notes}, @ref{ornament}.
@section accidental
ES: alteración accidental,
-I: accidento,
+I: alterazione, accidente,
F: altération accidentelle,
D: Versetzungszeichen, Akzidenz,
NL: toevallig (verplaatsings)teken,
@section articulation
ES: articulación,
-I: articulazione,
+I: articolazione,
F: articulation,
D: Artikulation,
NL: articulatie,
@section bracket
ES: corchete,
-I: ?,
+I: parentesi quadra,
F: crochet,
D: ?,
NL: ?,
}
@end lilypond
-Staves of five lines are usually used, and the clef superimposed on
-them indicates which five lines have been selected from this
-@samp{grand staff}. For example, the treble or G clef indicates that
-the top five lines have been selected:
+Staves of five lines are usually used, and the clef superimposed on them
+indicates which five lines have been selected from this @notation{grand
+staff}. For example, the treble or G clef indicates that the top five lines
+have been selected:
@lilypond[quote]
\score {
The @q{curl} of the G clef is centered on the line that represents the
pitch G.
-In the same way, the bass or F clef indicates that the bottom five
-lines have been selected from the @samp{grand staff}, and the alto or
-C clef indicates the middle five lines have been selected. This
-relationship is shown below, where the notes show an arpeggio on a C
-major chord.
+In the same way, the bass or F clef indicates that the bottom five lines
+have been selected from the @notation{grand staff}, and the alto or C clef
+indicates the middle five lines have been selected. This relationship is
+shown below, where the notes show an arpeggio on a C major chord.
@lilypond[quote]
\score {
@section cluster
ES: racimo,
-I: ?,
+I: cluster,
F: cluster,
D: Cluster,
NL: ?,
@section common time
ES: compasillo,
-I: ?,
+I: tempo semplice,
F: mesure à 4/4,
D: ?,
NL: ?,
@section compound meter
ES: compás compuesto, compás de subdivisión ternaria,
-I: ?,
+I: tempo composto,
F: mesure composée,
D: ?,
NL: ?,
@section concert pitch
ES: en Do, afinación de concierto,
-I: ?,
+I: intonazione reale,
F: tonalité de concert, en ut,
D: ?,
NL: ?,
@c Let's see how easy (or hard) it is to put bulleted lists in tables.
-@multitable {alto trombone} {tenor trombone} {bass trombone}
-@headitem Woodwinds @tab Brass @tab Strings
+@multitable {bassoon} {violoncello}
+@headitem Woodwinds @tab Strings
@item
@itemize
@tab
-@itemize
-@item alto trombone
-@item tenor trombone
-@item bass trombone
-@end itemize
-
-@tab
-
@itemize
@item violin
@item viola
@end multitable
+@ignore This needs to be reworked.
The trombones are a special case: although they are said to be @q{in F} (alto or
bass) or @q{in B-flat} (tenor), this refers to their fundamental note, not to
their parts' transposition. (In fact, the trombones' parts are written at
concert pitch with an appropriate clef -- alto, tenor or bass.) This differs
from other instruments @q{in F}, @q{in B-flat}, and so on, which are transposing
instruments.
+@end ignore
Instruments that play @q{in C} but in a different octave than what is written
are, technically speaking, @emph{transposing instruments}:
@section custos
ES: custos,
-I: ?,
+I: custos, guida,
F: guidon,
D: Notenzeiger, Custos,
NL: ?,
@section diminution
ES: ?,
-I: ?,
+I: diminuzione,
F: diminution,
D: ?,
NL: ?,
@section dynamics
ES: dinámica, matices,
-I: ?,
+I: dinamica,
F: nuances,
D: Dynamik, Lautstärke,
NL: ?,
@c TODO: add languages
ES: sinalefa,
-I: ?,
+I: elisione,
F: élision,
D: ?,
NL: ?,
@section extender line
ES: línea de extensión [de melisma, de bajo cifrado, etc.],
-I: ?,
+I: linea di estensione,
F: ligne d'extension [de mélisme, de basse chiffrée, etc.],
D: Fülllinie,
NL: ?,
@section grand staff
ES: sistema de piano,
-I: accolatura,
+I: accollatura,
F: système [de portées], accolade,
D: Akkolade, Klaviersystem,
NL: piano systeem,
@section harmonics
ES: sonidos del flautín,
-I: suoni flautati,
+I: armonici,
F: flageolet, sons harmoniques,
D: Flageolett-Töne,
NL: ?,
@section hemiola
ES: hemiolia,
-I: ?,
+I: emiolia, (rarely hemiola or emiola),
F: hémiole,
D: ?,
NL: ?,
@section inversion
ES: ?,
-I: ?,
+I: rivolto,
F: renversement,
D: ?,
NL: ?,
@section laissez vibrer
ES: dejar vibrar,
-I: ?,
+I: laissez vibrer,
F: laissez vibrer,
D: ?,
NL: ?,
@section lyrics
ES: letra (de la canción),
-I: ?,
+I: testo,
F: paroles,
D: Liedtext, Gesangtext,
NL: liedtekst,
@section maxima
ES: ?,
-I: ?,
+I: maxima,
F: maxima, maxime,
D: ?,
NL: ?,
@section melisma
ES: melisma,
-I: ?,
+I: melisma,
F: mélisme, tenue,
D: Melisma,
NL: melisma,
@c TODO: add languages
ES: línea de melisma,
-I: ?,
+I: linea del melisma,
F: trait de mélisme, trait de tenue,
D: ?,
NL: ?,
@c TODO: add languages
ES: notación mensural,
-I: ?,
+I: notazione mensurale,
F: notation mensurale,
D: ?,
NL: ?,
@section octave mark
ES: indicación de octava,
-I: ?,
+I: segno di ottava,
F: indication d'octave,
D: ?,
NL: ?,
@section polymeter
ES: compás polimétrico,
-I: ?,
+I: polimetria,
F: polymétrie,
D: ?,
NL: ?,
@section polymetric
ES: polimétrico,
-I: ?,
+I: polimetrico,
F: polymétrique,
D: ?,
NL: ?,
@section polymetric time signature
ES: compás polimétrico,
-I: ?,
+I: tempo polimetrico,
F: ?,
D: ?,
NL: ?,
@section proportion
ES: proporción,
-I: proprozione (?),
+I: proporzione,
F: proportion,
D: ?,
NL: ?,
@section quarter tone
ES: cuarto de tonno,
-I: ?,
+I: quarto di tono,
F: quart de ton,
D: Viertelton,
NL: kwart toon,
@section repeat
ES: repetición,
-I: ritornello,
+I: ripetizione,
F: barre de reprise,
D: Wiederholung,
NL: herhaling,
@seealso
@ref{accent}, @ref{beat}, @ref{measure}, @ref{meter}.
+
@node ritardando
@section ritardando
S: ritardando,
FI: ritardando, hidastuen,
-Gradually slackening in speed. Mostly abbreviated to rit.@: or ritard.
+Gradually slackening in speed. Mostly abbreviated to @notation{rit.} or
+@notation{ritard}.
@seealso
No cross-references.
@section second
ES: segunda,
-I: secunda,
+I: seconda,
F: seconde,
D: Sekunde,
NL: secunde,
@section slur
ES: ligadura (de expresión),
-I: legatura (di portamento or espressiva),
+I: legatura (di portamento o espressiva),
F: liaison, coulé,
D: Bogen (Legatobogen, Phrasierungsbogen),
NL: fraseringsboog, legatoboog, streekboog,
@section submediant
ES: submediante,
-I: sopratonica,
+I: sopradominante,
F: sous-médiante,
D: Submediante,
NL: submediant,
@section sul G
ES: sobre la cuerda de Sol,
-I: sul g,
+I: sul Sol,
F: sur la G,
D: auf G, auf der G-Saite,
NL: ?,
S: superdominant,
FI: ylidominantti.
-The sixth @ref{scale degree}.
+The sixth @ref{scale degree}. Equivalent to the submediant, q.v.
@seealso
@ref{functional harmony}, @ref{scale degree}, @ref{submediant}.
@section system
ES: sistema,
-I: accollatura,
+I: sistema,
F: système,
D: Notensystem, Partitur,
NL: systeem,
@section transposing instrument
ES: instrumento transpositor,
-I: ?,
+I: strumento traspositore,
F: instrument transpositeur,
D: ?,
NL: ?,
Not all transposing instruments include the pitch class in their name:
@itemize
-
+@item Alto flute (in G)
@item English horn (in F)
+@item Saxophones (in B-flat or E-flat)
+@end itemize
-@item Alto flute (in G)
+@ignore Can we do better?
-@end itemize
+To make matters more complex, some instruments are transposing instruments,
+but their players play from parts written at concert pitch. This is the
+case for orchestral trombone and tuba players—whereas trombone players in
+brass bands treat their parts as if written for a true transposing
+instrument in B-flat.
+
+@end ignore
@seealso
@ref{concert pitch}.
@node tuplet
@section tuplet
+ES: ?,
+I: gruppi irregolari,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
A non-standard subdivision of a beat or part of a beat, usually
indicated with a bracket and a number indicating the number of
subdivisions.
@end multitable
* About the French naming system: @notation{croche} refers to the note's
-@q{hook}. Therefore, from the eighth note on, the note names mean @q{hook},
+@q{hook}. Therefore, from the eighth note on, the note names mean @q{hook},
@q{doubled hook}, @q{trebled hook}, and so on.
The rest names are based on the @notation{soupir}, or quarter rest.
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c This file is part of lilypond-general.texi and community.itexi
+
+@c when you add a new item, consider moving the lowest item(s)
+@c into news-old.itexi.
+
+@newsItem
+@subsubheading New Website! @emph{20 Aug 2009}
+
+As you can see, we have a new website design. Many thanks to
+texi2html and CSS for being so flexible!
+
+(FIXME: change date when this is actually announced on lilypond.org)
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.3. @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.
+
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release. For changes and download links, see @ref{Development}.
+@newsEnd
+
+
+
+@newsItem
+@subsubheading Hungarian translation! @emph{22 May 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a harmathdenes AT gmail.com címre!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #15. @emph{18 May 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column
+about the LilyPond project: its team, its world, its community.
+Read it @uref{http://news.lilynet.net/The-LilyPond-Report-15,
+here}!
+@newsEnd
+
+
--- /dev/null
+ISOLANG = nl
+depth = ../..
+SUBDIRS = application general learning notation texidocs
+STEPMAKE_TEMPLATES = documentation
+LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
+
+include $(depth)/make/stepmake.make
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@setfilename lilypond-application.info
+@settitle GNU LilyPond Application usage
+@documentencoding UTF-8
+@documentlanguage nl
+@include macros.itexi
+@afourpaper
+@c don't remove this comment.
+@ifnottex
+@node Top
+@top GNU LilyPond --- Application Usage
+
+@untranslated
+
+
+@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
+@end ifnottex
+@c This produces the unified index
+@finalout
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{Program usage}
+@author The LilyPond development team
+@quotation
+@end quotation
+@vskip 20pt
+@end titlepage
+@copying
+@quotation
+@end quotation
+@end copying
+@ifnottex
+@quotation
+@end quotation
+@end ifnottex
+@ifnottex
+@c @rlearning{About the documentation}.
+@c index web site
+@c index URL
+@c * Install:: How to install or compile.
+@c * Setup:: Using LilyPond with other programs.
+@c maybe add a "Tasks" or "Specific tasks" or something like
+@c that, after Suggestions -gp
+@menu
+* Running lilypond::
+* Updating files with convert-ly::
+* lilypond-book::
+* Converting from other formats::
+* Working on LilyPond projects::
+* Suggestions for writing files::
+* GNU Free Documentation License::
+* LilyPond index::
+@end menu
+
+@end ifnottex
+@contents
+@c @include application/install.itely
+@c @include application/setup.itely
+@include application/running.itely
+@include application/updating.itely
+@include application/lilypond-book.itely
+@include application/converters.itely
+@include application/working.itely
+@include application/suggestions.itely
+@include fdl.itexi
+@node LilyPond index
+@appendix LilyPond index
+
+@untranslated
+
+
+@bye
+
+@c -- SKELETON FILE --
--- /dev/null
+depth = ../../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory. `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition! See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Converting from other formats
+@chapter Converting from other formats
+
+@untranslated
+
+
+@c @ref{Setup for MacOS X}.
+@menu
+* Invoking midi2ly::
+* Invoking musicxml2ly::
+* Invoking abc2ly::
+* Invoking etf2ly::
+* Generating LilyPond files::
+@end menu
+
+@node Invoking midi2ly
+@section Invoking @command{midi2ly}
+
+@untranslated
+
+
+@c index MIDI
+@c ommand{midi2ly} translates a Type@tie{}1 MIDI file to a LilyPond source
+@c ommand{midi2ly} converts tracks into @rinternals{Staff} and
+@c ommand{midi2ly} tries to compensate for these timing errors, but is not
+@c ode{:1}.
+@node Invoking musicxml2ly
+@section Invoking @code{musicxml2ly}
+
+@untranslated
+
+
+@c index MusicXML
+@c ommand{musicxml2ly} extracts the notes, articulations, score structure,
+@node Invoking abc2ly
+@section Invoking @code{abc2ly}
+
+@untranslated
+
+
+@c index ABC
+@quotation
+@end quotation
+@c ommand{abc2ly} translates from ABC to LilyPond. It is invoked as follows:
+@c ommand{abc2ly} does not.
+@c ommand{abc2ly} ignores the ABC beaming.
+@node Invoking etf2ly
+@section Invoking @command{etf2ly}
+
+@untranslated
+
+
+@c index ETF
+@c index enigma
+@c index Finale
+@c index Coda Technology
+@node Generating LilyPond files
+@section Generating LilyPond files
+
+@untranslated
+
+
+@c index External programs, generating LilyPond files
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@untranslated
+
+
+@c index FDL, GNU Free Documentation License
+@c enter Version 1.1, March 2000
+@subheading ADDENDUM: How to use this License for your documents
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@c Note: keep this node named so that `info lilypond-book' brings you here.
+@node lilypond-book
+@chapter Running @command{lilypond-book}
+
+@untranslated
+
+
+@c ommand{lilypond-book} provides a way to automate this process: This
+@c ommand{lilypond} on them, and outputs the document with pictures
+@c ode{lilypond-book}, see FIXME FIXME @c @ref{Setup for MacOS X}.
+@c index texinfo
+@c index latex
+@c index texinfo
+@c index texi
+@c index html
+@c index docbook
+@c index documents, adding music to
+@c index HTML, music in
+@c index Texinfo, music in
+@c index DocBook, music in
+@c index @LaTeX{}, music in
+@menu
+* An example of a musicological document::
+* Integrating music and text::
+* Music fragment options::
+* Invoking lilypond-book::
+* Filename extensions::
+* Alternate methods of mixing text and music::
+@end menu
+
+@node An example of a musicological document
+@section An example of a musicological document
+
+@untranslated
+
+
+@c index musicology
+@subheading Input
+@quotation
+@end quotation
+@subheading Processing
+@c keep space after @version{} so TeX doesn't choke
+@subheading Output
+@c ode{\lilypondfile}.
+@node Integrating music and text
+@section Integrating music and text
+
+@untranslated
+
+
+@menu
+* LaTeX::
+* Texinfo::
+* HTML::
+* DocBook::
+@end menu
+
+@node LaTeX
+@subsection @LaTeX{}
+
+@untranslated
+
+
+@c ode{\lilypond@{@}}, so this command is only useful with the
+@c ode{fragment} option.
+@c ode{\begin@{document@}}. The @command{lilypond-book} command sends
+@c index titling and lilypond-book
+@c index \header in @LaTeX{} documents
+@c ode{lilypond-book} has split the snippet into several PostScript
+@c index Latex, feta symbols
+@c index fetachar
+@ref{Invoking lilypond-book}.
+@node Texinfo
+@subsection Texinfo
+
+@untranslated
+
+
+@node HTML
+@subsection HTML
+
+@untranslated
+
+
+@c ommand{lilypond-book} then produces an HTML file with appropriate image
+@c index titling in HTML
+@c index preview image
+@c index thumbnail
+@node DocBook
+@subsection DocBook
+
+@untranslated
+
+
+@subheading Common conventions
+@c ode{inlinemediaobject} element, so our snippets can be formatted
+@c ommand{lilypond-book} should have the extension @file{.lyxml}.
+@subheading Including a LilyPond file
+@subheading Including LilyPond code
+@c ode{inlinemediaobject}, and there is a @code{textobject} containing
+@subheading Processing the DocBook document
+@node Music fragment options
+@section Music fragment options
+
+@untranslated
+
+
+@c ode{ragged-right = ##t} is added to the LilyPond snippet. This is the
+@c ode{pt}. This option affects LilyPond output (this is, the staff
+@c ode{ragged-right} option.
+@c ode{cm}, @code{mm}, @code{in}, or @code{pt}. This option affects
+@c ode{noindent} is redundant normally.
+@c ode{relative} option only works when @code{fragment} option is set,
+@c ode{intertext} option (not implemented yet); then the actual music is
+@c ode{LYDOC_LOCALEDIR} to a directory path; the directory should
+@c ode{@@documentlanguage @var{LANG}} and @file{foo@/.ly} header
+@c ode{verbatim} option) is put into a quotation block. This option is
+@c ode{texidoc} documentation block.
+@c ode{texidoc} option: if @command{lilypond} is called with the
+@c ode{\header}, it creates a file @file{foo@/.doctitle}. When
+@c ode{doctitle} option is used, the contents of @file{foo@/.doctitle},
+@c ode{@@lydoctitle} should be a macro defined in the Texinfo document.
+@node Invoking lilypond-book
+@section Invoking @command{lilypond-book}
+
+@untranslated
+
+
+@c ommand{lilypond-book} produces a file with one of the following
+@subheading Format-specific instructions
+@subsubheading @LaTeX{}
+@c ommand{dvips}. The first way is simpler and recommended@footnote{Note
+@c index outline fonts
+@c index type1 fonts
+@c index dvips
+@c index invoking dvips
+@c ommand{dvips} options.
+@subsubheading Texinfo
+@c ommand{texi2dvi} or @command{makeinfo}, depending on the output format
+@subheading Command line options
+@c ommand{lilypond-book} accepts the following command line options:
+@c ode{texi} (the default) or @code{docbook}. If this option is missing,
+@c ommand{lilypond-book} tries to detect the format automatically, see
+@ref{Filename extensions}. Currently, @code{texi} is the same as
+@c ode{texi-html}.
+@c This complicated detail is not implemented, comment it out -jm
+@c ommand{latex} with the same @code{-I @var{dir}} options.
+@c ommand{lilypond-book} generates lots of small files that LilyPond will
+@c ode{lilypond}. @code{lilypond-book} will not @code{--filter} and
+@c ode{--process} at the same time.
+@node Filename extensions
+@section Filename extensions
+
+@untranslated
+
+
+@quotation
+@end quotation
+@c ommand{lilypond-book} running, otherwise it will exit with an error
+@node Alternate methods of mixing text and music
+@section Alternative methods of mixing text and music
+
+@untranslated
+
+
+@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
+
+@untranslated
+
+
+@node Inserting LilyPond output into OpenOffice.org
+@unnumberedsubsec Inserting LilyPond output into OpenOffice.org
+
+@untranslated
+
+
+@c index OpenOffice.org
+@node Inserting LilyPond output into other programs
+@unnumberedsubsec Inserting LilyPond output into other programs
+
+@untranslated
+
+
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined! Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso! Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rglos
+@c @rlearning
+@c @ruser
+@c @ressay
+@c @rprogram
+@c @rlsr
+@c @rinternals
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own. To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Running lilypond
+@chapter Running @command{lilypond}
+
+@untranslated
+
+
+@menu
+* Normal usage::
+* Command-line usage::
+* Error messages::
+@end menu
+
+@node Normal usage
+@section Normal usage
+
+@untranslated
+
+
+@c @rlearning{First steps} if
+@node Command-line usage
+@section Command-line usage
+
+@untranslated
+
+
+@c @ref{Setup for MacOS X}.
+@menu
+* Invoking lilypond::
+* Command line options for lilypond::
+* Environment variables::
+@end menu
+
+@node Invoking lilypond
+@subsection Invoking @command{lilypond}
+
+@untranslated
+
+
+@c ode{output-suffix} will be inserted between the basename and the
+@node Command line options for lilypond
+@subsection Command line options for @command{lilypond}
+
+@untranslated
+
+
+@c index Invoking @command{lilypond}
+@c index command line options for @command{lilypond}
+@c index options, command line
+@c index switches
+@c ode{svg}, @code{ps}, @code{pdf}, and @code{png}.
+@c index point and click, command line
+@c index help, command line
+@c index paper-size, command line
+@c Match " in previous line to help context-sensitive editors
+@c index safe, command line
+@c ode{--safe} or the @code{--jail} option @b{MUST} be passed. The
+@c ode{--safe} option will prevent inline Scheme code from wreaking
+@quotation
+@end quotation
+@c ode{-dsafe} does @emph{not} detect resource overuse. It is still possible to
+@c index output format, setting
+@c index PostScript output
+@c index Postscript, encapulated
+@c index EPS (Encapsulated PostScript)
+@c index SVG (Scalable Vector Graphics)
+@c index Scheme dump
+@c index preview, command line
+@c index file searching
+@c index search path
+@c index PostScript output
+@c index Portable Network Graphics (PNG) output
+@c ode{--ps}. The resolution in DPI of the image may be set with
+@c index Portable Document Format (PDF) output
+@c ode{--safe} when LilyPond formatting is available through a web
+@c ode{--jail} to work @command{lilypond} must be run as root, which is usually
+@c ode{nosuid}. In this way, it is impossible to run executables or to
+@node Environment variables
+@subsection Environment variables
+
+@untranslated
+
+
+@c index LANG
+@c index LILYPOND_DATADIR
+@c ommand{lilypond} recognizes the following environment variables:
+@node Error messages
+@section Error messages
+
+@untranslated
+
+
+@c index error messages
+@c index warning
+@c index error
+@c index fatal error
+@c index trace, Scheme
+@c index call trace
+@c index Scheme error
+@c ode{--verbose}) then a call trace of the offending
+@c index Programming error
+@c index errors, message format
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Suggestions for writing files
+@chapter Suggestions for writing files
+
+@untranslated
+
+
+@menu
+* General suggestions::
+* Typesetting existing music::
+* Large projects::
+@end menu
+
+@node General suggestions
+@section General suggestions
+
+@untranslated
+
+
+@node Typesetting existing music
+@section Typesetting existing music
+
+@untranslated
+
+
+@c ode{showLastLength} or @code{showFirstLength} properties to speed up
+@node Large projects
+@section Large projects
+
+@untranslated
+
+
+@c ode{\score} section is the most likely thing to change;
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Updating files with convert-ly
+@chapter Updating files with @command{convert-ly}
+
+@untranslated
+
+
+@c index Updating a LilyPond file
+@c index convert-ly
+@menu
+* Invoking convert-ly::
+* Command line options for convert-ly::
+* Problems with convert-ly::
+@end menu
+
+@node Invoking convert-ly
+@section Invoking @command{convert-ly}
+
+@untranslated
+
+
+@c ommand{convert-ly} uses @code{\version} statements in the input
+@c ode{myfile.ly} in-place and preserve the original file in
+@c ode{myfile.ly~}.
+@c ommand{convert-ly} always converts up to the last syntax change
+@c ode{Compile > Update syntax}.
+@c ode{Start > Accessories > Command Prompt}.
+@node Command line options for convert-ly
+@section Command line options for @command{convert-ly}
+
+@untranslated
+
+
+@node Problems with convert-ly
+@section Problems with @code{convert-ly}
+
+@untranslated
+
+
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Working on LilyPond projects
+@chapter Working on LilyPond projects
+
+@untranslated
+
+
+@menu
+* When things don't work::
+* Make and Makefiles::
+@end menu
+
+@node When things don't work
+@section When things don't work
+
+@untranslated
+
+
+@menu
+* Updating old input files::
+* Common errors::
+* Troubleshooting (taking it all apart)::
+* Minimal examples::
+@end menu
+
+@node Updating old input files
+@subsection Updating old input files
+
+@untranslated
+
+
+@c index convert-ly
+@c index updating old input files
+@c ode{convert-ly}. For details about how to run this program, see
+@c ode{No\"el} (this would print the French word for
+@c keep "-matching straight in fancy editors
+@c ode{ë} must be entered directly into the LilyPond file as an
+@node Common errors
+@subsection Common errors
+
+@untranslated
+
+
+@menu
+* Music runs off the page::
+* An extra staff appears::
+* Apparent error in ../ly/init.ly::
+* Error message Unbound variable %::
+* Error message FT_Get_Glyph_Name::
+@end menu
+
+@node Music runs off the page
+@unnumberedsubsubsec Music runs off the page
+
+@untranslated
+
+
+@node An extra staff appears
+@unnumberedsubsubsec An extra staff appears
+
+@untranslated
+
+
+@c ode{\relative} blocks, which each implicitly create @code{Staff}
+@c ode{\relative} commands, like this:
+@node Apparent error in ../ly/init.ly
+@unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
+
+@untranslated
+
+
+@c ode{../ly/init.ly} if the input file is not correctly formed,
+@c ode{score} block is correctly terminated. The correct structure
+@c keep "-matching straight in fancy editors
+@node Error message Unbound variable %
+@unnumberedsubsubsec Error message Unbound variable %
+
+@untranslated
+
+
+@node Error message FT_Get_Glyph_Name
+@unnumberedsubsubsec Error message FT_Get_Glyph_Name
+
+@untranslated
+
+
+@node Troubleshooting (taking it all apart)
+@subsection Troubleshooting (taking it all apart)
+
+@untranslated
+
+
+@c ode{\bass} in the @code{\score} uncommented.
+@c ode{bass} part until you find the problem line.
+@node Minimal examples
+@subsection Minimal examples
+
+@untranslated
+
+
+@node Make and Makefiles
+@section Make and Makefiles
+
+@untranslated
+
+
+@c index makefiles
+@c index make
+@c ode{Makefile} that defines what files depend on what others and what
+@c ode{ballad.pdf} and @code{ballad.midi} from @code{ballad.ly} by
+@c ode{lilypond-book} projects). Makefiles vary greatly in
+@c ode{make}, as what follows here gives only a glimpse of what it
+@c ode{Parts} directories get their notes from @code{.ily}
+@c ode{Advanced}. Click @code{Environment Variables}, and then
+@c ode{edit}, and add the path to the GNU Make executable file, which
+@c ommand{latex} command be run twice to update links. Output files are
+@c ode{htmlout} directory for the html output.
+@c @rprogram{Setup for MacOS X},
+
+@c -- SKELETON FILE --
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+
+@c Don't replace quotes with directed quotes.
+
+@set txicodequoteundirected
+@set txicodequotebacktick
+
+
+@c ***** Displaying text *****
+
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+
+@macro bs
+\\
+@end macro
+
+
+@ifnotinfo
+
+@macro notation{TEXT}
+@var{\TEXT\}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro notation{TEXT}
+\TEXT\
+@end macro
+
+@end ifinfo
+
+
+@macro smallspace
+@sp 1
+@end macro
+
+
+@c ***** Displaying images not generated by lilypond-book *****
+
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory. `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+
+@ifnotinfo
+
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{lilypond/pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+
+@end ifinfo
+
+
+@c ***** Headers *****
+
+@ifclear snippets-sections
+@macro lydoctitle {TEXT}
+@need 600
+@emph{\TEXT\}
+@end macro
+@end ifclear
+
+@c ***** Indexing *****
+
+@c Don't remove the `@c' within the macro definition! See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+
+@macro funindex {TEXT}
+@findex \TEXT\
+@kindex \TEXT\
+@c
+@end macro
+
+
+@c ***** Macros specific to translated docs *****
+
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+
+@iftex
+
+@macro translationof{TEXT}
+@end macro
+
+@end iftex
+
+@ifinfo
+
+@macro translationof{TEXT}
+@set translationof \TEXT\
+@end macro
+
+@end ifinfo
+
+@ifhtml
+
+@ifset bigpage
+@macro untranslated
+@end macro
+@end ifset
+
+@ifclear bigpage
+@macro untranslated
+UNTRANSLATED NODE: IGNORE ME
+@end macro
+@end ifclear
+
+@end ifhtml
+
+@ifnothtml
+
+@macro untranslated
+@end macro
+
+@end ifnothtml
+
+
+@c ***** Macros specific to the web site *****
+
+@ifset web
+
+@macro help{TEXT}
+@html
+<div class="help">
+<strong>
+ <span style="text-decoration:blink">Help wanted:</span>
+</strong> \TEXT\
+</div>
+@end html
+@end macro
+
+@macro divId {ID}
+@html
+<div id="\ID\">
+@end html
+@end macro
+
+@macro divClass {CLASS}
+@html
+<div class="\CLASS\">
+@end html
+@end macro
+
+@macro divEnd
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+
+@c not strictly necessary, but it makes things easier for updating news
+@macro newsItem
+@html
+<div class="news-item">
+@end html
+@end macro
+
+@macro newsEnd
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+
+
+@macro imageClickable{IMAGE-FILE, MORE-TEXT, CLICK-FILE, POSITION}
+@html
+<div class="float-\POSITION\">
+ <a class="clickable" href="\CLICK-FILE\">
+ <img src="\IMAGE-FILE\" alt="\IMAGE-FILE\">
+ </a>
+ <p style="text-align: center">
+ \MORE-TEXT\
+ </p>
+</div>
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@macro imageFloat{IMAGE-FILE, POSITION}
+@html
+<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\" alt="\IMAGE-FILE\">
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@macro imageId{ID, IMAGE-FILE, ALT}
+@html
+<div id="\ID\">
+ <img src="pictures/\IMAGE-FILE\" alt="\ALT\">
+</div>
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@end ifset
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+
+@ignore
+ Translation of GIT committish: d56aa8181857c5feabf303ae88e716eba069f0a9
+
+
+ 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"
+
+@quotation
+Nous souhaitons dédier ce programme à tous les amis que nous avons
+rencontrés par la musique.
+
+Han-Wen et Jan
+@end quotation
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@setfilename general.info
+@settitle LilyPond -- Muzieknotatie voor iedereen
+@documentencoding UTF-8
+@documentlanguage nl
+@set web
+@include macros.itexi
+@afourpaper
+@ifnottex
+@node Top
+@top
+@translationof Top
+
+
+@chapheading
+@end ifnottex
+@finalout
+@titlepage
+@title LilyPond
+@subtitle
+@titlefont{New Website}
+@author Het LilyPond ontwikkelteam
+@quotation
+@end quotation
+@vskip 20pt
+@end titlepage
+@copying
+@quotation
+@end quotation
+@end copying
+@divId{pageHeader}
+@heading LilyPond
+
+... muzieknotatie voor iedereen
+@divEnd
+@c @imageId{cmws,web-clef-g-eight-alpha.png,Catchy Musical Web Snippet}
+@imageId{lilylogo,double-lily-modified3.png,LilyPond logo}
+@c @im ageId{cmws,web-snippet-alpha.png,Catchy Musical Web Snippet}
+@divId{quickSummary}
+@subheading Wat is LilyPond?
+
+LilyPond is een Open Source muziek-graveer programma, gewijd aan
+het produceren van de hoogst mogelijke kwaliteit bladmuziek.
+
+Wij brengen de esthetiek van traditioneel gegraveerde muziek naar
+computer afdrukken.
+
+LilyPond is Vrije Software, is gratis en is onderdeel van het
+@uref{http://@/www@/.gnu@/.org/, GNU} project.
+
+@divClass{align-right}
+Lees de @ref{Inleiding}!
+
+@c For this to work, essay needs to be split like we are
+@c --split=node --node-files
+@c Dat en meer in ons @ressaynamed{Engraving, essay}.
+@c Possibly, node Top always works?
+@c Dat en meer in ons @ressaynamed{Top, essay}.
+Dat en meer in ons @ref{automated-engraving,,Essay,essay,Essay}.
+
+@divEnd
+@divEnd
+@divId{news}
+@include news-front.itexi
+@divClass{float-right}
+@divEnd
+@divEnd
+@divId{latestVersion}
+@subheading Quick links
+@c TODO: javascript to detect OS and suggest download?
+@subsubheading Stable
+@ref{Download, Download 2.12.3}
+@ref{Handleiding, Handleiding 2.12.3}
+@subsubheading Unstable
+@ref{Development, Download 2.13.2}
+@ref{Handleiding, Handleiding 2.13.2}
+@divEnd
+@divClass{hide}
+@menu
+* Inleiding::
+* Download::
+* Handleiding::
+* Community::
+@end menu
+
+@divEnd
+@contents
+@include general/introduction.itexi
+@include general/download.itexi
+@include general/manuals.itexi
+@include general/community.itexi
+@bye
+
--- /dev/null
+depth = ../../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory. `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@image{pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@image{lilypond/pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition! See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Community
+@unnumbered Community
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Interacting with the community
+@ref{Contact}: get help, discuss, and keep in touch!
+@ref{Tiny examples}: these are @emph{highly} recommended when
+@ref{Bug reports}: something went wrong.
+@divEnd
+@divClass{column-left-bottom}
+@subheading Making LilyPond better
+@ref{Help us}: your assistance is requested.
+@ref{Development}: for contributors and testers.
+@ref{Authors}: the people who made LilyPond what it is today.
+@divEnd
+@divClass{column-right-bottom}
+@subheading Miscellaneous
+@ref{Publications}: what we wrote, and have had written about us.
+@ref{Old news}: an archive.
+@divEnd
+@divClass{hide}
+@menu
+* Contact::
+* Tiny examples::
+* Bug reports::
+* Help us::
+* Development::
+* Authors::
+* Publications::
+* Old news::
+@end menu
+
+@divEnd
+@node Contact
+@unnumberedsec Contact
+
+@untranslated
+
+
+@divClass{column-left-bottom}
+@subheading User Discussions and Help
+@subsubheading User mailist: @code{lilypond-user@@gnu.org}
+@quotation
+@end quotation
+@subsubheading IRC
+@subsubheading Other languages
+@divEnd
+@divClass{column-right-top}
+@subheading Stay Informed
+@subsubheading LilyPond Report
+@subsubheading Releases mailist: @code{info-lilypond@@gnu.org}
+@quotation
+@c don't include gmane posting here. -gp
+@end quotation
+@divEnd
+@divClass{column-right-bottom}
+@subheading Developer Discussion
+@subsubheading Developer mailist: @code{lilypond-devel@@gnu.org}
+@quotation
+@end quotation
+@subsubheading Bug mailist: @code{bug-lilypond@@gnu.org}
+@quotation
+@c don't include gmane posting here. -gp
+@end quotation
+@divEnd
+@node Tiny examples
+@unnumberedsec Tiny examples
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading What are @qq{Tiny examples}?
+@divEnd
+@divClass{column-left-bottom}
+@subheading Why create them?
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-right-bottom}
+@subheading How do I create them?
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@node Bug reports
+@unnumberedsec Bug reports
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Step 1: Known bugs
+@divEnd
+@divClass{column-left-bottom}
+@subheading Step 2: Creating a bug report
+@divEnd
+@divClass{column-right-bottom}
+@subheading Step 3: Sending a bug report
+@divEnd
+@node Help us
+@unnumberedsec Help us
+
+@untranslated
+
+
+@subheading This document
+@subsubheading High priority / blocks release
+@subsubheading Low priority / may never
+@node Development
+@unnumberedsec Development
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Development materials for LilyPond 2.13.3
+@ref{Handleiding}.}
+@divEnd
+@divClass{column-left-bottom}
+@subheading Download
+@subheading Manuals
+@divEnd
+@divClass{column-right-bottom}
+@subheading Contributors' Guide
+@divEnd
+@node Authors
+@unnumberedsec Authors
+
+@untranslated
+
+
+@node Publications
+@unnumberedsec Publications
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading What we wrote
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading What others wrote
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@node Old news
+@unnumberedsec Old news
+
+@untranslated
+
+
+@include general/news.itexi
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Download
+@unnumbered Download
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Downloads for LilyPond 2.12.2
+@divEnd
+@divClass{column-left-top}
+@subheading For users
+@c TODO: duplicate to avoid underlined refs in HTML? icky.
+@ref{Unix, @sourceimage{logo-linux} @sourceimage{logo-freebsd}}
+@ref{Unix, Unix (Linux and FreeBSD)}
+@ref{MacOS X, @sourceimage{logo-macosx}}
+@ref{MacOS X, MacOS X}
+@ref{Windows, @sourceimage{logo-windows}}
+@ref{Windows, Microsoft Windows}
+@divEnd
+@divClass{column-right-top}
+@subheading For developers
+@ref{Source}:
+@ref{Old downloads}:
+@divEnd
+@divClass{column-center-bottom}
+@subheading Software License
+@divEnd
+@divClass{color1}
+@subheading Sponsors
+@sourceimage{VTlogo_ITF} @sourceimage{lao_banner_06_on_white_demo}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@divClass{hide}
+@menu
+* Unix::
+* MacOS X::
+* Windows::
+* Source::
+* Old downloads::
+* GPL::
+@end menu
+
+@divEnd
+@node Unix
+@unnumberedsec Unix
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Generic Packages or Distribution-Specific Packages?
+@divEnd
+@divClass{column-left-top}
+@subheading Generic Packages
+@subsubheading Download
+@sourceimage{logo-linux}
+@sourceimage{logo-linux}
+@sourceimage{logo-linux}
+@sourceimage{logo-freebsd}
+@sourceimage{logo-freebsd}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Distribution-specific Packages
+@sourceimage{logo-fedora}
+@sourceimage{logo-ubuntu}
+@sourceimage{logo-slackware}
+@sourceimage{logo-debian}
+@sourceimage{logo-suse}
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node MacOS X
+@unnumberedsec MacOS X
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Packages
+@subsubheading Download
+@sourceimage{logo-macosx}
+@sourceimage{logo-macosx}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Running on the command-line
+@subsubheading Using Python scripts on MacOS 10.3 or 10.4
+@c ommand{convert-ly} and @command{lilypond-book} as follows: if the
+@subsubheading MacOS X on the command line
+@c ommand{abc2ly}, and even @command{lilypond} itself --- are included
+@c ommand{lilypond-book}, @command{convert-ly}, @command{abc2ly}, etc.
+@c ode{bin/convert-ly} (or other program name) in the above file.
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node Windows
+@unnumberedsec Windows
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Packages
+@subsubheading Download
+@sourceimage{logo-windows}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Running on the command-line
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node Source
+@unnumberedsec Source
+
+@untranslated
+
+
+@divClass{column-left-bottom}
+@subheading Source tarball
+@divEnd
+@divClass{column-right-bottom}
+@subheading Compiling instructions
+@divEnd
+@node Old downloads
+@unnumberedsec Old downloads
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading All versions
+@divEnd
+@node GPL
+@unnumberedsec GPL
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Software license
+@divEnd
+@divClass{column-center-bottom}
+@subheading GNU General Public License version 2
+@include gpl-2.0.itexi
+@divEnd
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@node Inleiding
+@unnumbered Inleiding
+@translationof Introduction
+
+@divClass{column-center-top}
+@subheading Ons Doel
+@imageFloat{flat-design.png,right}
+
+De inspiratie voor LilyPond ontstond toen twee bevriende muzikanten
+ontevreden werden met het saaie en inspiratieloze uiterlijk van
+computerafdrukken. Elke muzikant leest liever mooie muziek, dus
+zouden wij als programmeurs dat afdrukprobleem niet kunnen oplossen?
+
+Dat is nu precies wat LilyPond doet: het drukt muziek volgens de
+beste tradities van klassieke muziekgravure, zonder gedoe. Verspil
+geen tijd met het bijstellen van spatiëring, het verplaatsen van
+tekens, of met het vormgeven van legatoboogjes. Imponeer vrienden
+en collega's met haarscherpe bladmuziek!
+@divEnd
+
+@divClass{column-left-top}
+@subheading Why use LilyPond?
+@ref{Features}: What can LilyPond do?
+@ref{Examples}: I want to see some music!
+@ref{Freedom}: LilyPond is Free Software.
+@divEnd
+@divClass{column-right-top}
+@subheading Who uses it?
+@ref{Productions}: Real-life use of LilyPond.
+@ref{Testimonials}: What do people say?
+@divEnd
+@divClass{column-center-bottom}
+@subheading Why not use LilyPond?
+@ref{Text input}: You write music as @emph{text}?!
+@divEnd
+@divClass{hide}
+@menu
+* Features::
+* Examples::
+* Freedom::
+* Productions::
+* Testimonials::
+* Text input::
+@end menu
+
+@divEnd
+@node Features
+@unnumberedsec Features
+
+@untranslated
+
+
+@subheading Why switch to LilyPond?
+@subsubheading Excellent classical engraving
+@imageFloat{flat-design.png,right}
+@subsubheading No fiddling
+@subsubheading Text-based input
+@subsubheading Mix music and text
+@imageFloat{lilypond-book.png,right}
+@subsubheading Free software
+@subsubheading Extensible design
+@subsubheading Excellent support
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Text input}.
+@divEnd
+@node Examples
+@unnumberedsec Examples
+
+@untranslated
+
+
+@imageClickable{examples/liszt-wagner-small.png, (click to enlarge), examples/liszt-wagner.png, center}
+@subsubheading Classical Music
+@imageClickable{examples/bach-bwv610-small.png, (click to enlarge), examples/bach-bwv610.png, center}
+@subsubheading Complex Notation
+@imageClickable{examples/granados-small.png, (click to enlarge), examples/granados.png, center}
+@subsubheading Early Music
+@imageClickable{examples/ancient-headword-small.png, (click to enlarge), examples/ancient-headword.png, center}
+@subsubheading Modern Music
+@imageClickable{examples/cary-small.png, (click to enlarge), examples/cary.png, center}
+@subsubheading Efficient, flexible creation of performance materials
+@imageClickable{examples/sesto-small.png, (click to enlarge), examples/sesto.png, center}
+@imageClickable{examples/sesto-1-small.png, (click to enlarge), examples/sesto-1.png, center}
+@imageClickable{examples/sesto-2-small.png, (click to enlarge), examples/sesto-2.png, center}
+@subsubheading Tablature
+@imageClickable{examples/bach-tab-example-small.png, (click to enlarge), examples/bach-tab-example.png, center}
+@subsubheading Schenker Graphs
+@imageClickable{examples/bach-schenker-small.png, (click to enlarge), examples/bach-schenker.png, center}
+@subsubheading Vocal Music
+@imageClickable{examples/aucun-snippet-small.png, (click to enlarge), examples/aucun-snippet.png, center}
+@subsubheading Educational Applications
+@imageClickable{examples/theory-small.png, (click to enlarge), examples/theory.png, center}
+@subsubheading Popular Music
+@imageClickable{examples/chart-small.png, (click to enlarge), examples/chart.png, center}
+@subsubheading Large Projects
+@imageClickable{examples/orchestral-small.png, (click to enlarge), examples/orchestral.png, center}
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Freedom}. If you've already decided to try LilyPond, first
+@divEnd
+@node Freedom
+@unnumberedsec Freedom
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Free Software
+@ref{GPL, GNU General Public License} and the @ref{FDL, GNU Free
+@divEnd
+@c @divClass{column-left-top}
+@divClass{color2}
+@divClass{keep-bullets}
+@subheading What are the benefits to users?
+@divEnd
+@divEnd
+@c @divClass{column-right-top}
+@divClass{color3}
+@divClass{keep-bullets}
+@subheading Why do LilyPond developers @qq{give away} their work for free?
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Productions} and sheet music. If you've already decided to
+@divEnd
+@node Productions
+@unnumberedsec Productions
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Concerts
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-right-top}
+@subheading Published sheet music
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Text input}.
+@divEnd
+@node Testimonials
+@unnumberedsec Testimonials
+
+@untranslated
+
+
+@divClass{testimonial-item}
+@imageFloat{carter-brey.jpg, right}
+@subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey}, Principal Cellist, New York Philharmonic
+@divEnd
+@divClass{testimonial-item}
+@imageFloat{orm-finnendahl.jpg, left}
+@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg
+@divEnd
+@divClass{testimonial-item}
+@imageFloat{darius-blasband.jpg, right}
+@subsubheading Darius Blasband, composer (Brussels, Belgium)
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Kieren MacMillan, composer (Toronto, Canada)
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Chris Cannam, lead programmer of the @uref{http://www.rosegardenmusic.com/, RoseGarden} project.
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Chris Snyder, @uref{http://www.adoromusicpub.com/, Adoro Music Publishing}
+@divEnd
+@divClass{testimonial-item}
+@subsubheading David Bobroff, Bass Trombone, Iceland Symphony Orchestra
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Vaylor Trucks, Electric guitar player (Yes, @uref{http://www.allmanbrothersband.com/modules.php?op=modload&name=userpage&file=content&page_id=12, related to})
+@divEnd
+@divClass{testimonial-item}
+@subsubheading @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}, @uref{http://www.mutopiaproject.org/, Mutopia} contributor
+@divEnd
+@divClass{testimonial-item}
+@subsubheading @uref{http://www.troff.org/whoswho.html#werner, Werner Lemberg}, Conductor at the Theatre in Koblenz, Germany and distinguished GNU Hacker.
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Paul Davis, developer of @uref{http://jackaudio.org/, JACK} and @uref{http://www.ardour.org/, Ardour}.
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@divEnd
+@node Text input
+@unnumberedsec Text input
+
+@untranslated
+
+
+@c TRANSLATORS: so far it's mostly from
+@c http://lilypond.org/web/switch/howto
+@subheading @qq{Compiling} Music
+@imageClickable{examples/nereid-shot-small.png, (click to enlarge), examples/nereid-shot.png, right}
+@subsubheading It's as simple as A B C
+@imageFloat{text-input-1-annotate.png,center}
+@imageFloat{text-input-1-output.png,center}
+@imageFloat{text-input-2-annotate.png,center}
+@imageFloat{text-input-2-output.png,center}
+@subsubheading Pop music
+@imageFloat{text-input-pop-annotate.png,center}
+@imageFloat{text-input-pop-output.png,center}
+@subsubheading Orchestral parts
+@imageFloat{text-input-parts-both-annotate.png,center}
+@imageFloat{text-input-parts-single-annotate.png,center}
+@imageFloat{text-input-parts-single-output.png,center}
+@imageFloat{text-input-score-annotate.png,center}
+@imageFloat{text-input-score-output.png,center}
+@subsubheading Beginner Documentation
+@subsubheading Easier editing environments
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Freedom} that LilyPond provides, or read about users'
+@ref{Productions} and @ref{Testimonials}.
+@divEnd
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined! Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso! Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rgeneral
+@c @ressay
+@c @rglos
+@c @rinternals
+@c @rlearning
+@c @rlsr
+@c @rprogram
+@c @ruser
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,general-big-page,General Information}
+@ref{\TEXT\,,\DISPLAY\,general-big-page,General Information}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,general,General Information}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-general,General Information}
+@ref{\TEXT\,,\DISPLAY\,lilypond-general, General Information}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own. To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,general,General Information}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+ Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@node Handleiding
+@unnumbered Handleiding
+@translationof Manuals
+
+@divClass{heading-center}
+@heading Documentation for LilyPond 2.12.2
+@divEnd
+@divClass{column-center-top}
+@subheading Introduction
+@divEnd
+@divClass{column-left-top}
+@subheading Regular use
+@divEnd
+@divClass{column-right-top}
+@subheading Infrequent Use
+@divEnd
+@divClass{column-center-bottom}
+@subheading Other material
+@divEnd
+@divClass{hide}
+@menu
+* Learning::
+* Glossary::
+* Essay::
+* Notation::
+* Usage::
+* Snippets::
+* FAQ::
+* Changes::
+* Internals::
+* Translated::
+* Old::
+* FDL::
+@end menu
+
+@divEnd
+@c TRANSLATORS: most of the text in this file came from
+@c LM 1.1 About the documentation (before this section was
+@c removed in July 2009).
+@node Learning
+@unnumberedsec Learning
+
+@untranslated
+
+
+@node Glossary
+@unnumberedsec Glossary
+
+@untranslated
+
+
+@node Essay
+@unnumberedsec Essay
+
+@untranslated
+
+
+@node Notation
+@unnumberedsec Notation
+
+@untranslated
+
+
+@node Usage
+@unnumberedsec Usage
+
+@untranslated
+
+
+@node Snippets
+@unnumberedsec Snippets
+
+@untranslated
+
+
+@node FAQ
+@unnumberedsec FAQ
+
+@untranslated
+
+
+@subheading Where are the graphical canvas, menus, and toolbars?
+@subheading There's a lot of documentation! Do I need to read it?
+@subheading That's still a lot of reading! Is it worth it?
+@subheading Something isn't working! How do I fix it?
+@subheading Why do you change the syntax?
+@node Changes
+@unnumberedsec Changes
+
+@untranslated
+
+
+@node Internals
+@unnumberedsec Internals
+
+@untranslated
+
+
+@node Translated
+@unnumberedsec Translated
+
+@untranslated
+
+
+@node Old
+@unnumberedsec Old
+
+@untranslated
+
+
+@node FDL
+@unnumberedsec FDL
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Documentation license
+@divEnd
+@divClass{column-center-bottom}
+@subheading GNU Free Documentation License 1.1
+@include fdl.itexi
+@divEnd
+
+@c -- SKELETON FILE --
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c This file is part of lilypond-general.texi and community.itexi
+
+@c when you add a new item, consider moving the lowest item(s)
+@c into news-old.itexi.
+
+@newsItem
+@subsubheading New Website! @emph{20 Aug 2009}
+
+As you can see, we have a new website design. Many thanks to
+texi2html and CSS for being so flexible!
+
+(FIXME: change date when this is actually announced on lilypond.org)
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.3. @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.
+
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release. For changes and download links, see @ref{Development}.
+@newsEnd
+
+
+
+@newsItem
+@subsubheading Hungarian translation! @emph{22 May 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a harmathdenes AT gmail.com címre!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #15. @emph{18 May 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column
+about the LilyPond project: its team, its world, its community.
+Read it @uref{http://news.lilynet.net/The-LilyPond-Report-15,
+here}!
+@newsEnd
+
+
--- /dev/null
+<html>
+<!--
+ Translation of GIT committish: 9dca038856a22595cabab9d8a7565300be2cc363
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+!-->
+ <head>
+ <title>Documentation de LilyPond @TOPLEVEL_VERSION@</title>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
+ <meta name="aesop" content="links">
+ <meta name="description"
+ content="Top-level index to the standard documentation for
+ LilyPond @TOPLEVEL_VERSION@">
+ </head>
+
+ <body>
+
+ <div class="header">
+ <h1>Documentation de LilyPond</h1>
+ </div>
+
+ <div class="subheader">
+ <p>
+ <strong>Version @TOPLEVEL_VERSION@</strong>
+ <br>
+ <strong>@DATE@</strong>
+ </p>
+ </div>
+
+ <table id="navigation">
+ <tbody>
+ <tr>
+ <td class="left-column">
+ <ul>
+ <li>
+ <a class="title"
+ href="learning/index.fr.html">Manuel d'initiation</a>
+ (partiellement traduit,<br>aussi en <a class="title" href="learning-big-page.fr.html">page
+ unique</a> ~ 1,5 Mo, ou
+ <a class="title" href="learning.fr.pdf">au format PDF</a>)
+ <br>— commencer ici</li>
+ <li><a class="title" href="music-glossary/index.html">Glossaire</a>
+ multilingue<br>(aussi en
+ <a class="title" href="music-glossary-big-page.html">page unique</a>
+ ~ 500 ko, ou <a class="title" href="music-glossary.pdf">au format PDF</a>)
+ <br>— vocabulaire théorique de la musique</li>
+ </ul>
+ </td>
+ <td class="right-column">
+ <ul>
+ <li><a class="title" href="changes.html">Nouveautés</a>
+ <br>— changements depuis la version majeure précédente</li>
+ <li><a class="title" href="../examples.html">Exemples</a>
+ <br>— quelques exemples</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="baseline" class="left-column">
+ <ul>
+ <li>
+ <a class="title" href="notation/index.fr.html">Manuel de notation</a>
+ (partiellement traduit,<br>aussi en <a class="title"
+ href="notation-big-page.fr.html">page unique</a> ~ 4 Mo, ou
+ <a class="title" href="notation.fr.pdf">au format PDF</a>)
+ <br>— gravure de musique avec LilyPond</li>
+ <li>
+ <a class="title" href="internals/index.html">Référence des propriétés internes</a>
+ <br>(en anglais, aussi en <a class="title" href="internals-big-page.html">page
+ unique</a> ~ 1 Mo, <a class="title"
+ href="internals.pdf">au format PDF</a>)
+ <br>— définitions pour les retouches</li>
+ </ul>
+ </td>
+ <td valign="baseline" class="right-column">
+ <ul>
+ <li>
+ <a class="title" href="application/index.fr.html">Utilisation des programmes</a>
+(partiellement traduit,<br>aussi en <a class="title"
+ href="application-big-page.fr.html">page unique</a>, ou
+ <a class="title" href="application.fr.pdf">au format PDF</a>)
+ <br>— installation et exécution des programmes</li>
+ <li><a class="title" href="snippets/index.html">Exemples de code</a>
+(en anglais, aussi en <a class="title" href="snippets-big-page.html">page unique</a> ~ 2 Mo,
+au format <a class="title" href="snippets.pdf">PDF</a>)
+ <br>— petits trucs, astuces et exemples</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="baseline" class="left-column">
+ <ul>
+ <li><a class="title" href="devel.html">Ressources de développement</a>
+ <br>— documentation pour les développeurs et contributeurs</li>
+ </ul>
+ </td><td class="right-column">
+ <ul>
+ <li><a class="title" href="translations.fr.html">État des traductions</a>
+ <br>— avancement des traductions en français</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="baseline" class="left-column">
+ <ul>
+ <li> <a class="title" href="http://lilypond.org/">lilypond.org</a>
+ <br>— le site Web</li>
+ <li>
+ <a class="title" href="http://www.gnu.org/copyleft/gpl.html">Licence</a>
+ <br>— la licence GNU GPL</li>
+ </ul>
+ </td>
+ <td valign="baseline" class="right-column">
+ <ul>
+ <li><a class="title" href="THANKS.html">Remerciements</a>
+ <br>— à nos contributeurs</li>
+ <li><a class="title" href="DEDICATION.html">Dédicace</a>
+ <br>— par Jan et Han-Wen</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td valign="baseline" class="left-column">
+ <ul>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <p>
+ Toute la documentation répertoriée sur cette page peut être
+ <strong>téléchargée</strong> :
+ <a href="http://download.linuxaudio.org/lilypond/binaries/documentation/lilypond-@TOPLEVEL_VERSION@-1.documentation.tar.bz2">téléchargement
+ de l'archive compressée</a>.
+ </p>
+ <p>
+ Vous pouvez trouver, au bas de chaque page de cette
+ documentation, des liens vers les <strong>traductions</strong> disponibles.
+ </p>
+ </body>
+</html>
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@setfilename lilypond-learning.info
+@settitle GNU LilyPond Learning Manual
+@documentencoding UTF-8
+@documentlanguage nl
+@include macros.itexi
+@c This produces the unified index
+@afourpaper
+@c don't remove this comment.
+@copying
+@quotation
+@end quotation
+@end copying
+@c artouche
+@c @ref{About the documentation}.
+@c TITLE PAGE
+@ifnottex
+@node Top
+@top GNU LilyPond --- Learning Manual
+
+@untranslated
+
+
+@end ifnottex
+@finalout
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{Learning Manual}
+@author The LilyPond development team
+@vskip 100pt
+@vskip 0pt plus 1filll
+@c @vskip 20pt
+@end titlepage
+@c TOC -- non-tex
+@ifnottex
+@menu
+* Introduction::
+* Common notation::
+* Fundamental concepts::
+* Tweaking output::
+* Templates::
+* Scheme tutorial::
+* GNU Free Documentation License::
+* LilyPond index::
+@end menu
+
+@end ifnottex
+@c TOC - tex
+@contents
+@c INCLUDES
+@include learning/introduction.itely
+@include learning/common-notation.itely
+@include learning/fundamental.itely
+@include learning/tweaks.itely
+@include learning/templates.itely
+@include learning/scheme-tutorial.itely
+@include fdl.itexi
+@node LilyPond index
+@appendix LilyPond index
+
+@untranslated
+
+
+@bye
+
+@c -- SKELETON FILE --
--- /dev/null
+depth = ../../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory. `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition! See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Common notation
+@chapter Common notation
+
+@untranslated
+
+
+@ref{Introduction}.
+@menu
+* Single staff notation::
+* Multiple notes at once::
+* Songs::
+* Final touches::
+@end menu
+
+@node Single staff notation
+@section Single staff notation
+
+@untranslated
+
+
+@menu
+* Accidentals and key signatures::
+* Ties and slurs::
+* Articulation and dynamics::
+* Adding text::
+* Automatic and manual beams::
+* Advanced rhythmic commands::
+@end menu
+
+@node Accidentals and key signatures
+@subsection Accidentals and key signatures
+
+@untranslated
+
+
+@subheading Accidentals
+@c index accidentals
+@c index accidentals and key signatures
+@c index sharp
+@c index double sharp
+@c index sharp, double
+@c index flat
+@c index double flat
+@c index flat, double
+@c index key signature, setting
+@subheading Key signatures
+@c index key signature
+@c index major
+@c index minor
+@c index accidentals and key signature
+@c index content vs. layout
+@c index layout vs. content
+@subheading Warning: key signatures and pitches
+@c ode{is} and type @code{cis} and @code{fis} in the input file.
+@node Ties and slurs
+@subsection Ties and slurs
+
+@untranslated
+
+
+@c index tie
+@c index slur
+@c index slur, phrasing
+@c index phrasing slur
+@subheading Ties
+@subheading Slurs
+@c ode{)} respectively.
+@subheading Phrasing slurs
+@c ode{\(} and @code{\)}. You can have both @notation{slurs}
+@c index slurs versus ties
+@subheading Warnings: slurs vs. ties
+@node Articulation and dynamics
+@subsection Articulation and dynamics
+
+@untranslated
+
+
+@subheading Articulations
+@c index articulation
+@c index accent
+@c index staccato
+@subheading Fingerings
+@c index fingering
+@c ode{^} (up) or @code{_} (down). You can also use multiple
+@subheading Dynamics
+@c index dynamics
+@c index decrescendo
+@c index crescendo
+@c ode{\!} can be used:
+@node Adding text
+@subsection Adding text
+
+@untranslated
+
+
+@c index text, adding
+@c index adding text
+@c index markup
+@node Automatic and manual beams
+@subsection Automatic and manual beams
+
+@untranslated
+
+
+@c index beaming
+@c index automatic beams
+@c index manual beams
+@c index beams, automatic
+@c index beams, manual
+@c index beams, by hand
+@node Advanced rhythmic commands
+@subsection Advanced rhythmic commands
+
+@untranslated
+
+
+@subheading Partial measure
+@c index pickup
+@c index anacrusis
+@c index partial measure
+@c ode{\partial}. It is followed by a duration: @code{\partial 4}
+@subheading Tuplets
+@c index tuplets
+@c index triplets
+@subheading Grace notes
+@c index grace notes
+@c index acciaccatura
+@c index appoggiatura
+@node Multiple notes at once
+@section Multiple notes at once
+
+@untranslated
+
+
+@menu
+* Music expressions explained::
+* Multiple staves::
+* Staff groups::
+* Combining notes into chords::
+* Single staff polyphony::
+@end menu
+
+@node Music expressions explained
+@subsection Music expressions explained
+
+@untranslated
+
+
+@c index music expression
+@c index expression, music
+@c index compound music expression
+@c index music expression, compound
+@subheading Analogy: mathematical expressions
+@subheading Simultaneous music expressions: multiple staves
+@c index multiple staves
+@c index staves, multiple
+@c index polyphony
+@c index combining expressions in parallel
+@c index parallel expressions
+@c index expressions, parallel
+@c index relative notes and simultaneous music
+@c index relative notes and parallel expressions
+@c index simultaneous music and relative notes
+@c index parallel expressions and relative notes
+@c ode{@bs{}relative} command.}
+@subheading Simultaneous music expressions: single staff
+@node Multiple staves
+@subsection Multiple staves
+
+@untranslated
+
+
+@c index multiple staves
+@c index staves, multiple
+@c index context
+@c index context, notation
+@c index notation context
+@c ode{Staff} elements are then combined in parallel with @code{<<}
+@node Staff groups
+@subsection Staff groups
+
+@untranslated
+
+
+@c index piano staff
+@c index staff, piano
+@c index choir staff
+@c index staff, choir
+@c index grand staff
+@c index staff, grand
+@c index staff group
+@ref{Multiple staves}. However, now this entire expression is
+@node Combining notes into chords
+@subsection Combining notes into chords
+
+@untranslated
+
+
+@c index chords
+@c index note durations in chords
+@node Single staff polyphony
+@subsection Single staff polyphony
+
+@untranslated
+
+
+@c index polyphony
+@c index multiple voices
+@c index voices, more on one staff
+@c index single staff polyphony
+@c index spacer rest
+@c index rest, spacer
+@node Songs
+@section Songs
+
+@untranslated
+
+
+@menu
+* Setting simple songs::
+* Aligning lyrics to a melody::
+* Lyrics to multiple staves::
+@end menu
+
+@node Setting simple songs
+@subsection Setting simple songs
+
+@untranslated
+
+
+@c index lyrics
+@c index songs
+@node Aligning lyrics to a melody
+@subsection Aligning lyrics to a melody
+
+@untranslated
+
+
+@c index melisma
+@c index extender line
+@c index hyphens
+@c index underscore
+@c index lyrics, aligning
+@c index aligning lyrics
+@c index lyrics, multi-syllable words
+@c index words with multiple syllables in lyrics
+@c no ragged-right here because otherwise the hyphens get lost,
+@c but the example is long enough to avoid looking strange.
+@c no ragged-right here because otherwise the hyphens get lost,
+@c but the example is long enough to avoid looking strange.
+@node Lyrics to multiple staves
+@subsection Lyrics to multiple staves
+
+@untranslated
+
+
+@c index lyrics and multiple staves
+@c index multiple staves and lyrics
+@node Final touches
+@section Final touches
+
+@untranslated
+
+
+@menu
+* Organizing pieces with variables::
+* Version number::
+* Adding titles::
+* Absolute note names::
+* After the tutorial::
+@end menu
+
+@node Organizing pieces with variables
+@subsection Organizing pieces with variables
+
+@untranslated
+
+
+@c index variables
+@c index variables, defining
+@c index identifiers
+@c index macros
+@c index assigning variables
+@c index using variables
+@c index variables, using
+@c index variables, characters allowed in
+@c index characters allowed in variables
+@node Version number
+@subsection Version number
+
+@untranslated
+
+
+@c index versioning
+@c index version
+@c index version number
+@c index upgrades
+@c index future upgrades
+@c index updating files
+@c index files, updating
+@node Adding titles
+@subsection Adding titles
+
+@untranslated
+
+
+@c index title
+@c index headers
+@c index header block
+@node Absolute note names
+@subsection Absolute note names
+
+@untranslated
+
+
+@c index note names
+@c index note names, absolute
+@c index absolute mode
+@c index absolute values for pitches
+@c index pitches, absolute values
+@c index absolute note names
+@c ode{b} will always mean the note one step below middle C, and a
+@c ode{g,} will always mean the note on the bottom staff of the
+@node After the tutorial
+@subsection After the tutorial
+
+@untranslated
+
+
+@ref{Templates}. If you need any notation that was not covered in
+@ref{Extending the templates}.
+@c @ref{About the documentation}.
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@untranslated
+
+
+@c index FDL, GNU Free Documentation License
+@c enter Version 1.1, March 2000
+@subheading ADDENDUM: How to use this License for your documents
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Fundamental concepts
+@chapter Fundamental concepts
+
+@untranslated
+
+
+@menu
+* How LilyPond input files work::
+* Voices contain music::
+* Contexts and engravers::
+* Extending the templates::
+@end menu
+
+@node How LilyPond input files work
+@section How LilyPond input files work
+
+@untranslated
+
+
+@menu
+* Introduction to the LilyPond file structure::
+* Score is a (single) compound musical expression::
+* Nesting music expressions::
+* On the un-nestedness of brackets and ties::
+@end menu
+
+@node Introduction to the LilyPond file structure
+@subsection Introduction to the LilyPond file structure
+
+@untranslated
+
+
+@c index input format
+@c index file structure
+@c index book
+@c index score
+@c ode{\score@{@}} command. This is because LilyPond automatically
+@c index implicit contexts
+@c index contexts, implicit
+@ref{Contexts and engravers}.
+@c ode{\score} command, leaving the others to default.
+@c index header
+@c index layout
+@c index midi
+@c ode{\midi} -- are special: unlike many other commands which begin
+@c ode{\header} is often placed above the @code{\score} command, as the
+@c ode{\layout @{ @}} and @code{\midi @{@}}. If these appear as
+@c index scores, multiple
+@c index book block, implicit
+@c index implicit book block
+@c ode{\book} command should be used to separate the different
+@c ode{\book} block.
+@c index layout block, effect of location
+@c ode{\book} block in which it appears -- i.e., a @code{\layout}
+@c index variables
+@c ode{melody} (everything after the equals sign) and inserts it
+@c ode{TimeKey},
+@c ode{pianorighthand}, or @code{foofoobarbaz}. For more details,
+@node Score is a (single) compound musical expression
+@subsection Score is a (single) compound musical expression
+
+@untranslated
+
+
+@c index score
+@c index contents of a score block
+@c index score block, contents of
+@c index compound music expression
+@c index music expression, compound
+@quotation
+@end quotation
+@ref{Music expressions explained}. In that section, we saw how to
+@c ode{StaffGroup} for this ensemble, which simply groups a number
+@c ode{\lyricmode}. These are essential to tell LilyPond
+@node Nesting music expressions
+@subsection Nesting music expressions
+
+@untranslated
+
+
+@c index staves, temporary
+@c index temporary staves
+@c index ossias
+@c index staff, positioning
+@node On the un-nestedness of brackets and ties
+@subsection On the un-nestedness of brackets and ties
+
+@untranslated
+
+
+@c index brackets, nesting
+@c index bracket types
+@c index brackets, enclosing vs. marking
+@c attempt to force this onto a new page
+@node Voices contain music
+@section Voices contain music
+
+@untranslated
+
+
+@menu
+* I'm hearing Voices::
+* Explicitly instantiating voices::
+* Voices and vocals::
+@end menu
+
+@node I'm hearing Voices
+@subsection I'm hearing Voices
+
+@untranslated
+
+
+@c index polyphony
+@c index layers
+@c index multiple voices
+@c index voices, multiple
+@c index Voice context
+@c index context, Voice
+@c index simultaneous music
+@c index music, simultaneous
+@c index concurrent music
+@c index music, concurrent
+@c index voices vs. chords
+@c index chords vs. voices
+@c ode{\\}, to place them in separate voices. Without these, the
+@c index voices, naming
+@c index voices crossing brackets
+@c index slurs crossing brackets
+@c index ties crossing brackest
+@ref{Using variables for tweaks}.
+@c index polyphony and relative note entry
+@c index relative note entry and polyphony
+@c ode{\relative @{ @}} block. Each note is still calculated
+@c ode{noteB} is relative to @code{noteA} @*
+@c ode{noteC} is relative to @code{noteB}, not @code{noteA}; @*
+@c ode{noteD} is relative to @code{noteB}, not @code{noteA} or
+@c ode{noteC}; @*
+@c ode{noteE} is relative to @code{noteD}, not @code{noteA}.
+@c The following should appear as music without code
+@c The following should appear as music without code
+@c The three voice styles should be defined in -init
+@c index stem down
+@c index voices and stem directions
+@c index stem directions and voices
+@c index stem up
+@node Explicitly instantiating voices
+@subsection Explicitly instantiating voices
+
+@untranslated
+
+
+@c index voice contexts, creating
+@c ode{\voiceOne} ... @code{\voiceFour} to indicate the required
+@c The following example should not display the code
+@c index voices, reverting to single
+@c index reverting to a single voice
+@c ode{\voiceFour} make them point downwards. These commands also
+@c ode{\oneVoice}, @code{\voiceOne} and @code{voiceTwo} have on
+@c index nesting music expressions
+@c index nesting simultaneous constructs
+@c index nesting voices
+@c index voices, temporary
+@c index voices, nesting
+@c index spacing notes
+@subsubheading Note columns
+@c index note column
+@c index note collisions
+@c index collisions, notes
+@c index shift commands
+@c ode{\shiftOff} commands specify the degree to which notes and
+@c ode{\shiftOnn} and @code{\shiftOnnn} define further shift
+@node Voices and vocals
+@subsection Voices and vocals
+
+@untranslated
+
+
+@c index Lyrics context, creating
+@c index lyrics, linking to voice
+@c index lyrics and beaming
+@c index beaming and lyrics
+@c ode{\autoBeamOff} to turn off the automatic beaming.
+@c index vocal score structure
+@c index choir staff
+@c ode{\lyricmode} to ensure they are interpreted as lyrics
+@c index hymn structure
+@c index SATB structure
+@c index vocal scores with multiple verses
+@c index multiple vocal verses
+@c index verses, multiple vocal
+@c index verse and refrain
+@c index book, example of using
+@c ode{\score} blocks within an implicit @code{\book} block, as
+@node Contexts and engravers
+@section Contexts and engravers
+
+@untranslated
+
+
+@menu
+* Contexts explained::
+* Creating contexts::
+* Engravers explained::
+* Modifying context properties::
+* Adding and removing engravers::
+@end menu
+
+@node Contexts explained
+@subsection Contexts explained
+
+@untranslated
+
+
+@c index contexts explained
+@quotation
+@end quotation
+@c ode{Score} and @code{Staff} contexts.
+@c ode{Voice} contexts there are contexts which fit between
+@c ode{PianoStaff} and @code{ChoirStaff} contexts. There
+@c ode{GregorianTranscriptionStaff}.
+@node Creating contexts
+@subsection Creating contexts
+
+@untranslated
+
+
+@c index new contexts
+@c index creating contexts
+@c index contexts, creating
+@c ode{Staff} contexts may be left to be created automatically, but for
+@c ode{Voice}). This command creates a new context, and starts
+@c ode{Staff} and @code{Voice} contexts in earlier sections, but
+@c index contexts, naming
+@c index naming contexts
+@c ode{Staff}, @code{Voice}, etc, and the identifying name of a
+@node Engravers explained
+@subsection Engravers explained
+
+@untranslated
+
+
+@c index engravers
+@c ode{Metronome_mark_engraver}, whose action and output apply to the
+@c ode{Score} context.
+@c The old Dynamic_engraver is deprecated. -jm
+@node Modifying context properties
+@subsection Modifying context properties
+
+@untranslated
+
+
+@c index context properties
+@c index context properties, modifying
+@c index modifying context properties
+@c ode{\set} command. This takes the form
+@c ode{Staff} or @code{Voice}. It may be omitted,
+@c attempt to force this onto a new page
+@c index properties operating in contexts
+@c index setting properties within contexts
+@c ode{instrumentName} clearly lives in the @code{Staff} context, since
+@c ode{\set} command set the property @code{instrumentName} in the
+@c ode{Voice} context to @qq{Alto}, but as LilyPond does not look
+@c ode{\set} or @code{\unset} again. Let's try changing the
+@c ode{##t} and @code{##f}, with two hash signs. A text property
+@subsubheading Setting context properties with @code{\with}
+@c index context properties, setting with \with
+@c ode{\with @{ .. @}} block in which the property values are
+@c ode{\set} and returned to their default value with @code{\unset}.
+@c index fontSize, default and setting
+@c ode{\unset fontSize} command.
+@subsubheading Setting context properties with @code{\context}
+@c index context properties, setting with \context
+@c ode{\with} block, introduced above. It is placed in a
+@c ode{\context} block within a @code{\layout} block. Each
+@c ode{\context} block will affect all contexts of the type specified
+@c ode{\layout} block appears. Here is a example to show the format:
+@c ode{\set} commands embedded in music statements.
+@c FIXME
+@c uncomment when backslash-node-name issue is resolved -pm
+@c @ruser{The set command}.
+@node Adding and removing engravers
+@subsection Adding and removing engravers
+
+@untranslated
+
+
+@c index engravers, adding
+@c index adding engravers
+@c index engravers, removing
+@c index removing engravers
+@subsubheading Changing a single context
+@c ode{\with} command placed immediately after the context creation
+@c index ambitus engraver
+@c ode{\consists @var{Engraver_name}},
+@c ode{Ambitus_engraver}, which is not normally included in any
+@c ode{Staff} context, it calculates the range from all
+@subsubheading Changing all contexts of the same type
+@c ode{\set} command in a @code{\context} block in the
+@node Extending the templates
+@section Extending the templates
+
+@untranslated
+
+
+@menu
+* Soprano and cello::
+* Four-part SATB vocal score::
+* Building a score from scratch::
+* Saving typing with variables and functions::
+* Scores and parts::
+@end menu
+
+@node Soprano and cello
+@subsection Soprano and cello
+
+@untranslated
+
+
+@c index template, modifying
+@c index modifying templates
+@c ode{melody} section. We don't want two @code{\score} sections
+@c ode{text} to be @code{sopranoLyrics}. Remember to rename both
+@c ode{melody = \relative c' @{ } part) and the name's use (in the
+@c ode{\score} section).
+@c ode{>>} around the music -- that tells LilyPond that there's
+@c Indentation in this example is deliberately poor
+@node Four-part SATB vocal score
+@subsection Four-part SATB vocal score
+
+@untranslated
+
+
+@c index template, SATB
+@c index SATB template
+@c The following should appear as music without code
+@c ode{\voiceXXX} commands should be removed. We also need to specify
+@node Building a score from scratch
+@subsection Building a score from scratch
+
+@untranslated
+
+
+@c index template, writing your own
+@c index example of writing a score
+@c index writing a score, example
+@c index score, example of writing
+@c ode{<< .. >>} for the manual two staff and the pedal organ staff,
+@c ode{@{ .. @}} in case your music is coded in several variables
+@c ode{\voiceOne} and @code{\voiceTwo}, and enter the time signature
+@node Saving typing with variables and functions
+@subsection Saving typing with variables and functions
+
+@untranslated
+
+
+@c index variables
+@c index variables
+@c TODO Avoid padtext - not needed with skylining
+@c TODO Replace the following with a better example -td
+@c Skylining handles this correctly without padText
+@c ode{padtext=}).
+@node Scores and parts
+@subsection Scores and parts
+
+@untranslated
+
+
+@c ode{\transpose f@tie{}c'} indicates that the argument, being
+@c ode{\hornNotes}, should be transposed by a fifth upwards. Sounding
+@c ode{f} is denoted by notated @code{c'}, which corresponds with the
+@c ode{Score} context to true (@code{##t}). Prepending the rest and
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Introduction
+@chapter Introduction
+
+@untranslated
+
+
+@menu
+* Compiling a file::
+* Advanced editors::
+* How to write input files::
+* How to read the manuals::
+@end menu
+
+@node Compiling a file
+@section Compiling a file
+
+@untranslated
+
+
+@menu
+* Entering input::
+* MacOS X::
+* Windows::
+* Command-line::
+@end menu
+
+@node Entering input
+@subsection Entering input
+
+@untranslated
+
+
+@c index compiling
+@c index first example
+@c index example, first
+@c index case sensitive
+@c in this case we don't want verbatim
+@subheading Entering music and viewing output
+@c index PDF file
+@c index viewing music
+@c index text editors
+@c index running LilyPond under MacOS X
+@c index MacOS X, running LilyPond
+@c index running LilyPond under Windows
+@c index Windows, running LilyPond
+@c index running LilyPond under Unix
+@c index Unix, running LilyPond
+@ref{Advanced editors}.
+@node MacOS X
+@subsection MacOS X
+
+@untranslated
+
+
+@node Windows
+@subsection Windows
+
+@untranslated
+
+
+@node Command-line
+@subsection Command-line
+
+@untranslated
+
+
+@node Advanced editors
+@section Advanced editors
+
+@untranslated
+
+
+@menu
+* Denemo::
+* LilyPondTool::
+* Emacs::
+* Vim::
+@end menu
+
+@node Denemo
+@subsection Denemo
+
+@untranslated
+
+
+@node LilyPondTool
+@subsection LilyPondTool
+
+@untranslated
+
+
+@node Emacs
+@subsection Emacs
+
+@untranslated
+
+
+@node Vim
+@subsection Vim
+
+@untranslated
+
+
+@node How to write input files
+@section How to write input files
+
+@untranslated
+
+
+@menu
+* Simple notation::
+* Working on input files::
+@end menu
+
+@node Simple notation
+@subsection Simple notation
+
+@untranslated
+
+
+@c index simple notation
+@c index notation, simple
+@subheading Pitches
+@c index pitches
+@c index relative mode
+@c index quote, single
+@c index comma
+@c index accidentals and relative mode
+@c index relative mode, and accidentals
+@c ode{c} is the closest C to middle C. This is followed by the
+@c ode{''} or @code{,,} -- but be careful that you use two single
+@c " - keeps quotes in order for context-sensitive editor -td
+@subheading Durations (rhythms)
+@c index note durations
+@c index durations
+@c index rhythms
+@c index whole note
+@c index half note
+@c index quarter note
+@c index dotted note
+@c index notating durations
+@subheading Rests
+@c index rest
+@c index notating rests
+@c ode{r}@tie{}:
+@subheading Time signature
+@c index time signature
+@subheading Clef
+@c index clef
+@c index treble
+@c index alto
+@c index tenor
+@c index bass
+@subheading All together
+@node Working on input files
+@subsection Working on input files
+
+@untranslated
+
+
+@c index curly braces
+@c index braces, curly
+@c index comments
+@c index line comment
+@c index comment, line
+@c index block comment
+@c index comment, line
+@c index case sensitive
+@c index whitespace insensitive
+@c index expressions
+@c ode{()} in mathematics. The braces should be surrounded by a
+@c index comments
+@c index line comment
+@c index block comment
+@c ode{%} introduces a line comment; anything after @code{%} on
+@node How to read the manuals
+@section How to read the manuals
+
+@untranslated
+
+
+@menu
+* Omitting braces::
+* Clickable examples::
+* Keyboard navigation::
+* Overview of manuals::
+@end menu
+
+@node Omitting braces
+@unnumberedsubsec Omitting braces
+
+@untranslated
+
+
+@c index how to read the manual
+@c index manual, reading
+@c index reading the manual
+@c index examples, clickable
+@c index clickable examples
+@c index tips for constructing files
+@c index templates
+@c index constructing files, tips
+@c index files, tips for constructing
+@c ode{@w{\relative c'' @{ ... @}}}, as we saw in @ref{Working on
+@c ode{@w{\relative c'' @{ @}}} like this:
+@c ode{\relative}! If we included @code{@w{\relative c'' @{ @}}}
+@node Clickable examples
+@unnumberedsubsec Clickable examples
+
+@untranslated
+
+
+@c no verbatim here
+@node Keyboard navigation
+@unnumberedsubsec Keyboard navigation
+
+@untranslated
+
+
+@node Overview of manuals
+@unnumberedsubsec Overview of manuals
+
+@untranslated
+
+
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined! Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso! Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rglos
+@c @rlearning
+@c @ruser
+@c @ressay
+@c @rprogram
+@c @rlsr
+@c @rinternals
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own. To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Scheme tutorial
+@appendix Scheme tutorial
+
+@untranslated
+
+
+@c index Scheme
+@c index GUILE
+@c index Scheme, in-line code
+@c index accessing Scheme
+@c index evaluating Scheme
+@c index LISP
+@c ode{GUILE_LOAD_PATH} to the directory @code{../usr/shr/guile/1.8}
+@c ode{1} is the (integer) number one, while @code{-1.5} is a
+@c ode{#} symbols to introduce a Scheme section are not required.
+@c ode{(* 3 4)} is replaced by its value @code{12}. A similar thing
+@c index quoting in Scheme
+@c ode{24} for the @code{twentyFour}. Instead, we get the name
+@c ode{twentyFour}.
+@c ode{twentyFour} in the example above) and variables of internal
+@c index properties vs. variables
+@c index variables vs. properties
+@menu
+* Tweaking with Scheme::
+@end menu
+
+@node Tweaking with Scheme
+@appendixsec Tweaking with Scheme
+
+@untranslated
+
+
+@c ode{\override TextScript #'extra-offset = ( 1 . -1)}. But
+@c This isn't a valid example with skylining
+@c It works fine without padText -td
+@c Check this is a valid example with skylining
+@c It is - 'padding still works
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Templates
+@appendix Templates
+
+@untranslated
+
+
+@c bad node name for ancient notation to avoid conflict
+@menu
+* Single staff::
+* Piano templates::
+* String quartet::
+* Vocal ensembles::
+* Orchestral templates::
+* Ancient notation templates::
+* Jazz combo::
+* lilypond-book templates::
+@end menu
+
+@node Single staff
+@appendixsec Single staff
+
+@untranslated
+
+
+@appendixsubsec Notes only
+@appendixsubsec Notes and lyrics
+@appendixsubsec Notes and chords
+@appendixsubsec Notes, lyrics, and chords.
+@node Piano templates
+@appendixsec Piano templates
+
+@untranslated
+
+
+@appendixsubsec Solo piano
+@appendixsubsec Piano and melody with lyrics
+@appendixsubsec Piano centered lyrics
+@appendixsubsec Piano centered dynamics
+@node String quartet
+@appendixsec String quartet
+
+@untranslated
+
+
+@appendixsubsec String quartet
+@appendixsubsec String quartet parts
+@node Vocal ensembles
+@appendixsec Vocal ensembles
+
+@untranslated
+
+
+@appendixsubsec SATB vocal score
+@appendixsubsec SATB vocal score and automatic piano reduction
+@appendixsubsec SATB with aligned contexts
+@node Orchestral templates
+@appendixsec Orchestral templates
+
+@untranslated
+
+
+@appendixsubsec Orchestra, choir and piano
+@c bad node name to avoid node name conflict
+@node Ancient notation templates
+@appendixsec Ancient notation templates
+
+@untranslated
+
+
+@appendixsubsec Transcription of mensural music
+@appendixsubsec Gregorian transcription template
+@node Jazz combo
+@appendixsec Jazz combo
+
+@untranslated
+
+
+@node lilypond-book templates
+@appendixsec lilypond-book templates
+
+@untranslated
+
+
+@appendixsubsec LaTeX
+@appendixsubsec Texinfo
+@appendixsubsec xelatex
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Tweaking output
+@chapter Tweaking output
+
+@untranslated
+
+
+@menu
+* Tweaking basics::
+* The Internals Reference manual::
+* Appearance of objects::
+* Placement of objects::
+* Collisions of objects::
+* Further tweaking::
+@end menu
+
+@node Tweaking basics
+@section Tweaking basics
+
+@untranslated
+
+
+@menu
+* Introduction to tweaks::
+* Objects and interfaces::
+* Naming conventions of objects and properties::
+* Tweaking methods::
+@end menu
+
+@node Introduction to tweaks
+@subsection Introduction to tweaks
+
+@untranslated
+
+
+@ref{Contexts and engravers}, as Contexts, Engravers, and the
+@node Objects and interfaces
+@subsection Objects and interfaces
+
+@untranslated
+
+
+@c index object
+@c index grob
+@c index spanner
+@c index interface
+@c index properties, object
+@c index object properties
+@c index layout object
+@c index object, layout
+@c index interface
+@c ode{Lyrics} objects, as well as objects to represent all
+@node Naming conventions of objects and properties
+@subsection Naming conventions of objects and properties
+
+@untranslated
+
+
+@c index naming conventions for objects
+@c index naming conventions for properties
+@c index objects, naming conventions
+@c index properties, naming conventions
+@ref{Contexts and engravers}. Here for reference is a list
+@node Tweaking methods
+@subsection Tweaking methods
+
+@untranslated
+
+
+@c index tweaking methods
+@c index override command
+@c index override syntax
+@ref{Adding and removing engravers}. We must now introduce some more
+@c ode{\override}. Because this command has to modify
+@c ode{Lyrics}, and we shall omit it in many of the following
+@c index color property, example
+@c index NoteHead, example of overriding
+@c index revert command
+@c index color property, example
+@c index NoteHead, example of overriding
+@c ode{\override} or @code{\set} command to be effective only
+@c index color property, example
+@c index NoteHead, example of overriding
+@c index overrideProperty command
+@c ode{\overrideProperty}, which is occasionally required.
+@c Maybe explain in a later iteration -td
+@c index tweak command
+@c ode{\once \override} would do:
+@c index font-size property, example
+@c index NoteHead, example of overriding
+@c index font-size property, example
+@c index @code{\tweak}, example
+@c ode{\tweak} command is simply
+@c index color property, example
+@c index @code{\tweak}, example
+@c index tuplets, nested
+@c index triplets, nested
+@c index bracket, tuplet
+@c index bracket, triplet
+@c index tuplet bracket
+@c index triplet bracket
+@c index @code{\tweak}, example
+@c index direction property, example
+@c index color property, example
+@c ode{\override} commands:
+@c index text property, example
+@c index tuplet-number function, example
+@c index transparent property, example
+@c index TupletNumber, example of overriding
+@c NOTE Tuplet brackets collide if notes are high on staff
+@c See issue 509
+@node The Internals Reference manual
+@section The Internals Reference manual
+
+@untranslated
+
+
+@c index Internals Reference
+@menu
+* Properties of layout objects::
+* Properties found in interfaces::
+* Types of properties::
+@end menu
+
+@node Properties of layout objects
+@subsection Properties of layout objects
+
+@untranslated
+
+
+@c index properties of layout objects
+@c index properties of grobs
+@c index grobs, properties of
+@c index layout objects, properties of
+@c index Internals Reference manual
+@c ode{\override} command would be needed. But is there a
+@c index override example
+@c index Internals Reference, example of using
+@c index @code{\addlyrics} example
+@c ode{thickness} (number)
+@c ode{thickness} and that the new value should be a number
+@c index Slur example of overriding
+@c index thickness property, example
+@subheading Finding the context
+@c index context, finding
+@c index context, identifying correct
+@c ode{Slur_engraver} page. At the very bottom it tells
+@subheading Overriding once only
+@c index overriding once only
+@c index once override
+@c index Slur, example of overriding
+@c index thickness property, example
+@subheading Reverting
+@c index revert
+@c index default properties, reverting to
+@c ode{\once} placed immediately before each of the notes where
+@c index Slur, example of overriding
+@c index thickness property, example
+@c index Slur, example of overriding
+@c index thickness property, example
+@node Properties found in interfaces
+@subsection Properties found in interfaces
+
+@untranslated
+
+
+@c index interface
+@c index interface properties
+@c index properties in interfaces
+@c ode{\override} command do we need to do this? We first look in the
+@c ode{font-interface}.
+@c ode{font-interface} but @code{font-shape} is not? The answer is
+@c ode{font-shape} is not. The entries in @code{LyricText} then tell
+@c ode{LyricText}. Other objects which support @code{font-interface}
+@c ode{italic}. As before, we'll omit the context.
+@c ode{thickness} or @code{font-shape}, others are used as values that
+@c index font-shape property, example
+@c index italic, example
+@c index LyricText, example of overriding
+@c index @code{\addlyrics}, example
+@subheading Specifying the context in lyric mode
+@c index context, specifying in lyric mode
+@c index lyric mode, specifying context
+@node Types of properties
+@subsection Types of properties
+
+@untranslated
+
+
+@c index property types
+@c ode{symbol}. To be valid, the value given to a property
+@c ode{\override} command.
+@node Appearance of objects
+@section Appearance of objects
+
+@untranslated
+
+
+@menu
+* Visibility and color of objects::
+* Size of objects::
+* Length and thickness of objects::
+@end menu
+
+@node Visibility and color of objects
+@subsection Visibility and color of objects
+
+@untranslated
+
+
+@c ode{BarLine}. Its properties include two that control its
+@subheading stencil
+@c index stencil property
+@c index BarLine, example of overriding
+@c index stencil property, example
+@c index BarLine, example of overriding
+@c index stencil property, example
+@c ode{stencil} property of the @code{NoteHead} object is set to
+@c ode{#f}. If this is the case, you can instead use the
+@c ode{point-stencil} function, which sets the stencil to a object
+@subheading break-visibility
+@c index break-visibility property
+@c ode{break-visibility} property requires a vector of three booleans.
+@c ode{\override} command.
+@c index BarLine, example of overriding
+@c index break-visibility property, example
+@subheading transparent
+@c index transparent property
+@c index transparency
+@c ode{grob-interface}. So the command to make the time signature
+@c index TimeSignature, example of overriding
+@c index transparent property, example
+@c index TimeSignature, example of overriding
+@c index stencil property, example
+@subheading color
+@c index color property
+@c index BarLine, example of overriding
+@c index color property, example
+@c index color, X11
+@c index X11 colors
+@c ode{x11-color}, like this:
+@c index BarLine, example of overriding
+@c index color property, example
+@c index rgb colors
+@c index color, rgb
+@c index BarLine, example of overriding
+@c index color property, example
+@c index StaffSymbol, example of overriding
+@c index TimeSignature, example of overriding
+@c index Clef, example of overriding
+@c index NoteHead, example of overriding
+@c index Stem, example of overriding
+@c index BarLine, example of overriding
+@c index color property, example
+@c index x11-color, example of using
+@node Size of objects
+@subsection Size of objects
+
+@untranslated
+
+
+@c index changing size of objects
+@c index size of objects
+@c index objects, size of
+@c index objects, changing size of
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index stencil property, example
+@c index Clef, example of overriding
+@c index TimeSignature, example of overriding
+@c ode{\set} or @code{\override} commands embedded in the
+@c ode{\with} clause, or if none have been set there, the normal
+@c ode{alignBelowContext}, are two such properties -- once the staff
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index Clef, example of overriding
+@c index TimeSignature, example of overriding
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index Clef, example of overriding
+@c index TimeSignature, example of overriding
+@c index fontSize property, example
+@node Length and thickness of objects
+@subsection Length and thickness of objects
+
+@untranslated
+
+
+@c index distances
+@c index thickness
+@c index length
+@c index magstep
+@c index size, changing
+@c index stem length, changing
+@c index staff line spacing, changing
+@c ode{line-thickness.} For example, by default, the lines of
+@c ode{magstep} provided for exactly this purpose. It takes
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index Clef, example of overriding
+@c index TimeSignature, example of overriding
+@c index fontSize property, example
+@c index StaffSymbol, example of overriding
+@c index magstep function, example of using
+@c index staff-space property, example
+@c index stencil property, example
+@c ode{thickness} property. An example of changing the thickness
+@node Placement of objects
+@section Placement of objects
+
+@untranslated
+
+
+@menu
+* Automatic behavior::
+* Within-staff objects::
+* Outside-staff objects::
+@end menu
+
+@node Automatic behavior
+@subsection Automatic behavior
+
+@untranslated
+
+
+@c index within-staff objects
+@c index outside-staff objects
+@c index objects, within-staff
+@c index objects, outside-staff
+@c ode{outside-staff-priority} property to determine the order in
+@c ode{outside-staff-priority}. The outside-staff objects are
+@c ode{outside-staff-priority}, and placed so that they do not
+@c ode{outside-staff-priority} the one encountered first will be
+@c index markup example
+@node Within-staff objects
+@subsection Within-staff objects
+
+@untranslated
+
+
+@c index down
+@c index up
+@c index center
+@c index neutral
+@c index Stem, example of overriding
+@c index direction property, example
+@c ode{UP} for stems, but for some objects it means @q{center}.
+@c ode{\once \override} command or use the predefined command
+@c ode{\xxxNeutral} command.
+@subheading Fingering
+@c index fingering, placement
+@c index fingering, chords
+@c index Fingering, example of overriding
+@c index direction property, example
+@c index fingering example
+@c index fingering example
+@c index fingering example
+@c ode{\set fingeringOrientations} command. The format of this
+@c ode{\set fingeringOrientations = #'([up] [left/right] [down])}
+@c ode{\set} is used because @code{fingeringOrientations} is a
+@c ode{New_fingering_engraver}.
+@c ode{up} appears in the list), below (if @code{down} appears),
+@c ode{right} are mutually exclusive -- fingering may be placed
+@c index fingering example
+@c index @code{\set}, example of using
+@c index fingeringOrientations property, example
+@c ode{Fingering} object in the IR to be @code{-5}, so let's
+@node Outside-staff objects
+@subsection Outside-staff objects
+
+@untranslated
+
+
+@c ode{grob-interface} and so is a property of all layout objects.
+@c ode{Staff} or @code{Voice} contexts.
+@c index text spanner
+@c index ottava bracket
+@c index TextSpanner, example of overriding
+@c index bound-details property, example
+@c index tweaking bar number placement
+@c index bar numbers, tweaking placement
+@c index tweaking metronome mark placement
+@c index metronome mark, tweaking placement
+@c index tweaking rehearsal mark placement
+@c index rehearsal marks, tweaking placement
+@c ode{Bar_number_engraver}, @code{Metronome_mark_engraver} or
+@c ode{Mark_engraver} respectively should be removed from the
+@c ode{Score} context and placed in the top @code{Staff} context. If
+@c ode{outside-staff-priority} values:
+@c ode{TextSpanner}, remembering that @code{OttavaBracket} is created
+@c index TextSpanner, example of overriding
+@c index bound-details property, example
+@c index slurs and outside-staff-priority
+@c index slurs and articulations
+@c index articulations and slurs
+@c index TextScript, example of overriding
+@c index outside-staff-priority property, example
+@subheading \textLengthOn
+@c index notes, spreading out with text
+@c ode{\textLengthOff}. Remember @code{\once} only works with
+@c ode{\override}, @code{\set}, @code{\revert} or @code{unset},
+@c index markup text, allowing collisions
+@c index TextScript, example of overriding
+@c index outside-staff-priority property, example
+@subheading Dynamics
+@c index tweaking dynamics placement
+@c index dynamics, tweaking placement
+@subheading Grob sizing
+@c index grob sizing
+@c index sizing grobs
+@c ode{grob-interface}.
+@c index @code{extra-spacing-width}
+@c ode{extra-spacing-width} to @code{'(+inf.0 . -inf.0)}. So
+@c ode{'(0 . 0)} so the true width shines through. This is
+@c index DynamicText, example of overriding
+@c index extra-spacing-width property, example
+@c index DynamicText, example of overriding
+@c index extra-spacing-width property, example
+@c ode{staff-padding} which is covered in the following section.
+@node Collisions of objects
+@section Collisions of objects
+
+@untranslated
+
+
+@menu
+* Moving objects::
+* Fixing overlapping notation::
+* Real music example::
+@end menu
+
+@node Moving objects
+@subsection Moving objects
+
+@untranslated
+
+
+@c index moving overlapping objects
+@c index moving colliding objects
+@c index moving colliding grobs
+@c index objects, moving colliding
+@c index grobs, moving colliding
+@c ode{direction}
+@ref{Within-staff objects}.
+@c ode{padding}, @code{left-padding},
+@c ode{right-padding}, @code{staff-padding}
+@c index padding
+@c index left-padding property
+@c index padding property
+@c index right-padding property
+@c index staff-padding property
+@c ode{side-position-interface}.
+@c ode{AccidentalPlacement} object has any effect on the placement
+@c ode{padding} property: @code{padding} controls the minimum amount of
+@c ode{side-position-interface} and the nearest other object (generally
+@c ode{self-alignment-X}
+@c index self-alignment-X property
+@c ode{-1} and @code{+1} may be specified, where @code{-1} is
+@c ode{extra-spacing-width}
+@c index extra-spacing-width property
+@c ode{item-interface}. It takes two numbers, the first is added
+@c ode{staff-position}
+@c index staff-position property
+@c ode{staff-position} is a property of the
+@c ode{staff-symbol-referencer-interface}, which is supported by
+@c ode{force-hshift}
+@c index force-hshift property
+@ref{Explicitly instantiating voices}) do not resolve the note
+@c index extra-offset property
+@c ode{grob-interface}. It takes a pair of numbers which specify the
+@c index positions property
+@node Fixing overlapping notation
+@subsection Fixing overlapping notation
+
+@untranslated
+
+
+@subheading padding property
+@c index padding
+@c index fixing overlapping notation
+@c index overlapping notation
+@c index Script, example of overriding
+@c index padding property, example
+@c index MetronomeMark, example of overriding
+@c index padding property, example
+@c ode{Voice} context will not be noticed. For more details, see
+@subheading left-padding and right-padding
+@c index left-padding property
+@c index right-padding property
+@c index Accidental, example of overriding
+@c index text property, example
+@c index stencil property, example
+@c index AccidentalPlacement, example of overriding
+@c index right-padding property, example
+@subheading staff-padding property
+@c index aligning objects on a baseline
+@c index objects, aligning on a baseline
+@c ode{staff-padding} can be used to align objects such as dynamics
+@c ode{DynamicLineSpanner}. This is because the baseline should apply
+@c index DynamicText, example of overriding
+@c index extra-spacing-width property, example
+@c index DynamicLineSpanner, example of overriding
+@c index staff-padding property, example
+@subheading self-alignment-X property
+@c index StringNumber, example of overriding
+@c index self-alignment-X property, example
+@subheading staff-position property
+@c index object collision within a staff
+@c ode{staff-position} is set to -4 for MultiMeasureRest, so we need to
+@c index MultiMeasureRest, example of overriding
+@c index staff-position property, example
+@subheading extra-offset property
+@c index positioning objects
+@c index positioning grobs
+@c index objects, positioning
+@c index grobs, positioning
+@c index Fingering, example of overriding
+@c index extra-offset property, example
+@subheading positions property
+@c index controlling tuplets, slurs, phrasing slurs, and beams manually
+@c index manually controlling tuplets, slurs, phrasing slurs, and beams
+@c index tuplet beams, controlling manually
+@c index slurs, controlling manually
+@c index phrasing slurs, controlling manually
+@c index beams, controlling manually
+@c index PhrasingSlur, example of overriding
+@c index positions property, example
+@c index Beam, example of overriding
+@c index positions property, example
+@subheading force-hshift property
+@c FIXME: formatting stuff (ie not important right now IMO)
+@c @a nchor Chopin finally corrected TODOgp
+@c index NoteColumn, example of overriding
+@c index force-hshift property, example
+@node Real music example
+@subsection Real music example
+
+@untranslated
+
+
+@c The following should appear as music without code
+@c This example should not be indexed
+@c ode{staff-position} property, which is specified in half staff
+@c ode{\once \override Tie #'staff-position = #3.5}
+@c index Tie, example of overriding
+@c index staff-position property, example
+@c index NoteColumn, example of overriding
+@c index force-hshift property, example
+@c index Stem, example of overriding
+@c index transparent property, example
+@node Further tweaking
+@section Further tweaking
+
+@untranslated
+
+
+@menu
+* Other uses for tweaks::
+* Using variables for tweaks::
+* Style sheets::
+* Other sources of information::
+* Avoiding tweaks with slower processing::
+* Advanced tweaks with Scheme::
+@end menu
+
+@node Other uses for tweaks
+@subsection Other uses for tweaks
+
+@untranslated
+
+
+@c index transparent property, use of
+@c index objects, making invisible
+@c index removing objects
+@c index objects, removing
+@c index hiding objects
+@c index objects, hiding
+@c index invisible objects
+@c index objects, invisible
+@c index tying notes across voices
+@subheading Tying notes across voices
+@c index Stem, example of overriding
+@c index transparent property, example
+@c ode{length} to @code{8},
+@subheading Simulating a fermata in MIDI
+@c index stencil property, use of
+@c index fermata, implementing in MIDI
+@c index MetronomeMark, example of overriding
+@c index transparent property, example
+@c index MetronomeMark, example of overriding
+@c index stencil property, example
+@node Using variables for tweaks
+@subsection Using variables for tweaks
+
+@untranslated
+
+
+@c index variables, using for tweaks
+@c index using variables for tweaks
+@c index tweaks, using variables for
+@c ode{\override Lyrics . LyricText #'font-shape = #'italic}
+@c ode{\override Lyrics . LyricText #'font-series = #'bold}
+@c ode{\revert Lyrics . LyricText #'font-shape}
+@c ode{\revert Lyrics . LyricText #'font-series}
+@c index LyricText, example of overriding
+@c index font-shape property, example
+@c index font-series property, example
+@node Style sheets
+@subsection Style sheets
+
+@untranslated
+
+
+@ref{Tweaking output}, for details. But what if you have many
+@ref{Advanced tweaks with Scheme}.
+@c We have to do this awkward example/lilypond-non-verbatim
+@c because we can't do the \include stuff in the manual.
+@c ode{\include "definitions.ily"} with
+@c ode{\include "web-publish.ily"}. Of course, we could make this
+@node Other sources of information
+@subsection Other sources of information
+
+@untranslated
+
+
+@node Avoiding tweaks with slower processing
+@subsection Avoiding tweaks with slower processing
+
+@untranslated
+
+
+@node Advanced tweaks with Scheme
+@subsection Advanced tweaks with Scheme
+
+@untranslated
+
+
+@c ode{\tweak} commands, an even more powerful way of modifying
+@c index x11-color function, example of using
+@c index NoteHead, example of overriding
+@c index color property, setting to Scheme procedure
+
+@c -- SKELETON FILE --
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+ Translation of GIT committish: 8135382760aa0adfac5aed987a272c394e59dbdb
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@include version.itexi
+@include common-macros.itexi
+
+
+@c ***** Displaying text *****
+
+@c To get decent quotes in `foo' and ``foo''.
+@c FIXME: Use thin spaces for @qq.
+
+@ifnotinfo
+
+@macro q{TEXT}
+@quoteleft{}\TEXT\@quoteright{}
+@end macro
+
+@macro qq{TEXT}
+@guillemetleft{}@tie{}\TEXT\@tie{}@guillemetright{}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro q{TEXT}
+`\TEXT\'
+@end macro
+
+@macro qq{TEXT}
+« \TEXT\ »
+@end macro
+
+@end ifinfo
+
+
+@ifhtml
+
+@macro warning{TEXT}
+@cartouche
+@b{Note :} \TEXT\
+@end cartouche
+@end macro
+
+@end ifhtml
+
+@ifnothtml
+
+@macro warning{TEXT}
+@quotation
+@quotation
+@cartouche
+@b{Note :} \TEXT\
+@end cartouche
+@end quotation
+@end quotation
+@end macro
+
+@end ifnothtml
+
+
+
+@c ***** Headings in a doc subsection *****
+
+@c Don't insert an empty line after @predefined! Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+
+@macro predefined
+@noindent
+@subsubheading Commandes prédéfinies
+@end macro
+
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+
+@macro endpredefined
+@c
+@end macro
+
+
+@macro snippets
+@noindent
+@subsubheading Morceaux choisis
+@end macro
+
+
+@c obsolete, remove when translation is fully updated
+@macro commonprop
+@noindent
+@subsubheading Propriétés couramment modifiées
+@end macro
+
+
+@c Don't insert an empty line after @seealso! Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+
+@macro seealso
+@noindent
+@subsubheading Voir aussi
+@indent
+@end macro
+
+
+@macro knownissues
+@noindent
+@subsubheading Problèmes connus et avertissements
+@end macro
+
+
+
+
+@c ***** Links and references *****
+
+@c Definitions for references:
+@c
+@c @rglos
+@c @rlearning
+@c @ruser
+@c @rprogram
+@c @rlsr
+@c @rinternals
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+
+
+@c *** not TeX ***
+
+@ifnottex
+
+@c ** bigpage **
+
+@ifset bigpage
+
+@macro rglos{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,music-glossary-big-page,Glossaire}
+@end macro
+
+@macro rglosnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Glossaire}
+@end macro
+
+@macro rlearning{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,learning-big-page,Manuel d'initiation}
+@end macro
+
+@macro rlearningnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Manuel d'initiation}
+@end macro
+
+@macro ruser{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,notation-big-page,Manuel de notation}
+@end macro
+
+@macro rusernamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Manuel de notation}
+@end macro
+
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,essay-big-page,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@end macro
+
+@macro rprogram{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,application-big-page,Manuel d'utilisation du programme}
+@end macro
+
+@macro rprogramnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Manuel d'utilisation du programme}
+@end macro
+
+@macro rlsr{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,snippets-big-page,Exemples de code}
+@end macro
+
+@macro rlsrnamed{TEXT,DISPLAY}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Exemples de code}
+@end macro
+
+@macro rinternals{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,internals-big-page,Référence des propriétés internes}
+@end macro
+
+@macro rinternalsnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,,internals-big-page,Référence des propriétés internes}
+@end macro
+
+@end ifset
+
+
+@c ** not bigpage **
+
+@ifclear bigpage
+
+@macro rglos{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,music-glossary,Glossaire}
+@end macro
+
+@macro rglosnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Glossaire}
+@end macro
+
+@macro rlearning{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,learning,Manuel d'initiation}
+@end macro
+
+@macro rlearningnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,learning,Manuel d'initiation}
+@end macro
+
+@macro ruser{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,notation,Manuel de notation}
+@end macro
+
+@macro rusernamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,notation,Manuel de notation}
+@end macro
+
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,essay,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@end macro
+
+@macro rprogram{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,application,Manuel d'utilisation du programme}
+@end macro
+
+@macro rprogramnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,application,Manuel d'utilisation du programme}
+@end macro
+
+@macro rlsr{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,snippets,Exemples de code}
+@end macro
+
+@macro rlsrnamed{TEXT,DISPLAY}
+@ref{\TEXT\,,\DISPLAY\,snippets,Exemples de code}
+@end macro
+
+@macro rinternals{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,internals,Référence des propriétés internes}
+@end macro
+
+@macro rinternalsnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,,internals,Référence des propriétés internes}
+@end macro
+
+@end ifclear
+
+@end ifnottex
+
+
+@c *** TeX ***
+
+@iftex
+
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own. To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+
+@tex
+\gdef\lilyvindex#1{\doind{vr}{\code #1}\ignorespaces}
+@end tex
+
+@macro rglos{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,music-glossary,Glossaire}
+@end macro
+
+@macro rglosnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Glossaire}
+@end macro
+
+@macro rlearning{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,learning.fr,Manuel d'initiation}
+@end macro
+
+@macro rlearningnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,learning.fr,Manuel d'initiation}
+@end macro
+
+@macro ruser{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,notation.fr,Manuel de notation}
+@end macro
+
+@macro rusernamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,notation.fr,Manuel de notation}
+@end macro
+
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@end macro
+
+@macro rprogram{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,application.fr,Manuel d'utilisation du programme}
+@end macro
+
+@macro rprogramnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,application.fr,Manuel d'utilisation du programme}
+@end macro
+
+@macro rlsr{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,snippets,Exemples de code}
+@end macro
+
+@macro rlsrnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,snippets,Exemples de code}
+@end macro
+
+@macro rinternals{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,internals,Référence des propriétés internes}
+@end macro
+
+@macro rinternalsnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,internals,Référence des propriétés internes}
+@end macro
+
+@end iftex
+
+
+@c ***** Macros specific to translated docs *****
+
+@macro englishref
+Cette section n'est pas encore encore traduite, veuillez
+vous reporter à la documentation correspondante en anglais.
+@end macro
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@setfilename lilypond-notation.info
+@settitle GNU LilyPond Notation Reference
+@documentencoding UTF-8
+@documentlanguage nl
+@include macros.itexi
+@afourpaper
+@c Keep this here, since it pertains to the direntry below.
+@c * lilypond: (lilypond-application)Running LilyPond. Invoking the
+@c LilyPond program.
+@c
+@c Info files are no longer installed in a subdirectory, images are
+@c expected to be found in lilypond/ subdirectory.
+@c don't remove this comment.
+@ifnottex
+@node Top
+@top GNU LilyPond --- Notation Reference
+
+@untranslated
+
+
+@chapheading The music typesetter
+@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
+@end ifnottex
+@c This produces the unified index
+@finalout
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{Notation Reference}
+@author The LilyPond development team
+@quotation
+@end quotation
+@vskip 20pt
+@end titlepage
+@copying
+@quotation
+@end quotation
+@end copying
+@ifnottex
+@quotation
+@end quotation
+@end ifnottex
+@ifnottex
+@c @rlearning{About the documentation}.
+@c index web site
+@c index URL
+@include dedication.itely
+@menu
+* Musical notation::
+* Specialist notation::
+* General input and output::
+* Spacing issues::
+* Changing defaults::
+* Interfaces for programmers::
+* Notation manual tables::
+* Cheat sheet::
+* LilyPond grammar::
+* GNU Free Documentation License::
+* LilyPond command index::
+* LilyPond index::
+@end menu
+
+@end ifnottex
+@c * Literature list:: Reference works about music notation.
+@contents
+@include notation/notation.itely
+@include notation/specialist.itely
+@include notation/input.itely
+@include notation/spacing.itely
+@include notation/changing-defaults.itely
+@include notation/programming-interface.itely
+@c @include notation/literature.itely
+@include notation/notation-appendices.itely
+@include notation/cheatsheet.itely
+@node LilyPond grammar
+@appendix LilyPond grammar
+
+@untranslated
+
+
+@include fdl.itexi
+@node LilyPond command index
+@appendix LilyPond command index
+
+@untranslated
+
+
+@node LilyPond index
+@appendix LilyPond index
+
+@untranslated
+
+
+@bye
+
+@c -- SKELETON FILE --
--- /dev/null
+depth = ../../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Changing defaults
+@chapter Changing defaults
+
+@untranslated
+
+
+@c index Internals Reference
+@c leave the @uref as one long line.
+@c ode{#}.@footnote{@rlearning{Scheme tutorial}, contains a short tutorial
+@menu
+* Interpretation contexts::
+* Explaining the Internals Reference::
+* Modifying properties::
+* Useful concepts and properties::
+* Advanced tweaks::
+@end menu
+
+@node Interpretation contexts
+@section Interpretation contexts
+
+@untranslated
+
+
+@menu
+* Contexts explained::
+* Creating contexts::
+* Keeping contexts alive::
+* Modifying context plug-ins::
+* Changing context default settings::
+* Defining new contexts::
+* Aligning contexts::
+@end menu
+
+@node Contexts explained
+@subsection Contexts explained
+
+@untranslated
+
+
+@c TODO Rethink and rewrite
+@c TODO Improve layout, order and consistency of wording -td
+@c TODO Add introduction which explains contexts in generality -td
+@c TODO Describe propagation of property values -td
+@menu
+* Score - the master of all contexts::
+* Top-level contexts - staff containers::
+* Intermediate-level contexts - staves::
+* Bottom-level contexts - voices::
+@end menu
+
+@node Score - the master of all contexts
+@unnumberedsubsubsec Score - the master of all contexts
+
+@untranslated
+
+
+@c ode{\score @{@dots{}@}} or @code{\layout @{@dots{}@}} block is
+@node Top-level contexts - staff containers
+@unnumberedsubsubsec Top-level contexts - staff containers
+
+@untranslated
+
+
+@node Intermediate-level contexts - staves
+@unnumberedsubsubsec Intermediate-level contexts - staves
+
+@untranslated
+
+
+@c ode{Voice} contexts.
+@node Bottom-level contexts - voices
+@unnumberedsubsubsec Bottom-level contexts - voices
+
+@untranslated
+
+
+@node Creating contexts
+@subsection Creating contexts
+
+@untranslated
+
+
+@c TODO \new Score and \score
+@c TODO more complete descriptions rather than learning style
+@c index new contexts
+@c index Context, creating
+@c ode{Voice}). This command creates a new context, and starts
+@c ode{\new Staff}.
+@c index creating contexts
+@ref{Running a function on all layout objects}). Without an explicit
+@c ode{\context}, it is usually applied to @code{Voice}
+@node Keeping contexts alive
+@subsection Keeping contexts alive
+
+@untranslated
+
+
+@c index contexts, keeping alive
+@c index contexts, lifetime
+@c ode{\change} commands, associating lyrics with a voice with
+@c ode{\lyricsto} commands, or when adding further musical events to
+@c ode{Voice} contexts in a @code{Staff} context or in a
+@c ode{<<...>>} construct will always persist to the end of the
+@c ode{<<...>>} constructs.
+@c index lyrics, aligning with sporadic melody
+@node Modifying context plug-ins
+@subsection Modifying context plug-ins
+
+@untranslated
+
+
+@c TODO Should this be Modifying engravers or Modifying contexts?
+@c ode{Note_head_engraver} and the @code{Staff} context contains a
+@c ode{Key_signature_engraver}.
+@c ode{Clef_engraver} from a @code{Staff} context,
+@c ode{Staff} context, we can have a score where each staff has its own
+@c index polymetric scores
+@c index Time signatures, multiple
+@c ode{Bar_engraver} must normally be first, and
+@node Changing context default settings
+@subsection Changing context default settings
+
+@untranslated
+
+
+@c ode{Score}, @code{Staff} and @code{Voice} contexts may be specified
+@c ode{Voice} contexts in a similar way.
+@c ode{\Staff} settings. If you wish to change the defaults for a
+@c TODO: add \with in here.
+@node Defining new contexts
+@subsection Defining new contexts
+
+@untranslated
+
+
+@c ode{Voice} context from scratch. It will be similar to
+@c ode{Voice}, but only prints centered slash note heads. It can be used
+@c ode{\layout} block,
+@node Aligning contexts
+@subsection Aligning contexts
+
+@untranslated
+
+
+@c TODO Better example needed. Ref LM, and expand on it.
+@c index ossia
+@c index nested contexts
+@c index contexts, nested
+@node Explaining the Internals Reference
+@section Explaining the Internals Reference
+
+@untranslated
+
+
+@menu
+* Navigating the program reference::
+* Layout interfaces::
+* Determining the grob property::
+* Naming conventions::
+@end menu
+
+@node Navigating the program reference
+@subsection Navigating the program reference
+
+@untranslated
+
+
+@c TODO remove this (it's in the LM)
+@c Replace with more factual directions
+@ref{Fingering instructions}), you will notice:
+@quotation
+@end quotation
+@c outdated info; probably will delete.
+@quotation
+@end quotation
+@quotation
+@end quotation
+@c ode{Fingering_engraver} plug-in will process them.
+@c I can't figure out what this is supposed to mean. -gp
+@c old info? it doesn't make any sense to me with our current docs.
+@quotation
+@end quotation
+@c ode{Music definitions}
+@node Layout interfaces
+@subsection Layout interfaces
+
+@untranslated
+
+
+@c index interface, layout
+@c index layout interface
+@c index grob
+@c ode{Fingering} object. For example, the page says
+@quotation
+@c ode{padding} (dimension, in staff space):
+@c ode{0.5}
+@end quotation
+@quotation
+@end quotation
+@node Determining the grob property
+@subsection Determining the grob property
+
+@untranslated
+
+
+@c TODO remove this (it's in the LM)
+@c Replace with more factual directions
+@quotation
+@c ode{side-position-interface}
+@end quotation
+@c index padding
+@quotation
+@end quotation
+@quotation
+@end quotation
+@node Naming conventions
+@subsection Naming conventions
+
+@untranslated
+
+
+@node Modifying properties
+@section Modifying properties
+
+@untranslated
+
+
+@c TODO change the menu and subsection node names to use
+@c backslash once the new macro to handle the refs
+@c is available. Need to find and change all refs at
+@c the same time. -td
+@menu
+* Overview of modifying properties::
+* The set command::
+* The override command::
+* The tweak command::
+* set versus override::
+@end menu
+
+@node Overview of modifying properties
+@subsection Overview of modifying properties
+
+@untranslated
+
+
+@c ode{Stem} or @code{NoteHead}, and @var{property} is an internal
+@c ode{\once} applies the change during one timestep only.
+@c ode{Beam} comes after the Beam is started, so it has no effect.
+@c ode{\revert} in the next example does not do anything.
+@c leave this as a long long
+@node The set command
+@subsection The @code{\set} command
+
+@untranslated
+
+
+@c index properties
+@c index changing properties
+@c ode{Lyrics}) is used. In this example,
+@c ode{Voice}s in the current stave. The change is applied
+@c index \once
+@node The override command
+@subsection The @code{\override} command
+
+@untranslated
+
+
+@c index internal documentation
+@c index finding graphical objects
+@c index graphical object descriptions
+@c index tweaking
+@c index internal documentation
+@node The tweak command
+@subsection The @code{\tweak} command
+
+@untranslated
+
+
+@c index tweaking
+@c index chord, modifying one note in
+@c ode{ChordEvent} event before the note, so separating the tweak
+@c ode{ChordEvent} in the music stream, so remaining adjacent to the
+@c TODO expand to include any further uses of \tweak
+@c TODO add examples of these
+@c ode{\tweak} command in the input stream by the automatic
+@ref{Displaying music expressions}.
+@c index tweaks in a variable
+@c index tweaks in lyrics
+@c index tweaking control points
+@c index control points, tweaking
+@node set versus override
+@subsection @code{\set} vs. @code{\override}
+
+@untranslated
+
+
+@c ode{\override}. There are actually two different kinds of
+@c ode{studlyCaps}. They mostly control the translation from
+@c ode{measurePosition} is an obvious example of
+@c ode{\override} is actually a shorthand;
+@c leave this long line -gp
+@c ode{dashed-words}. The values of grob properties change
+@c ode{fontSize} is a special property: it is equivalent to
+@node Useful concepts and properties
+@section Useful concepts and properties
+
+@untranslated
+
+
+@menu
+* Input modes::
+* Direction and placement::
+* Context layout order::
+* Distances and measurements::
+* Staff symbol properties::
+* Spanners::
+* Visibility of objects::
+* Line styles::
+* Rotating objects::
+@end menu
+
+@node Input modes
+@subsection Input modes
+
+@untranslated
+
+
+@ref{Chord notation}. Chords are rendered as notes on a staff.
+@ref{Basic percussion notation}.
+@ref{Entering figured bass}.
+@ref{Default tablatures}.
+@ref{Automatic fret diagrams} or you can enter them as a markup
+@ref{Fret diagram markups}).
+@c ode{\lyricsto} command which associates the following lyrics
+@ref{Text markup commands}.
+@c silly work-around for texinfo broken-ness
+@c (@strong{Note...} causes a spurious cross-reference in Info)
+@c ode{\notemode} command. Input is interpreted as pitches,
+@node Direction and placement
+@subsection Direction and placement
+
+@untranslated
+
+
+@c TODO Add table showing these
+@c ode{DOWN} may be used instead of @code{1} and @code{-1}
+@c ode{direction} to @code{0} or @code{CENTER}. Alternatively,
+@c ode{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
+@c ode{1} or @code{RIGHT} means @qq{to the right}. @code{0}
+@node Context layout order
+@subsection Context layout order
+
+@untranslated
+
+
+@c index contexts, layout order
+@node Distances and measurements
+@subsection Distances and measurements
+
+@untranslated
+
+
+@c index distances, absolute
+@c index distances, scaled
+@c ode{\in}@tie{}(inches), or @code{\pt}@tie{}(points, 1/72.27
+@c ode{\staff-space} to the quantity.
+@c ode{StaffSymbol}. Scaled distances automatically scale with any
+@c ode{staff-space} property of @code{StaffSymbol}, but fonts scale
+@c ode{staff-space} property of @code{StaffSymbol} and the size of
+@c ode{staff-space}. For an explanation and an example of its use,
+@ref{Page formatting},
+@ref{Setting the staff size}.
+@node Staff symbol properties
+@subsection Staff symbol properties
+
+@untranslated
+
+
+@c index adjusting staff symbol
+@c index drawing staff symbol
+@c index staff symbol, setting of
+@c TODO Extend or remove this section. See also NR 1.6.2 Staff symbol
+@c Need to think of uses for these properties. Eg 'line-positions
+@c is used in a snippet to thicken centre line.
+@c If retained, add @ref to here in 1.6.2 -td
+@c ode{'line-count} property. The number of staff lines is
+@node Spanners
+@subsection Spanners
+
+@untranslated
+
+
+@unnumberedsubsubsec Using the @code{spanner-interface}
+@c ode{minimum-length} property. Increasing this usually has the
+@c ode{springs-and-rods} property is set:
+@c ode{to-barline}. By default this is true, causing hairpins and
+@unnumberedsubsubsec Using the @code{line-spanner-interface}
+@c ode{ly:line-interface::print}. This routine determines the
+@c ode{right} sub-lists of the @code{bound-details} property
+@c ode{LEFT}) makes the line start/end at the left side of the note
+@c ode{Y} sub-properties. Setting either @code{stencil-align-dir-y}
+@c ode{DOWN} means align the @emph{bottom} edge of the text with
+@node Visibility of objects
+@subsection Visibility of objects
+
+@untranslated
+
+
+@c index objects, visibility of
+@c index grobs, visibility of
+@c index visibility of objects
+@c ode{break-visibility} property can be overridden. The first
+@menu
+* Removing the stencil::
+* Making objects transparent::
+* Painting objects white::
+* Using break-visibility::
+* Special considerations::
+@end menu
+
+@node Removing the stencil
+@unnumberedsubsubsec Removing the stencil
+
+@untranslated
+
+
+@c index stencil, removing
+@c ode{\revert}.
+@node Making objects transparent
+@unnumberedsubsubsec Making objects transparent
+
+@untranslated
+
+
+@c index transparent, making objects
+@node Painting objects white
+@unnumberedsubsubsec Painting objects white
+
+@untranslated
+
+
+@c index objects, coloring
+@c index coloring objects
+@c index layers
+@c index printing order
+@c index overwriting objects
+@c index objects, overwriting
+@c index grobs, overwriting
+@c ode{1}, although a few objects, including @code{StaffSymbol} and
+@c ode{BarLine}, are assigned a value of @code{0}. The order of
+@c ode{layer} value @code{0}), so overwriting them. To change this,
+@c ode{layer}, say @code{-1}, so that it is drawn earlier:
+@node Using break-visibility
+@unnumberedsubsubsec Using break-visibility
+
+@untranslated
+
+
+@c TODO Add making other objects breakable
+@c index break-visibility
+@c ode{break-visibility} property to control their visibility
+@c Leave this ref on a newline - formats incorrectly otherwise -td
+@c omit Ambitus as it appears not to be affected by break-visibility -td
+@c @item @code{Ambitus} @tab as specified @tab @code{begin-of-line-visible}
+@c omit the following item until it can be explained -td
+@c @item @code{BreakAlignGroup} @tab @code{Score} @tab calculated
+@c omit KeyCancellation until it can be explained -td
+@c @item @code{KeyCancellation} @tab ?? @tab @code{begin-of-line-invisible}
+@c omit LeftEdge until it can be explained -td
+@c @item @code{LeftEdge} @tab @code{Score} @tab @code{center-invisible}
+@c ode{break-visibility} must be present, not all of them are
+@node Special considerations
+@unnumberedsubsubsec Special considerations
+
+@untranslated
+
+
+@c index key signature, visibility following explicit change
+@c index explicitKeySignatureVisibility
+@c index clef, visibility following explicit change
+@c index explicitClefVisibility
+@c ode{explicitClefVisibility} properties. These are the equivalent
+@c ode{break-visibility}. Both are properties of the Staff context,
+@c ode{\set} command. Both are set by default to @code{all-visible}.
+@c ode{break-visibility} must still be overridden in the appropriate
+@c TODO Add visibility of cautionary accidentals before notes
+@c index automaticBars
+@c index bar lines, suppressing
+@c TODO Add example
+@c index octavated clefs, visibility of
+@c index visibility of octavated clefs
+@c index clefs, visibility of octavation
+@c ode{OctavateEight} layout object. Its visibility is controlled
+@node Line styles
+@subsection Line styles
+
+@untranslated
+
+
+@c ode{ly:line-interface::print}. This routine determines the
+@c FIXME Complete
+@c ode{left} instead of @code{right}.
+@ref{Spanners}.
+@node Rotating objects
+@subsection Rotating objects
+
+@untranslated
+
+
+@menu
+* Rotating layout objects::
+* Rotating markup::
+@end menu
+
+@node Rotating layout objects
+@unnumberedsubsubsec Rotating layout objects
+
+@untranslated
+
+
+@c index rotating objects
+@c index objects, rotating
+@c index hairpins, angled
+@c index angled hairpins
+@node Rotating markup
+@unnumberedsubsubsec Rotating markup
+
+@untranslated
+
+
+@c ode{outside-staff-priority} property for text is set to @code{#f}
+@node Advanced tweaks
+@section Advanced tweaks
+
+@untranslated
+
+
+@menu
+* Aligning objects::
+* Vertical grouping of grobs::
+* Modifying stencils::
+* Modifying shapes::
+@end menu
+
+@ref{Explaining the Internals Reference},
+@ref{Modifying properties},
+@ref{Interfaces for programmers}.
+@node Aligning objects
+@subsection Aligning objects
+
+@untranslated
+
+
+@c ode{X-offset} and @code{Y-offset} properties. The value of
+@c ode{X-offset} gives the displacement from the x coordinate of
+@c ode{Y-offset} gives the displacement from the center line of the
+@c ode{Y-offset} may be set directly or may be set to be calculated
+@c ode{self-alignment-interface}.}
+@c ode{X-offset} have no effect.
+@menu
+* Setting @code{X-offset} and @code{Y-offset} directly::
+* Using the @code{side-position-interface}::
+* Using the @code{self-alignment-interface}::
+* Using the @code{break-alignable-interface}::
+@end menu
+
+@node Setting @code{X-offset} and @code{Y-offset} directly
+@unnumberedsubsubsec Setting @code{X-offset} and @code{Y-offset} directly
+
+@untranslated
+
+
+@c TODO write more
+@node Using the @code{side-position-interface}
+@unnumberedsubsubsec Using the @code{side-position-interface}
+
+@untranslated
+
+
+@c TODO add an example of each to the table
+@c TODO Add examples
+@node Using the @code{self-alignment-interface}
+@unnumberedsubsubsec Using the @code{self-alignment-interface}
+
+@untranslated
+
+
+@c ode{self-alignment-interface} is controlled by the value of
+@c ode{X-offset} property is set to
+@c ode{ly:self-alignment-interface::x-aligned-on-self}.
+@c ode{self-alignment-X} may be given any
+@c ode{CENTER} and @code{RIGHT} may be used instead of the values
+@c ode{-1, 0, 1} respectively.
+@c ode{ly:self-alignment-interface::y-aligned-on-self}. However,
+@c ode{CENTER}, @code{UP} may be substituted for @code{-1, 0, 1}
+@unnumberedsubsubsec Using the @code{aligned-on-parent} procedures
+@c Cannot document as they do not seem to operate consistently on all objects -td
+@c TODO investigate further
+@c TODO Add example
+@unnumberedsubsubsec Using the @code{centered-on-parent} procedures
+@c Cannot document as they do not seem to operate consistently on all objects -td
+@c TODO investigate further
+@c TODO The align-interface, BassFigureAlignment and VerticalAlignment
+@node Using the @code{break-alignable-interface}
+@unnumberedsubsubsec Using the @code{break-alignable-interface}
+
+@untranslated
+
+
+@c index align to objects
+@c index break-align-symbols
+@c ode{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar},
+@c ode{left-edge}, @code{key-cancellation}, @code{key-signature}, and
+@c ode{time-signature}.
+@node Vertical grouping of grobs
+@subsection Vertical grouping of grobs
+
+@untranslated
+
+
+@c FIXME Expand this section
+@node Modifying stencils
+@subsection Modifying stencils
+
+@untranslated
+
+
+@c ode{MultiMeasureRest} object is @code{ly:multi-measure-rest::print}.
+@c ode{stencil} property to reference a different, specially-written,
+@c ode{text} property to the object which is set to contain the
+@ref{Graphic notation inside markup}.
+@c ode{\musicglyph} markup command -- see @ref{The Feta font}.
+@c TODO Add inserting eps files or ref to later
+@c TODO Add inserting Postscript or ref to later
+@ref{Graphic notation inside markup},
+@ref{Formatting text},
+@ref{Text markup commands},
+@ref{The Feta font}.
+@node Modifying shapes
+@subsection Modifying shapes
+
+@untranslated
+
+
+@menu
+* Modifying ties and slurs::
+@end menu
+
+@node Modifying ties and slurs
+@unnumberedsubsubsec Modifying ties and slurs
+
+@untranslated
+
+
+@c index slurs, modifying
+@c index ties, modifying
+@c index Bézier curves
+@c index Bézier control points
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@c TODO: add tablature.
+@node Cheat sheet
+@appendix Cheat sheet
+
+@untranslated
+
+
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory. `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition! See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@quotation
+@end quotation
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@untranslated
+
+
+@c index FDL, GNU Free Documentation License
+@c enter Version 1.1, March 2000
+@subheading ADDENDUM: How to use this License for your documents
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node General input and output
+@chapter General input and output
+
+@untranslated
+
+
+@menu
+* Input structure::
+* Titles and headers::
+* Working with input files::
+* Controlling output::
+* MIDI output::
+@end menu
+
+@node Input structure
+@section Input structure
+
+@untranslated
+
+
+@menu
+* Structure of a score::
+* Multiple scores in a book::
+* File structure::
+@end menu
+
+@node Structure of a score
+@subsection Structure of a score
+
+@untranslated
+
+
+@ref{File structure}.) Both single-line comments and comments
+@c ode{\score} block.
+@node Multiple scores in a book
+@subsection Multiple scores in a book
+
+@untranslated
+
+
+@c index movements, multiple
+@c ode{\book} block will result in a separate output. If you do not
+@c ode{\book}, but if it is not present, the @code{\header} which is at
+@node File structure
+@subsection File structure
+
+@untranslated
+
+
+@c ode{\layout}. Such a definition at the toplevel changes the default
+@c ode{#(set-default-paper-size "a7" 'landscape)} or
+@c ode{#(ly:set-option 'point-and-click #f)}.
+@c ode{toplevel-score-handler} at toplevel. The default handler is
+@c ode{\book} blocks in a @code{.ly} file is if you wish to create
+@c ode{toplevel-music-handler} at toplevel. The default handler is
+@c index variables
+@c index whitespace
+@c ode{\override} and @code{\set} commands. In particular, spaces
+@c ode{\override Score . LyricText #'font-size = #5} and before and
+@node Titles and headers
+@section Titles and headers
+
+@untranslated
+
+
+@menu
+* Creating titles::
+* Custom titles::
+* Reference to page numbers::
+* Table of contents::
+@end menu
+
+@node Creating titles
+@subsection Creating titles
+
+@untranslated
+
+
+@c ode{\bookpart} blocks).
+@c index page breaks, forcing
+@c ode{\header} inside @code{\score}) by using
+@c index copyright
+@c index tagline
+@c ode{copyright} field from @code{\header} is inserted, and the last
+@node Custom titles
+@subsection Custom titles
+
+@untranslated
+
+
+@c index \paper
+@c index header
+@c index footer
+@c index page layout
+@c index titles
+@node Reference to page numbers
+@subsection Reference to page numbers
+
+@untranslated
+
+
+@c ode{\label},
+@c ode{\page-ref}.
+@node Table of contents
+@subsection Table of contents
+
+@untranslated
+
+
+@c ode{\table-of-contents},
+@c ode{\tocItem}.
+@node Working with input files
+@section Working with input files
+
+@untranslated
+
+
+@menu
+* Including LilyPond files::
+* Different editions from one source::
+* Text encoding::
+* Displaying LilyPond notation::
+@end menu
+
+@node Including LilyPond files
+@subsection Including LilyPond files
+
+@untranslated
+
+
+@c index including files
+@c ode{\include} statements are not interpreted until they have
+@c ode{-drelative-includes} option at the command line
+@node Different editions from one source
+@subsection Different editions from one source
+
+@untranslated
+
+
+@menu
+* Using variables::
+* Using tags::
+@end menu
+
+@node Using variables
+@unnumberedsubsubsec Using variables
+
+@untranslated
+
+
+@c index variables, use of
+@node Using tags
+@unnumberedsubsubsec Using tags
+
+@untranslated
+
+
+@c index tag
+@c index keep tagged music
+@c index remove tagged music
+@c ode{\removeWithTag #'@var{name}}. The result of applying these filters
+@c ode{\removeWithTag}
+@c ode{\removeWithTag} commands should be a symbol
+@c ode{\tag} entries:
+@ref{Automatic part combining},
+@ref{Including LilyPond files}.
+@c This warning is more general than this placement implies.
+@c Rests are not merged whether or not they come from tagged sections.
+@c Should be deleted? -td
+@node Text encoding
+@subsection Text encoding
+
+@untranslated
+
+
+@c index Unicode
+@c index UTF-8
+@c index non-ASCII characters
+@c ode{\markup} block, where @code{hhhh} is the hexadecimal code for
+@c index copyright sign
+@node Displaying LilyPond notation
+@subsection Displaying LilyPond notation
+
+@untranslated
+
+
+@c TODO What happens under Windows?
+@node Controlling output
+@section Controlling output
+
+@untranslated
+
+
+@menu
+* Extracting fragments of music::
+* Skipping corrected music::
+* Alternative output formats::
+@end menu
+
+@node Extracting fragments of music
+@subsection Extracting fragments of music
+
+@untranslated
+
+
+@c ode{-dclip-systems}. The clips are output as EPS files, and are
+@node Skipping corrected music
+@subsection Skipping corrected music
+
+@untranslated
+
+
+@node Alternative output formats
+@subsection Alternative output formats
+
+@untranslated
+
+
+@c index scalable vector graphics output
+@c index SVG output
+@c index encapsulated postscript output
+@c index EPS output
+@node MIDI output
+@section MIDI output
+
+@untranslated
+
+
+@c index Sound
+@c index MIDI
+@c TODO Check this
+@menu
+* Creating MIDI files::
+* MIDI block::
+* What goes into the MIDI output?::
+* Repeats in MIDI::
+* Controlling MIDI dynamics::
+* Percussion in MIDI::
+@end menu
+
+@node Creating MIDI files
+@subsection Creating MIDI files
+
+@untranslated
+
+
+@c ode{\midi} block to a score, for example,
+@c ode{\layout} block, only MIDI output will be produced. When
+@c ode{.midi}.
+@unnumberedsubsubsec Instrument names
+@c index instrument names
+@c ode{Staff.midiInstrument} property to the instrument name.
+@c In 2.11 the following no longer seems to be a problem -td
+@node MIDI block
+@subsection MIDI block
+
+@untranslated
+
+
+@c index MIDI block
+@c index MIDI context definitions
+@c ode{\midi@{ @}} block.
+@node What goes into the MIDI output?
+@subsection What goes into the MIDI output?
+
+@untranslated
+
+
+@c TODO Check grace notes - timing is suspect?
+@unnumberedsubsubsec Supported in MIDI
+@c index Pitches in MIDI
+@c index MIDI, Pitches
+@c index Quarter tones in MIDI
+@c index MIDI, quarter tones
+@c index Microtones in MIDI
+@c index MIDI, microtones
+@c index Chord names in MIDI
+@c index MIDI, chord names
+@c index Rhythms in MIDI
+@c index MIDI, Rhythms
+@c TODO etc
+@unnumberedsubsubsec Unsupported in MIDI
+@c TODO index as above
+@node Repeats in MIDI
+@subsection Repeats in MIDI
+
+@untranslated
+
+
+@c index repeats in MIDI
+@c ode{\unfoldRepeats} music function. This function changes all
+@node Controlling MIDI dynamics
+@subsection Controlling MIDI dynamics
+
+@untranslated
+
+
+@unnumberedsubsubsec Dynamic marks
+@c ode{Score.dynamicAbsoluteVolumeFunction} to this function.
+@c ode{\rfz}, is required, this will not by default
+@unnumberedsubsubsec Overall MIDI volume
+@c ode{midiMaximumVolume} at the @code{Score} level. These
+@unnumberedsubsubsec Equalizing different instruments (i)
+@unnumberedsubsubsec Equalizing different instruments (ii)
+@c ode{instrumentEqualizer} in the @code{Score} context to a new
+@c ode{dynamicAbsoluteVolumeFunction} at the start of this section.
+@c Delete when satisfied this is adequately covered elsewhere -td
+@c index microtones in MIDI
+@node Percussion in MIDI
+@subsection Percussion in MIDI
+
+@untranslated
+
+
+@c ode{DrumStaff} context, to obtain the correct MIDI output.
+@c TODO Expand with examples, and any other issues
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined! Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso! Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rglos
+@c @rlearning
+@c @ruser
+@c @ressay
+@c @rprogram
+@c @rlsr
+@c @rinternals
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own. To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Notation manual tables
+@appendix Notation manual tables
+
+@untranslated
+
+
+@c Please do not delete the following @ignore block.
+* Text markup commands::
+* Text markup list commands::
+* Note head styles::
+* List of articulations::
+@menu
+* Chord name chart::
+* Common chord modifiers::
+* Predefined fretboard diagrams::
+* MIDI instruments::
+* List of colors::
+* The Feta font::
+* Note head styles::
+* Text markup commands::
+* Text markup list commands::
+* List of articulations::
+* Percussion notes::
+* Technical glossary::
+* All context properties::
+* Layout properties::
+* Identifiers::
+* Scheme functions::
+@end menu
+
+@node Chord name chart
+@appendixsec Chord name chart
+
+@untranslated
+
+
+@node Common chord modifiers
+@appendixsec Common chord modifiers
+
+@untranslated
+
+
+@c ode{\chordmode} to generate standard chord structures.
+@c ode{5} or nothing
+@c ode{m} or @code{m5}
+@c ode{aug}
+@c ode{dim}
+@c ode{7}
+@c ode{maj7} or @code{maj}
+@c ode{m7}
+@c ode{dim7}
+@c ode{aug7}
+@c ode{m7.5-}
+@c ode{maj7.5-}
+@c ode{6}
+@c ode{m6}
+@c ode{9}
+@c ode{maj9}
+@c ode{m9}
+@c ode{11}
+@c ode{maj11}
+@c ode{m11}
+@c ode{13}
+@c ode{13.11}
+@c ode{maj13.11}
+@c ode{m13.11}
+@c ode{sus2}
+@c ode{sus4}
+@node Predefined fretboard diagrams
+@appendixsec Predefined fretboard diagrams
+
+@untranslated
+
+
+@node MIDI instruments
+@appendixsec MIDI instruments
+
+@untranslated
+
+
+@c ode{midiInstrument} property.
+@node List of colors
+@appendixsec List of colors
+
+@untranslated
+
+
+@subsubheading Normal colors
+@c index List of colors
+@c index Colors, list of
+@subsubheading X color names
+@subsubheading Color Names without a numerical suffix:
+@subsubheading Color names with a numerical suffix
+@subsubheading Grey Scale
+@node The Feta font
+@appendixsec The Feta font
+
+@untranslated
+
+
+@c index Feta font
+@c index Font, Feta
+@menu
+* Clef glyphs::
+* Time Signature glyphs::
+* Number glyphs::
+* Accidental glyphs::
+* Default Notehead glyphs::
+* Special Notehead glyphs::
+* Shape-note Notehead glyphs::
+* Rest glyphs::
+* Flag glyphs::
+* Dot glyphs::
+* Dynamic glyphs::
+* Script glyphs::
+* Arrowhead glyphs::
+* Bracket-tip glyphs::
+* Pedal glyphs::
+* Accordion glyphs::
+* Vaticana glyphs::
+* Medicaea glyphs::
+* Hufnagel glyphs::
+* Mensural glyphs::
+* Neomensural glyphs::
+* Petrucci glyphs::
+* Solesmes glyphs::
+@end menu
+
+@node Clef glyphs
+@unnumberedsubsec Clef glyphs
+
+@untranslated
+
+
+@node Time Signature glyphs
+@unnumberedsubsec Time Signature glyphs
+
+@untranslated
+
+
+@node Number glyphs
+@unnumberedsubsec Number glyphs
+
+@untranslated
+
+
+@node Accidental glyphs
+@unnumberedsubsec Accidental glyphs
+
+@untranslated
+
+
+@node Default Notehead glyphs
+@unnumberedsubsec Default Notehead glyphs
+
+@untranslated
+
+
+@node Special Notehead glyphs
+@unnumberedsubsec Special Notehead glyphs
+
+@untranslated
+
+
+@node Shape-note Notehead glyphs
+@unnumberedsubsec Shape-note Notehead glyphs
+
+@untranslated
+
+
+@node Rest glyphs
+@unnumberedsubsec Rest glyphs
+
+@untranslated
+
+
+@node Flag glyphs
+@unnumberedsubsec Flag glyphs
+
+@untranslated
+
+
+@node Dot glyphs
+@unnumberedsubsec Dot glyphs
+
+@untranslated
+
+
+@node Dynamic glyphs
+@unnumberedsubsec Dynamic glyphs
+
+@untranslated
+
+
+@node Script glyphs
+@unnumberedsubsec Script glyphs
+
+@untranslated
+
+
+@node Arrowhead glyphs
+@unnumberedsubsec Arrowhead glyphs
+
+@untranslated
+
+
+@node Bracket-tip glyphs
+@unnumberedsubsec Bracket-tip glyphs
+
+@untranslated
+
+
+@node Pedal glyphs
+@unnumberedsubsec Pedal glyphs
+
+@untranslated
+
+
+@node Accordion glyphs
+@unnumberedsubsec Accordion glyphs
+
+@untranslated
+
+
+@node Vaticana glyphs
+@unnumberedsubsec Vaticana glyphs
+
+@untranslated
+
+
+@node Medicaea glyphs
+@unnumberedsubsec Medicaea glyphs
+
+@untranslated
+
+
+@node Hufnagel glyphs
+@unnumberedsubsec Hufnagel glyphs
+
+@untranslated
+
+
+@node Mensural glyphs
+@unnumberedsubsec Mensural glyphs
+
+@untranslated
+
+
+@node Neomensural glyphs
+@unnumberedsubsec Neomensural glyphs
+
+@untranslated
+
+
+@node Petrucci glyphs
+@unnumberedsubsec Petrucci glyphs
+
+@untranslated
+
+
+@node Solesmes glyphs
+@unnumberedsubsec Solesmes glyphs
+
+@untranslated
+
+
+@node Note head styles
+@appendixsec Note head styles
+
+@untranslated
+
+
+@c index note head styles
+@include markup-commands.tely
+@include markup-list-commands.tely
+@node List of articulations
+@appendixsec List of articulations
+
+@untranslated
+
+
+@c index accent
+@c index marcato
+@c index staccatissimo
+@c index espressivo
+@c index fermata
+@c index stopped
+@c index staccato
+@c index portato
+@c index tenuto
+@c index upbow
+@c index downbow
+@c index foot marks
+@c index organ pedal marks
+@c index turn
+@c index open
+@c index stopped
+@c index flageolet
+@c index reverseturn
+@c index trill
+@c index prall
+@c index mordent
+@c index prallprall
+@c index prallmordent
+@c index prall, up
+@c index prall, down
+@c index thumb marking
+@c index segno
+@c index coda
+@c index varcoda
+@node Percussion notes
+@appendixsec Percussion notes
+
+@untranslated
+
+
+@node Technical glossary
+@appendixsec Technical glossary
+
+@untranslated
+
+
+@menu
+* callback::
+* glyph::
+* grob::
+* interface::
+* lexer::
+* output-def::
+* parser::
+* parser variable::
+* prob::
+* simple-closure::
+* smob::
+* stencil::
+@end menu
+
+@node callback
+@unnumberedsubsec callback
+
+@untranslated
+
+
+@c index callback
+@node glyph
+@unnumberedsubsec glyph
+
+@untranslated
+
+
+@c index glyph
+@c index font
+@c index typeface
+@ref{Fonts},
+@ref{Text encoding}.
+@node grob
+@unnumberedsubsec grob
+
+@untranslated
+
+
+@c index grob
+@c index layout objects
+@c index graphical objects
+@node interface
+@unnumberedsubsec interface
+
+@untranslated
+
+
+@c index interface
+@c index grob-interface
+@c index graphical object interfaces
+@ref{Layout interfaces}.
+@node lexer
+@unnumberedsubsec lexer
+
+@untranslated
+
+
+@c index lexer
+@node output-def
+@unnumberedsubsec output-def
+
+@untranslated
+
+
+@c index output-def
+@node parser
+@unnumberedsubsec parser
+
+@untranslated
+
+
+@c index parser
+@node parser variable
+@unnumberedsubsec parser variable
+
+@untranslated
+
+
+@c ode{\score} blocks as well as external files added with the
+@c ode{\include} command. This can lead to unintended consequences
+@node prob
+@unnumberedsubsec prob
+
+@untranslated
+
+
+@node simple-closure
+@unnumberedsubsec simple-closure
+
+@untranslated
+
+
+@node smob
+@unnumberedsubsec smob
+
+@untranslated
+
+
+@node stencil
+@unnumberedsubsec stencil
+
+@untranslated
+
+
+@node All context properties
+@appendixsec All context properties
+
+@untranslated
+
+
+@include context-properties.tely
+@node Layout properties
+@appendixsec Layout properties
+
+@untranslated
+
+
+@include layout-properties.tely
+@node Identifiers
+@appendixsec Identifiers
+
+@untranslated
+
+
+@include identifiers.tely
+@node Scheme functions
+@appendixsec Scheme functions
+
+@untranslated
+
+
+@include scheme-functions.tely
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Musical notation
+@chapter Musical notation
+
+@untranslated
+
+
+@menu
+* Pitches::
+* Rhythms::
+* Expressive marks::
+* Repeats::
+* Simultaneous notes::
+* Staff notation::
+* Editorial annotations::
+* Text::
+@end menu
+
+@include notation/pitches.itely
+@include notation/rhythms.itely
+@include notation/expressive.itely
+@include notation/repeats.itely
+@include notation/simultaneous.itely
+@include notation/staff.itely
+@include notation/editorial.itely
+@include notation/text.itely
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Interfaces for programmers
+@chapter Interfaces for programmers
+
+@untranslated
+
+
+@menu
+* Music functions::
+* Programmer interfaces::
+* Building complicated functions::
+* Markup programmer interface::
+* Contexts for programmers::
+* Scheme procedures as properties::
+* Using Scheme code instead of \tweak::
+* Difficult tweaks::
+@end menu
+
+@node Music functions
+@section Music functions
+
+@untranslated
+
+
+@menu
+* Overview of music functions::
+* Simple substitution functions::
+* Paired substitution functions::
+* Mathematics in functions::
+* Void functions::
+* Functions without arguments::
+* Overview of available music functions::
+@end menu
+
+@node Overview of music functions
+@subsection Overview of music functions
+
+@untranslated
+
+
+@node Simple substitution functions
+@subsection Simple substitution functions
+
+@untranslated
+
+
+@node Paired substitution functions
+@subsection Paired substitution functions
+
+@untranslated
+
+
+@quotation
+@end quotation
+@node Mathematics in functions
+@subsection Mathematics in functions
+
+@untranslated
+
+
+@node Void functions
+@subsection Void functions
+
+@untranslated
+
+
+@c ode{'void} property set to @code{#t}, the parser is told to
+@node Functions without arguments
+@subsection Functions without arguments
+
+@untranslated
+
+
+@node Overview of available music functions
+@subsection Overview of available music functions
+
+@untranslated
+
+
+@c fixme ; this should be move somewhere else?
+@include identifiers.tely
+@node Programmer interfaces
+@section Programmer interfaces
+
+@untranslated
+
+
+@menu
+* Input variables and Scheme::
+* Internal music representation::
+@end menu
+
+@node Input variables and Scheme
+@subsection Input variables and Scheme
+
+@untranslated
+
+
+@c ode{traLaLa}.
+@c ode{\layout} block also contains a @code{traLaLa} variable, which is
+@c
+@c ode{\midi}, and @code{\layout} blocks are scopes nested inside that
+@c ode{twice}:
+@c Due to parser lookahead
+@ref{Void functions}, or
+@c ode{--safe} option.
+@node Internal music representation
+@subsection Internal music representation
+
+@untranslated
+
+
+@c ode{note-event}, a @code{rhythmic-event}, and a
+@c ode{melodic-event}. All classes of music are listed in the
+@c ode{duration} properties that store the pitch and duration of that
+@c ode{element}. The body of a repeat is stored in the @code{element}
+@c ode{elements}.
+@node Building complicated functions
+@section Building complicated functions
+
+@untranslated
+
+
+@menu
+* Displaying music expressions::
+* Music properties::
+* Doubling a note with slurs (example)::
+* Adding articulation to notes (example)::
+@end menu
+
+@node Displaying music expressions
+@subsection Displaying music expressions
+
+@untranslated
+
+
+@c index internal storage
+@c index displaying music expressions
+@c index internal representation, displaying
+@c index displayMusic
+@c ode{AbsoluteDynamicEvent} with a @code{"f"} text property.
+@node Music properties
+@subsection Music properties
+
+@untranslated
+
+
+@c ode{'elements} property of @code{someNote}.
+@c ode{\displayMusic} to display the Scheme representation of a music
+@node Doubling a note with slurs (example)
+@subsection Doubling a note with slurs (example)
+
+@untranslated
+
+
+@c ode{'elements} property of each one, and finally make a
+@c ode{SequentialMusic} with the two @code{EventChords}.
+@node Adding articulation to notes (example)
+@subsection Adding articulation to notes (example)
+
+@untranslated
+
+
+@ref{Creating contexts}. However, suppose that we want to write
+@c ode{event-chord}. In Scheme, the type of variable is often clear
+@c ode{let} is used to declare local variables. Here we use one local
+@c ode{(ly:music-deep-copy event-chord)}. @code{ly:music-deep-copy} is
+@c ode{ly:}. It is use to make a copy of a music
+@c ode{EventChord} expression. It is better to not modify the
+@c ode{EventChord} which was given as an argument, because it may be
+@c ode{NoteEventChord} expression and is a copy of @code{event-chord}. We
+@c ode{result-event-chord} expression.
+@c ode{ly:music-property} is the function used to access music properties
+@c ode{ArticulationEvent} expression, which we copy from the
+@c ode{\displayMusic} output,
+@c ode{cons} is used to add an element to a list without modifying the
+@node Markup programmer interface
+@section Markup programmer interface
+
+@untranslated
+
+
+@menu
+* Markup construction in Scheme::
+* How markups work internally::
+* New markup command definition::
+* New markup list command definition::
+@end menu
+
+@node Markup construction in Scheme
+@subsection Markup construction in Scheme
+
+@untranslated
+
+
+@c index defining markup commands
+@quotation
+@end quotation
+@c ode{markup} macro. For example, You may use function calls inside
+@c ode{markup} in order to manipulate character strings. This is
+@ref{New markup command definition}).
+@c ode{#:center}, and @code{#:column} cannot be a variable or
+@c ode{make-center-markup}, or @code{make-column-markup} functions
+@node How markups work internally
+@subsection How markups work internally
+
+@untranslated
+
+
+@c ode{\raise} is actually represented by the @code{raise-markup}
+@c ode{raise-markup} function is called as
+@c ode{text example} string, and then it raises that Stencil by 0.5
+@node New markup command definition
+@subsection New markup command definition
+
+@untranslated
+
+
+@c ode{#'caps} for interpreting @code{Text-in-caps}.
+@c ode{padding} property) from the staff and the notes. To make sure
+@c ode{#:translate}, we add an empty string (@code{#:hspace 0}) before the
+@c ode{name} is moved in relation to that empty string. The net effect is
+@c ode{(make-line-markup ...)}. Finally, the resulting markup is passed
+@c ode{props} arguments.
+@ref{Text markup commands}, for details.
+@c ode{define-markup-command} are limited as follows.
+@c index Scheme signature
+@c index signature, Scheme
+@c ommand{lilypond} complains that it cannot parse @code{foo} due to its
+@node New markup list command definition
+@subsection New markup list command definition
+
+@untranslated
+
+
+@c ode{define-markup-list-command} Scheme macro, which is similar to the
+@c ode{define-markup-command} macro described in
+@ref{New markup command definition}, except that where the latter returns
+@c ode{paragraph} markup list command takes a markup list argument, named
+@c ode{args}. The predicate for markup lists is @code{markup-list?}.
+@c ode{par-indent}, from the property list @code{props} If the property
+@node Contexts for programmers
+@section Contexts for programmers
+
+@untranslated
+
+
+@menu
+* Context evaluation::
+* Running a function on all layout objects::
+@end menu
+
+@node Context evaluation
+@subsection Context evaluation
+
+@untranslated
+
+
+@c index calling code during interpreting
+@node Running a function on all layout objects
+@subsection Running a function on all layout objects
+
+@untranslated
+
+
+@c index calling code on layout objects
+@node Scheme procedures as properties
+@section Scheme procedures as properties
+
+@untranslated
+
+
+@c ode{AccidentalSuggestion},
+@c ode{ly:self-alignment-interface::centered-on-x-parent} are called
+@node Using Scheme code instead of \tweak
+@section Using Scheme code instead of @code{\tweak}
+
+@untranslated
+
+
+@c ode{^} and @code{_}.
+@c ode{m} (created with @code{make-music}) are extracted with
+@c ode{ly:music-property}, a new key-value pair to change the
+@c ode{acons} Scheme function, and the result is finally
+@c ode{let} block is the return value, @code{m} itself.
+@node Difficult tweaks
+@section Difficult tweaks
+
+@untranslated
+
+
+@c ode{after-line-breaking} callback contains the Scheme procedure that
+@c ode{my-callback}. This procedure
+@c ode{ly:hairpin::after-line-breaking} should also be called.
+@c ode{\overrideProperty} function, which works similar to @code{\once
+@c ode{NonMusicalPaperColumn} and @code{PaperColumn}, still works as
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Spacing issues
+@chapter Spacing issues
+
+@untranslated
+
+
+@c ode{\score @{...@}} blocks and contains settings that
+@menu
+* Paper and pages::
+* Music layout::
+* Breaks::
+* Vertical spacing::
+* Horizontal spacing::
+* Fitting music onto fewer pages::
+@end menu
+
+@node Paper and pages
+@section Paper and pages
+
+@untranslated
+
+
+@menu
+* Paper size::
+* Page formatting::
+@end menu
+
+@node Paper size
+@subsection Paper size
+
+@untranslated
+
+
+@c index paper size
+@c index page size
+@c ode{set-default-paper-size} and @code{set-paper-size}.
+@c ode{set-default-paper-size} must be placed in the toplevel
+@c ode{set-default-paper-size} sets the size of all pages, whereas
+@c ode{set-paper-size} only sets the size of the pages that the
+@c ode{\paper} block applies to. For example, if the @code{\paper}
+@c ode{\book}, then the paper size will only apply to that book.
+@c ode{letter}, @code{legal}, and @code{11x17} (also known as
+@c TODO add a new appendix for paper sizes (auto-generated) -pm
+@c ode{paper-alist} in the initialization file
+@c index orientation
+@c index landscape
+@c ode{set-default-paper-size}, pages will be rotated by 90
+@node Page formatting
+@subsection Page formatting
+
+@untranslated
+
+
+@menu
+* Vertical dimensions::
+* Horizontal dimensions::
+* Other layout variables::
+@end menu
+
+@node Vertical dimensions
+@unnumberedsubsubsec Vertical dimensions
+
+@untranslated
+
+
+@c ode{6\mm}.
+@c ode{evenHeaderMarkup}) and the title markup
+@c ode{5\mm}.
+@c ode{in}, @code{pt}, and @code{cm} are variables defined in
+@c ode{\paper} block, @code{page-music-height} and
+@c ode{page-make-stencil}. The former tells the line-breaking algorithm
+@ref{Vertical spacing between systems}.
+@node Horizontal dimensions
+@unnumberedsubsubsec Horizontal dimensions
+
+@untranslated
+
+
+@c ode{left-margin}, @code{indent}, and @code{short-indent} may
+@c ode{set-default-paper-size} or @code{set-paper-size}.
+@c ode{set-default-paper-size} or @code{set-paper-size}.
+@c ode{20\mm}, as determined by @code{set-default-paper-size} or
+@c ode{set-paper-size}.
+@c ode{set-default-paper-size} or @code{set-paper-size}.
+@c ode{line-width}.
+@node Other layout variables
+@unnumberedsubsubsec Other layout variables
+
+@untranslated
+
+
+@c ode{5}.
+@c ode{#1}.
+@c ode{between-system-padding} is set to something different than
+@ref{Vertical spacing between systems}.
+@c ode{1.4}. For details, see
+@ref{Vertical spacing between systems}.
+@c ode{##t}.
+@c ode{##f}.
+@node Music layout
+@section Music layout
+
+@untranslated
+
+
+@menu
+* Setting the staff size::
+* Score layout::
+@end menu
+
+@node Setting the staff size
+@subsection Setting the staff size
+
+@untranslated
+
+
+@c index font size, setting
+@c index staff size, setting
+@quotation
+@c modern rental material?
+@end quotation
+@c ode{fontSize} and the layout property @code{staff-space} (in
+@ref{Selecting notation font size}.
+@c ode{layout-set-staff-size} does not change the distance between the
+@node Score layout
+@subsection Score layout
+
+@untranslated
+
+
+@ref{Changing context default settings}.
+@node Breaks
+@section Breaks
+
+@untranslated
+
+
+@menu
+* Line breaking::
+* Page breaking::
+* Optimal page breaking::
+* Optimal page turning::
+* Minimal page breaking::
+* Explicit breaks::
+* Using an extra voice for breaks::
+@end menu
+
+@node Line breaking
+@subsection Line breaking
+
+@untranslated
+
+
+@c index line breaks
+@c index breaking lines
+@c ode{\break}. This will force a line break at this point. However,
+@c TODO Check and add para on default for ragged-right
+@c index regular line breaks
+@c index four bar music.
+@c TODO Check this
+@c ode{\break},
+@c ode{\noBreak}.
+@c ode{\override Beam #'breakable = ##t}.
+@node Page breaking
+@subsection Page breaking
+
+@untranslated
+
+
+@c ode{\pageBreak} or @code{\noPageBreak} commands. These commands are
+@c ode{ragged-last} which have the same effect on vertical spacing:
+@c ode{ragged-bottom} and @code{ragged-last-bottom}. If set to
+@c ode{##t} the systems on all pages or just the last page
+@c ode{ly:optimal-breaking}, @code{ly:page-turn-breaking} and
+@c ode{ly:minimal-breaking}. The default is @code{ly:optimal-breaking},
+@c ode{\pageBreak},
+@c ode{\noPageBreak}.
+@node Optimal page breaking
+@subsection Optimal page breaking
+
+@untranslated
+
+
+@c ode{ly:page-turn-breaking}, it has no concept of page turns.
+@node Optimal page turning
+@subsection Optimal page turning
+
+@untranslated
+
+
+@c ode{\allowPageTurn} will be inserted at the final @q{special} bar line in
+@c ode{minimumPageTurnLength} to determine how long a note-free section must
+@c ode{minimumPageTurnLength} is @code{#(ly:make-moment 1 1)}. If you want
+@c ode{minimumRepeatLengthForPageTurn} then the @code{Page_turn_engraver} will
+@c ode{\allowPageTurn}, may also be used at top-level, between scores and
+@c ode{\pageTurn},
+@c ode{\noPageTurn},
+@c ode{\allowPageTurn}.
+@node Minimal page breaking
+@subsection Minimal page breaking
+
+@untranslated
+
+
+@node Explicit breaks
+@subsection Explicit breaks
+
+@untranslated
+
+
+@c ode{page-break-permission} is overridden to false, Lily will insert
+@node Using an extra voice for breaks
+@subsection Using an extra voice for breaks
+
+@untranslated
+
+
+@c ode{line-break-system-details} and the other useful but long properties of
+@c ode{NonMusicalPaperColumnGrob}, as explained in @ref{Vertical spacing}.
+@ref{Vertical spacing}.
+@node Vertical spacing
+@section Vertical spacing
+
+@untranslated
+
+
+@c index vertical spacing
+@c index spacing, vertical
+@menu
+* Vertical spacing inside a system::
+* Vertical spacing between systems::
+* Explicit staff and system positioning::
+* Two-pass vertical spacing::
+* Vertical collision avoidance::
+@end menu
+
+@node Vertical spacing inside a system
+@subsection Vertical spacing inside a system
+
+@untranslated
+
+
+@c index distance between staves
+@c index staff distance
+@c index space between staves
+@c index space inside systems
+@c ode{max-stretch} is set to zero, disabling stretching. To enable
+@c ode{keep-fixed-while-stretching} property of
+@c ode{VerticalAlignment} object. The context parameters
+@c @lsr{spacing,page-spacing.ly},
+@c @lsr{spacing,alignment-vertical-spacing.ly}.
+@node Vertical spacing between systems
+@subsection Vertical spacing between systems
+
+@untranslated
+
+
+@c ode{page-limit-inter-system-space} variable in the @code{\paper}
+@c ode{1.3} means that the space can be 30% larger than what it would be
+@c ode{1}, the spacing would the same as on a ragged-bottom page, like
+@node Explicit staff and system positioning
+@subsection Explicit staff and system positioning
+
+@untranslated
+
+
+@c ode{NonMusicalPaperColumn #'line-break-system-details}. Where
+@c ode{VerticalAxisGroup} and @code{\paper} settings specify vertical padding,
+@c ode{NonMusicalPaperColumn #'line-break-system-details} specifies exact
+@c ode{NonMusicalPaperColumn #'line-break-system-details} accepts an associative
+@c ode{\override} command in @code{\context} blocks and in the
+@c ode{\with} block. On the other hand, when we override
+@c ode{NonMusicalPaperColumn} in the middle of note entry,
+@c ode{\overrideProperty} command:
+@c \book { } is required in these examples to ensure the spacing
+@c overrides can be seen between systems. -np
+@c ode{line-break-system-details} attribute of the
+@c ode{NonMusicalPaperColumn} grob. Though the
+@c ode{line-break-system-details} attribute alist accepts many
+@c ode{X-offset} pair), we need only set the @code{Y-offset} and
+@c ode{alignment-offsets} pairs to control the vertical startpoint of
+@c ode{Y-offset} and @code{alignment-offsets} are interpreted as multiples
+@node Two-pass vertical spacing
+@subsection Two-pass vertical spacing
+
+@untranslated
+
+
+@quotation
+@end quotation
+@node Vertical collision avoidance
+@subsection Vertical collision avoidance
+
+@untranslated
+
+
+@c ode{outside-staff-priority} tells LilyPond in which order the objects
+@c ode{outside-staff-priority} (in increasing order). One by one, LilyPond
+@c ode{outside-staff-padding}.
+@node Horizontal spacing
+@section Horizontal spacing
+
+@untranslated
+
+
+@c index horizontal spacing
+@c index spacing, horizontal
+@menu
+* Horizontal spacing overview::
+* New spacing area::
+* Changing horizontal spacing::
+* Line length::
+* Proportional notation::
+@end menu
+
+@node Horizontal spacing overview
+@subsection Horizontal spacing overview
+
+@untranslated
+
+
+@c ode{shortest-duration-space} in the @rinternals{SpacingSpanner}
+@c ode{spacing-increment}) of space to the note.
+@c ode{shortest-duration-space} is set to 2.0, meaning that the
+@c ode{spacing-increment}) of horizontal space. This space is counted
+@c ode{lilypond} with the @code{--verbose} option.
+@c ode{common-shortest-duration} in @rinternals{SpacingSpanner}, then
+@c (see @rlearning{Engraving}),
+@c ode{stem-spacing-correction} property in the
+@node New spacing area
+@subsection New spacing area
+
+@untranslated
+
+
+@c ode{newSpacingSection}. This is useful when there are
+@c ode{SpacingSpanner} object, and hence new @code{\override}s
+@node Changing horizontal spacing
+@subsection Changing horizontal spacing
+
+@untranslated
+
+
+@c ode{base-shortest-duration} property. Here
+@c ode{Score.SpacingSpanner #'uniform-stretching}. This
+@node Line length
+@subsection Line length
+
+@untranslated
+
+
+@c index page breaks
+@c index breaking pages
+@c Although line-width can be set in \layout, it should be set in paper
+@c block, to get page layout right.
+@c Setting indent in \paper block makes not much sense, but it works.
+@c Bit verbose and vague, use examples?
+@c ode{line-width}. They are set in the @code{\layout} block. They
+@c index page layout
+@c index vertical spacing
+@c Note that for text there are several options for the last line.
+@c While Knuth TeX uses natural length, lead typesetters use the same
+@c stretch as the previous line. eTeX uses \lastlinefit to
+@c interpolate between both these solutions.
+@node Proportional notation
+@subsection Proportional notation
+
+@untranslated
+
+
+@c ode{\context} block, or directly in music entry
+@c ode{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)}, and
+@c ode{#(ly:make-moment 3 97)} are all possible as well.
+@c ode{proportionalNotationDuration}? Usually by a process of trial and error,
+@c ode{SpacingSpanner}.
+@c ode{\newSpacingSection}. See @ref{New spacing area}, for more info.
+@ref{New spacing area}.
+@node Fitting music onto fewer pages
+@section Fitting music onto fewer pages
+
+@untranslated
+
+
+@ref{Displaying spacing}.
+@menu
+* Displaying spacing::
+* Changing spacing::
+@end menu
+
+@node Displaying spacing
+@subsection Displaying spacing
+
+@untranslated
+
+
+@c index spacing, display of layout
+@c ode{annotate-spacing} in the @code{\paper} block:
+@c need to have \book{} otherwise we get the separate systems. -hwn
+@c ode{staff-spaces}, and the @code{staff-size} is 20 points (the
+@c ode{staff-spaces} is equivalent to 105 millimeters, the height
+@ref{Setting the staff size}.
+@node Changing spacing
+@subsection Changing spacing
+
+@untranslated
+
+
+@ref{Page formatting},
+@ref{Changing horizontal spacing}.
+
+@c -- SKELETON FILE --
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+ Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Specialist notation
+@chapter Specialist notation
+
+@untranslated
+
+
+@menu
+* Vocal music::
+* Keyboard and other multi-staff instruments::
+* Unfretted string instruments::
+* Fretted string instruments::
+* Percussion::
+* Wind instruments::
+* Chord notation::
+* Ancient notation::
+* World music::
+@end menu
+
+@include notation/vocal.itely
+@include notation/keyboards.itely
+@include notation/unfretted-strings.itely
+@include notation/fretted-strings.itely
+@include notation/percussion.itely
+@include notation/wind.itely
+@include notation/chords.itely
+@include notation/ancient.itely
+@include notation/world.itely
+
+@c -- SKELETON FILE --
--- /dev/null
+depth=../../..
+
+EXTRA_DIST_FILES=$(call src-wildcard,*.texidoc)
+
+include $(depth)/make/stepmake.make
--- /dev/null
+ <p><i>Dernière mise à jour Fri Jul 17 16:08:17 UTC 2009
+</i></p>
+<html>
+<!-- This page is automatically generated by translation-status.py from
+translations.template.html.in; DO NOT EDIT !-->
+<!--
+ Translation of GIT committish: 148e80b8992a7fb9d59ec439c00b79decbbe3bad
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+!-->
+<head>
+ <title>État de la traduction de la documentation de LilyPond</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+<p><a href="index.html">Retour à l'accueil de la documentation</a></p>
+
+<h1>Avancement de la traduction de la documentation</h1>
+
+<p>Cette page présente pour chaque partie de la documentation de
+ LilyPond @TOPLEVEL_VERSION@ l'avancement de la traduction
+ francophone. Pour chaque partie sont indiqués le nombre de mots de
+ l'original en anglais, les noms des traducteurs et relecteurs,
+ le proportion de matériel traduit, l'état de mise à jour, et
+ l'indicateur de révision par rapport au Grand Documentation Project
+ (GDP).
+</p>
+
+<p>Au cours du GDP, la documentation en anglais a été complètement
+ remaniée, et sa révision se poursuit encore actuellement ; le rythme
+ de cette révision ne permet pas de maintenir toutes les traductions
+ à jour. Cependant, le fait que certaines traductions ne soient pas
+ du tout à jour (avec une indication sur fond rouge) ne signifie
+ pas qu'elles sont périmées, mais simplement qu'elles
+ n'atteignent pas la qualité de la documentation en anglais récemment
+ remaniée : les traducteurs font de leur mieux pour au moins mettre à
+ jour dans la documentation la syntaxe et les noms de commande
+ LilyPond. La mise à jour des traductions après le GDP est en
+ cours ; vous pouvez accélérer et améliorer ce processus en
+ participant aux traductions et relectures, qui sont organisées sur
+ la liste de diffusion
+ <a href="http://lists.gnu.org/mailman/listinfo/lilypond-user-fr">lilypond-user-fr@gnu.org</a>.
+</p>
+
+<table align="center" border="2">
+ <tr align="center">
+ <th>GNU LilyPond --- Manuel d'initiation</th> <th>Traducteurs</th>
+ <th>Relecteurs</th>
+ <th>Traduit</th>
+ <th>À jour</th>
+ <th>Autres informations</th>
+ </tr>
+ <tr align="left">
+ <td>Titre des chapitres<br>(429)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #47ff24">partiellement</span></td>
+ <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>Préface<br>(411)</td>
+ <td>Valentin Villenave</td>
+ <td>Ludovic Sardain<br>
+ Damien Heurtebise</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1 Introduction<br>(3866)</td>
+ <td>Ludovic Sardain<br>
+ John Mandereau</td>
+ <td>Jean-Charles Malahieude<br>
+ Jean-Yves Baudais<br>
+ Damien Heurtebise</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #40fe23">partiellement</span></td>
+ <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2 Tutoriel<br>(6368)</td>
+ <td>Nicolas Grandclaude<br>
+ Ludovic Sardain<br>
+ Gauvain Pocentek</td>
+ <td>Jean-Charles Malahieude<br>
+ Valentin Villenave<br>
+ John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #33ff21">partiellement</span></td>
+ <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>3 Concepts fondamentaux<br>(10323)</td>
+ <td>Valentin Villenave<br>
+ Jean-Charles Malahieude</td>
+ <td>John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>4 Retouche de partition<br>(14834)</td>
+ <td>Valentin Villenave<br>
+ Nicolas Klutchnikoff<br>
+ Damien Heurtebise</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #25fe1f">partiellement</span></td>
+ <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>5 Travail sur des projets LilyPond<br>(5033)</td>
+ <td>Ludovic Sardain</td>
+ <td>Jean-Yves Baudais<br>
+ Valentin Villenave<br>
+ John Mandereau<br>
+ Jean-Charles Malahieude</td>
+ <td><span style="background-color: #dfef77">partiellement (53 %)</span></td>
+ <td><span style="background-color: #e8fe39">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>A Modèles<br>(498)</td>
+ <td></td>
+ <td></td>
+ <td><span style="background-color: #dfef77">partiellement (12 %)</span></td>
+ <td></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>B Tutoriel Scheme<br>(1222)</td>
+ <td></td>
+ <td></td>
+ <td><span style="background-color: #d0f0f8">non</span></td>
+ <td></td>
+ <td>pré-GDP</td>
+ </tr>
+</table>
+<p></p>
+
+<table align="center" border="2">
+ <tr align="center">
+ <th>GNU LilyPond --- Utilisation du programme</th> <th>Traducteurs</th>
+ <th>Relecteurs</th>
+ <th>Traduit</th>
+ <th>À jour</th>
+ <th>Autres informations</th>
+ </tr>
+ <tr align="left">
+ <td>Titre des chapitres<br>(407)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #47ff24">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1 Installation<br>(193)</td>
+ <td>John Mandereau</td>
+ <td>Jean-Charles Malahieude</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #ff9a4e">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2 Environnement de travail<br>(1149)</td>
+ <td>Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>3 Exécution de LilyPond<br>(3023)</td>
+ <td></td>
+ <td></td>
+ <td><span style="background-color: #d0f0f8">non</span></td>
+ <td></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>4 @command{lilypond-book} : association musique-texte<br>(3248)</td>
+ <td></td>
+ <td></td>
+ <td><span style="background-color: #d0f0f8">non</span></td>
+ <td></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>5 Conversion à partir d'autres formats<br>(1171)</td>
+ <td>Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td>pré-GDP</td>
+ </tr>
+</table>
+<p></p>
+
+<table align="center" border="2">
+ <tr align="center">
+ <th>GNU LilyPond --- Manuel d'initiation</th> <th>Traducteurs</th>
+ <th>Relecteurs</th>
+ <th>Traduit</th>
+ <th>À jour</th>
+ <th>Autres informations</th>
+ </tr>
+ <tr align="left">
+ <td>Titre des chapitres<br>(724)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #dfef77">partiellement (88 %)</span></td>
+ <td><span style="background-color: #40fe23">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1 Notation musicale générale<br>(91)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #2cff20">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1.1 Hauteurs<br>(3155)</td>
+ <td>Frédéric Chiasson</td>
+ <td>Valentin Villenave<br>
+ Jean-Charles Malahieude</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #25fe1f">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1.2 Rythme<br>(4757)</td>
+ <td>Frédéric Chiasson<br>
+ Jean-Charles Malahieude</td>
+ <td>Valentin Villenave<br>
+ Jean-Charles Malahieude<br>
+ </td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1.3 Signes d'interprétation<br>(1392)</td>
+ <td>Valentin Villenave</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #ff6f57">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1.4 Répétitions et reprises<br>(555)</td>
+ <td>Valentin Villenave</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #ff6d58">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1.5 Notes simultanées<br>(1456)</td>
+ <td>Frédéric Chiasson<br>
+ Valentin Villenave</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #ff6d58">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1.6 Notation sur la portée<br>(1689)</td>
+ <td>Valentin Villenave<br>
+ Jean-Charles Malahieude</td>
+ <td>John Mandereau</td>
+ <td><span style="background-color: #dfef77">partiellement (69 %)</span></td>
+ <td><span style="background-color: #ff6f57">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1.7 Notation éditoriale<br>(919)</td>
+ <td>Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #ff6f57">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>1.8 Texte<br>(2412)</td>
+ <td>Jean-Charles Malahieude</td>
+ <td>Valentin Villenave<br>
+ John Mandereau</td>
+ <td><span style="background-color: #dfef77">partiellement (97 %)</span></td>
+ <td><span style="background-color: #ff6f57">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2 Notation spécialisée<br>(76)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #2cff20">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.1 Musique vocale<br>(2725)</td>
+ <td>Valentin Villenave</td>
+ <td>Jean-Charles Malahieude</td>
+ <td><span style="background-color: #dfef77">partiellement (55 %)</span></td>
+ <td><span style="background-color: #ff6d58">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.2 Instruments utilisant des portées multiples<br>(747)</td>
+ <td>Valentin Villenave<br>
+ Jean-Charles Malahieude</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #25fe1f">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.3 Cordes non frettées<br>(235)</td>
+ <td>Valentin Villenave<br>
+ Matthieu Jacquot</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.4 Instruments à cordes frettées<br>(1879)</td>
+ <td>Matthieu Jacquot</td>
+ <td>Jean-Charles Malahieude</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #25fe1f">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.5 Percussions<br>(810)</td>
+ <td>Valentin Villenave</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #dfef77">partiellement (44 %)</span></td>
+ <td><span style="background-color: #ff6d58">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.6 Instruments à vent<br>(136)</td>
+ <td>Valentin Villenave</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.7 Notation des accords<br>(1516)</td>
+ <td>Valentin Villenave</td>
+ <td>Jean-Charles Malahieude<br>
+ John Mandereau</td>
+ <td><span style="background-color: #dfef77">partiellement (59 %)</span></td>
+ <td><span style="background-color: #ff6f57">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.8 Notations anciennes<br>(4487)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #dfef77">partiellement (82 %)</span></td>
+ <td><span style="background-color: #ff6d58">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>2.9 Musiques du monde<br>(1115)</td>
+ <td></td>
+ <td></td>
+ <td><span style="background-color: #d0f0f8">non</span></td>
+ <td></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>3 Généralités en matière d'entrée et sortie<br>(6170)</td>
+ <td>Jean-Charles Malahieude<br>
+ Valentin Villenave</td>
+ <td></td>
+ <td><span style="background-color: #dfef77">partiellement (5 %)</span></td>
+ <td><span style="background-color: #ff8353">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>4 Gestion de l'espace<br>(8663)</td>
+ <td>Frédéric Chiasson<br>
+ Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #dfef77">partiellement (18 %)</span></td>
+ <td><span style="background-color: #fff23f">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>5 Modification des réglages prédéfinis<br>(11800)</td>
+ <td>Valentin Villenave</td>
+ <td>Gilles Thibault</td>
+ <td><span style="background-color: #dfef77">partiellement (45 %)</span></td>
+ <td><span style="background-color: #ff954f">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>6 Interfaces pour les programmeurs<br>(5187)</td>
+ <td>Valentin Villenave</td>
+ <td>Gilles Thibault</td>
+ <td><span style="background-color: #dfef77">partiellement (9 %)</span></td>
+ <td><span style="background-color: #83fe2c">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>A Bibliographie<br>(310)</td>
+ <td></td>
+ <td></td>
+ <td><span style="background-color: #d0f0f8">non</span></td>
+ <td></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>B Tables du manuel de notation<br>(611)</td>
+ <td>Frédéric Chiasson<br>
+ Jean-Charles Malahieude</td>
+ <td></td>
+ <td><span style="background-color: #dfef77">partiellement (12 %)</span></td>
+ <td><span style="background-color: #97ff2f">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+ <td>C Aide-mémoire<br>(252)</td>
+ <td>Valentin Villenave</td>
+ <td></td>
+ <td><span style="background-color: #1fff1f">oui</span></td>
+ <td><span style="background-color: #33ff21">partiellement</span></td>
+ <td>pré-GDP</td>
+ </tr>
+</table>
+<p></p>
+
+</body>
+</html>
--- /dev/null
+<html>
+<!--
+ Translation of GIT committish: 148e80b8992a7fb9d59ec439c00b79decbbe3bad
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+!-->
+<head>
+ <title>État de la traduction de la documentation de LilyPond</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+<p><a href="index.html">Retour à l'accueil de la documentation</a></p>
+
+<h1>Avancement de la traduction de la documentation</h1>
+
+<p>Cette page présente pour chaque partie de la documentation de
+ LilyPond @TOPLEVEL_VERSION@ l'avancement de la traduction
+ francophone. Pour chaque partie sont indiqués le nombre de mots de
+ l'original en anglais, les noms des traducteurs et relecteurs,
+ le proportion de matériel traduit, l'état de mise à jour, et
+ l'indicateur de révision par rapport au Grand Documentation Project
+ (GDP).
+</p>
+
+<p>Au cours du GDP, la documentation en anglais a été complètement
+ remaniée, et sa révision se poursuit encore actuellement ; le rythme
+ de cette révision ne permet pas de maintenir toutes les traductions
+ à jour. Cependant, le fait que certaines traductions ne soient pas
+ du tout à jour (avec une indication sur fond rouge) ne signifie
+ pas qu'elles sont périmées, mais simplement qu'elles
+ n'atteignent pas la qualité de la documentation en anglais récemment
+ remaniée : les traducteurs font de leur mieux pour au moins mettre à
+ jour dans la documentation la syntaxe et les noms de commande
+ LilyPond. La mise à jour des traductions après le GDP est en
+ cours ; vous pouvez accélérer et améliorer ce processus en
+ participant aux traductions et relectures, qui sont organisées sur
+ la liste de diffusion
+ <a href="http://lists.gnu.org/mailman/listinfo/lilypond-user-fr">lilypond-user-fr@gnu.org</a>.
+</p>
+
+</body>
+</html>
Ligatures are entered by @emph{enclosing} them in @code{\[} and
@code{\]}. Some ligature styles may need additional input syntax
specific for this particular type of ligature. By default, the
-@rinternals{LigatureBracket} engraver just puts a square bracket
+@code{LigatureBracket} engraver just puts a square bracket
above the ligature.
@lilypond[quote,ragged-right,verbatim]
mensural ligatures are supported for mensural music, and with
certain limitations). To use any of these styles, the default
@code{Ligature_bracket_engraver} has to be replaced with one of the
-specialized ligature engravers in the @rinternals{Voice} context,
+specialized ligature engravers in the @code{Voice} context,
as explained in @ref{White mensural ligatures} and @ref{Gregorian
square neume ligatures}.
-@seealso
+@c @seealso
@c TODO: nothing here yet ...
different custos glyphs used in different flavors of notational
style.
-For typesetting custodes, just put a @rinternals{Custos_engraver} into the
-@rinternals{Staff} context when declaring the @code{\layout} block,
+For typesetting custodes, just put a @code{Custos_engraver} into the
+@code{Staff} context when declaring the @code{\layout} block,
and change the style of the custos with an @code{\override} if
desired, as shown in the following example:
The custos glyph is selected by the @code{style} property. The styles
supported are @code{vaticana}, @code{medicaea}, @code{hufnagel}, and
-@code{mensural}. They are demonstrated in the following fragment
+@code{mensural}. They are demonstrated in the following fragment.
@lilypond[quote,ragged-right,fragment]
\new Lyrics \lyricmode {
\markup { \column {
- \typewriter "vaticana"
+ \typewriter "vaticana "
\line { " " \musicglyph #"custodes.vaticana.u0" }
} }
\markup { \column {
- \typewriter "medicaea"
+ \typewriter "medicaea "
\line { " " \musicglyph #"custodes.medicaea.u0" }
}}
\markup { \column {
- \typewriter "hufnagel"
+ \typewriter "hufnagel "
\line { " " \musicglyph #"custodes.hufnagel.u0" }
}}
\markup { \column {
- \typewriter "mensural"
+ \typewriter "mensural "
\line { " " \musicglyph #"custodes.mensural.u0" }
}}
}
@seealso
-Internals Reference: @rinternals{Custos}.
+Internals Reference:
+@rinternals{Custos}.
-Examples:
+Snippets:
@rlsr{Ancient notation}.
@end lilypond
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
@c {{{2 Mensural clefs
@seealso
-Notation Reference: see @ref{Clef}.
+Notation Reference:
+@ref{Clef}.
@knownissues
}
@end lilypond
-Use the @code{style} property of grob @rinternals{TimeSignature}
+Use the @code{style} property of grob @code{TimeSignature}
to select ancient time signatures. Supported styles are
@code{neomensural} and @code{mensural}. The above table uses the
@code{neomensural} style. The following examples show the
@seealso
-Notation Reference: @ref{Time signature}, gives a general introduction to
+Notation Reference:
+@ref{Time signature}, gives a general introduction to
the use of time signatures.
@knownissues
Ratios of note durations do not change with the time signature. For
-example, the ratio of 1 breve = 3 semibreves (@emph{tempus perfectum}) must
-be made by hand, by setting
+example, the ratio of 1@tie{}breve = 3@tie{}semibreves (@emph{tempus
+perfectum}) must be made by hand, by setting
@example
breveTP = #(ly:make-duration -1 0 3 2)
For ancient notation, a note head style other than the @code{default} style
may be chosen. This is accomplished by setting the @code{style} property of
-the @rinternals{NoteHead} object to @code{baroque}, @code{neomensural},
+the @code{NoteHead} object to @code{baroque}, @code{neomensural},
@code{mensural} or @code{petrucci}.
The @code{baroque} style differs from the @code{default} style by:
@seealso
-@ref{Note head styles} gives an overview of all available note head styles.
+Notation Reference:
+@ref{Note head styles}, gives an overview of all available note head styles.
@c {{{2Mensural flags
@cindex flags
-Use the @code{flag-style} property of grob @rinternals{Stem} to
+Use the @code{flag-style} property of grob @code{Stem} to
select ancient flags. Besides the @code{default} flag style,
only the @code{mensural} style is supported.
There are no flags in Gregorian chant notation.
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
@knownissues
@cindex rests, ancient
-Use the @code{style} property of grob @rinternals{Rest} to select
+Use the @code{style} property of grob @code{Rest} to select
ancient rests. Supported styles are @code{classical},
@code{neomensural}, and @code{mensural}. @code{classical} differs
from the @code{default} style only in that the quarter rest looks
See @rlsr{Ancient notation} for a chart of all rests.
@seealso
-Notation Reference: @ref{Rests}, gives a general introduction into the use of
+Notation Reference:
+@ref{Rests}, gives a general introduction into the use of
rests.
@end lilypond
The style for accidentals and key signatures is controlled by the
-@code{glyph-name-alist} property of the grobs @rinternals{Accidental} and
-@rinternals{KeySignature}, respectively; e.g.:
+@code{glyph-name-alist} property of the grobs @code{Accidental} and
+@code{KeySignature}, respectively; e.g.:
@code{\override Staff.Accidental #'glyph-name-alist =
#alteration-mensural-glyph-name-alist}
@seealso
-Notation Reference: @ref{Pitches}, @ref{Accidentals}, and
-@ref{Automatic accidentals} give a general introduction of the use of
-accidentals. @ref{Key signature} gives a general introduction of
-the use of key signatures.
+Notation Reference:
+@ref{Pitches}, @ref{Accidentals}, and @ref{Automatic accidentals}, give a
+general introduction of the use of accidentals. @ref{Key signature}, gives
+a general introduction of the use of key signatures.
-Internals Reference: @rinternals{KeySignature}.
+Internals Reference:
+@rinternals{KeySignature}.
@c {{{2 Annotational accidentals (musica ficta)
@seealso
-Internals Reference: @rinternals{Accidental_engraver} engraver and
-the @rinternals{AccidentalSuggestion} object.
+Internals Reference:
+@rinternals{Accidental_engraver},
+@rinternals{AccidentalSuggestion}.
@c {{{2White mensural ligatures
There is limited support for white mensural ligatures.
To engrave white mensural ligatures, in the layout block, replace
-the @rinternals{Ligature_bracket_engraver} with the
-@rinternals{Mensural_ligature_engraver} in the @rinternals{Voice}
+the @code{Ligature_bracket_engraver} with the
+@code{Mensural_ligature_engraver} in the @code{Voice}
context:
@example
}
@end lilypond
-Without replacing @rinternals{Ligature_bracket_engraver} with
-@rinternals{Mensural_ligature_engraver}, the same music transcribes
+Without replacing @code{Ligature_bracket_engraver} with
+@code{Mensural_ligature_engraver}, the same music transcribes
to the following
@lilypond[quote,ragged-right]
@end lilypond
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
@knownissues
@end menu
When typesetting a piece in Gregorian chant notation, the
-@rinternals{Vaticana_ligature_engraver} automatically selects the
+@code{Vaticana_ligature_engraver} automatically selects the
proper note heads, so there is no need to explicitly set the note
head style. Still, the note head style can be set, e.g., to
@code{vaticana_punctum} to produce punctum neumes. Similarly, the
-@rinternals{Mensural_ligature_engraver} automatically assembles
+@code{Mensural_ligature_engraver} automatically assembles
mensural ligatures. See @ref{Ligatures}, for how ligature
engravers work.
@end lilypond
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
@c {{{2 Gregorian clefs
@seealso
-Notation Reference: see @ref{Clef}.
+Notation Reference:
+@ref{Clef}.
@c {{{2 Gregorian accidentals and key signatures
@c {ancient-accidentals.ly}
The style for accidentals and key signatures is controlled by the
-@code{glyph-name-alist} property of the grobs @rinternals{Accidental} and
-@rinternals{KeySignature}, respectively; e.g.:
+@code{glyph-name-alist} property of the grobs @code{Accidental} and
+@code{KeySignature}, respectively; e.g.:
@code{\override Staff.Accidental #'glyph-name-alist =
#alteration-mensural-glyph-name-alist}
@seealso
-Notation Reference: @ref{Pitches}, @ref{Accidentals}, and
-@ref{Automatic accidentals} give a general introduction of the use of
-accidentals. @ref{Key signature} gives a general introduction of
-the use of key signatures.
+Notation Reference:
+@ref{Pitches}, @ref{Accidentals}, and @ref{Automatic accidentals}, give a
+general introduction of the use of accidentals. @ref{Key signature}, gives
+a general introduction of the use of key signatures.
-Internals Reference: @rinternals{KeySignature}.
+Internals Reference:
+@rinternals{KeySignature}.
@c {{{2Divisiones
@end lilypond
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
@knownissues
@seealso
-Notation Reference: @ref{Breath marks}.
+Notation Reference:
+@ref{Breath marks}.
-Internals Reference: @rinternals{BreathingSign}.
+Internals Reference:
+@rinternals{BreathingSign}.
-Examples: @rlsr{Ancient notation}.
+Snippets:
+@rlsr{Ancient notation}.
@c {{{2Gregorian square neumes ligatures
modifying the shape of the second note: @code{\[ a \pes \deminutum
b \] }, the second by modifying the shape of a single-note neume
with @code{\auctum} and one of the direction markers
-@code{\descendens} or @code{\ascendens}, e.g. @code{ \[ \auctum
+@code{\descendens} or @code{\ascendens}, e.g., @code{ \[ \auctum
\descendens a \] }.
@noindent
In addition to the note signs, gregorian.ly also defines the
commands @code{\versus}, @code{\responsum}, @code{\ij},
@code{\iij}, @code{\IJ}, and @code{\IIJ}, that will produce the
-corresponding characters, e.g. for use in lyrics, as section
+corresponding characters, e.g., for use in lyrics, as section
markers, etc. These commands use special unicode characters and
will only work if a font is used which supports them.
Use the unary music function @code{\augmentum} to add augmentum dots.
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
@knownissues
When an @code{\augmentum} dot appears at the end of the last staff
within a ligature, it is sometimes vertically placed wrong. As a
-workaround, add an additional skip note (e.g. @code{s8}) as last note
+workaround, add an additional skip note (e.g., @code{s8}) as last note
of the staff.
@code{\augmentum} should be implemented as a head prefix rather than a
TBC
-@seealso
+@c @seealso
@c ... and reference to other sections ...
@c TBC
-@seealso
+@c @seealso
@c ... and reference to other sections ...
invisible signature will still take up space.
In many cases, @code{\set Score.timing = ##f} will give good
-results. Another alternative is to use \@code{\CadenzaOn} and
+results. Another alternative is to use @code{\CadenzaOn} and
@code{\CadenzaOff}.
To remove the barlines, the radical approach is to @code{\remove}
to each syllable. In this case, one would want to set the
syllable groups clearly apart, usually also the subdivisions of a
longer melisma. One way to achieve this is to use a fixed
-@code{\time}, e.g. 1/4, and let each syllable or note group fill
+@code{\time}, e.g., 1/4, and let each syllable or note group fill
one of these measures, with the help of tuplets or shorter
durations. If the barlines and all other rhythmical indications
are made transparent, and the space around the barlines is
@c extract from 1.6.1.1
-@seealso
+@c @seealso
@c ... and reference to other sections ...
@c {{{2Ancient and modern from one source
@c Here among others the snippets about reducing note length
TBC
-@seealso
+@c @seealso
@c ... and reference to other sections ...
@c {{{2Editorial markings
TBC
-@seealso
+@c @seealso
@c ... and reference to other sections ...
@seealso
-Internals: @rinternals{OverrideProperty}, @rinternals{RevertProperty},
-@rinternals{PropertySet}, @rinternals{Backend}, and
+Internals:
+@rinternals{OverrideProperty},
+@rinternals{RevertProperty},
+@rinternals{PropertySet},
+@rinternals{Backend},
@rinternals{All layout objects}.
@seealso
Learning Manual:
-@rlearning{An extra staff appears}.
+@rprogram{An extra staff appears}.
+
@node Distances and measurements
@subsection Distances and measurements
@seealso
-Internals Reference: @rinternals{TextSpanner},
-@rinternals{Glissando}, @rinternals{VoiceFollower},
+Internals Reference:
+@rinternals{TextSpanner},
+@rinternals{Glissando},
+@rinternals{VoiceFollower},
@rinternals{TrillSpanner},
@rinternals{line-spanner-interface}.
where there is no line break, or after a line break.
Alternatively, these eight combinations may be specified
-by pre-defined functions, defined in @file{scm/output-lib.scm},
+by pre-defined functions, defined in @file{scm/@/output@/-lib@/.scm},
where the last three columns indicate whether the layout objects
will be visible in the positions shown at the head of the columns:
@ref{Input modes}.
Snippets:
-@rlsr{Chords}
+@rlsr{Chords}.
@knownissues
Snippets:
@rlsr{Chords}.
+
@knownissues
Only one quality modifier should be used per chord, typically on the
highest step present in the chord. Chords with more than quality
@ref{Common chord modifiers}.
Snippets:
-@rlsr{Chords}
+@rlsr{Chords}.
@knownissues
@rglos{figured bass}.
Snippets:
-@rlsr{Chords}
+@rlsr{Chords}.
@node Entering figured bass
@funindex fff
@funindex \ffff
@funindex ffff
+@funindex \fffff
+@funindex fffff
@funindex \fp
@funindex fp
@funindex \sf
@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
{making-slurs-with-complex-dash-structure.ly}
+
@seealso
Music Glossary:
@rglos{slur}.
@seealso
Installed Files:
-@file{scm/output-lib.scm}.
+@file{scm/@/output@/-lib@/.scm}.
Snippets:
@rlsr{Fretted strings}.
@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
{chordchanges-for-fretboards.ly}
+
@seealso
Notation Reference:
@ref{Custom tablatures},
@ref{Predefined fretboard diagrams}.
Installed Files:
-@file{ly/predefined-guitar-fretboards.ly},
-@file{ly/predefined-guitar-ninth-fretboards.ly}.
+@file{ly/@/predefined@/-guitar@/-fretboards@/.ly},
+@file{ly/@/predefined@/-guitar@/-ninth@/-fretboards@/.ly}.
Snippets:
@rlsr{Fretted strings}.
Sometimes the fretboard calculator will be unable to find
-an accceptable diagram. This can often be remedied by
+an acceptable diagram. This can often be remedied by
manually assigning a note to a string. In many cases, only one
note need be manually placed on a string; the rest of
the notes will then be placed appropriately by the @code{FretBoards}
Snippets:
@rlsr{Fretted strings}.
-The file @file{scm/@/output@/-lib@/.scm} contains predefined banjo tunings.
+Installed Files:
+@file{scm/@/output@/-lib@/.scm} contains predefined banjo tunings.
toplevel scores, and combined as a single @code{\book}.
This behavior can be changed by setting the variable
@code{toplevel-score-handler} at toplevel. The default handler is
-defined in the init file @file{../scm/@/lily@/.scm}.
+defined in the init file @file{../@/scm/@/lily@/.scm}.
@item
A @code{\book} block logically combines multiple movements
or @code{\markup} in the same example. This behavior can be
changed by setting the variable @code{toplevel-book-handler} at
toplevel. The default handler is defined in the init file
-@file{../scm/@/lily@/.scm}.
+@file{../@/scm/@/lily@/.scm}.
@item
A @code{\bookpart} block. A book may be divided into several parts,
This behavior can be changed by setting the variable
@code{toplevel-music-handler} at toplevel. The default handler is
-defined in the init file @file{../scm/@/lily@/.scm}.
+defined in the init file @file{../@/scm/@/lily@/.scm}.
@item
A markup text, a verse for example
@end itemize
+
@seealso
Learning Manual:
@rlearning{How LilyPond input files work}.
A more advanced option is to change the definitions of the following
variables in the @code{\paper} block. The init file
-@file{../ly/titling-init.ly} lists the default layout.
+@file{../@/ly/@/titling@/-init@/.ly} lists the default layout.
@table @code
@funindex bookTitleMarkup
@seealso
-Init files: @file{../ly/@/toc@/-init@/.ly}.
+Init files: @file{../@/ly/@/toc@/-init@/.ly}.
@predefined
@menu
* Extracting fragments of music::
* Skipping corrected music::
+* Alternative output formats::
@end menu
@node Extracting fragments of music
In polyphonic music, @code{Score.skipTypesetting} will affect all
voices and staves, saving even more time.
+@node Alternative output formats
+@subsection Alternative output formats
+
+@cindex scalable vector graphics output
+@cindex SVG output
+@cindex encapsulated postscript output
+@cindex EPS output
+
+The default output formats for the printed score are Portable
+Document Format (PDF) and PostScript (PS). Scalable Vector
+Graphics (SVG), Encapsulated PostScript (EPS) and Portable
+Network Graphics (PNG) output formats are also available through
+command line options, see @rprogram{Command line options for
+lilypond}.
@node MIDI output
Context definitions follow precisely the same syntax as those
within a @code{\layout} block. Translation modules for sound are
called performers. The contexts for MIDI output are defined in
-@file{../ly/@/performer@/-init@/.ly},
+@file{../@/ly/@/performer@/-init@/.ly},
see @rlearning{Other sources of information}.
For example, to remove the effect of dynamics
from the MIDI output, insert the following lines in the
MIDI volume range. The default fractions range from 0.25 for
@notation{ppppp} to 0.95 for @notation{fffff}. The set of dynamic
marks and the associated fractions can be seen in
-@file{../scm/midi.scm}, see @rlearning{Other sources of information}.
+@file{../@/scm/@/midi.scm}, see @rlearning{Other sources of information}.
This set of fractions may be changed or extended by providing a
function which takes a dynamic mark as its argument and returns the
required fraction, and setting
Alternatively, if the whole table of fractions needs to be
redefined, it would be better to use the
@notation{default-dynamic-absolute-volume} procedure in
-@file{../scm/midi.scm} and the associated table as a model.
+@file{../@/scm/@/midi.scm} and the associated table as a model.
The final example in this section shows how this might be done.
@unnumberedsubsubsec Overall MIDI volume
LilyPond will, by default, apply a small degree of equalization
to a few instruments. The instruments and the equalization
applied are shown in the table @notation{instrument-equalizer-alist}
-in @file{../scm/midi.scm}.
+in @file{../@/scm/@/midi.scm}.
This basic default equalizer can be replaced by setting
@code{instrumentEqualizer} in the @code{Score} context to a new
is done in the same way as shown for resetting the
@code{dynamicAbsoluteVolumeFunction} at the start of this section.
The default equalizer, @notation{default-instrument-equalizer}, in
-@file{../scm/midi.scm} shows how such a procedure might be written.
+@file{../@/scm/@/midi.scm} shows how such a procedure might be written.
The following example sets the relative flute and clarinet volumes
to the same values as the previous example.
@ref{Glissando}.
@item A @notation{bisbigliando} is written as a tremelo @ref{Tremolo
-repeats}
+repeats}.
@item Natural harmonics are covered under @ref{Harmonics}.
@seealso
Notation Reference:
-@ref{Tremolo repeats}
-@ref{Glissando}
-@ref{Arpeggio}
-@ref{Harmonics}
+@ref{Tremolo repeats},
+@ref{Glissando},
+@ref{Arpeggio},
+@ref{Harmonics}.
@node Harp pedals
@unnumberedsubsubsec Harp pedals
@lilypond[quote,verbatim,relative=2]
\textLengthOn
-cis1_\markup \concat \vcenter { [D \flat C \sharp B|E \sharp F \sharp G A \flat] }
-c!1_\markup \concat \vcenter {[ C \natural ]}
+cis1_\markup \concat \vcenter {
+ [D \flat C \sharp B|E \sharp F \sharp G A \flat] }
+c!1_\markup \concat \vcenter {
+ [ C \natural ] }
@end lilypond
or pedal diagrams:
@seealso
Notation Reference:
-@ref{Text scripts}
-@ref{Instrument Specific Markup}
+@ref{Text scripts},
+@ref{Instrument Specific Markup}.
* Technical glossary::
* All context properties::
* Layout properties::
-* Identifiers::
+* Available music functions::
* Scheme functions::
@end menu
@cindex Font, Feta
The following symbols are available in the Emmentaler font and may be
-accessed directly using text markup such as @code{g^\markup @{
-\musicglyph #"scripts.segno" @}}, see @ref{Formatting text}.
+accessed directly using text markup with the name of the glyph
+as shown in the tables below,
+such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or
+@code{\markup @{\musicglyph #"five"@}}. For more information,
+see @ref{Formatting text}.
@menu
A glossary of the technical terms and concepts used internally.
@menu
+* alist::
* callback::
* glyph::
* grob::
* stencil::
@end menu
+@node alist
+@unnumberedsubsec alist
+
+@cindex alist
+@cindex association list
+
+An association list or @strong{alist} for short is a Scheme pair
+which associates a value with a key: @w{@code{(key . value)}}. For
+example, in @file{scm/lily.scm}, the alist
+@w{@qq{type-p-name-alist}} associates certain type predicates
+(e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
+that type-check failures can be reported with a console message that
+includes the name of the expected type predicate.
+
@node callback
@unnumberedsubsec callback
A set of glyphs with a single style and shape comprise a font, and
a set of fonts covering several styles and sizes comprise a typeface.
+
@seealso
Notation Reference:
-@ruser{Fonts},
-@ruser{Text encoding}.
+@ref{Fonts},
+@ref{Text encoding}.
+
@node grob
@unnumberedsubsec grob
etc are called @q{Layout objects}, often known as @q{GRaphical
OBjects}, or @strong{grobs} for short.
+
@seealso
Learning Manual:
@rlearning{Objects and interfaces},
Internals Reference:
@rinternals{All layout objects}.
+
@node interface
@unnumberedsubsec interface
grouped together in an object called a @code{grob-interface}, or
just @q{interface} for short.
+
@seealso
Learning Manual:
@rlearning{Objects and interfaces},
@rlearning{Properties found in interfaces}.
Notation Reference:
-@ruser{Layout interfaces}.
+@ref{Layout interfaces}.
Internals Reference:
@rinternals{Graphical Object Interfaces}.
+
@node lexer
@unnumberedsubsec lexer
@cindex lexer
+@cindex Flex
A @strong{lexer} is a program which converts a sequence of
characters into a sequence of tokens, a process called lexical
-analysis. The LilyPond lexer converts an input @code{.ly} file
-into a tokenized file more suited to the next stage of processing,
-parsing, see @ref{parser}.
+analysis. The LilyPond lexer converts the stream obtained from an
+input @file{.ly} file into a tokenized stream more suited to the
+next stage of processing - parsing, for which see @ref{parser}.
+The LilyPond lexer is built with Flex from the lexer file
+@file{lily/lexer.ll} which contains the lexical rules. This file
+is part of the source code and is not included in the LilyPond
+binary installation.
@node output-def
@unnumberedsubsec output-def
@unnumberedsubsec parser
@cindex parser
-
-A @strong{parser} analyzes the sequence of tokens produced by
-a lexer to determine its grammatical structure as defined by the
-rules governing the format of an input file.
+@cindex Bison
+@cindex grammar for LilyPond
+@cindex BNF
+
+A @strong{parser} analyzes the sequence of tokens produced by a
+lexer to determine its grammatical structure, grouping the tokens
+progressively into larger groupings according to the rules of the
+grammar. If the sequence of tokens is valid the end product is a
+tree of tokens whose root is the grammar's start symbol. If this
+cannot be achieved the file is invalid and an appropriate error
+message is produced. The syntactic groupings and the rules for
+constructing the groupings from their parts for the LilyPond syntax
+are defined in @file{lily/parser.yy} and shown in Backus Normal Form
+(BNF) in @ref{LilyPond grammar}. This file is used to build the
+parser during the program build by the parser generator, Bison. It
+is part of the source code and is not included in the LilyPond
+binary installation.
@node parser variable
@unnumberedsubsec parser variable
@include layout-properties.tely
-@node Identifiers
-@appendixsec Identifiers
+@node Available music functions
+@appendixsec Available music functions
@include identifiers.tely
@ref{Instantiating new staves}.
@ref{Percussion in MIDI}.
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
@node Basic percussion notation
@seealso
-Notation Reference: @ref{Percussion in MIDI}, @ref{Percussion notes}.
+Notation Reference:
+@ref{Percussion in MIDI},
+@ref{Percussion notes}.
-File: @file{ly/@/drumpitch@/-init@/.ly}
+File:
+@file{ly/@/drumpitch@/-init@/.ly}
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
@node Drum rolls
@seealso
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
@node Pitched percussion
@c TODO: possibly link to an alternate section of NR 3.5, if
@c "percussion in MIDI" gets a separate subsubsection for
@c pitched percussion sounds. -gp
-Notation Reference: @ref{Percussion in MIDI}.
+Notation Reference:
+@ref{Percussion in MIDI}.
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
@node Percussion staves
}
@end lilypond
-Here an short example by maestro Stravinsky (from @q{L'histoire du Soldat})
+Here a short example taken from Stravinsky's @q{L'histoire du Soldat}.
@lilypond[quote,verbatim]
#(define mydrums '((bassdrum default #t 4)
@seealso
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
-Internals Reference: @rinternals{DrumStaff}, @rinternals{DrumVoice}.
+Internals Reference:
+@rinternals{DrumStaff},
+@rinternals{DrumVoice}.
@c TODO: check name -gp
@seealso
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
@seealso
Notation Reference:
-@ref{Mensural clefs}, @ref{Gregorian clefs}.
+@ref{Mensural clefs},
+@ref{Gregorian clefs}.
Snippets:
@rlsr{Pitches}.
@rglos{transposing instrument}.
Notation Reference:
-@ref{Quoting other voices}, @ref{Transpose}.
+@ref{Quoting other voices},
+@ref{Transpose}.
Snippets:
@rlsr{Pitches}.
Internals Reference:
@rinternals{Accidental},
@rinternals{Accidental_engraver},
-@rinternals{GrandStaff} and
+@rinternals{GrandStaff},
@rinternals{PianoStaff},
@rinternals{Staff},
@rinternals{AccidentalSuggestion},
@funindex cross
-Note heads may be altered:
+The appearance of note heads may be altered:
@lilypond[verbatim,quote,relative=2]
-c4 b a b
+c4 b
\override NoteHead #'style = #'cross
-c4 b a b
+c4 b
+\revert NoteHead #'style
+a b
+\override NoteHead #'style = #'harmonic
+a b
\revert NoteHead #'style
c4 d e f
@end lilypond
-There is a shorthand for diamond shapes which can only be used
-inside chords:
+To see all note head styles, see @ref{Note head styles}.
+
+The @code{cross} style is used to represent a variety of musical
+intentions. The following generic predefined commands modify the
+note head in both staff and tablature contexts and can be used to
+represent any musical meaning:
@lilypond[verbatim,quote,relative=2]
-<c f\harmonic>2 <d a'\harmonic>4 <c g'\harmonic>
+c4 b
+\xNotesOn
+ a b c4 b
+\xNotesOff
+c4 d
@end lilypond
-To see all note head styles, see @ref{Note head styles}.
+The music function form of this predefined command may be used
+inside and outside chords to generate crossed note heads in both
+staff and tablature contexts:
+@lilypond[verbatim,quote,relative=2]
+c4 b
+\xNote { e f }
+c b < g \xNote c f > b
+@end lilypond
+
+There is also a shorthand for diamond shapes which can be used
+only inside chords:
+
+@lilypond[verbatim,quote,relative=2]
+<c f\harmonic>2 <d a'\harmonic>4 <c g'\harmonic>
+@end lilypond
+
+@predefined
+@code{\harmonic},
+@code{\xNotesOn},
+@code{\xNotesOff},
+@code{\xNote}.
+@endpredefined
@seealso
Snippets:
* Mathematics in functions::
* Void functions::
* Functions without arguments::
-* Overview of available music functions::
@end menu
@node Overview of music functions
@end example
-@node Overview of available music functions
-@subsection Overview of available music functions
-
-@c fixme ; this should be move somewhere else?
-The following commands are music functions
-
-@include identifiers.tely
-
-
-
@node Programmer interfaces
@section Programmer interfaces
\repeat volta @var{repeatcount} @var{musicexpr}
@end example
+@noindent
where @var{musicexpr} is a music expression. Alternate endings can be
produced using @code{\alternative}. In order to delimit the alternate
endings, the group of alternatives must be enclosed in a set of
@warning{Do not include @code{@bs{}relative} inside a
@code{@bs{}repeat}. It will cause unwanted staves to appear.
-See @rlearning{An extra staff appears}.}
+See @rprogram{An extra staff appears}.}
@cindex repeat with upbeat
@cindex upbeat in a repeat
@seealso
-Music Glossary: @rglos{repeat}, @rglos{volta}.
+Music Glossary:
+@rglos{repeat},
+@rglos{volta}.
-Notation Reference: @ref{Bar lines}, @ref{Modifying context plug-ins}.
+Notation Reference:
+@ref{Bar lines},
+@ref{Modifying context plug-ins}.
-Snippets: @rlsr{Repeats}.
+Snippets:
+@rlsr{Repeats}.
-Internals Reference: @rinternals{VoltaBracket},
-@rinternals{RepeatedMusic}, @rinternals{VoltaRepeatedMusic},
+Internals Reference:
+@rinternals{VoltaBracket},
+@rinternals{RepeatedMusic},
+@rinternals{VoltaRepeatedMusic},
@rinternals{UnfoldedRepeatedMusic}.
\repeat unfold @var{repeatcount} @var{musicexpr}
@end example
+@noindent
where @var{musicexpr} is a music expression and @var{repeatcount} is
the number of times @var{musicexpr} is repeated.
@seealso
-Snippets: @rlsr{Repeats}.
+Snippets:
+@rlsr{Repeats}.
-Internals Reference: @rinternals{RepeatedMusic},
+Internals Reference:
+@rinternals{RepeatedMusic},
@rinternals{UnfoldedRepeatedMusic}.
@code{\repeat percent @var{number} @var{musicexpr}}
@end example
+@noindent
where @var{musicexpr} is a music expression.
@lilypond[verbatim,quote,relative=2]
@seealso
-Music Glossary: @rglos{percent repeat}, @rglos{simile}.
+Music Glossary:
+@rglos{percent repeat},
+@rglos{simile}.
-Snippets: @rlsr{Repeats}.
+Snippets:
+@rlsr{Repeats}.
-Internals Reference: @rinternals{RepeatSlash},
-@rinternals{PercentRepeat}, @rinternals{DoublePercentRepeat},
+Internals Reference:
+@rinternals{RepeatSlash},
+@rinternals{PercentRepeat},
+@rinternals{DoublePercentRepeat},
@rinternals{DoublePercentRepeatCounter},
-@rinternals{PercentRepeatCounter}, @rinternals{PercentRepeatedMusic}.
+@rinternals{PercentRepeatCounter},
+@rinternals{PercentRepeatedMusic}.
@knownissues
the duration of the subdivision, and it must be at least 8. A
@var{number} value of 8 gives one line across the note stem. If
the length is omitted, the last value (stored in
-@code{tremoloFlags}) is used
+@code{tremoloFlags}) is used:
@lilypond[quote,verbatim,relative=2]
c2:8 c:32
c: c:
@end lilypond
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{cross-staff-tremolos.ly}
+
@seealso
-Snippets: @rlsr{Repeats}.
+Snippets:
+@rlsr{Repeats}.
@cindex tremolo, cross-staff
@cindex cross-staff tremolo
@rglos{tuplet},
@rglos{polymetric}.
-Learning Manual: @rlearning{Tweaking methods}.
+Learning Manual:
+@rlearning{Tweaking methods}.
Notation Reference:
@ref{Time administration},
@rinternals{TupletNumber},
@rinternals{TimeScaledMusic}.
+
@cindex grace notes within tuplet brackets
@knownissues
@cindex compound time signatures
@cindex time signature, compound
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
{compound-time-signatures.ly}
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly}
+
@seealso
Music Glossary:
d4 e d c
@end lilypond
+Note that these predefined commands affect all staves in the
+score, even when they are placed in just one @code{Voice}
+context. To change this, move the @code{Timing_translator}
+from the @code{Score} context to the @code{Staff} context, as
+shown in @ref{Polymetric notation}.
@predefined
@code{\cadenzaOn},
@rglos{cadenza}.
Notation Reference:
-@ref{Visibility of objects}.
+@ref{Visibility of objects},
+@ref{Polymetric notation}.
Snippets:
@rlsr{Rhythms}.
@seealso
-Music Glossary: @rglos{tie}
+Music Glossary:
+@rglos{tie}
Learning Manual:
@rlearning{Engravers explained},
Snippets:
@rlsr{Rhythms}.
-Internals Reference: @rinternals{Beam}.
+Internals Reference:
+@rinternals{Beam}.
@knownissues
Autobeam and beam subdivide settings are stored in the
@code{beamSettings} property. Default values of @code{beamSettings}
-are determined in @file{scm/beam-settings.scm}. Entries in
+are determined in @file{scm/@/beam@/-settings@/.scm}. Entries in
@code{beamSettings} are indexed by time signature and
rule type.
@cindex measure lines, manual
This and other special bar lines may be inserted manually at any
-point. When they coincide with the end of a measure they replace the
-simple bar line which would have been inserted there automatically.
-When they do not coincide with the end of a measure the specified bar
-line is inserted at that point in the printed output. Such insertions
-do not affect the calculation and placement of subsequent automatic
-bar lines.
+point. When they coincide with the end of a measure they replace
+the simple bar line which would have been inserted there
+automatically. When they do not coincide with the end of a measure
+the specified bar line is inserted at that point in the printed
+output.
+
+Note that manual bar lines are purely visual. They do not affect
+any of the properties that a normal bar line would affect, such as
+measure numbers, accidentals, line breaks, etc. They do not affect
+the calculation and placement of subsequent automatic bar lines.
+When a manual bar line is placed where a normal bar line already
+exists, the effects of the original bar line are not altered.
Two types of simple bar lines and five types of double bar lines are available
for manual insertion:
Snippets:
@rlsr{Rhythms}.
-Internals Reference: @rinternals{BarLine} (created at
-@rinternals{Staff} level), @rinternals{SpanBar} (across
-staves), @rinternals{Timing_translator} (for Timing
-properties).
+Internals Reference:
+@rinternals{BarLine} (created at @code{Staff} level),
+@rinternals{SpanBar} (across staves),
+@rinternals{Timing_translator} (for Timing properties).
@node Bar numbers
Snippets:
@rlsr{Rhythms}.
-Internals Reference: @rinternals{BarNumber}.
+Internals Reference:
+@rinternals{BarNumber}.
@cindex bar number collision
Snippets:
@rlsr{Rhythms}.
-Internals Reference: @rinternals{RehearsalMark}.
+Internals Reference:
+@rinternals{RehearsalMark}.
@node Special rhythmic concerns
@rglos{acciaccatura},
@rglos{appoggiatura}.
-Installed Files: @file{ly/@/grace@/-init@/.ly}.
+Installed Files:
+@file{ly/@/grace@/-init@/.ly}.
-Snippets: @rlsr{Rhythms}.
+Snippets:
+@rlsr{Rhythms}.
-Internals Reference: @rinternals{GraceMusic}.
+Internals Reference:
+@rinternals{GraceMusic}.
@knownissues
@seealso
-This manual: @ref{Bar numbers}, @ref{Unmetered music}
+Notation Reference:
+@ref{Bar numbers},
+@ref{Unmetered music}.
Snippets:
@rlsr{Rhythms}.
-Internals Reference: @rinternals{Timing_translator},
-@rinternals{Score}
+Internals Reference:
+@rinternals{Timing_translator},
+@rinternals{Score}.
>>
@end lilypond
+@noindent
Here, voices are instantiated explicitly and are given names. The
@code{\voiceOne} ... @code{\voiceFour} commands set up the voices
so that first and third voices get stems up, second and fourth
>> \oneVoice
@end example
+@noindent
Here, the first expression within a temporary polyphonic passage is
placed into the @code{Voice} context which was in use immediately
before the polyphonic passage, and that same @code{Voice} context
>>
@end lilypond
+@noindent
Here, the @code{\voiceOne} and @code{\voiceTwo} commands are
required to define the settings of each voice.
@table @code
-@item after-title-space
-@funindex after-title-space
-
-The amount of space between the title and the first system.
-Default: @code{5\mm}.
-
-@item before-title-space
-@funindex before-title-space
+@item after-title-spacing
+@funindex after-title-spacing
+
+Specifies how to calculate the space between a title (or top-level markup)
+and the system that follows it. This is an associative list with five
+components:
+@itemize @bullet
+@item @var{space} -- the amount of stretchable space between the baseline
+of a title and the center of the staff that follows it;
+@item @var{padding} -- the minimum amount of whitespace that must be
+present between a title and the staff that follows it;
+@item @var{stretchability} -- the ease with which the stretchable
+space increases when a page is stretched.
+If this is zero, the distance to the next staff will not stretch at all;
+@item @var{minimum-distance} -- the minimum distance to place between
+the baseline of a title and the center of the staff that follows it. This differs
+from @var{padding} in that the height of a staff has no effect on
+the application of @var{minimum-distance} (whereas the height of a
+staff is crucial for @var{padding}).
+@end itemize
-Amount of space between the last system of the previous piece and the
-title of the next. Default: @code{10\mm}.
+If a page has a ragged bottom, @var{space} is not stretched. In particular, the
+resulting distance on such a page is the largest of
+@itemize @bullet
+@item @var{space},
+@item @var{minimum-distance}, and
+@item @var{padding} plus the smallest distance necessary to eliminate overlap.
+@end itemize
-@item between-system-padding
-@funindex between-system-padding
+@item before-title-spacing
+@funindex before-title-spacing
-The minimum amount of white space that will always be present
-between the bottom-most symbol of one system, and the top-most of
-the next system. Default: @code{4\mm}.
+Specifies the spacing between a system and the title (or top-level markup) that
+follows it.
+The distances are measured from the center of the last staff in the system to
+the baseline of the title that follows it. See @var{after-title-spacing}.
-Increasing this will put systems whose bounding boxes almost touch
-farther apart.
+@item between-scores-system-spacing
+@funindex between-scores-system-spacing
-@item between-system-space
-@funindex between-system-space
+Specifies the spacing between two systems if they are in different scores, but
+there is no title between them. See @var{after-title-spacing}.
-The distance between systems. It is the ideal distance between
-the center of the bottom staff of one system and the center of the
-top staff of the next system. Default: @code{20\mm}.
+@item between-system-spacing
+@funindex between-system-spacing
-Increasing this value will provide a more even appearance of the
-page at the cost of using more vertical space.
+Specifies the spacing between the center of the bottom staff of one system
+and the center of the top staff of the following system. See @var{after-title-spacing}.
-@item between-title-space
-@funindex between-title-space
+@item between-title-spacing
+@funindex between-title-spacing
-Amount of space between consecutive titles (e.g., the title of the
-book and the title of a piece). Default: @code{2\mm}.
+Specifies the spacing between two titles (or top-level markups).
+The distances are measured from the baseline of the first title to the baseline
+of the second. See @var{after-title-spacing}.
@item bottom-margin
@funindex bottom-margin
The margin between footer and bottom of the page. Default:
@code{6\mm}.
+@item bottom-system-spacing
+@funindex bottom-system-spacing
+
+Specifies the spacing from the center of the last staff (or the
+baseline of the last top-level markup) to the bottom of the
+printable area (ie. the top of the bottom margin).
+See @var{after-title-spacing}.
+
@item foot-separation
@funindex foot-separation
Distance between the bottom-most music system and the page
footer. Default: @code{4\mm}.
-@item head-separation
-@funindex head-separation
+@item top-title-spacing
+@funindex top-title-spacing
-Distance between the header markup (@code{oddHeaderMarkup} and
-@code{evenHeaderMarkup}) and the title markup
-(@code{bookTitleMarkup}, @code{title}, and others). If the header
-markup and title markup are not present, it is the distance
-between @code{top-margin} and the spot where the title markup
-would normally appear. Default: @code{4\mm}.
+Specifies the spacing from the top of the printable area (ie.
+the bottom of the top margin) to the baseline of the title.
+See @var{after-title-spacing}.
-@item page-top-space
-@funindex page-top-space
+@item top-system-spacing
+@funindex top-system-spacing
-Distance from the top of the printable area to the center of the
-first staff. This only works for staves that are vertically
-small. Big staves are set with the top of their bounding box
-aligned to the top of the printable area. Default: @code{12\mm}.
+Specifies the spacing from the top of the printable area (ie.
+the bottom of the top margin) to the center of the first staff.
+This only takes effect if there is no title at the top of the
+page (in which case @var{top-title-spacing} is used instead).
+See @var{after-title-spacing}.
@item paper-height
@funindex paper-height
You can also define these values in Scheme. In that case @code{mm},
@code{in}, @code{pt}, and @code{cm} are variables defined in
-@file{paper-defaults.ly} with values in millimeters. That is why the
+@file{paper@/-defaults@/.ly} with values in millimeters. That is why the
value must be multiplied in the example
@example
systems ends at their natural horizontal length, instead of being spread
horizontally to fill the whole line. This is useful for
short fragments, and for checking how tight the natural spacing is.
+The normal default setting is false, but if the score has only one
+system the default value is true.
@cindex page layout
@cindex vertical spacing
@seealso
-@ref{Setting the staff size}
+Notation Reference:
+@ref{Setting the staff size}.
+
Snippets:
@rlsr{Spacing}.
d2. d2.
@end lilypond
+
@seealso
Notation Reference:
@ref{Instrument transpositions},
Internals Reference:
@rinternals{TextScript}.
+
@cindex text outside margin
@cindex margin, text running over
@cindex text, keeping inside margin
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
{stand-alone-two-column-markup.ly}
+
@seealso
-Notation Reference: @ref{Formatting text},
+Notation Reference:
+@ref{Formatting text},
@ref{File structure},
@ref{Multiple scores in a book},
@ref{Multi-page markup}.
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
@node Formatting text
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
Installed files:
@file{scm/@/define@/-markup@/-commands@/.scm}.
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
Installed files:
@file{scm/@/define@/-markup@/-commands@/.scm},
c2^\markup { \musicglyph #"timesig.neomensural94" }
@end lilypond
-@noindent
Another way of printing non-text glyphs is described in @ref{Fonts
explained}. This is useful for printing braces of various sizes.
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
Installed files:
@file{scm/@/define@/-markup@/-commands@/.scm},
Snippets:
@rlsr{Text}.
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
Installed files:
@file{scm/@/define@/-markup@/-commands@/.scm}.
+
@funindex \markuplines
@funindex markuplines
FontConfig may be used in a score, using the following syntax:
@lilypond[quote,verbatim,relative=2]
-\override Staff.TimeSignature #'font-name = #"Charter"
+\override Staff.TimeSignature #'font-name = #"Bitstream Charter"
\override Staff.TimeSignature #'font-size = #2
\time 3/4
lilypond -dshow-available-fonts x
@end example
-@noindent
-The last argument of the command can be anything, but has to be
-present.
-
@seealso
Notation Reference:
Snippets:
@rlsr{Text}.
-Installed files:
-@file{lily/@/font@/-config@/-scheme@/.cc}.
+@c A source file gets never installed...
+@c Installed files:
+@c @file{lily/@/font@/-config@/-scheme@/.cc}.
@node Entire document fonts
@}
@end example
-For different or more complex orderings, the best way is to setup the
+For different or more complex orderings, the best way is to set up the
hierarchy of staves and lyrics first, e.g.,
@example
\new ChoirStaff <<
>>
@end example
+@noindent
and then combine the appropriate melodies and lyric lines
@example
@end example
@noindent
-
The final input would resemble
@example
hyphens and extender lines.
Lyrics are printed by interpreting them in the context called
-@rinternals{Lyrics}.
+@code{Lyrics}; see @rinternals{Lyrics}, for more.
@example
\new Lyrics \lyricmode @dots{}
@item
by automatically aligning
the lyrics to a melody or other voice of music, using @code{\addlyrics}
-or @code{\lyricsto}.
+or @code{\lyricsto}
@item
or by specifying the duration of each syllable
\new Lyrics \lyricsto @var{name} @dots{}
@end example
+@noindent
This aligns the lyrics to the
-notes of the @rinternals{Voice} context called @var{name}, which must
+notes of the @code{Voice} context called @var{name}, which must
already exist. Therefore normally the @code{Voice} is specified first, and
then the lyrics are specified with @code{\lyricsto}. The command
@code{\lyricsto} switches to @code{\lyricmode} mode automatically, so the
c4 b8. a16 g4. f8 e4 d c2
}
-% not recommended: left aligns syllables
+% not recommended: left-aligned syllables
\new Lyrics \lyricmode { Joy4 to8. the16 world!4. the8 Lord4 is come.2 }
% wrong: durations needed
@noindent
The value of the property (here: @code{"lala"}) should be the name of
-a @rinternals{Voice} context. Without this setting, extender lines
+a @code{Voice} context. Without this setting, extender lines
will not be formatted properly.
Here is an example demonstrating manual lyric durations,
@ref{Keeping contexts alive}.
Internals Reference:
-@rinternals{Lyrics}.
+@rinternals{Lyrics},
+@rinternals{Voice}.
@node Multiple syllables to one note
In order to assign more than one syllable to a single note, you can
surround them with quotes or use a @code{_} character, to get spaces
between syllables, or use tilde symbol (@code{~}) to get a lyric
-tie@footnote{The lyric ties is implemented with the Unicode character
+tie.@footnote{The lyric ties is implemented with the Unicode character
U+203F, so be
-sure to have a font (Like DejaVuLGC) installed that includes this
-glyph.}.
+sure to have a font (like DejaVuLGC) installed that includes this
+glyph.}
@lilypond[quote,ragged-right,fragment,verbatim]
\time 3/4
Internals Reference:
@rinternals{LyricCombineMusic}.
+
@c Here come the section which used to be "Melismata"
@c the new title might be more self-explanatory
@cindex SATB
@cindex choral score
-A complete example of a SATB score setup is in section
+A complete example of a SATB score setup is in
@rlearning{Vocal ensembles}.
@endpredefined
-@seealso
+@c @seealso
@c @lsr{vocal,lyric@/-combine.ly}.
must be followed by a valid duration, but this is ignored when
@code{\skip} is used in lyrics.
-For example,
-
@lilypond[verbatim,ragged-right,quote]
\relative c' { c c g' }
\addlyrics {
@seealso
Internals Reference:
@rinternals{LyricExtender},
-@rinternals{LyricHyphen}
+@rinternals{LyricHyphen}.
@node Lyrics and repeats
@cindex Spacing lyrics
@cindex Lyrics, increasing space between
-To increase the spacing between lyrics, set the minimum-distance property of
-LyricSpace.
+To increase the spacing between lyrics, set the @code{minimum-distance}
+property of @code{LyricSpace}.
@lilypond[relative,verbatim,fragment,quote,ragged-right]
{
}
@end lilypond
+@noindent
To make this change for all lyrics in the score, set the property in the
layout.
@ref{Special note heads},
Snippets:
-@rlsr{Winds}
+@rlsr{Winds}.
@node Fingerings
@seealso
-@rlsr{Winds}
+@rlsr{Winds}.
@node Bagpipe example
@seealso
-@rlsr{Winds}
+@rlsr{Winds}.
\key re \bayati
@end example
+@noindent
Here @var{re} is the default pitch of the muhayer maqam, and
@var{bayati} is the name of the base maqam in the group.
@seealso
Snippets:
-@rlsr{World music}
+@rlsr{World music}.
@node Further reading
@enumerate
@item
-The music of the Arabs by Habib Hassan Touma [Amadeus Press, 1996],
+@emph{The music of the Arabs} by Habib Hassan Touma [Amadeus Press, 1996],
contains a discussion of maqams and their method of groupings.
There are also various web sites that explain maqams and some
group, rather than a different key signature for each different
maqam.
-Oud methods by the following authors, contain examples of
-mainly Turkish and Arabic compositions.
+Method books by the following authors for the @dfn{Oud}, the Arabic lute,
+contain examples of mainly Turkish and Arabic compositions.
@itemize @bullet
@item
Ibrahim Ali Darwish Al-masri
@end itemize
@end enumerate
-
-
OUT_PDF_IMAGES = $(EPS_ILLUSTRATIONS:%.eps=$(outdir)/%.pdf)
OUT_BITMAP_IMAGES = $(BITMAP_IMAGES:%=$(outdir)/%)
OUT_BITMAP_IMAGES += $(EPS_ILLUSTRATIONS:%.pdf=$(outdir)/%.png)
+OUT_SVG_IMAGES = $(SVG_FILES:%.svg=$(outdir)/%.png)
STEPMAKE_TEMPLATES = documentation
default:
ifeq ($(out),www)
-local-WWW-1: $(OUT_BITMAP_IMAGES) $(OUT_PDF_IMAGES)
+local-WWW-1: $(OUT_BITMAP_IMAGES) $(OUT_PDF_IMAGES) $(OUT_SVG_IMAGES)
endif
#########
$(outdir)/%-flat-bw.png: %-flat-bw.png
convert -depth 8 -geometry 50x50% $< $@
+$(outdir)/%.png: %.svg
+ convert -depth 8 -alpha Off -background white -layers flatten -trim +repage $< $@
+
$(outdir)/%.png: %.png
ln -f $< $@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
- id="svg548"
- sodipodi:version="0.32"
- width="210mm"
- height="297mm"
- sodipodi:docname="example-1.svg"
- inkscape:version="0.39"
- sodipodi:docbase="/home/hanwen/usr/src/newweb/site/switch"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:xml="http://www.w3.org/XML/1998/namespace"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xlink="http://www.w3.org/1999/xlink">
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="571"
+ height="269"
+ id="svg8911"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="text-input-1-annotate.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
- id="defs550">
- <linearGradient
- id="linearGradient792">
- <stop
- style="stop-color:#000;stop-opacity:1;"
- offset="0"
- id="stop793" />
- <stop
- style="stop-color:#fff;stop-opacity:1;"
- offset="1"
- id="stop794" />
- </linearGradient>
- <linearGradient
- xlink:href="#linearGradient792"
- id="linearGradient795" />
- <linearGradient
- xlink:href="#linearGradient792"
- id="linearGradient796" />
- <linearGradient
- xlink:href="#linearGradient792"
- id="linearGradient797" />
- <linearGradient
- xlink:href="#linearGradient792"
- id="linearGradient798" />
- <linearGradient
- xlink:href="#linearGradient792"
- id="linearGradient799" />
+ id="defs8913">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective8919" />
</defs>
<sodipodi:namedview
id="base"
- inkscape:zoom="2.4525204"
- inkscape:cx="231.58330"
- inkscape:cy="460.32837"
- inkscape:window-width="1375"
- inkscape:window-height="911"
- inkscape:window-x="8"
- inkscape:window-y="8" />
- <text
- xml:space="preserve"
- style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:24.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;"
- x="80.3415680"
- y="429.014679"
- id="text551"
- sodipodi:linespacing="100%"><tspan
- x="80.341568"
- y="429.01468"
- sodipodi:role="line"
- id="tspan1054">{</tspan><tspan
- x="80.341568"
- y="453.01468"
- sodipodi:role="line"
- id="tspan1056"> \time 2/4</tspan><tspan
- x="80.341568"
- y="477.01468"
- sodipodi:role="line"
- id="tspan1058"> \clef bass</tspan><tspan
- x="80.341568"
- y="501.01468"
- sodipodi:role="line"
- id="tspan1060"> c4 c g g a a g2</tspan><tspan
- x="80.341568"
- y="525.01468"
- sodipodi:role="line"
- id="tspan1062">}</tspan></text>
- <text
- style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
- x="400.56955"
- y="448.21982"
- id="text562"><tspan
- id="tspan563"></tspan></text>
- <rect
- style="font-size:12.000000;fill:#fa0000;fill-opacity:0.42335799;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect730"
- width="85.952026"
- height="47.097027"
- x="105.17464"
- y="432.73337" />
- <rect
- style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect731"
- width="21.193634"
- height="17.661377"
- x="102.62420"
- y="486.89508" />
- <rect
- style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect732"
- width="21.193634"
- height="17.661377"
- x="149.72118"
- y="486.89508" />
- <rect
- style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect733"
- width="21.193634"
- height="17.661377"
- x="177.97934"
- y="486.89508" />
- <text
- style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
- x="400.56955"
- y="448.21982"
- id="text734"><tspan
- id="tspan735"></tspan></text>
- <text
- style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
- x="459.44083"
- y="447.04242"
- id="text739"><tspan
- id="tspan740"></tspan></text>
- <rect
- style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect743"
- width="21.193634"
- height="17.661377"
- x="236.85062"
- y="486.89502" />
- <text
- style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
- x="400.56955"
- y="448.21982"
- id="text744"><tspan
- id="tspan745"></tspan></text>
- <text
- style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
- x="514.19104"
- y="448.21979"
- id="text749"><tspan
- id="tspan750"></tspan></text>
- <rect
- style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect752"
- width="21.193634"
- height="17.661377"
- x="260.39914"
- y="485.12885" />
- <rect
- style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect753"
- width="21.193634"
- height="17.661377"
- x="291.60086"
- y="486.89508" />
- <rect
- style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect754"
- width="21.193634"
- height="17.661377"
- x="207.41501"
- y="486.89502" />
- <rect
- style="font-size:12.000000;fill:#5974c8;fill-opacity:0.57391298;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect755"
- width="22.959778"
- height="22.959778"
- x="123.52354"
- y="481.59650" />
- <rect
- style="font-size:12.000000;fill:#5974c8;fill-opacity:0.57391298;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect756"
- width="22.959778"
- height="22.959778"
- x="311.32285"
- y="481.30206" />
- <text
- style="fill:#af0000;stroke:none;font-family:Bitstream Charter;font-style:normal;font-weight:normal;font-size:28;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;"
- x="364.413025"
- y="401.540314"
- id="text763"><tspan
- x="364.41302"
- y="401.54031"
- sodipodi:role="line"
- id="tspan800">
-_("Commands start with \\")</tspan></text>
- <text
- style="font-size:28.000000;font-style:normal;font-weight:normal;fill:#008f00;fill-opacity:1.0000000;stroke:#00d500;stroke-width:0.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
- x="323.05475"
- y="454.98016"
- id="text775"><tspan
- x="323.05475"
- y="454.98016"
- sodipodi:role="line"
- id="tspan806">
-_("Letters are notes")</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000af;stroke-opacity:1;stroke-width:1.875;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;stroke-dasharray:none;"
- d="M 262.30989,573.38170 C 233.76782,572.36234 213.27992,562.25728 232.13807,506.19251"
- id="path782"
- sodipodi:nodetypes="cc"
- transform="translate(-103.0247,-0.588715)" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#0000af;stroke-opacity:1;stroke-width:1.875;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;stroke-dasharray:none;"
- d="M 465.80736,560.72683 C 471.17433,536.18388 425.20469,554.40167 426.89137,505.56308"
- id="path783"
- sodipodi:nodetypes="cc"
- transform="translate(-103.0247,-0.588715)" />
- <text
- style="font-size:28.000000;font-style:normal;font-weight:normal;fill:#0000b1;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
- x="167.61949"
- y="582.76678"
- id="text784"><tspan
- x="167.61949"
- y="582.76678"
- sodipodi:role="line"
- id="tspan802">
-_("Numbers are durations")</tspan><tspan
- x="167.61949"
- y="610.76678"
- sodipodi:role="line"
- id="tspan804"></tspan></text>
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00af00;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 316.57929,448.50436 C 300.09529,448.50436 262.44950,440.40439 249.19783,485.43300"
- id="path808"
- sodipodi:nodetypes="cc" />
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="288.41667"
+ inkscape:cy="140"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="651"
+ inkscape:window-height="708"
+ inkscape:window-x="23"
+ inkscape:window-y="13" />
<metadata
- id="metadata69">
- <rdf:RDF
- id="RDF70">
+ id="metadata8916">
+ <rdf:RDF>
<cc:Work
- rdf:about=""
- id="Work71">
- <dc:format
- id="format72">image/svg+xml</dc:format>
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
<dc:type
- id="type74"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#a60000;stroke-width:1.3338088;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 161.31580,432.69054 L 161.31579,432.69055 C 193.19907,377.64512 356.49996,393.11427 356.49996,393.42377"
- id="path1014"
- sodipodi:nodetypes="ccc" />
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#afc6e9;stroke:none;stroke-width:1.63807011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8967"
+ width="14.16193"
+ height="24.16193"
+ x="258.41901"
+ y="128.91904" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.73805976;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8965"
+ width="14.56194"
+ height="24.061941"
+ x="242.96902"
+ y="128.96902" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.71404052;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8963"
+ width="15.585959"
+ height="24.08596"
+ x="214.45702"
+ y="128.95702" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8961"
+ width="17"
+ height="24"
+ x="185"
+ y="129" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.81719244;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8959"
+ width="18.982809"
+ height="24.482809"
+ x="154.00859"
+ y="129.00859" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.89140844;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8957"
+ width="18.908592"
+ height="24.408592"
+ x="125.04572"
+ y="129.0457" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.96262109;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8955"
+ width="12.837379"
+ height="23.337378"
+ x="100.08132"
+ y="129.08131" />
+ <rect
+ style="fill:#afc6e9;stroke:none;stroke-width:1.57691681;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8953"
+ width="16.723083"
+ height="23.723083"
+ x="70.888458"
+ y="128.88846" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.66620374;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8951"
+ width="13.633797"
+ height="24.133797"
+ x="55.433102"
+ y="128.93309" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8949"
+ width="80"
+ height="56"
+ x="53"
+ y="67" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono Bold"
+ x="27"
+ y="58"
+ id="text8921"><tspan
+ sodipodi:role="line"
+ x="27"
+ y="58"
+ id="tspan8925">{</tspan><tspan
+ sodipodi:role="line"
+ x="27"
+ y="88"
+ id="tspan8929"> \time 2/4</tspan><tspan
+ sodipodi:role="line"
+ x="27"
+ y="118"
+ id="tspan8931"> \clef bass</tspan><tspan
+ sodipodi:role="line"
+ x="27"
+ y="148"
+ id="tspan8933"> c4 c g g a a g2</tspan><tspan
+ sodipodi:role="line"
+ x="27"
+ y="178"
+ id="tspan8935">}</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="294"
+ y="44"
+ id="text8937"><tspan
+ sodipodi:role="line"
+ id="tspan8939"
+ x="294"
+ y="44">Commands start with \</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="293"
+ y="86"
+ id="text8941"><tspan
+ sodipodi:role="line"
+ id="tspan8943"
+ x="293"
+ y="86">Letters are notes</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#0044aa;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="180"
+ y="230"
+ id="text8945"><tspan
+ sodipodi:role="line"
+ id="tspan8947"
+ x="180"
+ y="230">Numbers are durations</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 289,36 C 223,32.5 101.5,27.5 92,64"
+ id="path8969"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 289,78 C 225.5,69.5 220.5,125 220.5,125"
+ id="path8971"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 176,222.5 C 98.5,225.5 57,208 77.5,156"
+ id="path8973"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 350,209 C 363.5,184 267.5,211.5 265.5,156"
+ id="path8975"
+ sodipodi:nodetypes="cc" />
+ </g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
- id="svg548"
- sodipodi:version="0.32"
- width="210mm"
- height="297mm"
- sodipodi:docname="annotate-example-2.svg"
- inkscape:version="0.39"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:xml="http://www.w3.org/XML/1998/namespace"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- sodipodi:docbase="/home/hanwen/usr/src/savannah/lily/newweb/site/graphics">
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="588"
+ height="268"
+ id="svg8302"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="text-input-2-annotate.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
- id="defs550" />
+ id="defs8304">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective8310" />
+ </defs>
<sodipodi:namedview
id="base"
- inkscape:zoom="1.7341938"
- inkscape:cx="297.63779"
- inkscape:cy="420.94488"
- inkscape:window-width="1262"
- inkscape:window-height="1055"
- inkscape:window-x="8"
- inkscape:window-y="8" />
- <text
- xml:space="preserve"
- style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:28.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;"
- x="52.9841156"
- y="382.407318"
- id="text554"
- sodipodi:linespacing="100%"><tspan
- x="52.984116"
- y="382.40732"
- sodipodi:role="line"
- id="tspan954">\relative c'' {</tspan><tspan
- x="52.984116"
- y="410.40732"
- sodipodi:role="line"
- id="tspan956"> \key c \minor</tspan><tspan
- x="52.984116"
- y="438.40732"
- sodipodi:role="line"
- id="tspan958"> g(</tspan><tspan
- x="52.984116"
- y="466.40732"
- sodipodi:role="line"
- id="tspan960"> <ees c'>)</tspan><tspan
- x="52.984116"
- y="494.40732"
- sodipodi:role="line"
- id="tspan962"> <d f gis b>-.</tspan><tspan
- x="52.984116"
- y="522.40732"
- sodipodi:role="line"
- id="tspan964"> <ees g bes>-.</tspan><tspan
- x="52.984116"
- y="550.40732"
- sodipodi:role="line"
- id="tspan966">}</tspan><tspan
- x="52.984116"
- y="578.40732"
- sodipodi:role="line"
- id="tspan968"></tspan></text>
- <rect
- style="font-size:12.000000;fill:#ee9797;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
- id="rect626"
- width="19.427519"
- height="77.710083"
- x="85.174614"
- y="447.72412" />
- <rect
- style="font-size:12.000000;fill:#ee9797;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
- id="rect628"
- width="14.129138"
- height="25.903381"
- x="257.16812"
- y="471.71484" />
- <rect
- style="font-size:12.000000;fill:#ee9797;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:0.97468004pt;"
- id="rect629"
- width="17.072718"
- height="24.725952"
- x="255.40198"
- y="501.15015" />
- <rect
- style="font-size:12.000000;fill:#67ee7a;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
- id="rect630"
- width="36.500156"
- height="20.016266"
- x="121.76426"
- y="448.16650" />
- <rect
- style="font-size:12.000000;fill:#67ee7a;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
- id="rect631"
- width="34.145306"
- height="23.548523"
- x="121.76426"
- y="502.32779" />
- <rect
- style="font-size:12.000000;fill:#67ee7a;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0368200pt;"
- id="rect632"
- width="30.024336"
- height="25.314667"
- x="223.68295"
- y="502.90585" />
- <rect
- style="font-size:12.000000;fill:#ad99f2;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
- id="rect633"
- width="24.856951"
- height="25.903351"
- x="104.10285"
- y="416.37610" />
- <rect
- style="font-size:12.000000;fill:#ad99f2;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:0.99361296pt;"
- id="rect634"
- width="37.677589"
- height="26.735905"
- x="271.88599"
- y="471.47107" />
- <rect
- style="font-size:12.000000;fill:#ad99f2;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0392300pt;"
- id="rect635"
- width="37.677547"
- height="24.725952"
- x="273.06339"
- y="500.90649" />
- <rect
- style="font-size:12.000000;fill:#67ee7a;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0368200pt;"
- id="rect636"
- width="37.088890"
- height="25.314667"
- x="190.05493"
- y="471.71478" />
- <rect
- style="font-size:12.000000;fill:#ad99f2;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:0.95553303pt;"
- id="rect638"
- width="17.072678"
- height="24.725899"
- x="224.20026"
- y="444.63416" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#0000b0;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 149.83455,427.22393 C 169.81555,427.22393 266.39455,450.53593 361.30655,428.88893"
- id="path639"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#0000b0;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 319.03655,481.48393 C 352.33955,481.48393 414.58955,470.51793 434.57155,442.21093"
- id="path640"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b300;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 146.92575,533.08248 C 156.91675,549.73348 273.16575,611.54548 354.75775,574.91248"
- id="path641"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b300;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 239.09757,536.47447 C 260.74457,564.78147 286.10157,584.67947 353.53957,566.36347"
- id="path642"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#b30000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 96.111906,528.81335 C 77.795921,578.76735 72.800924,620.39535 152.72690,635.38135"
- id="path643" />
- <text
- style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#00009e;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
- x="375.45959"
- y="435.54965"
- id="text694"><tspan
- x="375.45959"
- y="435.54965"
- sodipodi:role="line"
- id="tspan648">
-_("Add articulations")</tspan></text>
- <text
- style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#00ad00;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
- x="360.02643"
- y="575.85645"
- id="text699"><tspan
- x="360.02643"
- y="575.85645"
- sodipodi:role="line"
- id="tspan707">
-_("Add -es for flat, -is for sharp")</tspan></text>
- <text
- style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#a60000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
- x="168.54550"
- y="644.53925"
- id="text702"><tspan
- x="168.54550"
- y="644.53925"
- sodipodi:role="line"
- id="tspan625">
-_("Enclose pitches in < > for chords")</tspan></text>
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="311.5"
+ inkscape:cy="100"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="715"
+ inkscape:window-height="708"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
<metadata
- id="metadata56">
- <rdf:RDF
- id="RDF57">
+ id="metadata8307">
+ <rdf:RDF>
<cc:Work
- rdf:about=""
- id="Work58">
- <dc:format
- id="format59">image/svg+xml</dc:format>
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
<dc:type
- id="type61"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
- <rect
- style="font-size:12.000000;fill:#ee9797;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
- id="rect970"
- width="14.129138"
- height="25.903381"
- x="204.84946"
- y="444.75378" />
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8370"
+ width="23.5"
+ height="22.5"
+ x="218"
+ y="168" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8368"
+ width="14.5"
+ height="22"
+ x="201"
+ y="168" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8360"
+ width="26"
+ height="22.5"
+ x="173"
+ y="167.5" />
+ <rect
+ style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8366"
+ width="21.5"
+ height="20.5"
+ x="218.5"
+ y="138" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8364"
+ width="16"
+ height="20.5"
+ x="200.5"
+ y="138" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8362"
+ width="28.5"
+ height="25.5"
+ x="145"
+ y="135.5" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8358"
+ width="28"
+ height="22.5"
+ x="86"
+ y="168" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8356"
+ width="18"
+ height="24.5"
+ x="53.5"
+ y="166" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8354"
+ width="18.5"
+ height="23.5"
+ x="53"
+ y="136" />
+ <rect
+ style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8352"
+ width="14"
+ height="27"
+ x="175.5"
+ y="105" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8350"
+ width="17"
+ height="26"
+ x="156"
+ y="105.5" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8348"
+ width="30"
+ height="25"
+ x="86"
+ y="108" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8346"
+ width="20"
+ height="25"
+ x="51.5"
+ y="106" />
+ <rect
+ style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect8344"
+ width="18"
+ height="29"
+ x="73"
+ y="75" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+ x="34"
+ y="50"
+ id="text8312"><tspan
+ sodipodi:role="line"
+ id="tspan8314"
+ x="34"
+ y="50" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono Bold"
+ x="28"
+ y="36"
+ id="text8316"><tspan
+ sodipodi:role="line"
+ id="tspan8318"
+ x="28"
+ y="36">\relative c'' {</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="66"
+ id="tspan8320"> \key c \minor</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="96"
+ id="tspan8322"> g(</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="126"
+ id="tspan8324"> <ees c'>)</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="156"
+ id="tspan8326"> <d f gis b>-.</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="186"
+ id="tspan8328"> <ees g bes>-.</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="216"
+ id="tspan8330">}</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#0044aa;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="299"
+ y="38"
+ id="text8332"><tspan
+ sodipodi:role="line"
+ id="tspan8334"
+ x="299"
+ y="38">Add articulations</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="250"
+ y="140"
+ id="text8336"><tspan
+ sodipodi:role="line"
+ id="tspan8338"
+ x="250"
+ y="140">Add -es for flat, -is for sharp</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="114"
+ y="253"
+ id="text8340"><tspan
+ sodipodi:role="line"
+ id="tspan8342"
+ x="114"
+ y="253">Enclose pitches in < > for chords</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 342.49094,46.616703 C 291.87214,101.82991 162.63456,72.131421 101.11627,89.809091"
+ id="path8372"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 371.50314,45.637518 C 372.91735,75.336 240.84271,89.67052 226.3158,133.37763"
+ id="path8374"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 307.54982,148.21825 C 307.69701,196.64466 189.3833,236.168 187.3833,195.168"
+ id="path8376"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 409.49957,149.23907 C 380.04015,239.51472 84.53048,227.50252 99.702056,197.28932"
+ id="path8378"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 107.48023,246.07969 C 58.689862,262.34315 41.012194,228.40202 62.225397,197.99643"
+ id="path8380"
+ sodipodi:nodetypes="cc" />
+ </g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
- xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
+ xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docbase="/home/hanwen/vc/savannah/lily/newweb/site/graphics"
- inkscape:version="0.41+cvs"
- sodipodi:docname="annotate-example-parts.svg"
- height="297mm"
- width="210mm"
+ width="565"
+ height="439"
+ id="svg7717"
sodipodi:version="0.32"
- id="svg548"
- xml:space="preserve">
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="text-input-parts-both-annotate.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
- id="defs550" />
-
+ id="defs7719">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective7725" />
+ </defs>
<sodipodi:namedview
- inkscape:window-y="40"
- inkscape:window-x="24"
- inkscape:window-height="1183"
- inkscape:window-width="1399"
- inkscape:cy="420.94487"
- inkscape:cx="297.63779"
- inkscape:zoom="1.7341938"
- id="base" />
-
- <text
- sodipodi:linespacing="100%"
- id="text555"
- y="283.503632"
- x="63.5809479"
- style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:28.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;"><tspan
- id="tspan1190"
- sodipodi:role="line"
- y="283.50363"
- x="63.580948">_("hornNotes") =</tspan><tspan
- id="tspan1192"
- sodipodi:role="line"
- y="311.50363"
- x="63.580948">\relative c {</tspan><tspan
- id="tspan1194"
- sodipodi:role="line"
- y="339.50363"
- x="63.580948"> \time 2/4</tspan><tspan
- id="tspan1196"
- sodipodi:role="line"
- y="367.50363"
- x="63.580948"> R2*3</tspan><tspan
- id="tspan1198"
- sodipodi:role="line"
- y="395.50363"
- x="63.580948"> r4 f8 a cis4 f e d</tspan><tspan
- id="tspan1200"
- sodipodi:role="line"
- y="423.50363"
- x="63.580948">}</tspan><tspan
- id="tspan1202"
- sodipodi:role="line"
- y="451.50363"
- x="63.580948" /><tspan
- id="tspan1204"
- sodipodi:role="line"
- y="479.50363"
- x="63.580948">_("bassoonNotes") =</tspan><tspan
- id="tspan1206"
- sodipodi:role="line"
- y="507.50363"
- x="63.580948">\relative c {</tspan><tspan
- id="tspan1208"
- sodipodi:role="line"
- y="535.50363"
- x="63.580948"> \clef bass</tspan><tspan
- id="tspan1210"
- sodipodi:role="line"
- y="563.50363"
- x="63.580948"> r4 d,8 f gis4 c b bes</tspan><tspan
- id="tspan1212"
- sodipodi:role="line"
- y="591.50363"
- x="63.580948"> a8 e f4 g d gis f</tspan><tspan
- id="tspan1214"
- sodipodi:role="line"
- y="619.50363"
- x="63.580948">}</tspan><tspan
- id="tspan1216"
- sodipodi:role="line"
- y="647.50363"
- x="63.580948" /><tspan
- id="tspan1218"
- sodipodi:role="line"
- y="675.50363"
- x="63.580948"> </tspan><tspan
- id="tspan1220"
- sodipodi:role="line"
- y="703.50363"
- x="63.580948" /><tspan
- id="tspan1222"
- sodipodi:role="line"
- y="731.50363"
- x="63.580948" /><tspan
- id="tspan1224"
- sodipodi:role="line"
- y="759.50363"
- x="63.580948" /><tspan
- id="tspan1226"
- sodipodi:role="line"
- y="787.50363"
- x="63.580948"> </tspan></text>
-
-
- <rect
- y="343.849060"
- x="93.6635971"
- height="25.8095703"
- width="72.4331894"
- id="rect662"
- style="font-size:12;fill:#01b500;fill-opacity:0.562044;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-opacity:1;" />
-
- <rect
- y="254.764572"
- x="55.781881"
- height="31.637497"
- width="203.978513"
- id="rect663"
- style="font-size:12;fill:#af3738;fill-opacity:0.565217;fill-rule:evenodd;stroke-width:1pt;" />
-
- <rect
- y="456.245392"
- x="60.3609848"
- height="25.8095398"
- width="246.439331"
- id="rect664"
- style="font-size:12;fill:#af3738;fill-opacity:0.565217;fill-rule:evenodd;stroke-width:1pt;" />
-
- <path
- transform="translate(0.000000,-3.051758e-5)"
- id="path665"
- d="M 166.606 360.625 C 239.606 360.625 356.171 337.076 445.655 338.254 "
- style="fill:none;fill-rule:evenodd;stroke:#00ad00;stroke-opacity:1;stroke-width:1.875;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;stroke-dasharray:none;" />
-
- <path
- transform="translate(0.000000,-3.051758e-5)"
- sodipodi:nodetypes="cc"
- id="path666"
- d="M 306.131 476.601 C 363.824 449.52 492.753 491.908 495.107 454.23 "
- style="fill:none;fill-rule:evenodd;stroke:#b10000;stroke-opacity:1;stroke-width:1.875;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;stroke-dasharray:none;" />
-
- <text
- sodipodi:linespacing="100%"
- id="text667"
- y="346.47586"
- x="455.14835"
- style="line-height:100%;font-variant:normal;font-stretch:normal;font-family:Bitstream Charter;stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000pt;stroke:none;fill-opacity:1.0000000;fill:#00ad00;text-anchor:start;writing-mode:lr;font-weight:normal;font-style:normal;font-size:26.000000"><tspan
- y="346.47586"
- x="455.14835"
- id="tspan1315"
- sodipodi:role="line"> _("Enter multi-rest") </tspan></text>
-
-
- <text
- sodipodi:linespacing="100%"
- id="text674"
- y="444.58768"
- x="429.52213"
- style="line-height:100%;font-variant:normal;font-stretch:normal;font-family:Bitstream Charter;stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000pt;stroke:none;fill-opacity:1.0000000;fill:#b10000;text-anchor:start;writing-mode:lr;font-weight:normal;font-style:normal;font-size:26.000000"><tspan
- y="444.58768"
- x="429.52213"
- id="tspan1317"
- sodipodi:role="line"> _("Store notes in variable") </tspan></text>
-
-
-<metadata
- id="metadata1054">
- <rdf:RDF
- id="RDF1055">
- <cc:Work
- id="Work1056"
- rdf:about="">
- <dc:format
- id="format1057">image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage"
- id="type1059" />
- </cc:Work>
- </rdf:RDF>
-</metadata>
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="285.55612"
+ inkscape:cy="240"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="689"
+ inkscape:window-height="708"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata7722">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect7765"
+ width="74"
+ height="27"
+ x="45"
+ y="105" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect7767"
+ width="223"
+ height="30"
+ x="12"
+ y="222" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect7763"
+ width="174"
+ height="34"
+ x="16"
+ y="8" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:Sans Bold"
+ x="23"
+ y="35"
+ id="text7727"><tspan
+ sodipodi:role="line"
+ id="tspan7729"
+ x="23"
+ y="35">hornNotes =</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="65"
+ id="tspan7731">\relative c {</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="95"
+ id="tspan7733"> \time 2/4</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="125"
+ id="tspan7735"> R2*3</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="155"
+ id="tspan7737"> r4 f8 a cis4 f e d</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="185"
+ id="tspan7739">}</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="215"
+ id="tspan7741" /><tspan
+ sodipodi:role="line"
+ x="23"
+ y="245"
+ id="tspan7743">bassoonNotes =</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="275"
+ id="tspan7745">\relative c {</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="305"
+ id="tspan7747"> \clef bass</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="335"
+ id="tspan7749"> r4 d,8 f gis4 g b bes</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="365"
+ id="tspan7751"> a8 e f4 g d gis f</tspan><tspan
+ sodipodi:role="line"
+ x="23"
+ y="395"
+ id="tspan7753">}</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="327"
+ y="73"
+ id="text7755"><tspan
+ sodipodi:role="line"
+ id="tspan7757"
+ x="327"
+ y="73">Enter multi-rest</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="292"
+ y="212"
+ id="text7759"><tspan
+ sodipodi:role="line"
+ id="tspan7761"
+ x="292"
+ y="212">Store notes in variable</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 321,66 C 228,66 251,121 127,120"
+ id="path7769"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 407,220 C 404,260 280,205 241,237"
+ id="path7771"
+ sodipodi:nodetypes="cc" />
+ </g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
- xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
+ xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docbase="/home/hanwen/vc/savannah/lily/newweb/site/graphics"
- inkscape:version="0.41+cvs"
- sodipodi:docname="annotate-example-single-part.svg"
- height="297mm"
- width="210mm"
+ width="527"
+ height="271"
+ id="svg5884"
sodipodi:version="0.32"
- id="svg682"
- xml:space="preserve">
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="text-input-parts-single-annotate.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
- id="defs684" />
-
-
+ id="defs5886">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective5892" />
+ </defs>
<sodipodi:namedview
- inkscape:current-layer="svg682"
- inkscape:window-y="0"
- inkscape:window-x="72"
- inkscape:window-height="1123"
- inkscape:window-width="1368"
- inkscape:cy="587.01628"
- inkscape:cx="509.84015"
- inkscape:zoom="1.7341938"
- id="base" />
-
-
- <text
- sodipodi:linespacing="100%"
- id="text690"
- y="361.213776"
- x="38.8550110"
- style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:28.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;"><tspan
- id="tspan1160"
- sodipodi:role="line"
- y="361.21378"
- x="38.855011">{</tspan><tspan
- id="tspan1162"
- sodipodi:role="line"
- y="389.21378"
- x="38.855011"> \set Score.skipBars = ##t</tspan><tspan
- id="tspan1164"
- sodipodi:role="line"
- y="417.21378"
- x="38.855011"> \transpose f c' \_("hornNotes")</tspan><tspan
- id="tspan1166"
- sodipodi:role="line"
- y="445.21378"
- x="38.855011">}</tspan><tspan
- id="tspan1168"
- sodipodi:role="line"
- y="473.21378"
- x="38.855011"> </tspan></text>
-
-
-
- <rect
- y="364.06888"
- x="69.357788"
- height="30.066223"
- width="429.67987"
- id="rect705"
- style="font-size:12.000000;fill:#ee9797;fill-opacity:0.73913002;fill-rule:evenodd;stroke-width:1.0000000pt;" />
-
-
- <rect
- y="395.51447"
- x="69.155769"
- height="26.248253"
- width="249.95901"
- id="rect706"
- style="font-size:12.000000;fill:#23e023;fill-opacity:0.49634996;fill-rule:evenodd;stroke-width:1.0000000pt;" />
-
-
- <rect
- y="396.10330"
- x="374.42114"
- height="22.573122"
- width="169.54926"
- id="rect707"
- style="font-size:12.000000;fill:#6165d3;fill-opacity:0.60000002;fill-rule:evenodd;stroke-width:1.0000000pt;" />
-
-
- <path
- id="path708"
- d="M 201.22890,365.83552 C 207.11690,306.96352 258.92290,299.89952 287.18090,295.18952"
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#b10000;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;" />
-
-
- <path
- id="path709"
- d="M 108.21290,423.52852 C 65.825930,463.56152 6.9542299,510.65852 58.760930,543.62652"
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b300;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;" />
-
-
- <path
- id="path710"
- d="M 397.97000,421.17452 C 346.16300,472.98052 367.35700,496.52952 400.32500,517.72252"
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#0000b0;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;" />
-
-
- <text
- sodipodi:linespacing="100.00000%"
- id="text711"
- y="295.36185"
- x="298.96884"
- style="font-size:26.000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#b00000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter"><tspan
- y="295.36185"
- x="298.96884"
- id="tspan1306"
- sodipodi:role="line"> _("Condense multi-rests") </tspan></text>
-
-
-
- <text
- sodipodi:linespacing="100%"
- id="text718"
- y="561.34088"
- x="65.262001"
- style="line-height:100%;font-variant:normal;font-stretch:normal;font-family:Bitstream Charter;stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000pt;stroke:none;fill-opacity:1.0000000;fill:#00b200;text-anchor:start;writing-mode:lr;font-weight:normal;font-style:normal;font-size:26.000000"><tspan
- y="561.34088"
- x="65.262001"
- id="tspan1304"
- sodipodi:role="line"> _("Transpose for F instrument") </tspan></text>
-
-
-
- <text
- id="text723"
- y="528.31940"
- x="379.02060"
- style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#0000ab;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;">
- <tspan
- id="tspan724">_("Reuse variable")</tspan>
- </text>
-
-
-
-<metadata
- id="metadata1154">
- <rdf:RDF
- id="RDF1155">
- <cc:Work
- id="Work1156"
- rdf:about="">
- <dc:format
- id="format1157">image/svg+xml</dc:format>
-
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage"
- id="type1159" />
-
- </cc:Work>
-
- </rdf:RDF>
-
-</metadata>
-
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="255.35714"
+ inkscape:cy="120"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="654"
+ inkscape:window-height="708"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata5889">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5928"
+ width="151"
+ height="29"
+ x="283"
+ y="119" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5926"
+ width="228"
+ height="27"
+ x="48"
+ y="120" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5924"
+ width="379"
+ height="27"
+ x="50"
+ y="89" />
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:Sans Bold"
+ x="25"
+ y="69"
+ id="text5894"><tspan
+ sodipodi:role="line"
+ x="25"
+ y="69"
+ id="tspan5898" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:Sans Bold"
+ x="28"
+ y="79"
+ id="text5902"><tspan
+ sodipodi:role="line"
+ id="tspan5904"
+ x="28"
+ y="79">{</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="109"
+ id="tspan5906"> \set Score.skipBars = ##t</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="139"
+ id="tspan5908"> \transpose f c' \hornNotes</tspan><tspan
+ sodipodi:role="line"
+ x="28"
+ y="169"
+ id="tspan5910">}</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:Sans"
+ x="248"
+ y="43"
+ id="text5912"><tspan
+ sodipodi:role="line"
+ id="tspan5914"
+ x="248"
+ y="43">Condense multi-rests</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#0044aa;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="326"
+ y="208"
+ id="text5916"><tspan
+ sodipodi:role="line"
+ id="tspan5918"
+ x="326"
+ y="208">Reuse variable</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="35"
+ y="244"
+ id="text5920"><tspan
+ sodipodi:role="line"
+ id="tspan5922"
+ x="35"
+ y="244">Transpose for F instrument</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 242,35 C 217,47 173,36 166,86"
+ id="path7681"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 27,236 C -25,207 56,188 90,152"
+ id="path7683"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 319,200 C 304,196 295,183 333,152"
+ id="path7685"
+ sodipodi:nodetypes="cc" />
+ </g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
+ xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- id="svg548"
+ width="594"
+ height="470"
+ id="svg5281"
sodipodi:version="0.32"
- width="210mm"
- height="297mm"
- sodipodi:docname="annotate-example-lead.svg"
- inkscape:version="0.42"
- sodipodi:docbase="/home/hanwen/vc/savannah/lily/newweb/site/graphics">
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="text-input-pop-annotate.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
- id="defs550" />
+ id="defs5283">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective5289" />
+ </defs>
<sodipodi:namedview
id="base"
- inkscape:zoom="0.86709690"
- inkscape:cx="310.90043"
- inkscape:cy="218.54536"
- inkscape:window-width="1397"
- inkscape:window-height="1211"
- inkscape:window-x="8"
- inkscape:window-y="8"
- inkscape:current-layer="svg548" />
- <text
- xml:space="preserve"
- style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:22.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;text-align:start;line-height:125%"
- x="41.2098694"
- y="376.520386"
- id="text551"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan1338"
- x="41.209869"
- y="376.52039"><<</tspan><tspan
- sodipodi:role="line"
- id="tspan1340"
- x="41.209869"
- y="404.02039"> \chords {</tspan><tspan
- sodipodi:role="line"
- id="tspan1342"
- x="41.209869"
- y="431.52039"> c1:m7 f2:7 c2</tspan><tspan
- sodipodi:role="line"
- id="tspan1344"
- x="41.209869"
- y="459.02039"> }</tspan><tspan
- sodipodi:role="line"
- id="tspan1346"
- x="41.209869"
- y="486.52039"> \relative c'' {</tspan><tspan
- sodipodi:role="line"
- id="tspan1348"
- x="41.209869"
- y="514.02039"> g2 es8( c4.)</tspan><tspan
- sodipodi:role="line"
- id="tspan1350"
- x="41.209869"
- y="541.52039"> f8 f es d c2</tspan><tspan
- sodipodi:role="line"
- id="tspan1352"
- x="41.209869"
- y="569.02039"> }</tspan><tspan
- sodipodi:role="line"
- id="tspan1354"
- x="41.209869"
- y="596.52039"> \addlyrics {</tspan><tspan
- sodipodi:role="line"
- id="tspan1356"
- x="41.209869"
- y="624.02039"> Li ly,</tspan><tspan
- sodipodi:role="line"
- id="tspan1358"
- x="41.209869"
- y="651.52039"> got me on my knees</tspan><tspan
- sodipodi:role="line"
- id="tspan1360"
- x="41.209869"
- y="679.02039"> }</tspan><tspan
- sodipodi:role="line"
- id="tspan1362"
- x="41.209869"
- y="706.52039">>></tspan><tspan
- sodipodi:role="line"
- id="tspan1364"
- x="41.209869"
- y="734.02039"></tspan><tspan
- sodipodi:role="line"
- id="tspan1366"
- x="41.209869"
- y="761.52039"> </tspan><tspan
- sodipodi:role="line"
- id="tspan1368"
- x="41.209869"
- y="789.02039"></tspan><tspan
- sodipodi:role="line"
- id="tspan1370"
- x="41.209869"
- y="816.52039"></tspan><tspan
- sodipodi:role="line"
- id="tspan1372"
- x="41.209869"
- y="844.02039"></tspan><tspan
- sodipodi:role="line"
- id="tspan1374"
- x="41.209869"
- y="871.52039"> </tspan></text>
- <rect
- style="font-size:12.000000px;fill:#0900ad;fill-opacity:0.54744500;fill-rule:evenodd;stroke:none;stroke-width:0.98323898pt"
- id="rect663"
- width="303.07663"
- height="59.471516"
- x="91.461838"
- y="604.74438" />
- <rect
- style="font-size:12.000000px;fill:#b00000;fill-opacity:0.40875897;fill-rule:evenodd;stroke:none;stroke-width:0.97302504pt"
- id="rect664"
- width="236.25644"
- height="29.735817"
- x="90.929131"
- y="409.34128" />
- <rect
- style="font-size:12.000000px;fill:#009400;fill-opacity:0.30656901;fill-rule:evenodd;stroke:none;stroke-width:0.94686499pt"
- id="rect665"
- width="207.34248"
- height="54.896721"
- x="90.530762"
- y="496.25824" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#0000b0;stroke-width:2.5668228;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
- d="M 394.14835,631.74801 C 430.98379,629.46083 492.96002,664.17167 452.49749,687.41238"
- id="path666"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b100;stroke-width:2.5668228;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
- d="M 293.22541,527.13655 C 363.64796,521.41927 371.03004,562.59274 443.72411,548.86825"
- id="path667"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#aa0000;stroke-width:2.5668228;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
- d="M 327.18569,424.75304 C 355.58173,427.04023 443.56575,396.71288 475.47924,436.70789"
- id="path668"
- sodipodi:nodetypes="cc" />
- <text
- style="font-size:26.000000px;font-style:normal;font-weight:normal;writing-mode:lr-tb;text-anchor:start;fill:#b00000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter"
- x="387.3223"
- y="463.74142"
- id="text669">
- <tspan
- x="387.32230"
- y="463.74142"
- sodipodi:role="line"
- id="tspan672">_("Enter chord names")</tspan>
- </text>
- <text
- style="font-size:26.000000px;font-style:normal;font-weight:normal;writing-mode:lr-tb;text-anchor:start;fill:#00b700;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter"
- x="457.95572"
- y="559.27612"
- id="text674">
- <tspan
- x="457.95572"
- y="559.27612"
- sodipodi:role="line"
- id="tspan679">_("Enter melody")</tspan>
- </text>
- <text
- style="font-size:26.000000px;font-style:normal;font-weight:normal;writing-mode:lr-tb;text-anchor:start;fill:#0000ad;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter"
- x="382.41147"
- y="720.53723"
- id="text681">
- <tspan
- id="tspan682">_("Enter lyrics")</tspan>
- </text>
- <rect
- style="font-size:12.000000px;fill:#b25ed5;fill-opacity:0.64347798;fill-rule:evenodd;stroke-width:1.0000000pt"
- id="rect686"
- width="172.64890"
- height="27.448336"
- x="68.646278"
- y="574.81348" />
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#531d8a;stroke-width:2.5668228;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
- d="M 69.816929,598.17726 C -44.900574,618.74495 -6.3023345,743.82988 123.44372,778.09269"
- id="path687"
- sodipodi:nodetypes="cc" />
- <text
- style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#531f8a;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
- x="144.12660"
- y="794.27051"
- id="text688">
- <tspan
- id="tspan689">
-_("Combine melody and lyrics")</tspan>
- </text>
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="295.57647"
+ inkscape:cy="236.58879"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="719"
+ inkscape:window-height="708"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
<metadata
- id="metadata77">
+ id="metadata5286">
<rdf:RDF>
<cc:Work
rdf:about="">
</cc:Work>
</rdf:RDF>
</metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5345"
+ width="324"
+ height="60"
+ x="66"
+ y="290" />
+ <rect
+ style="fill:#b380ff;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5343"
+ width="206"
+ height="28"
+ x="52"
+ y="258" />
+ <rect
+ style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5341"
+ width="232"
+ height="62"
+ x="90"
+ y="168" />
+ <rect
+ style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5339"
+ width="222"
+ height="32"
+ x="78"
+ y="76" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono Bold"
+ x="38"
+ y="40"
+ id="text5291"><tspan
+ sodipodi:role="line"
+ x="38"
+ y="40"
+ id="tspan5295"
+ style="font-size:24px"><<</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="70"
+ id="tspan5299"
+ style="font-size:24px"> \chords {</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="100"
+ id="tspan5301"
+ style="font-size:24px"> c1:m7 f2:7 c2</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="130"
+ id="tspan5303"
+ style="font-size:24px"> }</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="160"
+ id="tspan5305"
+ style="font-size:24px"> \relative c'' {</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="190"
+ id="tspan5307"
+ style="font-size:24px"> g2 es8( c4) es8</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="220"
+ id="tspan5309"
+ style="font-size:24px"> f8 es d c~ c2</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="250"
+ id="tspan5311"
+ style="font-size:24px"> }</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="280"
+ id="tspan5313"
+ style="font-size:24px"> \addlyrics {</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="310"
+ id="tspan5315"
+ style="font-size:24px"> You are</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="340"
+ id="tspan5317"
+ style="font-size:24px"> the sky and my rain,</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="370"
+ id="tspan5319"
+ style="font-size:24px"> }</tspan><tspan
+ sodipodi:role="line"
+ x="38"
+ y="400"
+ id="tspan5321"
+ style="font-size:24px">>></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="333"
+ y="139"
+ id="text5323"><tspan
+ sodipodi:role="line"
+ id="tspan5325"
+ x="333"
+ y="139">Enter chord names</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="415"
+ y="218"
+ id="text5327"><tspan
+ sodipodi:role="line"
+ id="tspan5329"
+ x="415"
+ y="218">Enter melody</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#0044aa;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="403"
+ y="403"
+ id="text5331"><tspan
+ sodipodi:role="line"
+ id="tspan5333"
+ x="403"
+ y="403">Enter lyrics</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#5500d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="108"
+ y="446"
+ id="text5335"><tspan
+ sodipodi:role="line"
+ id="tspan5337"
+ x="108"
+ y="446">Combine melody and lyrics</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 434,113 C 399,65 376,99 308,93"
+ id="path5856"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 409,217 C 341,247 377,194 327,194"
+ id="path5858"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 469,378 C 525,347 440,310 398,318"
+ id="path5860"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#5500d4;stroke-width:1.99090564;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 97.90455,438.90455 C 10.90455,445.90455 -10.904547,285.09545 46.095453,272.09545"
+ id="path5862"
+ sodipodi:nodetypes="cc" />
+ </g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
- xml:space="preserve"
- id="svg728"
- sodipodi:version="0.32"
- width="210mm"
- height="297mm"
- sodipodi:docname="example-score.svg"
- inkscape:version="0.39"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:xml="http://www.w3.org/XML/1998/namespace"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- sodipodi:docbase="/home/hanwen/usr/src/savannah/lily/newweb/site/switch">
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="514"
+ height="264"
+ id="svg4445"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="text-input-score-annotate.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
- id="defs730" />
-
-
+ id="defs4447">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4453" />
+ </defs>
<sodipodi:namedview
- id="base"
- inkscape:zoom="0.86709691"
- inkscape:cx="72.749435"
- inkscape:cy="693.11745"
- inkscape:window-width="640"
- inkscape:window-height="530"
- inkscape:window-x="827"
- inkscape:window-y="45" />
-
-
- <text
- style="font-size:26.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Luxi Mono;text-anchor:start;writing-mode:lr;"
- x="21.182615"
- y="125.72841"
- id="text731"
- sodipodi:linespacing="100%"><tspan
- x="21.182615"
- y="125.72841"
- sodipodi:role="line"
- id="tspan1178"><<</tspan><tspan
- x="21.182615"
- y="151.72841"
- sodipodi:role="line"
- id="tspan1180"> \new Staff \_("hornNotes")</tspan><tspan
- x="21.182615"
- y="177.72841"
- sodipodi:role="line"
- id="tspan1182"> \new Staff \_("bassoonNotes")</tspan><tspan
- x="21.182615"
- y="203.72841"
- sodipodi:role="line"
- id="tspan1184">>></tspan><tspan
- x="21.182615"
- y="229.72841"
- sodipodi:role="line"
- id="tspan1186"></tspan><tspan
- x="21.182615"
- y="255.72841"
- sodipodi:role="line"
- id="tspan1188"> </tspan></text>
-
-
- <rect
- style="font-size:12.000000;fill:#c12b28;fill-opacity:0.53658497;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect758"
- width="393.38718"
- height="22.479324"
- x="58.027321"
- y="132.13493" />
-
-
- <rect
- style="font-size:12.000000;fill:#c12b28;fill-opacity:0.53658497;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect759"
- width="392.55447"
- height="22.479324"
- x="59.046661"
- y="158.96379" />
-
-
- <rect
- style="font-size:12.000000;fill:#23ca22;fill-opacity:0.58841503;fill-rule:evenodd;stroke-width:1.0000000pt;"
- id="rect760"
- width="38.440845"
- height="101.57295"
- x="17.647863"
- y="109.03632" />
-
-
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b000;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 36.593644,212.69114 C 34.928544,267.64014 84.882535,270.97014 131.50652,270.97014"
- id="path761" />
-
-
- <path
- style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#af0000;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
- d="M 141.28421,134.21683 C 139.61821,70.941551 161.26521,55.955351 211.21921,54.290251"
- id="path762" />
-
-
- <text
- style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#b00000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
- x="230.36832"
- y="54.290195"
- id="text763">
- <tspan
- id="tspan764">
-_("Create staff")</tspan>
- </text>
-
-
- <text
- style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#00b000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
- x="154.81793"
- y="278.46335"
- id="text766">
- <tspan
- id="tspan767">
-_("Combine staffs in parallel")</tspan>
- </text>
-
-
-<metadata
- id="metadata1091">
- <rdf:RDF
- id="RDF1092">
- <cc:Work
- rdf:about=""
- id="Work1093">
- <dc:format
- id="format1094">image/svg+xml</dc:format>
-
- <dc:type
- id="type1096"
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-
- </cc:Work>
-
- </rdf:RDF>
-
-</metadata>
-
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="257"
+ inkscape:cy="162.42641"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="635"
+ inkscape:window-height="708"
+ inkscape:window-x="0"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata4450">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#87de87"
+ id="rect5251"
+ width="31.1127"
+ height="115.25841"
+ x="23.85965"
+ y="57.76746" />
+ <rect
+ y="115.23402"
+ x="55.353554"
+ height="32"
+ width="351.54773"
+ id="rect5249"
+ style="fill:#ff8080" />
+ <rect
+ style="fill:#ff8080"
+ id="rect4477"
+ width="307"
+ height="32"
+ x="55.353554"
+ y="81.646446" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:Sans Bold"
+ x="26"
+ y="76"
+ id="text4455"><tspan
+ sodipodi:role="line"
+ x="26"
+ y="76"
+ id="tspan4459"
+ style="font-size:24px"><<</tspan><tspan
+ sodipodi:role="line"
+ x="26"
+ y="106"
+ id="tspan4463"
+ style="font-size:24px"> \new Staff \hornNotes</tspan><tspan
+ sodipodi:role="line"
+ x="26"
+ y="136"
+ id="tspan4465"
+ style="font-size:24px"> \new Staff \bassoonNotes</tspan><tspan
+ sodipodi:role="line"
+ x="26"
+ y="166"
+ id="tspan4467"
+ style="font-size:24px">>></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="203"
+ y="37"
+ id="text4469"><tspan
+ sodipodi:role="line"
+ id="tspan4471"
+ x="203"
+ y="37"
+ style="font-size:22px;fill:#c83737">Create staff</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+ x="120"
+ y="222"
+ id="text4473"><tspan
+ sodipodi:role="line"
+ id="tspan4475"
+ x="120"
+ y="222"
+ style="font-size:22px;fill:#217821">Combine staves in parallel</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 114.72287,214.39161 C 69.821589,214.74516 36.120523,211.11735 36.474077,173.99425"
+ id="path5255"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 199.57568,27.361869 C 107.6518,27.361869 115.42998,58.828121 115.78353,80.041324"
+ id="path5259"
+ sodipodi:nodetypes="cc" />
+ </g>
</svg>
--- /dev/null
+# translation of LilyPond documentation
+# Copyright (C) 2006 Han-Wen Nienhuys, Jan Nieuwenhuizen
+# This file is distributed under the same license as the lilypond package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 12:33+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. -*- coding: utf-8 -*-
+msgid "Up:"
+msgstr ""
+
+msgid "Next:"
+msgstr ""
+
+msgid "Previous:"
+msgstr ""
+
+msgid "Appendix "
+msgstr ""
+
+msgid "Footnotes"
+msgstr ""
+
+msgid "Table of Contents"
+msgstr ""
--- /dev/null
+<form action="http://google.com/search"
+ method="get"
+ name="search"
+ onSubmit="search.q.value='site:lilypond.org +v2.12 '
+ + search.brute_query.value"
+ onMouseMove="search.q.value='site:lilypond.org +v2.12 '
+ + search.brute_query.value"
+ onKeyUp="search.q.value='site:lilypond.org +v2.12 '
+ + search.brute_query.value">
+ <input type="hidden" name="btnG" value="Google Search">
+ <input type="text" name="brute_query" onfocus="this.value=''" value="Search">
+ <input type="hidden" name="q" value="">
+</form>
"
doctitlees = "Símbolos de acordeón discanto"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Symbole für Akkordeon-Diskantregister"
texidocde = "
"
doctitlees = "Añadir un bajo cifrado encima o debajo de las notas"
-
%% Translation of GIT committish: 7eb450e8e6c935410b8f3212cb53e5a731f4f33f
doctitlefr = "Ajout d'une basse chiffrée au-dessus ou au-dessous des notes"
\version "2.13.4"
\header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+L'@code{ambitus} peut être individualisé par voix. Il faut en pareil
+cas éviter qu'ils se chevauchent.
+
+"
+ doctitlefr = "Un ambitus par voix"
+
+
lsrtags = "pitches, staff-notation, vocal-music"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
debe desplazar manualmente para evitar colisiones.
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ambitus können pro Stimme gesetzt werden. In diesem Fall müssen sie
"
doctitlees = "Añadir barras de compás al contexto de nombres de acorde (ChordNames)"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Um Taktstriche in einem @code{ChordNames}-Kontext anzeigen zu lassen, muss der
"
doctitlees = "Escritura de partes de percusión"
-
%% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
texidocfr = "
Grâce à la puissance des outils préconfigurés tels que la fonction
"
doctitlees = "Añadir la fecha actual a una partitura"
-
%% Translation of GIT committish: 7eb450e8e6c935410b8f3212cb53e5a731f4f33f
texidocfr = "
Avec un peu de code Scheme, voici comment ajouter facilement
\version "2.13.4"
\header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte
+@code{Score} ; les crochets précédant une reprise s'impriment donc
+seulement au-dessus de la portée du haut. On peut ajuster cela en
+déplaçant ce graveur vers les contextes de portée (@code{Staff}) qui
+doivent comporter ces crochets.
+
+"
+ doctitlefr = "Ajout du crochet de reprise à d'autres portées"
+
+
lsrtags = "repeats"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Añadir corchetes de primera y segunda vez a más pentagramas"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Der @code{Volta_engraver} befindet sich im @code{Score}-Kontext und Klammern
context, and brackets for the repeat are thus normally only printed
over the topmost staff. This can be adjusted by adding the
@code{Volta_engraver} to the @code{Staff} context where the brackets
-should appear; see also the \"Volta multi staff\" snippet.
+should appear; see also the @qq{Volta multi staff} snippet.
"
doctitle = "Adding volta brackets to additional staves"
\version "2.13.4"
\header {
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+ texidocfr = "
+Dans certains cas de musique polyphonie complexe, une voix
+supplémentaire peut permettre d'éviter les risques de collision.
+Lorsque quatre voix parallèles ne suffisent pas, la fonction Scheme
+@code{context-spec-music} permet d'ajouter des d'autres voix.
+
+"
+ doctitlefr = "Ajout de voix pour éviter les collisions"
+
+
lsrtags = "simultaneous-notes"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ein einigen Fällen von sehr komplexer polyphoner Musik sind zusätzliche
"
doctitlees = "Ajuste del especiado vertical de la letra"
-
%% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
texidocfr = "
Cet extrait illustre la manière de rapprocher la ligne de paroles
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+La propriété @code{shortest-duration-space} peut devoir être retouchée
+pour ajuster l'apparence des chutes ou sauts.
+
+"
+ doctitlefr = "Ajustement du galbe des chutes ou sauts"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Ajustar la forma de las subidas y caídas de tono"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die @code{shortest-duration-space}-Eigenschaft kann verändert werden, um
doctitlees = "Alineación de los números de compás"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Taktnummern sind standardmäßig links an ihrem Ursprungsobjet
doctitlede = "Taktnummern ausrichten"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Les numéros de mesure s'alignent en principe sur la droite de l'objet
"
doctitlees = "Alinear marcas con varios objetos de notación"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wenn angegeben, können Textzeichen auch an anderen Objekten als Taktstrichen
\key a \major
\clef treble
\time 3/4
- \mark "↓"
+ \mark \markup { \char ##x2193 }
e2.
% the RehearsalMark will be centered above the KeySignature
\key a \major
\clef treble
\time 4/4
- \mark "↓"
+ \mark \markup { \char ##x2193 }
e1
\break
% the RehearsalMark will be aligned with the left edge of the KeySignature
\once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
- \mark "↓"
+ \mark \markup { \char ##x2193 }
\key a \major
e1
% the RehearsalMark will be aligned with the right edge of the KeySignature
\once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
\key a \major
- \mark "↓"
+ \mark \markup { \char ##x2193 }
e1
% the RehearsalMark will be aligned with the left edge of the KeySignature
% and then shifted right by one unit.
\once \override Score.KeySignature #'break-align-anchor = #1
\key a \major
- \mark "↓"
+ \mark \markup { \char ##x2193 }
e1
}
"
doctitlees = "Permitir que las digitaciones se impriman dentro del pentagrama"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Normalerweise werden vertikal orientierte Fingersatzzahlen außerhalb des Systems
"
doctitlede = "Fingersatz auch innerhalb des Systems setzen"
-
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
L'empilement des indications de doigté se fait par défaut à l'extérieur de la portée. Néanmoins, il est possible d'annuler ce comportement.
\version "2.13.4"
\header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
+graveur @code{Ambitus_engraver} au contexte @code{Staff} afin d'obtenir
+l'ambitus de toutes les voix cumulées, non d'une seule des voix actives.
+
+"
+ doctitlefr = "Ambitus sur plusieurs voix"
+
+
lsrtags = "pitches, vocal-music"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Indem man den @code{Ambitus_engraver} im @code{Staff}-Kontext
doctitlees = "Tipografía de música antigua"
-
%% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
texidocfr ="
Voici comment graver la plupart, sinon tous les symboles que
"
doctitlees = "Plantilla para notación de música antigua (transcripción moderna de canto gregoriano)"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
"
doctitlede = "Vorlage für Alte Notation -- moderne Transkription des gregorianischen Chorals"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Voici comment vous pourriez transcrire du grégorien. Pour mémoire, il
"
doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein
doctitlede = "Vorlage für Alte Notation -- moderne Transkription von Mensuralmusik"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Lorsque l'on transcrit de la musique mensurale, un @emph{incipit} permet
\version "2.13.4"
\header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+La propriété @code{shapeNoteStyles} permet d'affecter un profil
+particulier à chaque degré de la gamme -- à partir de l'armure ou
+de la propriété @code{tonic}. Ses valeurs sont constituées d'une liste
+de symboles, qu'il s'agisse de formes géométriques (@code{triangle},
+@code{cross}, ou @code{xcircle}) ou basés sur la tradition des graveurs
+américains (avec quelques noms de note latins).
+
+LilyPond dispose de deux raccourcis, @code{\aikenHeads} et
+@code{\sacredHarpHeads}, permettant de reproduire déanciens recueils de
+chansons américaines.
+
+L'exemple suivant montre plusieurs manières de profiler les têtes de
+note, ainsi que la capacité de trnsposer tout en respectant la fonction
+harmonique de chaque note dans la gamme.
+
+"
+ doctitlefr = "Profilage des notes selon leur degré dans la gamme"
+
+
lsrtags = "pitches, editorial-annotations"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Notenkopfstile basierend auf der Tonleiterstufe erstellen"
texidocde = "
texidoc = "
The @code{shapeNoteStyles} property can be used to define various note
head styles for each step of the scale (as set by the key signature or
-the \"tonic\" property). This property requires a set of symbols, which
-can be purely arbitrary (geometrical expressions such as
+the @code{tonic} property). This property requires a set of symbols,
+which can be purely arbitrary (geometrical expressions such as
@code{triangle}, @code{cross}, and @code{xcircle} are allowed) or based
on old American engraving tradition (some latin note names are also
allowed).
"
doctitlees = "Improvisación de música árabe"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Bei Improvisation oder @emph{taqasim}, die zeitlich frei gespielt
"
doctitlees = "Barras que atraviesan saltos de línea"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Zeilenumbrüche sind normalerweise während Balken verboten. Das kann geändert
doctitlede = "Balken über Zeilenumbrüche"
-
%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
texidocfr = "
texidoc = "
Breathing signs are available in different tastes: commas (default),
-ticks, vees and \"railroad tracks\" (caesura).
+ticks, vees and @qq{railroad tracks} (caesura).
"
doctitle = "Breathing signs"
doctitlees = "Cesura tipo \"vías del tren\" con calderón"
texidoc = "
-A caesura is sometimes denoted by a double \"railtracks\" breath mark
-with a fermata sign positioned above. This snippet should present an
-optically pleasing combination of railtracks and fermata.
+A caesura is sometimes denoted by a double @qq{railtracks} breath mark
+with a fermata sign positioned above. This snippet shows an optically
+pleasing combination of railtracks and fermata.
"
doctitle = "Caesura (\"railtracks\") with fermata"
texidoc = "
This example provides a function to typeset a hairpin (de)crescendo
-with some additional text below it, such as \"molto\" or \"poco\". The
-example also illustrates how to modify the way an object is normally
-printed, using some Scheme code.
+with some additional text below it, such as @qq{molto} or @qq{poco}.
+The example also illustrates how to modify the way an object is
+normally printed, using some Scheme code.
"
doctitle = "Center text below hairpin dynamics"
"
doctitlees = "Cambiar el tamaño de la marca de \\flageolet"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Um den @code{\\flageolet}-Kreis kleiner zu machen, kann diese
"
doctitlede = "\\flageolet-Zeichen verkleinern"
-
%% Translation of GIT committish: 0099693675b95c7ec6664d7277f22411a14e9c1b
texidocfr = "
"
doctitlees = "Cambiar el salto de las barras en ángulo"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Balken mit Hälsen in unterschiedliche Richtungen werden automatisch
doctitlede = "Balken für weit auseinander liegende Noten ändern"
-
%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
texidocfr = "
LilyPond insère automatiquement des ligatures coudées --- certaines
"
doctitlees = "Modificación del separador de acordes"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Der Trenner zwischen unterschiedlichen Teilen eines Akkordsymbols kann
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wenn zehn oder weniger Pausentakte vorkommen, wird eine Reihe von Longa-
doctitlede = "Die Erscheinung von Pausentakten ändern"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
Dans le cas où ce silence dure moins de dix mesures, LilyPond imprime sur
texidoc = "
If there are ten or fewer measures of rests, a series of longa and
-breve rests (called in German \"Kirchenpausen\" - church rests) is
+breve rests (called in German @qq{Kirchenpausen} - church rests) is
printed within the staff; otherwise a simple line is shown. This
default number of ten may be changed by overriding the
@code{expand-limit} property.
\version "2.13.4"
\header {
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+ texidocfr = "
+Lorsque vous regroupez automatiquement des parties, vous pouvez
+modifier le texte qui sera affiché pour les solos et pour les parties à
+l'unisson :
+
+"
+ doctitlefr = "Modification des indications de parties combinées"
+
+
lsrtags = "simultaneous-notes"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Cambiar los textos de partcombine"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wenn Stimmen automatisch kombiniert werden, kann der Text, der für
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Le texte par défaut des crescendos et decrescendos se change en
+modifiant les propriétés de contexte @code{crescendoText} et
+@code{decrescendoText}. L'aspect de la ligne d'extension est fonction
+de la propriété @code{'style} du @code{DynamicTextSpanner}. Sa valeur
+par défaut est @code{'hairpin}, mais d'autres valeurs sont disponibles,
+comme @code{'line}, @code{'dashed-line} et @code{'dotted-line}.
+
+"
+ doctitlefr = "Modifidation du texte et de l'extension de nuances textuelles"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Cambiar el texto y los estilos de objeto de extensión para las indicaciones dinámicas textuales"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Der Text, der für Crescendo und Decrescendo gestzt wird, kann geändert
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+On peut choisir le glyphe imprimé par cette commande, en modifiant la
+propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter
+n'importe quelle indication textuelle.
+
+"
+ doctitlefr = "Modification de l'indicateur de respiration"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Cambiar el símbolo de la marca de respiración"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Das Schriftzeichen für das Atemzeichen kann verändert werden, indem
"
doctitlees = "Cambiar las posiciones de las alteraciones del bajo cifrado"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Versetzungszeichen und Pluszeichen können vor oder nach den Ziffern erscheinen,
doctitlees = "Cambiar el tempo sin indicación metronómica"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Um das Tempo für die MIDI-Ausgabe zu ändern, ohne eine Tempoangabe in den
doctitlees = "Cambio de compás sin afectar al barrado"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Der @code{\\time}-Befehl verändert die Eigenschaften
doctitlede = "Die Taktart verändern ohne die Bebalkung zu beeinflussen"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
La commande @code{\\time} gère les propriétés
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Standardmäßig wird nur der Zähler des N-tolen-Bruchs über der Klammer
doctitlede = "Die Zahl der N-tole verändern"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
L'apparence du chiffre est déterminée par la propriété @code{text} dans
"
doctitlees = "Excepciones para los nombres de acorde"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Eigenschaft @code{chordNameExceptions} kann benutzt werden, um eine
"
doctitlees = "Nombre de acorde maj7"
-
%% Translation of GIT committish: d4f58bb3ad4e7fe1967a6b48f25e3addffc8aa14
texidocde = "
Das Aussehen des großen Septakkords kann mit @code{majorSevenSymbol} verändert werden.
doctitlees = "Combinar indicaciones dinámicas con marcados textuales"
texidoc = "
-Some dynamics may involve text indications (such as \"più forte\" or
-\"piano subito\"). They can be produced using a @code{\\markup} block.
+Some dynamics may involve text indications (such as @qq{più forte} or
+@qq{piano subito}). These can be produced using a @code{\\markup}
+block.
"
doctitle = "Combining dynamics with markup texts"
\version "2.13.4"
\header {
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+ texidocfr = "
+L'outil de combinaison de parties (la commande @code{\\partcombine})
+permet d'avoir deux parties différentes sur une même portée. LilyPond
+ajoute automatiquement des indications textuelles, telles que @qq{solo}
+ou @qq{a2}. Si votre intention n'est que de fusionner les parties, sans
+ajouter de texte, assignez faux à la propriété
+@code{printPartCombineTexts}. Dans le cas de partitions vocales, et
+plus particulièrement d'hymnes, ces @qq{solo/a2} ne sont d'aucune
+utilité, aussi vaut-il mieux les désactiver. Dans le cas où il y aurait
+alternance entre @emph{solo} et @emph{tutti}, il vaut mieux faire appel
+à de la musique polyphonique standard.
+
+Voici trois moyens d'imprimer deux parties sur un même portée : en
+polyphonie normale, avec @code{\\partcombine} sans indication
+supplémentaire, et avec @code{\\partcombine} commentée.
+
+"
+ doctitlefr = "Combinaison de deux parties sur une même portée"
+
+
lsrtags = "simultaneous-notes, text"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Combinar dos partes sobre el mismo pentagrama"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Funktion, die Stimmen kombiniert (also der @code{\\partcombine}-Befehl)
texidoc = "
The part combiner tool ( @code{\\partcombine} command ) allows the
combination of several different parts on the same staff. Text
-directions such as \"solo\" or \"a2\" are added by default; to remove
-them, simply set the property @code{printPartCombineTexts} to
-\"false\". For vocal scores (hymns), there is no need to add
-\"solo\"/\"a2\" texts, so they should be switched off. However, it
-might be better not to use it if there are any solos, as they won't be
-indicated. In such cases, standard polyphonic notation may be
-preferable.
+directions such as @qq{solo} or @qq{a2} are added by default; to remove
+them, simply set the property @code{printPartCombineTexts} to @code{f}.
+For vocal scores (hymns), there is no need to add @qq{solo/a2} texts,
+so they should be switched off. However, it might be better not to use
+it if there are any solos, as they won't be indicated. In such cases,
+standard polyphonic notation may be preferable.
This snippet presents the three ways two parts can be printed on a same
staff: standard polyphony, @code{\\partcombine} without texts, and
-%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
+%% Translation of GIT committish: 7b70644b95f383b4281e9ffa146d315d2ada11d3
texidocfr = "
+Les règles de ligature par mesure sont gérées par la propriété
+@code{beamSettings}. Elles peuvent être modifiées par la commande
+@code{\\overrideBeamSettings}.
Il existe des options qui permettent de grouper les ligatures au sein
d'une mesure, grâce à la fonction Scheme @code{set-time-signature}.
Celle-ci prend trois arguments : le nombre de pulsations, la durée de la
@code{set-time-signature} créera aussi des symboles
@code{MeasureGrouping}. Ces symboles aident à la lecture des œuvres
modernes à la rythmique complexe. Dans l'exemple qui suit, la mesure à
-9/8 est divisée en 2, 2, 2 et 3. Ceci est fourni en tant que troisième
-argument à @code{set-time-signature} : @code{'(2 2 2 3)}.
+9/8 est divisée en 2, 2, 2 et 3, alors que la mesure à 5/8 répond aux
+règles par défaut contenues dans le fichier @w{@code{scm/beam-settings.scm}}.
"
doctitlefr = "Signes de direction, signes de sous-groupe"
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+De nos jours, il peut arriver que la note d'arrivée d'un glissando soit
+absente de la partition. Pour ce faire, il vous faudra utiliser une
+cadence et « masquer » la note d'arrivée.
+
+"
+ doctitlefr = "Glissando contemporain"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Glissando contemporáneo"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ein modernes Glissando ohne eine Endnote kann gesetzt werden, indem
doctitlees = "Controlar la colocación de las digitaciones de acordes"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Position von Fingersatzzahlen kann exakt kontrolliert werden.
"
doctitlede = "Position von Fingersatz in Akkorden kontrollieren"
-
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Les symboles s'ordonnent verticalement suivant la propriété
+@code{script-priority}. Plus sa valeur numérique est faible, plus le
+symbole sera proche de la note. Dans l'exemple suivant, l'objet
+@code{TextScript} -- le dièse -- a d'abord la propriété la
+plus basse, et il est donc placé plus près de la note ; ensuite c'est
+l'objet @code{Script} -- le mordant -- qui a la propriété la plus basse,
+et il se place alors sous le dièse. Lorsque deux objets ont la même
+priorité, c'est l'ordre dans lequel ils sont indiqués qui détermine
+lequel sera placé en premier.
+
+"
+ doctitlefr = "Contrôle de l'ordre vertical des articulations et ornements"
+
+
lsrtags = "expressive-marks, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Controlar la ordenación vertical de las inscripciones"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die vertikale Anordnung von Beschriftungen wird mit der
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse
+est altérée requiert quelques surcharges. La propriété
+@w{@code{outside-staff-priority}} doît être désactivée (@code{#f}) pour
+éviter qu'elle prenne le pas sur la propriété @w{@code{avoid-slur}}. La
+valeur assignée à @code{halign} permet de gérer horizonalement le
+@w{« retard »}.
+
+"
+
+ doctitlefr = "Création d'un grupetto retardé"
+
lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
doctitlees = "Crear un grupeto de anticipación"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Einen Doppelschlag mit Vorhalt zu erstellen, wobei die untere Note das
texidoc = "
In music that contains many occurrences of the same sequence of notes
at different pitches, the following music function may prove useful.
-It takes a note, of which only the pitch is used. The supporting
-Scheme functions were borrowed from the \"Tips and tricks\" document in
-the manual for version 2.10. This example creates the rhythm used
-throughout Mars, from Gustav Holst's The Planets.
+It takes a note, of which only the pitch is used. This example
+creates the rhythm used throughout Mars, from Gustav Holst's The
+Planets.
"
doctitle = "Creating a sequence of notes on various pitches"
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la
+portée (@code{Staff}) permet de distribuer un arpège sur plusieurs voix :
+
+"
+ doctitlefr = "Arpège distribué sur plusieurs voix"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Crear arpegios entre notas de voces distintas"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ein Arpeggio kann zwischen Noten aus unterschidlichen Stimmen auf demselben
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Dans une double portée pour piano (@code{PianoStaff}), un arpège peut
+s'étendre sur les deux portées grâce à la propriété
+@code{PianoStaff.connectArpeggios}.
+
+"
+ doctitlefr = "Arpège distribué sur une partition pour piano"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Crear arpegios que se cruzan entre pentagramas dentro de un sistema de piano"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Arpeggio über mehrere Systeme können in anderen Kontexten als dem
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Il est possible de distribuer un arpège sur plusieurs portées d'un
+système autre que le @code{PianoStaff} dès lors que vous incluez le
+@code{Span_arpeggio_engraver} au contexte @code{Score}.
+
+"
+ doctitlefr = "Arpège distribué pour un autre contexte que le piano"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Creación de arpegios que se cruzan entre pentagramas dentro de otros contextos"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
In einem Klaviersystem (@code{PianoStaff}) ist es möglich, ein Arpeggio
"
doctitlees = "Crear indicaciones metronómicas en modo de marcado"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Neue Metronombezeichnungen können als Textbeschriftung erstellt werden,
objects will behave like text markups, and not like dynamics.
However, it is possible to create a similar object using the equivalent
-Scheme code (as described in \"Markup programmer interface\"), combined
-with the @code{make-dynamic-script} function. This way, the markup will
-be regarded as a dynamic, and therefore will remain compatible with
+Scheme code (as described in the Notation Reference), combined with the
+@code{make-dynamic-script} function. This way, the markup will be
+regarded as a dynamic, and therefore will remain compatible with
commands such as @code{\\dynamicUp} or @code{\\dynamicDown}.
\version "2.13.4"
\header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Dans la mesure où @code{\\repeat tremolo} requiert deux arguments
+musicaux pour un trémolo d'accords, la note ou l'accord de la
+portée opposée doît être encadré par des accolades et se voir adjoindre
+la commande @code{\\change Staff}.
+
+"
+ doctitlefr = "Trémolo et changement de portée"
+
+
lsrtags = "repeats, keyboards"
texidoc = "
"
doctitlees = "Personalizar los diagramas de posiciones"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Eigenschaften von Bunddiagrammen können in
"
doctitlees = "Personalizar diagramas de posiciones de marcado"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Bunddiagramme können mit der Eigenschaft @code{'fret-diagram-details}
"
doctitlede = "Anpassung von Beschriftungs-Bunddiagrammen"
-
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
"
doctitlees = "Dirección predeterminada de las plicas sobre la tercera línea del pentagrama"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Richtung von Hälsen auf der mittleren Linie kann mit der @code{Stem}-Eigenschaft
"
doctitlees = "Definición de posiciones predefinidas para otros instrumentos"
-
%% Translation of GIT committish: 33f623301a41fcc53efadf96bca1c72834763415
texidocde = "
Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden
"
doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocfr = "
doctitlees = "Mostrar corchete o llave en grupos de un solo pentagrama"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wenn nur ein System einer Systemgruppe vom Typ @code{ChoirStaff} oder
\version "2.13.4"
\header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Au début du XXème siècle, Schoenberg, Berg et Webern -- la « Seconde »
+école de Vienne -- imaginèrent de donner une importance comparable aux
+douze notes de la gamme chromatique, et éviter ainsi toute tonalité.
+Pour ce faire, ces compositions font apparaître une altération à chaque
+note, y compris un bécarre, pour mettre en exergue cette nouvelle
+approche de la théorie et du langage musicaux.
+
+Voici comment obtenir une telle notation.
+
+"
+ doctitlefr = "Le dodécaphonisme : toute note est altérée"
+
+
lsrtags = "pitches"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
In Werken des fürhen 20. Jahrhundert, angefangen mit Schönberg, Berg
texidoc = "
In early 20th century works, starting with Schoenberg, Berg and Webern
-(the \"Second\" Viennese school), every pitch in the twelve-tone scale
+(the @qq{Second} Viennese school), every pitch in the twelve-tone scale
has to be regarded as equal, without any hierarchy such as the
classical (tonal) degrees. Therefore, these composers print one
accidental for each note, even at natural pitches, to emphasize their
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Überbindungen können manuell gesetzt werden, indem man die
doctitlede = "Bindebögen manuell setzen"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
Il est possible de graver manuellement les liaisons de tenue, en
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Eigenschaft @code{tupletSpannerDuration} bestimmt, wie lange jede
doctitlede = "Mehrere Triolen notieren, aber nur einmal \\times benutzen"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de
entered only once.
-For more information about @code{make-moment}, see \"Time
-administration\".
+Read the relevant sections of the Notation Reference for more
+information about @code{make-moment}.
"
doctitle = "Entering several tuplets using only one \\times command"
"
doctitlees = "Digitaciones, indicación del número de cuerda y digitaciones de mano derecha"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Dieses Beispiel kombiniert Fingersatz für die linke Hand, Saitennummern
"
doctitlede = "Fingersatz, Saitennummern und Fingersatz für die rechte Hand"
-
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
doctitlees = "Corchetes rectos y extremos de barra sueltos"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Gerade Fähnchen an einzelnen Noten und überstehende Balkenenden bei
doctitlede = "Gerade Fähnchen und überstehende Balkenenden"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des
(Note that @code{\\set stemLeftBeamCount} is always equivalent to
@code{\\once \\set}. In other words, the beam count settings are not
-\"sticky\", so the pair of flat flags attached to the lone
+@qq{sticky}, so the pair of flat flags attached to the lone
@code{c'16[]} in the last example have nothing to do with the
@code{\\set} two notes prior.)
texidoc = "
It is possible to indicate special articulation techniques such as a
-flute's \"tongue slap\" by replacing the note head with the appropriate
+flute @qq{tongue slap} by replacing the note head with the appropriate
glyph.
"
slap =
#(define-music-function (parser location music) (ly:music?)
#{
- \override NoteHead #'stencil = #(lambda (grob)
- (grob-interpret-markup grob
- (markup #:musicglyph "scripts.sforzato")))
- \override NoteHead #'extra-offset = #'(0.1 . 0.0)
+ \override NoteHead #'stencil =
+ #(lambda (grob)
+ (grob-interpret-markup grob
+ (markup #:musicglyph "scripts.sforzato")))
+ \override NoteHead #'stem-attachment =
+ #(lambda (grob)
+ (let ((thickness (ly:staff-symbol-line-thickness grob)))
+ (cons 1 (/ thickness 2))))
$music
\revert NoteHead #'stencil
- \revert NoteHead #'extra-offset
+ \revert NoteHead #'stem-attachment
#})
\relative c' {
\version "2.13.4"
\header {
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+ texidocfr = "
+Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet
+@code{NoteColumn}, et des silences à hauteur déterminée, peuvent
+s'avérer utiles pour dicter au programme les choix de placement. On
+travaille ici en espace de portée.
+
+"
+ doctitlefr = "Décalage horizontal forcé"
+
+
lsrtags = "simultaneous-notes, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wenn es zu Zusammenstößen kommt, kann mit folgender Lösung eine andere
"
doctitlees = "Líneas de rejilla: modificar su aspecto"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Erscheinung der Gitternetzlinien kann durch einige Eigenschaften
"
doctitlees = "Ritmos rasgueados de guitarra"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
In Guitarrennotation kann neben Melodie, Akkordbezeichnungen und
doctitlede = "Schlagrhythmus für Guitarren"
-
%% Translation of GIT committish: fa7695ea860d7ab2db86581dd5f8bc4f413f6705
texidocfr = "
En matière de notation pour guitare, il arrive que soient indiqués les
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Les crescendos et decrescendos indiqués textuellement -- tels que
+@emph{cresc.} ou @emph{dim.} -- sont suivis de pointillés qui montrent
+leur étendue. On peut empêcher l'impression de ces pointillés avec :
+
+"
+ doctitlefr = "Masquage de l'extension des nuances textuelles"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Ocultar la línea de extensión de las expresiones textuales de dinámica"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Dynamik-Texte (wie cresc. und dim.) werden mit einer gestrichelten Linie
lsrtags = "expressive-marks, tweaks-and-overrides"
texidoc = "
-Some dynamic expressions involve additional text, like \"sempre pp\".
-Since lilypond aligns all dynamics centered on the note, the \\pp would
-be displayed way after the note it applies to.
+Some dynamic expressions involve additional text, like @qq{sempre pp}.
+Since dynamics are usually centered under the note, the \\pp would be
+displayed way after the note it applies to.
-To correctly align the \"sempre \\pp\" horizontally, so that it is
+To correctly align the @qq{sempre pp} horizontally, so that it is
aligned as if it were only the \\pp, there are several approaches:
* Simply use @code{\\once\\override DynamicText #'X-offset = #-9.2}
Drawback: @code{\\once\\override} is needed for every invocation!
* Set the dimensions of the additional text to 0 (using
-@code{#:with-dimensions '(0 . 0) '(0 . 0)}). Drawback: To lilypond
-\"sempre\" has no extent, so it might put other stuff there and create
-collisions (which are not detected by the collision dection!). Also,
+@code{#:with-dimensions '(0 . 0) '(0 . 0)}). Drawback: To LilyPond
+@qq{sempre} has no extent, so it might put other stuff there and create
+collisions (which are not detected by the collision detection!). Also,
there seems to be some spacing, so it's not exactly the same alignment
as without the additional text
-%% Do not edit this file; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% This file is in the public domain.
+% Do not edit this file; it is automatically
+% generated from Documentation/snippets/new
+% This file is in the public domain.
+%% Note: this file works from version 2.13.4
\version "2.13.4"
\header {
- lsrtags = "staff-notation, ancient-notation"
-
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
texidoces = "
Los «incipit» se pueden escribir utilizando el grob del nombre del
doctitlees = "Incipit"
+ lsrtags = "staff-notation, ancient-notation"
texidoc = "
Incipits can be added using the instrument name grob, but keeping
separate the instrument name definition and the incipit definition.
-
"
doctitle = "Incipit"
} % begin verbatim
+
incipit =
#(define-music-function (parser location incipit-music) (ly:music?)
#{
\once \override Staff.InstrumentName #'self-alignment-X = #RIGHT
\once \override Staff.InstrumentName #'self-alignment-Y = #UP
- \once \override Staff.InstrumentName #'Y-offset = #4
+ \once \override Staff.InstrumentName #'Y-offset =
+ #(lambda (grob)
+ (+ 4 (system-start-text::calc-y-offset grob)))
\once \override Staff.InstrumentName #'padding = #0.3
\once \override Staff.InstrumentName #'stencil =
- #(lambda (grob)
- (let* ((instrument-name (ly:grob-property grob 'long-text))
- (layout (ly:output-def-clone (ly:grob-layout grob)))
- (music (make-music 'SequentialMusic
- 'elements (list (make-music 'ContextSpeccedMusic
- 'context-type 'MensuralStaff
- 'element (make-music 'PropertySet
- 'symbol 'instrumentName
- 'value instrument-name))
- $incipit-music)))
- (score (ly:make-score music))
- (mm (ly:output-def-lookup layout 'mm))
- (indent (ly:output-def-lookup layout 'indent))
- (width (ly:output-def-lookup layout 'incipit-width))
- (incipit-width (if (number? width)
- (* width mm)
- (* indent 0.5))))
- (ly:output-def-set-variable! layout 'indent (- indent incipit-width))
- (ly:output-def-set-variable! layout 'line-width indent)
- (ly:output-def-set-variable! layout 'ragged-right #f)
- (ly:output-def-set-variable! layout 'ragged-last #f)
- (ly:output-def-set-variable! layout 'system-count 1)
- (ly:score-add-output-def! score layout)
- (ly:grob-set-property! grob 'long-text
- (markup #:score score))
- (ly:system-start-text::print grob)))
+ #(lambda (grob)
+ (let* ((instrument-name (ly:grob-property grob 'long-text))
+ (layout (ly:output-def-clone (ly:grob-layout grob)))
+ (music (make-sequential-music
+ (list (context-spec-music
+ (make-sequential-music
+ (list (make-property-set
+ 'instrumentName instrument-name)
+ (make-grob-property-set
+ 'VerticalAxisGroup
+ 'Y-extent '(-4 . 4))))
+ 'MensuralStaff)
+ $incipit-music)))
+ (score (ly:make-score music))
+ (mm (ly:output-def-lookup layout 'mm))
+ (indent (ly:output-def-lookup layout 'indent))
+ (width (ly:output-def-lookup layout 'incipit-width))
+ (incipit-width (if (number? width)
+ (* width mm)
+ (* indent 0.5))))
+
+ (ly:output-def-set-variable! layout 'indent (- indent
+ incipit-width))
+ (ly:output-def-set-variable! layout 'line-width indent)
+ (ly:output-def-set-variable! layout 'ragged-right #f)
+ (ly:output-def-set-variable! layout 'ragged-last #f)
+ (ly:output-def-set-variable! layout 'system-count 1)
+ (ly:score-add-output-def! score layout)
+ (ly:grob-set-property! grob 'long-text
+ (markup #:score score))
+ (system-start-text::print grob)))
#})
%%%%%%%%%%%%%%%%%%%%%%%%%
"
doctitlees = "Indicar acordes de pentagrama cruzado con corchetes de arpegio"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Eine Arpeggioklammer kann anzeigen, dass Noten auf zwei unterschiedlichen
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Une surcharge de la propriété @code{'text} de l'objet
+@code{BreathingSign} permet de créer une marque de césure. LilyPond
+dispose également d'une variante courbée.
+
+"
+ doctitlefr = "Insertion d'une césure"
+
+
lsrtags = "expressive-marks, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Insertar una cesura"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Zäsurzeichen können erstellt werden, indem die @code{'text}-Eigenschaft
\version "2.13.4"
\header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Des symboles de pourcentage isolés peuvent aussi être obtenus, au
+moyen d'un silence multi-mesures dont on modifie l'aspect :
+
+"
+ doctitlefr = "Répétition en pourcent isolée"
+
+
lsrtags = "repeats"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Símbolos de porcentaje sueltos"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Isolierte Prozentwiederholungen können auch ausgegeben werden. Das wird
"
doctitlees = "Plantilla para combo de jazz"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung:
"
doctitlede = "Vorlage für Jazz-Combo"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Bien que compliqué de prime abord, voici un canevas tout à fait indiqué
doctitlede = "Makam-Beispiel"
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Le «makam» est une forme de mélodie turque qui utilise des altérations
+d'un neuvième de ton. Consultez le fichier d'initialisation
+@code{makam.ly} pour plus de détails sur les hauteurs et altérations
+utilisées (voir le chapitre 4.6.3 - Autres sources d'information du
+manuel d'initiation pour le localiser).
+
+"
+ doctitlefr = "Exemple de musique « Makam »"
+
lsrtags = "pitches, world-music"
texidoc = "
Makam is a type of melody from Turkey using 1/9th-tone microtonal
texidoc = "
Setting the @code{transparent} property will cause an object to be
-printed in \"invisible ink\": the object is not printed, but all its
+printed in @qq{invisible ink}: the object is not printed, but all its
other behavior is retained. The object still takes up space, it takes
part in collisions, and slurs, ties and beams can be attached to it.
doctitlede = "Legatobögen mit kompliziertem Strichelmuster
definieren"
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Grâce à la propriété @code{dash-definition}, une liaison d'articulation
+peut être formée de traits discontinus variables.
+@code{dash-definition} se compose d'une liste de
+@code{segments-discontinus} (@emph{dash-elements}). Chaque
+@code{segment-discontinu} contient une liste de paramètres qui
+déterminent le comportement du trait pour une section de la liaison.
+
+Cette liaison se définit selon le paramètre de Bézier @code{t} qui est
+compris entre 0 (l'extrémité gauche de la liaison) et 1 (l'extrémité
+droite de la liaison). Chaque @code{segment-discontinu} se composera
+selon la liste @code{(t-début t-fin segment-style segment-taille)}.
+La portion de liaison allant de @code{t-début} à @code{t-fin} aura un
+trait @code{segment-style} de longueur @code{segment-taille}.
+@code{segment-taille} est exprimé en espace de portée ; un
+@code{segment-style} à 1 donnera un trait plein.
+
+"
+ doctitlefr = "Dessin d'une liaison d'articulation au trait discontinu"
+
+
lsrtags = "rhythms, expressive-marks"
texidoc = "
Slurs can be made with complex dash patterns by defining
"
doctitlees = "Hacer unas líneas del pentagrama más gruesas que las otras"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Für den pädagogischen Einsatz kann eine Linie des Notensystems dicker
doctitlees = "Disposición Mensurstriche (líneas divisorias entre pentagramas)"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Das Mensurstiche-Layout, in welchem die Taktlinien nicht auf den Systemen,
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Les raccourcis sont répertoriés dans le fichier
+@code{ly/script-init.ly}, dans lequel on retrouve les variables
+@code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar},
+@code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que
+leur valeur par défaut. Ces valeurs peuvent être modifiées selon vos
+besoins. Il suffit par exemple, pour affecter au raccourci @code{-+}
+(@code{dashPlus}) le symbole du trille en lieu et place du @code{+}
+(caractère plus), d'assigner la valeur @code{trill} à la variable
+@code{dashPlus} :
+
+"
+ doctitlefr = "Modification de la signification des raccourcis pour les signes d'articulation"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Modificar los valores predeterminados para la notación abreviada de las articulaciones"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Abkürzungen sind in der Datei @samp{ly/script-init.ly} definiert, wo
doctitlees = "Marcado de silencios multicompás"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "Textbeschriftungen, die an Mehrtaktpausen gehängt wird,
wird über oder unter der Pause zentriert. Lange Beschriftungen
doctitlede = "Textbeschriftung und Mehrtaktpausen"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
Lorsque du texte est attaché à un silence multi-mesures, il sera centré
"
doctitlees = "Anidado de grupos de pentagramas"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Eigenschaft @code{systemStartDelimiterHierarchy} kann eingesetzt
--- /dev/null
+\version "2.13.4"
+
+\header {
+ lsrtags = "staff-notation, ancient-notation"
+ texidoc = "
+Incipits can be added using the instrument name grob, but keeping
+separate the instrument name definition and the incipit definition.
+"
+ doctitle = "Incipit"
+}
+
+incipit =
+#(define-music-function (parser location incipit-music) (ly:music?)
+ #{
+ \once \override Staff.InstrumentName #'self-alignment-X = #RIGHT
+ \once \override Staff.InstrumentName #'self-alignment-Y = #UP
+ \once \override Staff.InstrumentName #'Y-offset =
+ #(lambda (grob)
+ (+ 4 (system-start-text::calc-y-offset grob)))
+ \once \override Staff.InstrumentName #'padding = #0.3
+ \once \override Staff.InstrumentName #'stencil =
+ #(lambda (grob)
+ (let* ((instrument-name (ly:grob-property grob 'long-text))
+ (layout (ly:output-def-clone (ly:grob-layout grob)))
+ (music (make-sequential-music
+ (list (context-spec-music
+ (make-sequential-music
+ (list (make-property-set
+ 'instrumentName instrument-name)
+ (make-grob-property-set
+ 'VerticalAxisGroup
+ 'Y-extent '(-4 . 4))))
+ 'MensuralStaff)
+ $incipit-music)))
+ (score (ly:make-score music))
+ (mm (ly:output-def-lookup layout 'mm))
+ (indent (ly:output-def-lookup layout 'indent))
+ (width (ly:output-def-lookup layout 'incipit-width))
+ (incipit-width (if (number? width)
+ (* width mm)
+ (* indent 0.5))))
+
+ (ly:output-def-set-variable! layout 'indent (- indent
+ incipit-width))
+ (ly:output-def-set-variable! layout 'line-width indent)
+ (ly:output-def-set-variable! layout 'ragged-right #f)
+ (ly:output-def-set-variable! layout 'ragged-last #f)
+ (ly:output-def-set-variable! layout 'system-count 1)
+ (ly:score-add-output-def! score layout)
+ (ly:grob-set-property! grob 'long-text
+ (markup #:score score))
+ (system-start-text::print grob)))
+ #})
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+global = {
+ \set Score.skipBars = ##t
+ \key g \major
+ \time 4/4
+
+ % the actual music
+ \skip 1*8
+
+ % let finis bar go through all staves
+ \override Staff.BarLine #'transparent = ##f
+
+ % finis bar
+ \bar "|."
+}
+
+discantusIncipit = <<
+ \new MensuralVoice = "discantusIncipit" <<
+ \repeat unfold 9 { s1 \noBreak }
+ {
+ \clef "neomensural-c1"
+ \key f \major
+ \time 2/2
+ c''1.
+ }
+ >>
+ \new Lyrics \lyricsto discantusIncipit { IV- }
+>>
+
+discantusNotes = {
+ \transpose c' c'' {
+ \clef "treble"
+ d'2. d'4 |
+ b e' d'2 |
+ c'4 e'4.( d'8 c' b |
+ a4) b a2 |
+ b4.( c'8 d'4) c'4 |
+ \once \override NoteHead #'transparent = ##t
+ c'1 |
+ b\breve |
+ }
+}
+
+discantusLyrics = \lyricmode {
+ Ju -- bi -- |
+ la -- te De -- |
+ o, om --
+ nis ter -- |
+ ra, __ om- |
+ "..." |
+ -us. |
+}
+
+altusIncipit = <<
+ \new MensuralVoice = "altusIncipit" <<
+ \repeat unfold 9 { s1 \noBreak }
+ {
+ \clef "neomensural-c3"
+ \key f \major
+ \time 2/2
+ r1 f'1.
+ }
+ >>
+ \new Lyrics \lyricsto altusIncipit { IV- }
+>>
+
+altusNotes = {
+ \transpose c' c'' {
+ \clef "treble"
+ % two measures
+ r2 g2. e4 fis g |
+ a2 g4 e |
+ fis g4.( fis16 e fis4) |
+ g1 |
+ \once \override NoteHead #'transparent = ##t
+ g1 |
+ g\breve |
+ }
+}
+
+altusLyrics = \lyricmode {
+ % two measures
+ Ju -- bi -- la -- te |
+ De -- o, om -- |
+ nis ter -- ra, |
+ "..." |
+ -us. |
+}
+
+tenorIncipit = <<
+ \new MensuralVoice = "tenorIncipit" <<
+ \repeat unfold 9 { s1 \noBreak }
+ {
+ \clef "neomensural-c4"
+ \key f \major
+ \time 2/2
+ r\longa
+ r\breve
+ r1 c'1.
+ }
+ >>
+ \new Lyrics \lyricsto tenorIncipit { IV- }
+>>
+
+tenorNotes = {
+ \transpose c' c' {
+ \once \override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 3)
+ \clef "treble_8"
+ R1 |
+ R1 |
+ R1 |
+ % two measures
+ r2 d'2. d'4 b e' |
+ \once \override NoteHead #'transparent = ##t
+ e'1 |
+ d'\breve |
+ }
+}
+
+tenorLyrics = \lyricmode {
+ % two measures
+ Ju -- bi -- la -- te |
+ "..." |
+ -us.
+}
+
+bassusIncipit = <<
+ \new MensuralVoice = "bassusIncipit" <<
+ \repeat unfold 9 { s1 \noBreak }
+ {
+ \clef "bass"
+ \key f \major
+ \time 2/2
+ %% incipit
+ r\maxima
+ f1.
+ }
+ >>
+ \new Lyrics \lyricsto bassusIncipit { IV- }
+>>
+
+bassusNotes = {
+ \transpose c' c' {
+ \clef "bass"
+ R1 |
+ R1 |
+ R1 |
+ R1 |
+ g2. e4 |
+ \once \override NoteHead #'transparent = ##t
+ e1 |
+ g\breve |
+ }
+}
+
+bassusLyrics = \lyricmode {
+ Ju -- bi- |
+ "..." |
+ -us.
+}
+
+\score {
+ <<
+ \new StaffGroup = choirStaff <<
+ \new Voice = "discantusNotes" <<
+ \global
+ \set Staff.instrumentName = #"Discantus"
+ \incipit \discantusIncipit
+ \discantusNotes
+ >>
+ \new Lyrics = "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics }
+ \new Voice = "altusNotes" <<
+ \global
+ \set Staff.instrumentName = #"Altus"
+ \incipit \altusIncipit
+ \altusNotes
+ >>
+ \new Lyrics = "altusLyrics" \lyricsto altusNotes { \altusLyrics }
+ \new Voice = "tenorNotes" <<
+ \global
+ \set Staff.instrumentName = #"Tenor"
+ \incipit \tenorIncipit
+ \tenorNotes
+ >>
+ \new Lyrics = "tenorLyrics" \lyricsto tenorNotes { \tenorLyrics }
+ \new Voice = "bassusNotes" <<
+ \global
+ \set Staff.instrumentName = #"Bassus"
+ \incipit \bassusIncipit
+ \bassusNotes
+ >>
+ \new Lyrics = "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics }
+ >>
+ >>
+ \layout {
+ \context {
+ \Score
+ %% no bar lines in staves or lyrics
+ \override BarLine #'transparent = ##t
+ }
+ %% the next two instructions keep the lyrics between the bar lines
+ \context {
+ \Lyrics
+ \consists "Bar_engraver"
+ \consists "Separating_line_group_engraver"
+ }
+ \context {
+ \Voice
+ %% no slurs
+ \override Slur #'transparent = ##t
+ %% Comment in the below "\remove" command to allow line
+ %% breaking also at those bar lines where a note overlaps
+ %% into the next measure. The command is commented out in this
+ %% short example score, but especially for large scores, you
+ %% will typically yield better line breaking and thus improve
+ %% overall spacing if you comment in the following command.
+ %%\remove "Forbid_line_break_engraver"
+ }
+ indent = 6\cm
+ incipit-width = 4\cm
+ }
+}
\header {
lsrtags = "expressive-marks, unfretted-strings"
texidoc = "
-A snap-pizzicato (also known as \"Bartok pizzicato\") is a \"strong
+A snap-pizzicato (also known as @qq{Bartok pizzicato}) is a @qq{strong
pizzicato where the string is plucked vertically by snapping and
-rebounds off the fingerboard of the instrument\" (Wikipedia). It is
-denoted by a cicle with a vertical line going from the center upwards
+rebounds off the fingerboard of the instrument} (Wikipedia). It is
+denoted by a circle with a vertical line going from the center upwards
outside the circle.
"
- doctitle = "Snap-pizzicato (\"Bartok pizzicato\")"
+ doctitle = "Snap-pizzicato (@qq{Bartok pizzicato})"
}
\relative c' {
Hier ein Beispiel einer möglichen Tonart für eine Ganztonleiter:
"
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+La commande @code{\\key} détermine la propriété @code{keySignature} d'un
+contexte @code{Staff}.
+
+Des armures inhabituelles peuvent être spécifiées en modifiant
+directement cette propriété. Il s'agit en l'occurence de définir une
+liste :
+
+@code{\\set Staff.keySignature = #`(((octave . pas) . altération) ((octave
+. pas) . altération) @dots{})}
+
+dans laquelle, et pour chaque élément,
+@code{octave} spécifie l'octave (0@tie{}pour celle allant du
+do@tie{}médium au si supérieur), @code{pas} la note dans cette octave
+(0@tie{}pour@tie{}do et 6@tie{}pour@tie{}si), et @code{altération} sera
+@code{,SHARP ,FLAT ,DOUBLE-SHARP} etc. (attention à la virgule en
+préfixe).
+
+Une formulation abrégée -- @code{(pas . altération)} -- signifie que
+l'altération de l'élément en question sera valide quel que soit l'octave.
+
+
+Voici, par exemple, comment générer une gamme par ton :
+
+"
+ doctitlefr = "Armures inhabituelles"
+
+
lsrtags = "pitches, staff-notation"
texidoc = "
The commonly used @code{\\key} command sets the @code{keySignature}
"
doctitlees = "Plantilla de orquesta, coro y piano"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Ce canevas illustre l'utilisation de contextes @code{StaffGroup} pour
\version "2.13.4"
\header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+En interne, la fonction @code{\\ottava} détermine les
+propriétés @code{ottavation} (p.ex. en @code{\"8va\"} ou @code{\"8vb\"})
+et @code{centralCPosition}. Vous pouvez modifier le texte d'une marque
+d'octaviation en définissant @code{ottavation} après avoir fait appel
+à @code{ottava} :
+
+"
+
+ doctitlefr = "Texte des marques d'octaviation"
+
+
lsrtags = "pitches, text"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
doctitlees = "Texto de octava alta y baja"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Intern setzt die @code{set-octavation}-Funktion die Eigenschaften
texidoc = "
Internally, @code{\\ottava} sets the properties @code{ottavation} (for
-example, to @code{\"8va\"} or @code{\"8vb\"}) and
-@code{middleCPosition}. To override the text of the bracket, set
-@code{ottavation} after invoking @code{\\ottava}.
+example, to @code{8va} or @code{8vb}) and @code{middleCPosition}. To
+override the text of the bracket, set @code{ottavation} after invoking
+@code{\\ottava}.
"
doctitle = "Ottava text"
\version "2.13.4"
\header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Le numéro de mesure répétée sera imprimé à intervalle régulier si vous
+déterminez la propriété de contexte @code{repeatCountVisibility}.
+
+"
+ doctitlefr = "Affichage du numéro de répétition en pourcent"
+
+
lsrtags = "repeats, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Visibilidad del contador de repeticiones de tipo porcentaje"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Prozentwiederholungszähler können in regelmäßigen Intervallen angezeigt
\version "2.13.4"
\header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Les répétitions de plus de 2 mesures sont surmontées d'un compteur,
+si l'on active la propriété @code{countPercentRepeats} comme le montre
+l'exemple suivant :
+
+"
+ doctitlefr = "Compteur de répétition en pourcent"
+
+
lsrtags = "repeats"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Percent repeat counter"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ganztaktwiederholungen mit mehr als zwei Wiederholungen erhalten einen
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Dieses künstliche Beispiel zeigt, wie sowohl automatische als auch
doctitlede = "Zeilenumbrüche bei N-tolen mit Balken erlauben"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
Cet exemple peu académique démontre comment il est possible d'insérer un saut
"
doctitlees = "Plantilla de piano (sencilla)"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Hier ein einfaches Klaviersystem.
"
doctitlede = "Vorlage für einfache Klaviernotation"
-
%% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
texidocfr = "
Voici une simple partition pour piano avec quelques notes.
"
doctitlees = "Plantilla de piano con letra centrada"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
旋律と歌詞のための譜表を持つ代わりに、歌詞をピアノ譜の 2 つの譜の間に置くことができます。
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Anstatt ein eigenes System für Melodie und Text zu schreiben, können
(und damit das zusätzliche System für die Gesangstimme auslassen).
"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Lorsque la mélodie est doublée au piano, cela ne nécessite pas forcément
"
doctitlees = "Plantilla de piano con melodía y letra"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜表と、その下にピアノ伴奏譜があります。
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Das nächste Beispiel ist typisch für ein Lied: Im oberen System die
doctitlede = "Vorlage für Klavier und Gesangsstimme"
-
%% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
texidocfr = "
Il s'agit du format classique pour le chant : une portée pour la mélodie
"
doctitlees = "Posicionamiento de digitaciones de mano derecha"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Man kann die Positionierung von Fingersatz der rechten Hand besser
"
doctitlede = "Positionierung von Fingersatz der rechten Hand"
-
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
"
doctitlees = "Polifonía en tablaturas"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Polyphonie kann in einer Tabulatur (@code{TabStaff}) genauso wie in einem
"
doctitlede = "Polyphonie in einer Tabulatur"
-
%% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
texidocfr = "
doctitlees = "Posicionamiento de las notas de adorno con espacio flotante"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wenn man die Eigenschaft @code{'strict-grace-spacing} aktiviert,
doctitlede = "Positionierung von Verzierungen mit verschiebbarem Platz"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Lorsque vous activez la propriété @code{'strict-grace-spacing},
ve a continuación:
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Anders als bei normalen Pausen gibt es keinen direkten Befehl, um die
doctitlede = "Positionierung von Ganztaktpausen"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
Si l'on peut positionner verticalement un silence simple en le
lsrtags = "repeats, breaks"
texidoc = "
-If you want to place an exiting segno sign and add text like \"D.S. al
-Coda\" next to it where usually the staff lines are you can use this
+If you want to place an exiting segno sign and add text like @qq{D.S.
+al Coda} next to it where usually the staff lines are you can use this
snippet. The coda will resume in a new line. There is a variation
documented in this snippet, where the coda will remain on the same
line.
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison,
+la propriété @code{outside-staff-priority} doît être désactivée.
+
+"
+ doctitlefr = "Positionnement d'une annotation à l'intérieur d'une liaison"
+
+
lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Situar los elementos de marcado de texto por dentro de las ligaduras"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Verhindern, dass zusätzliche Auflösungszeichen automatisch
hinzugefügt werden"
soll. Um dieses Verhalten zu ändern, muss die Eigenschaft
@code{extraNatural} im @code{Staff}-Kontext auf \"false\" gesetzt werden.
"
-
-%% Translation of GIT committish: 203ab4a7388f36b9c89c66671498dbaefccbf86e
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
texidocfr = "
En accord avec les règles standards de l'écriture musicale, on grave
un bécarre avant un dièse ou un bémol si on a besoin d'annuler une
@code{extraNatural} du contexte @code{Staff} à la valeur @code{##f} (faux).
"
+ doctitlefr = "Suppression des bécarres superflus"
texidoc = "
In accordance with standard typesetting rules, a natural sign is
printed before a sharp or flat if a previous accidental on the same
note needs to be canceled. To change this behavior, set the
-@code{extraNatural} property to \"false\" in the @code{Staff} context.
+@code{extraNatural} property to @code{f} in the @code{Staff} context.
\version "2.13.4"
\header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Après un changement de tonalité, un bécarre est imprimé pour annuler
+toute altération précédente. Ceci peut être supprimé en réglant à
+@code{\"false\"} la propriété @code{printKeyCancellation} du contexte
+@code{Staff}.
+
+"
+
+ doctitlefr = "Suppression des bécarres superflus après un changement de
+tonalité"
+
lsrtags = "pitches"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Auflösungzeichen nicht setzen, wenn die Tonart wechselt"
texidoc = "
When the key signature changes, natural signs are automatically printed
to cancel any accidentals from previous key signatures. This may be
-prevented by setting to \"false\" the @code{printKeyCancellation}
+prevented by setting to @code{f} the @code{printKeyCancellation}
property in the @code{Staff} context.
"
\version "2.13.4"
\header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Bien qu'allant à l'encontre des usages en matière de gravure, vous
+imprimerez une barre de reprise (@code{|:}) en début de partition si
+vous surchargez la propriété adéquate :
+
+"
+ doctitlefr = "Impression d'une barre de reprise en début de morceau"
+
+
lsrtags = "repeats, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Imprimir puntos de repetición al prinicpio de la pieza"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ein @code{|:}-Taktstrich kann auch zu Beginn eines Stückes ausgegeben werden, indem
doctitlees = "Imprimir números de compás a intervalos regulares"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Taktnummern können in regelmäßigen Intervallen gesetzt werden, indem
doctitlede = "Setzen der Taktnummern in regelmäßigen Intevallen"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt
doctitlees = "Imprimir números de compás dentro de rectángulos o circunferencias"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Taktnummern können auch in Boxen oder Kreisen gesetzt werden.
doctitlede = "Setzen von Taktnummern in Kästen oder Kreisen"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Les numéros de mesures peuvent être encadrés ou entourés d'un cercle.
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de
+manière graphique, en assignant @emph{vrai} (@code{#t}) à la
+propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité.
+
+"
+ doctitlefr = "Impression de soufflets « al niente »"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Impresión de reguladores utilizando la notación «al niente»"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Crescendo-Klammern können mit einem kleinen Kreis vor der Spitze
"
doctitlees = "Imprimir marcas al final de la línea o de la partitura"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Zeichen können auch am Ende der aktuellen Zeile ausgegeben werden, anstatt
"
doctitlees = "Imprimir marcas en cualquier pentagrama"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Normalerweise werden Textzeichen nur über dem obersten Notensystem gesetzt. Sie
doctitlees = "Impresión de indicaciones metronómicas y letras de ensayo debajo del pentagrama"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Normalerweise werden Metronom- und Übungszeichen über dem Notensystem ausgegeben.
doctitlees = "Imprimir el número de compás en el primer compás"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Standardmäßig wird die erste Taktzahl einer Paritur nicht gesetzt,
doctitlede = "Setzen der Taktnummer für den ersten Takt"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est
doctitlees = "Citar otra voz con transposición"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Zitate berücksichtigen sowohl die Transposition der Quelle als auch
"
doctitlees = "Citar otra voz"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die @code{quotedEventTypes}-Eigenschaft bestimmt die
doctitlees = "Redefinición de los valores globales predeterminados para notas de adorno"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die globalen Standardeinstellungen für Verzierungsnoten werden in
doctitlede = "Globale Umdefinition von Verzierungsnoten"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Vous pouvez modifier les valeurs des variables @code{startGraceMusic},
doctitlees = "Suprimir los números de compás de toda la partitura"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Taktnummern können vollkommen aus den Noten entfernt werden, indem
doctitlede = "Entfernung von Taktnummern in einer Partitur"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Désactiver le graveur concerné --- @code{Bar_number_engraver} ---
"
doctitlees = "Quitar la primera línea vacía"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ein leeres Notensystem kann auch aus der ersten Zeile einer Partitur
texidoces = "
Los silencios se pueden imprimir en distintos estilos.
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Pausenstile"
"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
Les silences peuvent être gravés selon différents styles.
lsrtags = "rhythms, tweaks-and-overrides"
texidoc = "
-In \"simple\" lead-sheets, sometimes no actual notes are written,
-instead only \"rhythmic patterns\" and chords above the measures are
+In @qq{simple} lead-sheets, sometimes no actual notes are written,
+instead only @qq{rhythmic patterns} and chords above the measures are
notated giving the structure of a song. Such a feature is for example
useful while creating/transcribing the structure of a song and also
when sharing lead sheets with guitarists or jazz musicians. The
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+En principe, un soufflet -- (de)crescendo imprimé sous forme graphique --
+commence au bord gauche de la note de départ, et se termine au
+bord droit de la note d'arrivée. Cependant, si la note d'arrivée
+est sur un premier temps, le soufflet s'arrêtera au niveau de la
+barre de mesure qui la précède. Ce comportement peut être annulé
+en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline} :
+
+"
+ doctitlefr = "Soufflets et barres de mesure"
+
+
lsrtags = "expressive-marks, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Establecer el comportamiento de los reguladores en las barras de compás"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wenn die Note, an welcher eine Crescendo-Klammer endet, die erste Note
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Si un soufflet est trop court, il suffit d'ajuster la propriété
+@code{minimum-length} de l'objet @code{Hairpin} pour l'allonger.
+
+"
+ doctitlefr = "Ajustement de la longueur d'un soufflet"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Ajustar la longitud mínima de los reguladores"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wenn Crescendo-Klammern zu kurz sind, können sie verlängert werden, indem
\version "2.13.4"
\header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+ texidocfr = "
+Les crochets indiquant les fins alternatives s'étalent tout au long ce
+celle-ci. On peut les raccourcir en définissant la propriété
+@code{voltaSpannerDuration}. Dans l'exemple suivant, le crochet ne se
+prolonge que sur une mesure à 3/4.
+
+"
+ doctitlefr = "Diminution de la taille du crochet d'alternative"
+
+
lsrtags = "repeats"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Shortening volta brackets"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Volta-Klammern werden normalerweise über alle Noten der Klammer gezogen, aber
"
doctitlees = "Imprimir los acordes cuando se produce un cambio"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Akkordsymbole können so eingestellt werden, dass sie nur zu Beginn der Zeile
"
doctitlees = "Hoja guía de acordes o «lead sheet» sencilla"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Ein Liedblatt besteht aus Akkordbezeichnungen, einer Melodie und dem Liedtext:
"
doctitlees = "Plantilla de pentagrama único con música, letra y acordes"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
これは旋律、単語、コードを持つ歌曲の楽譜のためのテンプレートです。
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Mit diesem Beispiel können Sie einen Song mit Melodie,
doctitlede = "Vorlage für eine Notenzeile mit Noten, Text und Akkorden"
-
%% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
texidocfr = "
Ce cannevas comporte tous les éléments d'une chanson : la mélodie,
doctitlees = "Plantilla de pentagrama único con música y acordes"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
旋律とコードを持つリード譜を欲しくはありませんか?他を見る必要はありません!
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben? Hier ist
doctitlede = "Vorlage für eine Notenzeile mit Akkorden"
-
%% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
texidocfr = "
Vous avez besoin de la partition d'une mélodie avec les accords ?
"
doctitlees = "Plantilla de pentagrama único don notas y letra"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&ペーストして、音符@c
行を変更するか、コメント アウトしてください。
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren
doctitlede = "Vorlage für ein Notensystem mit Noten und Gesangstext"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
"
doctitlees = "Plantilla de un solo pentagrama, con notas únicamente"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
これは音符を持つ譜表を提供するとても簡単なテンプレートであり、ソロの楽器や旋律に適しています。@c
これをファイルにカット&ペーストして、音符を付け加えれば完了です!
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein
doctitlede = "Vorlage für ein Notensystem"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Cet exemple simpliste se compose d'une portée agrémentée de quelques
texidoc = "
Although @code{s} skips cannot be used in @code{\\lyricmode} (it is
-taken to be a literal \"s\", not a space), double quotes (@code{\"\"})
+taken to be a literal @qq{s}, not a space), double quotes (@code{\"\"})
or underscores (@code{_}) are available.So for example:
"
lsrtags = "expressive-marks, unfretted-strings"
texidoc = "
-A snap-pizzicato (also known as \"Bartok pizzicato\") is a \"strong
+A snap-pizzicato (also known as @qq{Bartok pizzicato}) is a @qq{strong
pizzicato where the string is plucked vertically by snapping and
-rebounds off the fingerboard of the instrument\" (Wikipedia). It is
-denoted by a cicle with a vertical line going from the center upwards
+rebounds off the fingerboard of the instrument} (Wikipedia). It is
+denoted by a circle with a vertical line going from the center upwards
outside the circle.
"
- doctitle = "Snap-pizzicato (\"Bartok pizzicato\")"
+ doctitle = "Snap-pizzicato (@qq{Bartok pizzicato})"
} % begin verbatim
"
doctitlees = "Elemento de marcado de texto independiente en dos columnas"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Isolierter Text kann in mehreren Spalten mit @code{\\markup}-Befehlen
"
doctitlees = "Comportamiento de las plicas y las barras de corchea en tablaturas"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Richtung von Hälsen wird in Tabulaturen genauso wie in normaler Notation
"
doctitlede = "Hals- und Balkenverhalten in einer Tabulatur"
-
%% Translation of GIT committish: cd4950757ab1ab6c89805b0b7c978bfca034f940
texidocfr = "
"
doctitlees = "Plantilla de cuarteto de cuerda (sencilla)"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために
@code{@bs{}global} セクションを使っています。
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier
doctitlede = "Vorlage für Streichquartett (einfach)"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Voici un canevas pour quatuor à cordes. Notez l'utilisation de la
"
doctitlees = "Plantilla de cuarteto de cuerda con particellas independientes"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
\"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c
別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないでください!
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Mit diesem Beispiel können Sie ein schönes Streichquartett notieren,
doctitlede = "Vorlage für Streichquartett mit einzelnen Stimmen"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Grâce à ce canevas, vous pouvez obtenir une partition d'excellente
doctitlefr = "Quatuor à cordes, avec parties séparées"
texidoc = "
-The \"String quartet template\" snippet produces a nice string quartet,
-but what if you needed to print parts? This new template demonstrates
-how to use the @code{\\tag} feature to easily split a piece into
-individual parts.
+The @qq{String quartet template} snippet produces a nice string
+quartet, but what if you needed to print parts? This new template
+demonstrates how to use the @code{\\tag} feature to easily split a
+piece into individual parts.
You need to split this template into separate files; the filenames are
contained in comments at the beginning of each file. @code{piece.ly}
"
doctitlees = "Subdivisión de las barras de semicorchea"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Balken von aufeinanderfolgenden Sechszehnteln (oder kürzeren Notenwerten)
doctitlede = "Balken in Untergruppen teilen"
-
%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
texidocfr = "
Les ligatures d'une succession de notes de durée inférieure à la croche
texidoc = "
If notes from two voices with stems in the same direction are placed at
the same position, and both voices have no shift or the same shift
-specified, the error message \"warning: ignoring too many clashing note
-columns\" will appear when compiling the LilyPond file. This message
-can be suppressed by setting the @code{'ignore-collision} property of
-the @code{NoteColumn} object to @code{#t}.
+specified, the error message @samp{warning: ignoring too many clashing
+note columns} will appear when compiling the LilyPond file. This
+message can be suppressed by setting the @code{'ignore-collision}
+property of the @code{NoteColumn} object to @code{#t}.
"
doctitle = "Suppressing warnings for clashing note columns"
\version "2.13.4"
\header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+Cet exemple, grâce à un peu de code Scheme, donne la priorité aux
+enharmoniques afin de limiter le nombre d'altérations supplémentaires.
+La règle appliquable est :
+
+@itemize
+@item
+Les altérations doubles sont supprimées
+
+@item
+Si dièse -> Do
+
+@item
+Mi dièse -> Fa
+
+@item
+Do bémol -> Si
+
+@item
+Fa bémol -> Mi
+
+@end itemize
+
+Cette façon de procéder aboutit à plus d'enharmoniques naturelles.
+
+"
+
+ doctitlefr = "Transposition et réduction du nombrer d'altérations accidentelles"
+
lsrtags = "pitches"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Noten mit minimaler Anzahl an Versetzungszeichen transponieren."
texidocde = "Dieses Beispiel benutzt Scheme-Code, um enharmonische
\version "2.13.4"
\header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+ texidocfr = "
+La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph},
+@code{clefPosition} -- qui contrôle la position verticale de la clé --
+@code{middleCPosition} et @code{clefOctavation}. Une clé est imprimée
+lorsque l'une de ces propriétés, hormis @code{middleCPosition}, est
+modifiée.
+ Les exemples suivant font
+apparaître des possibilités de réglage manuel de ces propriétés.
+
+
+Modifier le glyphe, la position de la clef ou son octaviation ne
+changera pas la position des notes ; il faut pour y parvenir modifier
+aussi la position du do médium. Le positionnement est relatif à la
+ligne médiane, un nombre positif faisant monter, chaque ligne ou
+interligne comptant pour 1. La valeur de @code{clefOctavation} devrait
+être de 7, -7, 15 ou -15, bien que rien ne vous empêche de lui affecter
+une autre valeur.
+
+
+Lorsqu'un changement de clef intervient en même temps qu'un saut de
+ligne, la nouvelle clef est imprimer à la fois en fin de ligne et au
+début de la suivante. Vous pouvez toujours supprimer cette « clef de
+précaution » en affectant la valeur @code{end-of-line-invisible} à la
+propriété @code{explicitClefVisibility} du contexte @code{Staff}. Le
+comportement par défaut sera réactivé par
+@w{@code{\\unset@tie{}Staff.explicitClefVisibility}}.
+
+
+Les exemples qui suivent illustrent les différentes possibilités de
+définir ces propriétés manuellement. Sur la première ligne, la
+position relative des notes par rapport aux clefs sont préservées, ce
+qui n'est pas le cas pour la deuxième ligne.
+
+"
+ doctitlefr = "Affinage des propriétés d'une clef"
+
lsrtags = "pitches, staff-notation, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
las claves y las notas, pero no lo hacen en la segunda línea.
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Eigenschaften des Schlüssels optimieren"
texidocde = "
doctitlees = "Trucar la disposición de las notas de adorno dentro de la música"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Das Layout von Verzierungsausdrücken kann in der Musik verändert
doctitlede = "Veränderung des Layouts von Verzierungen innerhalb der Noten"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Il est possible de changer globalement la mise en forme des petites
"
doctitlees = "Uso del corchete recto al comienzo de un grupo de pentagramas"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Die Klammer zu Beginn von Systemgruppen kann auch in eine eckige Klammer
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Certains auteurs utilisent deux liaisons lorsqu'ils veulent
+lier des accords. Dans LilyPond, il faut pour cela activer
+la propriété @code{doubleSlurs} :
+
+"
+ doctitlefr = "Accords et double liaison d'articulation"
+
+
lsrtags = "expressive-marks"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Utilizar ligaduras dobles para acordes legato"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Einige Komponisten schreiben doppelte Bögen, wenn Legato-Akkorde notiert
doctitlees = "Utilizar la barra que tacha las notas de adorno con notas normales"
-
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidocfr = "
Le trait que l'on trouve sur les hampes des acciaccatures peut
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Überbindungen werden teilweise benutzt, um Arpeggios zu notieren. In
doctitlede = "Überbingungen für Arpeggio genutzen"
-
%% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
texidocfr = "
Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans
texidoc = "
This short vertical line placed above the note is commonly used in
baroque music. Its meaning can vary, but generally indicates notes
-that should be played with more \"weight\". The following example
+that should be played with more @qq{weight}. The following example
demonstrates how to achieve such a notation.
"
\relative c' {
- a'^\upline a( c d')_\upline
+ a'4^\upline a( c d')_\upline
}
\version "2.13.4"
\header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+ texidocfr = "
+Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les
+différents objets @code{DynamicLineSpanner} (souflets ou textuels)
+quelle que soit leur étendue, par rapport à un même point de référence.
+Tous les éléments seront alors centrés sur une même ligne, ce qui sera
+visuellement plus agréable.
+
+C'est le même principe qui sert à aligner les indications textuelles sur
+une ligne de référence.
+
+"
+ doctitlefr = "Alignement vertical des nuances indications textuelles"
+
+
lsrtags = "tweaks-and-overrides, spacing"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
"
doctitlees = "Indicaciones dinámicas y textuales alineadas verticalmente"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Indem man die @code{'Y-extent}-Eigenschaft auf einen passenden Wert setzt,
"
doctitlees = "Alineación vertical de la letra y los compases de ossia"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Dieser Schnipsel zeigt, wie man die Kontexteigenschaften
"
doctitlees = "Plantilla de conjunto vocal con reducción de piano automática"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c
定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic}
の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
In diesem Beispiel wird ein automatischer Klavierauszug zu der
tenorMusic), verändert sich auch der Klavierauszug entsprechend.
"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Ce canevas ajoute une réduction pour piano à une partition standard pour
texidoc = "
This template adds an automatic piano reduction to the standard SATB
-vocal score demonstrated in \"Vocal ensemble template\". This
+vocal score demonstrated in @qq{Vocal ensemble template}. This
demonstrates one of the strengths of LilyPond – you can use a music
definition more than once. If any changes are made to the vocal notes
(say, @code{tenorMusic}), then the changes will also apply to the piano
"
doctitlees = "Plantilla para conjunto vocal con letras alineadas encima y debajo de los pentagramas"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が
@code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
In diesem Beispiel werden die Texte mit den Befehlen
doctitlede = "Vorlage für Vokalensemble mit dem Gesangstext über und unter dem System"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes.
doctitlefr = "Ensemble vocal avec alignement des paroles selon le contexte"
texidoc = "
-This template is basically the same as the simple \"Vocal ensemble\"
+This template is basically the same as the simple @qq{Vocal ensemble}
template, with the exception that here all the lyrics lines are placed
using @code{alignAboveContext} and @code{alignBelowContext}.
"
doctitlees = "Plantilla de conjunto vocal"
-
%% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
texidocja = "
これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。@c
もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると@c
便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。\"賛美@c
歌\" テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされています。"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
doctitlede = "Vorlage für Vokalensemble"
-
%% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
texidocfr = "
Ce fichier constitue un canevas standard de partition pour chœur à
Here is a standard four-part SATB vocal score. With larger ensembles,
it is often useful to include a section which is included in all parts.
For example, the time signature and key signature are almost always the
-same for all parts. Like in the \"Hymn\" template, the four voices are
+same for all parts. Like in the @qq{Hymn} template, the four voices are
regrouped on only two staves.
"
doctitlees = "Corchetes de primera y segunda vez debajo de los acordes"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Indem man den @code{Volta_engraver} zu dem entsprechenden Notensystem
#!/usr/bin/env perl
# -*- coding: utf-8; -*-
+### WTF, perl cannot read a file?
+###use File::Slurp qw( read_file );
+
### texi2html customization script for LilyPond
### Author: Reinhold Kainhofer <reinhold@kainhofer.com>, 2008.
### Some code parts copied from texi2html and adapted. These functions
@Texi2HTML::Config::CSS_REFS = (
{FILENAME => "lilypond-web.css", TITLE => "Default style"},
+);
+
+@Texi2HTML::Config::ALT_CSS_REFS = (
{FILENAME => "lilypond-web-alt1.css", TITLE => "Alternate style 1"},
{FILENAME => "lilypond-web-alt2.css", TITLE => "Alternate style 2"},
- );
-
-# GOP tweak: We don't have alternate stylesheets right now
-#@Texi2HTML::Config::ALT_CSS_REFS = (
-# {FILENAME => "lilypond.css", TITLE => "Andrew Hawryluk's design" },
-# {FILENAME => "lilypond-blue.css", TITLE => "Kurt Kroon's blue design" },
-#);
+);
$Texi2HTML::Config::USE_ACCESSKEY = 1;
$Texi2HTML::Config::USE_LINKS = 1;
$Texi2HTML::Config::USE_REL_REV = 1;
$Texi2HTML::Config::SPLIT_INDEX = 0;
$Texi2HTML::Config::SEPARATED_FOOTNOTES = 0; # Print footnotes on same page, not separated
-# FIXME: remove for GOP
-#if ($Texi2HTML::Config::SPLIT eq 'section') {
-# $Texi2HTML::Config::element_file_name = \&lilypond_element_file_name;
-#}
-
-## GOP tweak:
# FIXME: creates duplicate anchors, which causes Opera to barf;
# should be fixed in lilypond-texi2html.init too
-# $Texi2HTML::Config::element_target_name = \&lilypond_element_target_name;
+# Uhm, what about a bug report to Opera? We need sane names here.
+if ($Texi2HTML::Config::SPLIT eq 'section') {
+ $Texi2HTML::Config::element_file_name = \&lilypond_element_file_name;
+}
+$Texi2HTML::Config::element_target_name = \&lilypond_element_target_name;
$default_print_element_header = $Texi2HTML::Config::print_element_header;
$Texi2HTML::Config::print_element_header = \&lilypond_print_element_header;
$Texi2HTML::Config::print_page_foot = \&print_lilypond_page_foot;
my $node_map = ();
if (open(XREFFILE, $mapfile)) {
+ print STDERR "Reading map file: $mapfile\n";
my $line;
while ( $line = <XREFFILE> ) {
# parse the tab-separated entries and insert them into the map:
}
close (XREFFILE);
} else {
- print STDERR "WARNING: Unable to load the map file $mapfile\n";
+ print STDERR "warning: cannot load map file: no such file: $mapfile\n";
}
return $node_map;
}
$Texi2HTML::THISDOC{'CSS_LINES'} .= "<link rel=\"stylesheet\" type=\"text/css\" title=\"$ref->{TITLE}\" href=\"$ref->{FILENAME}\">\n";
}
- # GOP tweak: We don't have alternate stylesheets
- #foreach my $ref (@Texi2HTML::Config::ALT_CSS_REFS)
- #{
- # $Texi2HTML::THISDOC{'CSS_LINES'} .= "<link rel=\"alternate stylesheet\" type=\"text/css\" href=\"$ref->{FILENAME}\" title=\"$ref->{TITLE}\">\n";
- #}
+ foreach my $ref (@Texi2HTML::Config::ALT_CSS_REFS)
+ {
+ $Texi2HTML::THISDOC{'CSS_LINES'} .= "<link rel=\"alternate stylesheet\" type=\"text/css\" href=\"$ref->{FILENAME}\" title=\"$ref->{TITLE}\">\n";
+ }
# GOP tweak: We aren't using an IE-specific stylesheet
#$Texi2HTML::THISDOC{'CSS_LINES'} .= "<!--[if lte IE 7]>\n<link href=\"lilypond-ie-fixes.css\" rel=\"stylesheet\" type=\"text/css\">\n<![endif]-->\n";
# FIXME: removed for GOP.
+# Uhm, yes: that's what I found. It was gone. No need to add that
+# in a comment, DIFF tells me that it's gone.
+
+# Comments can be used to tell *why* something has been removed -- as
+# it seems to me that we *need* this in order to get sane,
+# untranslated, html file names? Putting it back for this reason.
+
+my $lastfilename;
+my $docnr = 0;
+my $node_to_filename_map = ();
+
+
+# This function makes sure that files are only generated for numbered sections,
+# but not for unnumbered ones. It is called after texi2html has done its own
+# splitting and simply returns the filename for the node given as first argument
+# Nodes with the same filename will be printed out to the same filename, so
+# this really all we need. Also, make sure that the file names for sections
+# are derived from the section title. We also might want to name the anchors
+# according to node titles, which works by simply overriding the id element of
+# the $element hash.
+# If an external nodename<=>filename/anchor map file is found (loaded in
+# the command handler, use the externally created values, otherwise use the
+# same logic here.
+sub lilypond_element_file_name($$$)
+{
+ my $element = shift;
+ my $type = shift;
+ my $docu_name = shift;
+ my $docu_ext = $Texi2HTML::Config::EXTENSION;
+
+ my $node_name = main::remove_texi($element->{'node_ref'}->{'texi'});
+ # the snippets page does not use nodes for the snippets, so in this case
+ # we'll have to use the section name!
+ if ($node_name eq '') {
+ $node_name = main::remove_texi($element->{'texi'});
+ }
+
+ # If we have an entry in the section<=>filename map, use that one, otherwise
+ # generate the filename/anchor here. In the latter case, external manuals
+ # will not be able to retrieve the file name for xrefs!!! Still, I already
+ # had that code, so I'll leave it in in case something goes wrong with the
+ # extract_texi_filenames.py script in the lilypond build process!
+ if (exists ($node_to_filename_map->{$node_name})) {
+ (my $filename, my $anchor) = @{$node_to_filename_map->{$node_name}};
+ $filename .= ".$docu_ext" if (defined($docu_ext));
+
+ # unnumbered sections (except those at top-level!) always go to the same
+ # file as the previous numbered section
+ if (not ($element->{number}) and not ($lastfilename eq '') and ($element->{level} > 1)) {
+ $filename = $lastfilename;
+ }
+ if (($filename eq $lastfilename)) {
+ $$element{doc_nr} = $docnr;
+ } else {
+ $docnr += 1;
+ $$element{doc_nr} = $docnr;
+ $lastfilename = $filename;
+ }
+ return $filename;
+
+ } elsif ($type eq "top" or $type eq "toc" or $type eq "doc" or $type eq "stoc" or $type eq "foot" or $type eq "about") {
+ return;
+ } else {
+ print STDERR "WARNING: Node '$node_name' was NOT found in the map\n"
+ unless ($node_name eq '') or ($element->{'tag'} eq 'unnumberedsec')
+ or ($node_name =~ /NOT REALLY USED/);
+
+ # Numbered sections will get a filename Node_title, unnumbered sections will use
+ # the file name of the previous numbered section:
+ if (($element->{number}) or ($lastfilename eq '') or ($element->{level} == 1)) {
+ # normalize to the same file name as texinfo
+ if ($element->{translationof}) {
+ $node_name = main::remove_texi($element->{translationof});
+ }
+ my $filename = texinfo_file_name($node_name);
+ $filename .= ".$docu_ext" if (defined($docu_ext));
+ $docnr += 1;
+ $$element{doc_nr} = $docnr;
+ $lastfilename = $filename;
+ return $filename;
+ } else {
+ $$element{doc_nr} = $docnr;
+ return $lastfilename;
+ }
+ }
+
+ return;
+}
+
+sub lilypond_element_target_name($$$)
+{
+ my $element = shift;
+ my $target = shift;
+ my $id = shift;
+ # Target is based on node name (or sec name for secs without node attached)
+ my $node_name = main::remove_texi($element->{'node_ref'}->{'texi'});
+ if ($node_name eq '') {
+ $node_name = main::remove_texi($element->{'texi'});
+ }
+
+ # If we have an entry in the section<=>filename map, use that one, otherwise
+ # generate the anchor here.
+ if (exists ($node_to_filename_map->{$node_name})) {
+ (my $filename, $target) = @{$node_to_filename_map->{$node_name}};
+ } else {
+ my $anchor = $node_name;
+ if ($element->{translationof}) {
+ $anchor = main::remove_texi($element->{translationof});
+ }
+ # normalize to the same file name as texinfo
+ $target = texinfo_file_name($anchor);
+ }
+ # TODO: Once texi2html correctly prints out the target and not the id for
+ # the sections, change this back to ($id, $target)
+ return ($target, $target);
+}
+
+
+## Load the map file for the corrently processed texi file. We do this
+# using a command init handler, since texi2html does not have any
+# other hooks that are called after THISDOC is filled but before phase 2
+# of the texi2html conversion.
+sub lilypond_init_map ()
+{
+ my ($docu_dir, $docu_name) = split_texi_filename ($Texi2HTML::THISDOC{'input_file_name'});
+ my $map_filename = main::locate_include_file ("${docu_name}.$Texi2HTML::THISDOC{current_lang}.xref-map")
+ || main::locate_include_file ("${docu_name}.xref-map");
+ $node_to_filename_map = load_map_file ($map_filename);
+}
+push @Texi2HTML::Config::command_handler_init, \&lilypond_init_map;
+
#############################################################################
### CLEANER LINK TITLE FOR EXTERNAL REFS
my $page_toc_depth = 2;
my @default_toc = [];
-
# Initialize the toc_depth to 1 if the command-line option -D=short_toc is given
sub lilypond_init_toc_depth ()
{
"Contact", "Tiny examples", "Bug reports"
);
my @color_2 = (
- "Features", "Examples", "Freedom",
+ "Features", "Examples", "Freedom", "Background",
"Unix", "MacOS X", "Windows",
"Notation", "Usage", "Snippets",
"Help us", "Development", "Authors"
"Publications", "Old news"
);
my @color_4 = (
- "Text input",
+ "Text input", "Alternate input",
"GPL",
- "Translated", "Old", "FDL"
+ "Translated", "All", "FDL"
);
my $addColor = " colorDefault";
$parentelements{$current_element->{'sectionup'}->{'id'}} = 1
if ($current_element->{'sectionup'}->{'id'} ne '');
$current_element = $current_element->{'sectionup'};
+ if (exists($main::value{'shallow_toc'})) {
+ last;
+ }
}
return () if not defined($current_element);
# Create the toc entries recursively
} else {
push (@toc_entries, "<li class=\"toc_current\"><a href=\"index.html\">Main</a></li>\n");
}
-
my $children = $current_element->{'section_childs'};
# FIXME: generate toc
foreach ( @$children ) {
push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth));
}
-# FIXME: add search entry box
- push (@toc_entries, "<li><form action=\"#\" method=\"get\"><input onfocus=\"this.value=''\" type=\"text\" name=\"search\" id=\"search\" value=\"Search\"></form></li>\n");
-
+ if (!exists($main::value{'shallow_toc'})) {
+# WTF, perl needs 6 lines of magic to do: ' ' + open ('file-name').read ()?
+ local $/=undef;
+ my $name = 'search-box.html';
+ open FILE, $name or open FILE, "../$name" or die die "no such file: $name: $!";
+
+# All these also seems to work, but fail silently. Great, it runs!
+# It's late already, let's this broken site.
+
+# push (@toc_entries, '<li>\n' + <FILE> + '</li>\n');
+# push (@toc_entries, '<li>\n' . <FILE> . '</li>\n');
+# my $string = '<li>\n' + <FILE> + '</li>\n';
+# my $string = '<li>\n' + <FILE> + '</li>\n';
+# my $string = '<li>\n' . <FILE> . '</li>\n';
+ my $string = <FILE>;
+# $string = '<li>\n' + $string + '</li>\n';
+ $string = "<li>\n" . $string . "</li>\n";
+ push (@toc_entries, $string);
+ close FILE;
+ }
push (@toc_entries, "</ul>\n");
#FIXME
# push (@toc_entries, "</div>\n");
# Do not include language selection in div#main
print $fh "<!-- end div#main here -->\n</div>\n\n";
+ if (0) {
print $fh "<!-- FOOTER -->\n\n";
print $fh "<div id=\"footer\">\n";
print $fh "<div id=\"language\">\n";
print $fh "<p><a href=\"\">Deutsch</a>, Español, Français, Magyar.</p>\n";
print $fh "<p>About automatic language selection.</p>\n";
print $fh "</div>\n";
+ }
print $fh "<div id=\"verifier_texinfo\">\n";
print $fh "<h3>Validation</h3>\n";
print $fh "<img src=\"http://www.w3.org/Icons/valid-html401\"\n";
print $fh " alt=\"Valid HTML 4.01 Transitional\"\n";
print $fh " height=\"31\" width=\"88\"></a></p>\n";
- print $fh "<p>Web pages created with";
- print $fh " <a href=\"http://www.gnu.org/software/texinfo/\">";
- print $fh " GNU Texinfo</a>\n";
- print $fh " and <a href=\"http://www.nongnu.org/texi2html/\">";
- print $fh " texi2html</a>.</p>\n";
print $fh "</div>";
print $fh "</div>";
patches for third party programs
Documentation/
application/ Source files for Application Usage manual
- bibliography/ .bib files with references to books and articles
+ essay/ Academic material and .bib files with references
+ to books and articles
contributor/ Source files for the Contribotor's Guide
learning/ Source files for the Learning Manual
misc/ Old announcements, ChangeLogs and NEWS
STEPMAKE_PERL(OPTIONAL)
STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.11)
-STEPMAKE_PROGS(TEXI2HTML, texi2html, OPTIONAL, 1.80)
+STEPMAKE_PROGS(TEXI2HTML, texi2html, OPTIONAL, 1.82)
AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}")
-\version "2.12.0"
+\version "2.13.4"
\header {
composer = "ARTHUR GRAY"
<fis fis,>8 <e! e,!>
| %4
<dis, a' dis>4)\sustainOn
-
+
\change Staff=treble
-
+
\slurUp
\set PianoStaff.connectArpeggios = ##t
\grace {
cis8
\revert Stem #'direction
-
+
a16[-5_( fis dis]
\ottava #0
-
+
cis32[ a-1 fis-4 dis] cis[ a fis)-2]
% the small grace in lower staff comes after us
s32
| %5
r8 <a' a,>8(\mf <gis gis,> <fis fis,>
-
+
% \fingerUp
\override Fingering #'direction = #UP
-
+
<gis gis,> <fis fis,> e)-1-4-5 r
| %6
r <a a,>8(\mf <gis gis,> <fis fis,>
<gis gis,> <fis fis,> e) r
-
+
| %7
\bar "||"
}
\override Fingering #'slur-padding = #0.1
<cis e,>8[( <d,_3 b'_1>
| %6
- <cis_1 a'_2>)] cis'4. d4
+ <cis_1 a'_2>)] cis'4. d4
<cis e,>8[( <b d,>
| %7
<a cis,>)]
bass = \new Voice \relative c{
\partial 2
\key a \major
-
+
\slurDown
\dynamicUp
r8. e,16(\f_2 <a a,>8[ <b b,>]
| %2
%\override Staff.SustainPedalLineSpanner #'staff-padding = #5 %tweak
-
+
<cis cis,>4\sustainOn
\change Staff=treble
\stemDown
<a'' eis cis>4)\arpeggio
-
+
\change Staff=bass
\stemNeutral
-
+
r8. cis,,16(\sustainOff <fis fis,>8 <gis gis,>
-
+
| %3
<a a,>4\sustainOn
\change Staff=treble
-
+
\stemNeutral
- \stemDown
+ \stemDown
<a' fis cis>)\arpeggio
\change Staff=bass
\stemNeutral
r2
-
+
| %4
\stemDown
<b,, b,>4
%urg: staff-change: ! on dis
<cis'' a fis dis!>\arpeggio
>>
-
+
\grace {
\override Stem #'stroke-style = #"grace"
-
+
s8
s16 s s
s32 s s
s s s
\clef bass
<e,,, e,>32(\sustainOff\sustainOn
-
+
\revert Stem #'stroke-style
}
<gis' e>2)
-
+
| %5
\slurUp
-
+
% \fingerDown
\override Fingering #'direction = #DOWN
-
+
%\override Staff.SustainPedalLineSpanner #'staff-padding = #3.5 %tweak
\set Staff.pedalSustainStyle = #'mixed
%%a,8 e'[-5(<a-2 cis-3>])
-
+
a,8\sustainOn e'[-5(<a cis>])-2-3
%%r b,-5 <e-3 gis-5 d'>4
r b,-5\sustainOff\sustainOn <e gis d'>4-3-5
\slurNeutral
e,8[-5(\sustainOff
-
+
| %6
a)-2]\sustainOn
\slurUp
e'[(<a cis>)] r b,\sustainOff\sustainOn <e gis d'>4
\slurNeutral
e,8[(\sustainOff
-
+
| %7
a)]
}
s32 s
s\> s
s32 s s\! s
-
+
}
\textLengthOn
s32 s-"rall." s s s8 s4
| %5
s2-"a tempo" s8
s \> s s
- | %6
+ | %6
s8\!
s2 s8 s\> s
| %7
theScore = \score{
\context PianoStaff <<
\new Staff = "treble" <<
+ \overrideBeamSettings #'Score #'(4 . 4) #'end
+ #'((* . (1 1 1 1))
+ ((1 . 32) (4 4 4 4 4 4 4 4)))
\treble
\trebleTwo
>>
}
}
}
-
+
\book{
\score { \theScore }
}
-
+
%%% Local variables:
%%% coding: utf-8
%%% LilyPond-indent-level:2
"domain by " maintainer "." ))
}
\justify {
- Unrestricted modification and redistribution
- is permitted and encouraged. Copy this music
+ Unrestricted modification and redistribution
+ is permitted and encouraged. Copy this music
and share it!
}
}
}
- lastupdated = "2002/August/19"
+ lastupdated = "2009/August/08"
}
-\version "2.12.0"
+\version "2.13.4"
r8 c16 b c8 g as c16 b c8 d |
g, c16 b c8 d f,16 g as4 g16 f |
- es c' b a g f! es d c8 es' d c |
+ es c' b a g f! es d c8 es' d c |
bes a bes c fis, g a fis |
%%5
g4 r16 c, d es f g as8~ as16 d, es f |
- g a bes8 ~ bes16 es, f g as g f es d8 c'16 b! |
+ g a bes8 ~ bes16 es, f g as g f es d8 c'16 b! |
% forced accident!
c4 r4 r8 f es d |
- r8 as g f g f16 es f8 d |
+ r8 as g f g f16 es f8 d |
g4 r8 b c c16 b c8 g |
- %%10
+ %%10
as4 r8 a bes bes16 a bes8 f |
g4 r8 g as as g
- \change Staff = bass \stemUp
+ \change Staff = bass \stemUp
f |
- r8
+ r8
as, bes c r8 as16 g as8 f8 |
bes8 c bes as bes g f es |
f des' c bes c as g f |
\change Staff = treble
\stemDown
- g'16 fis g8 c,
+ g'16 fis g8 c,
es
g16 fis! g8 a |
d, g16 fis g8 a! c,16 d es4 d16 c | % forced accident!
c
\change Staff = bass
\stemUp
- bes! as g
+ bes! as g
f8 \change Staff = treble
\stemDown
as' g f |
comes = \context Voice = "one" \relative c'' {
\voiceOne
- \override MultiMeasureRest #'staff-position = #6
+ \override MultiMeasureRest #'staff-position = #6
R1 |
R1 |
r8 g'16 fis g8 c, es g16 fis g8 a |
d,8 g16 fis g8 a c,16 d es4 d16 c |
%%5
- bes8 es16 d es8 g,8 as f'16 es f8 a,
+ bes8 es16 d es8 g,8 as f'16 es f8 a,
bes8 g'16 f g8 b, c8 d16 es f4 ~ |
- f8 es16 d c16 bes ! as g f8 as' g f
+ f8 es16 d c16 bes ! as g f8 as' g f
es d es f b, c d b |
c g'16 fis g8 d es4 r8 e8 |
- %%10
+ %%10
f f16 e f8 c8 d4 r8 d |
es8 es16 d es8 bes c es16 d es8 f |
bes, es16 d es8 f as,16 bes c4 bes16 as |
R |
R1 |
r8 c16 b c8 g as c16 b c8 d |
- g, c16 b c8 d f,16 g as4 g16 f |
+ g, c16 b c8 d f,16 g as4 g16 f |
es c' b a g f es d c d es d c bes! as! g |
% -> \classic_accidentals
%%10
g,8 bes'16 a bes8 d, es c'16 bes c8 e, |
f d'16 c d8 fis, g4 r16 g, a b |
c16 d es8~ es16 a, bes c d es f8~ f16 b, c d |
- %%20
+ %%20
es8 r r e \stemNeutral \stemDown f f, es! d \stemNeutral |
r as' g f g f16 es f8 g |
c16 d es d c bes as g f bes' as g f es d c |
g f as g f es d c b8 c16 b c8 g |
as c16 b c8 d g, c16 b c8 d |
f,16 g as4 g16 f es4 r8 es' |
- d c g' g,
+ d c g' g,
%%30
<< { c2 ~ | c1 ~ | c1 } \\
{ c,2 ~ | c1 ~ | c1 }
- >>
+ >>
}
\context Score \with
{
\override SpacingSpanner #'spacing-increment = #1.0
- \override SpacingSpanner #'shortest-duration-space = #1.9
- } \context PianoStaff <<
+ \override SpacingSpanner #'shortest-duration-space = #1.9
+ } \context PianoStaff <<
\override Score.TimeSignature #'style = #'C
\context Staff = "treble" <<
+ \overrideBeamSettings #'Score #'(4 . 4) #'end
+ #'((* . (1 1 1 1))
+ ((1 . 32) . (4 4 4 4 4 4 4 4)))
\key c \minor
\dux
{ \comes \bar "|." }
within normal staves and tablature."
}
-deadnotes = \relative c,, {
- e8. \deadNotesOn e16 \deadNotesOff g4 a b |
+mynotes = \relative c,, {
+ \deadNotesOn
+ e8. e16
+ \deadNotesOff
+ g4 a b |
e8. \deadNote e16 g4 a b |
e,4. \deadNote { e8 e e } e4 |
< e, \deadNote b' e >8 < e \deadNote b' e > < e \deadNote b' e >4 < e \deadNote b' e >4 r
}
\context StaffGroup <<
- \context Staff <<
- \clef "bass_8"
- \deadnotes
- >>
- \context TabStaff <<
- \set TabStaff.stringTunings = #bass-tuning
- \deadnotes
- >>
+ \context Staff {
+ \context Voice { % Warning: explicit voice instantiation is required
+ % to have deadNotesOff work properly
+ % when deadNotesOn comes at the beginning
+ % of the piece
+ \clef "bass_8"
+ \mynotes
+ }
+ }
+ \context TabStaff {
+ \context TabVoice { % Warning: explicit voice instantiation is
+ % required to have deadNotesOff work properly
+ % when deadNotesOn comes at the beginning
+ % of the piece
+ \set TabStaff.stringTunings = #bass-tuning
+ \mynotes
+ }
+ }
>>
\test "" ##[ \unset autoBeaming #]
%% Layout properties
\test "" ##[ \override Staff . Stem #'thickness = #4.0 #] % OverrideProperty
-\test "" ##[ \once \override Beam #'thickness = #0.6 #]
+\test "" ##[ \once \override Beam #'beam-thickness = #0.6 #]
\test "" ##[ \revert Staff . Stem #'thickness #] % RevertProperty
-\test "" ##[ \revert Beam #'thickness #]
+\test "" ##[ \revert Beam #'beam-thickness #]
%% \applyOutput
\test "" ##[ \applyOutput #'Foo #(lambda (arg) (list)) #]
-\header {
-
- texidoc = "Incipit can be printed using an InstrumentName grob."
+\version "2.13.4"
+\header {
+ texidoc = "Incipits can be printed using an @code{InstrumentName}
+grob."
}
-\version "2.12.0"
-
-%% to avoid warnings:
+%% to prevent warnings/programming errors:
#(set-object-property! 'music 'backend-type? ly:music?)
#(set-object-property! 'music 'backend-doc "Incipit music")
+#(ly:add-interface 'incipit-interface "An incipit." '(music))
+#(let* ((instrument-def (assoc 'InstrumentName all-grob-descriptions))
+ (meta-def (assoc 'meta (cdr instrument-def)))
+ (interfaces-def (assoc 'interfaces (cdr meta-def)))
+ (interfaces (cdr interfaces-def)))
+ (set-cdr! interfaces-def (cons 'incipit-interface interfaces)))
\score {
\new Staff {
%% All this would be shortcuted by an appropriate music function:
\override Staff.InstrumentName #'music = ##{ \clef "petrucci-c1" c'4 d' e' f' #}
\override Staff.InstrumentName #'self-alignment-X = #RIGHT
- \override Staff.InstrumentName #'self-alignment-Y = #UP
- \override Staff.InstrumentName #'Y-offset = #4
\override Staff.InstrumentName #'padding = #0
- \override Staff.InstrumentName #'stencil =
- #(lambda (grob)
- (let* ((instrument-name (ly:grob-property grob 'long-text))
- (layout (ly:output-def-clone (ly:grob-layout grob)))
- (music (make-music 'SequentialMusic
- 'elements (list (make-music 'ContextSpeccedMusic
- 'context-type 'MensuralStaff
- 'element (make-music 'PropertySet
- 'symbol 'instrumentName
- 'value instrument-name))
- (ly:grob-property grob 'music))))
- (score (ly:make-score music))
- (mm (ly:output-def-lookup layout 'mm))
- (indent (ly:output-def-lookup layout 'indent))
- (incipit-width (ly:output-def-lookup layout 'incipit-width))
- (scaled-incipit-width (if (number? incipit-width)
- (* incipit-width mm)
- (* indent 0.5))))
- (ly:output-def-set-variable! layout 'indent (- indent scaled-incipit-width))
- (ly:output-def-set-variable! layout 'line-width indent)
- (ly:output-def-set-variable! layout 'ragged-right #f)
- (ly:score-add-output-def! score layout)
- (set! (ly:grob-property grob 'long-text)
- (markup #:score score))
- (ly:system-start-text::print grob)))
+ \override Staff.InstrumentName #'stencil =
+ #(lambda (grob)
+ (let* ((instrument-name (ly:grob-property grob 'long-text))
+ (layout (ly:output-def-clone (ly:grob-layout grob)))
+ (music (make-sequential-music
+ (list (context-spec-music
+ (make-sequential-music
+ (list (make-property-set
+ 'instrumentName instrument-name)
+ (make-grob-property-set
+ 'VerticalAxisGroup
+ 'Y-extent '(-4 . 4))))
+ 'MensuralStaff)
+ (ly:grob-property grob 'music))))
+ (score (ly:make-score music))
+ (mm (ly:output-def-lookup layout 'mm))
+ (indent (ly:output-def-lookup layout 'indent))
+ (incipit-width (ly:output-def-lookup layout 'incipit-width))
+ (scaled-incipit-width (if (number? incipit-width)
+ (* incipit-width mm)
+ (* indent 0.5))))
+ (ly:output-def-set-variable! layout 'indent (- indent scaled-incipit-width))
+ (ly:output-def-set-variable! layout 'line-width indent)
+ (ly:output-def-set-variable! layout 'ragged-right #f)
+ (ly:score-add-output-def! score layout)
+ (set! (ly:grob-property grob 'long-text)
+ (markup #:score score))
+ (system-start-text::print grob)))
%% the instrument name definition is separated:
- \set Staff.instrumentName = \markup Instrument
- c'4 d' e' f' g'1
+ \set Staff.instrumentName = #"Instrument"
+ c'4 d' e' f'
+ g'1
}
\layout {
- ragged-right = ##t
indent = 5\cm
- incipit-width = 3 \cm
+ incipit-width = 3\cm
}
}
\ No newline at end of file
+\version "2.12.0"
\header {
+ texidoc = "Instrument names are removed when the staves are
+killed off.
- texidoc = "@code{PianoStaff.instrument} and
-@code{PianoStaff.instr} are removed when the staves are killed off.
-
-In this example, the 2nd staff (marked by the barnumber 2) disappears
-as does the instrument name. "
-
+In this example, the second staff (marked by the bar number 2)
+disappears, as does the instrument name."
}
-
-\version "2.12.0"
- \new PianoStaff <<
- \new Staff {
- \override Staff.VerticalAxisGroup #'remove-empty = ##t
- \set PianoStaff.instrumentName ="up"
- \set PianoStaff.shortInstrumentName ="u"
- c'1\break R
- }
- >>
+\new PianoStaff <<
+ \new Staff {
+ \override Staff.VerticalAxisGroup #'remove-empty = ##t
+ \set PianoStaff.instrumentName = #"up"
+ \set PianoStaff.shortInstrumentName = #"u"
+ c'1\break R
+ }
+>>
+++ /dev/null
-\version "2.13.2"
-
-#(set-default-paper-size "a6")
-
-\book {
-
- \header {
- texidoc = "first-system-spacing controls the spacing to the first
-non-title staff on every page."
- title = "Title"
- }
-
- \paper {
- first-system-spacing = #'((minimum-distance . 30))
- ragged-bottom = ##t
- }
-
- { c'1 \pageBreak c'1 }
-}
\ No newline at end of file
+++ /dev/null
-\version "2.13.2"
-
-#(set-default-paper-size "a6")
-
-\book {
-
- \header {
- texidoc = "first-system-title-spacing controls the spacing to the title,
-provided that it is the first system on a page."
- title = "Title"
- }
-
- \paper {
- first-system-title-spacing = #'((minimum-distance . 30))
- ragged-bottom = ##t
- }
-
- { c'1 \pageBreak c'1 }
-}
\ No newline at end of file
+\version "2.13.4"
+
\header {
texidoc = "A loose line (eg. a lyric line) at the bottom of a system
-gets spaced as though it wasn't loose."
+gets spaced appropriately."
}
\layout {
}
>>
-\version "2.12.0"
--- /dev/null
+\version "2.13.4"
+
+\header {
+ texidoc = "Having markup after a loose line doesn't confuse the page layout
+engine."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice = "asdf" { c' d' e' f' }
+ >>
+ \new Lyrics \lyricsto "asdf" \lyricmode { a b c d }
+ >>
+ }
+ \markup "blah blah blah"
+}
+
+\version "2.13.4"
+
\header {
texidoc = "A loose line (eg. a lyric line) at the top of a system
-gets spaced as though it wasn't loose."
+is spaced appropriately."
}
\layout {
ragged-right = ##t
\context {
\Lyrics
- \override VerticalAxisGroup #'inter-loose-line-spacing #'space = #20
+ \override VerticalAxisGroup #'inter-loose-line-spacing #'minimum-distance = #20
\override VerticalAxisGroup #'staff-affinity = #DOWN
}
}
}
>>
-\version "2.12.0"
--- /dev/null
+\version "2.13.4"
+
+\header {
+ texidoc = "Loose lines between two systems don't confuse the layout engine.
+In particular, they don't interfere with @var{between-system-spacing},
+which measures distances between spaceable staves."
+}
+
+\paper {
+ ragged-right = ##t
+ between-system-spacing = #'((space . 20) (minimum-distance . 30))
+ annotate-spacing = ##t
+}
+
+<<
+ \new Lyrics
+ \with { \override VerticalAxisGroup #'staff-affinity = #DOWN }
+ \lyricmode {
+ My2 first Li4 -- ly song,2
+ My2 first Li4 -- ly song,2
+ }
+ \context Voice = "voice" \relative {
+ d'2 d c4 bes a2 \break
+ d'2 d c4 bes a2
+ }
+ \new Lyrics \lyricmode {
+ Not2 much can4 go wrong!2
+ Not2 much can4 go wrong!2
+ }
+>>
--- /dev/null
+\version"2.13.4"
+
+\header {
+ texidoc = "Padding from the header and footer is measured to the first
+line, whether or not it is spaceable."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+ \paper {
+ top-system-spacing = #'((space . 1) (padding . 10))
+ bottom-system-spacing = #'((space . 1) (padding . 10))
+ annotate-spacing = ##t
+ ragged-last-bottom = ##f
+ }
+
+ \score {
+ <<
+ \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN } \lyricmode { foo }
+ \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN } \lyricmode { foo }
+ \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN } \lyricmode { foo }
+ \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN } \lyricmode { foo }
+ \new Staff { c'1 }
+ \new Staff { c'1 }
+ \new Lyrics \lyricmode { foo }
+ \new Lyrics \lyricmode { foo }
+ \new Lyrics \lyricmode { foo }
+ \new Lyrics \lyricmode { foo }
+ >>
+ }
+}
\ No newline at end of file
--- /dev/null
+\version "2.13.4"
+
+\header {
+ texidoc = "The space taken up by rehearsal marks is correctly
+accounted for, even though they live in the Score context."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+ \paper {
+ oddHeaderMarkup = "header"
+ ragged-last-bottom = ##f
+ }
+ \score {
+ <<
+ \new Staff { \mark \markup \column { T A L L M A R K } c'1 \break
+ \mark \markup \column { T A L L M A R K } c'1 }
+ \new Staff { c'1 \break c'1 }
+ >>
+ }
+}
\version "2.13.4"
\header {
- texidoc = "Page layout and stretching work with system-cound enabled."
+ texidoc = "Page layout and stretching work with system-count enabled."
}
#(set-default-paper-size "a6")
--- /dev/null
+\version "2.13.4"
+
+#(set-default-paper-size "a6")
+
+\book {
+ \header {
+ texidoc = "Both the page breaking and the page layout take account of
+the heights of the header and footer."
+ }
+ \paper {
+ oddHeaderMarkup = \markup { \fill-line { \column { t a l l h e a d e r } } }
+ oddFooterMarkup = \markup { \fill-line { \column { t a l l f o o t e r } } }
+ evenFooterMarkup = \markup { \fill-line { "small footer" } }
+ }
+
+ \repeat unfold 10 { c'1 \break }
+}
+
+
--- /dev/null
+\version "2.13.2"
+
+#(set-default-paper-size "a6")
+
+\book {
+
+ \header {
+ texidoc = "top-system-spacing controls the spacing to the first
+non-title staff on every page."
+ title = "Title"
+ }
+
+ \paper {
+ top-system-spacing = #'((minimum-distance . 30))
+ ragged-bottom = ##t
+ }
+
+ { c'1 \pageBreak c'1 }
+}
\ No newline at end of file
--- /dev/null
+\version "2.13.2"
+
+#(set-default-paper-size "a6")
+
+\book {
+
+ \header {
+ texidoc = "@var{top-title-spacing} controls the spacing
+from the top margin to a title (or markup), provided that it is
+the first system on a page."
+ title = "Title" }
+
+ \paper {
+ top-title-spacing = #'((minimum-distance . 30))
+ ragged-bottom = ##t
+ }
+
+ { c'1 \pageBreak c'1 }
+}
\ No newline at end of file
\version "2.13.4"
-\header{ texidoc = "The palm mute technique for stringed instruments
- is supported by triangle-shaped note heads."
- }
+\header{
+ texidoc =
+"The palm mute technique for stringed instruments
+is supported by triangle-shaped note heads."
+}
palmmute = \relative c, {
\time 4/4
+ \palmMuteOn
e8^\markup { \musicglyph #"noteheads.u2do" = palm mute }
- \palmMuteOn e e \palmMuteOff e e \palmMute e e e |
+ e e
+ \palmMuteOff e e \palmMute e e e |
e8 \palmMute { e e e } e e e e |
\palmMuteOn < e b' e >8 e e e < e b' e >2 \palmMuteOff |
< \palmMute e b' e >8 \palmMute { e e e } < \palmMute e b' e >2
}
\context StaffGroup <<
- \context Staff <<
- \clef "G_8"
- \palmmute
- >>
+ \context Staff {
+ \context Voice { % Warning: explicit Voice instantiation is
+ % required to have palmMuteOff work properly
+ % when palmMuteOn comes at the beginning of
+ % the piece.
+ \clef "G_8"
+ \palmmute
+ }
+ }
\context TabStaff <<
\palmmute
>>
--- /dev/null
+\version "2.13.4"
+
+\header {
+ texidoc = "Empty barlines do not affect spacing."
+}
+
+{
+ c'4 c' \bar "" c' c' \break
+ \repeat unfold 10 { c' c' c' c' \bar "" \noBreak }
+}
\ No newline at end of file
"padding "
"positioning-done "
"stacking-dir "
- "threshold "
);
return me->get_property ("default-next-staff-spacing");
}
+Real
+Axis_group_interface::minimum_distance (Grob *g1, Grob *g2, Axis a)
+{
+ SCM sym = ly_symbol2scm ((a == Y_AXIS) ? "vertical-skylines" : "horizontal-skylines");
+
+ Skyline_pair *s1 = Skyline_pair::unsmob (g1->get_property (sym));
+ Skyline_pair *s2 = Skyline_pair::unsmob (g2->get_property (sym));
+ if (s1 && s2)
+ return (*s1)[DOWN].distance ((*s2)[UP]);
+ return 0;
+}
+
ADD_INTERFACE (Axis_group_interface,
"An object that groups other layout objects.",
"pure-relevant-spanners "
"staff-affinity "
"staff-grouper "
+ "system-Y-offset "
"vertical-skylines "
);
divided by the current staff_space.
*/
Real ss = Staff_symbol_referencer::staff_space (me);
- Real thickness = Beam::get_thickness (me) / ss;
+ Real beam_thickness = Beam::get_beam_thickness (me) / ss;
Real slt = Staff_symbol_referencer::line_thickness (me) / ss;
Real dy_mus = robust_scm2double (me->get_property ("least-squares-dy"), 0);
Real straddle = 0.0;
- Real sit = (thickness - slt) / 2;
+ Real sit = (beam_thickness - slt) / 2;
Real inter = 0.5;
- Real hang = 1.0 - (thickness - slt) / 2;
+ Real hang = 1.0 - (beam_thickness - slt) / 2;
Real quants [] = {straddle, sit, inter, hang };
int num_quants = int (sizeof (quants) / sizeof (Real));
if (qscores[i].demerits < reasonable_score)
{
Real d = score_forbidden_quants (qscores[i].yl, qscores[i].yr,
- rad, slt, thickness, beam_translation,
+ rad, slt, beam_thickness, beam_translation,
edge_beam_counts, ldir, rdir, ¶meters);
qscores[i].demerits += d;
Beam::score_forbidden_quants (Real yl, Real yr,
Real radius,
Real slt,
- Real thickness, Real beam_translation,
+ Real beam_thickness, Real beam_translation,
Drul_array<int> beam_counts,
Direction ldir, Direction rdir,
will be in the gap of the (2, sit) quant, leading to a
false demerit.
*/
- Real gap1 = y[d] - stem_dir * ((j - 1) * beam_translation + thickness / 2 - slt / 2.2);
- Real gap2 = y[d] - stem_dir * (j * beam_translation - thickness / 2 + slt / 2.2);
+ Real gap1 = y[d] - stem_dir * ((j - 1) * beam_translation + beam_thickness / 2 - slt / 2.2);
+ Real gap2 = y[d] - stem_dir * (j * beam_translation - beam_thickness / 2 + slt / 2.2);
Interval gap;
gap.add_point (gap1);
if (max (beam_counts[LEFT], beam_counts[RIGHT]) >= 2)
{
Real straddle = 0.0;
- Real sit = (thickness - slt) / 2;
+ Real sit = (beam_thickness - slt) / 2;
Real inter = 0.5;
- Real hang = 1.0 - (thickness - slt) / 2;
+ Real hang = 1.0 - (beam_thickness - slt) / 2;
Direction d = LEFT;
do
}
Real
-Beam::get_thickness (Grob *me)
+Beam::get_beam_thickness (Grob *me)
{
- return robust_scm2double (me->get_property ("thickness"), 0)
+ return robust_scm2double (me->get_property ("beam-thickness"), 0)
* Staff_symbol_referencer::staff_space (me);
}
int beam_count = get_beam_count (me);
Real staff_space = Staff_symbol_referencer::staff_space (me);
Real line = Staff_symbol_referencer::line_thickness (me);
- Real thickness = get_thickness (me);
+ Real beam_thickness = get_beam_thickness (me);
Real fract = robust_scm2double (me->get_property ("length-fraction"), 1.0);
Real beam_translation = beam_count < 4
- ? (2 * staff_space + line - thickness) / 2.0
- : (3 * staff_space + line - thickness) / 3.0;
+ ? (2 * staff_space + line - beam_thickness) / 2.0
+ : (3 * staff_space + line - beam_thickness) / 3.0;
return fract * beam_translation;
}
Real dy = pos[RIGHT] - pos[LEFT];
Real slope = (dy && span.length ()) ? dy / span.length () : 0;
- Real thick = get_thickness (me);
+ Real beam_thickness = get_beam_thickness (me);
Real beam_dy = get_beam_translation (me);
Direction feather_dir = to_dir (me->get_property ("grow-direction"));
local_slope += feather_dir * segments[i].vertical_count_ * beam_dy / span.length ();
}
- Stencil b = Lookup::beam (local_slope, segments[i].horizontal_.length (), thick, blot);
+ Stencil b = Lookup::beam (local_slope, segments[i].horizontal_.length (), beam_thickness, blot);
b.translate_axis (segments[i].horizontal_[LEFT], X_AXIS);
}
Real beam_translation = get_beam_translation (me);
- Real beam_thickness = Beam::get_thickness (me);
+ Real beam_thickness = Beam::get_beam_thickness (me);
int beam_count = Beam::get_beam_count (me);
Real height_of_beams = beam_thickness / 2
+ (beam_count - 1) * beam_translation;
*/
Real ss = Staff_symbol_referencer::staff_space (me);
- Real thickness = Beam::get_thickness (me) / ss;
+ Real beam_thickness = Beam::get_beam_thickness (me) / ss;
Real slt = Staff_symbol_referencer::line_thickness (me) / ss;
- Real sit = (thickness - slt) / 2;
+ Real sit = (beam_thickness - slt) / 2;
Real inter = 0.5;
- Real hang = 1.0 - (thickness - slt) / 2;
+ Real hang = 1.0 - (beam_thickness - slt) / 2;
*dy = sign (*dy) * max (fabs (*dy),
min (min (sit, inter), hang));
{
/* FIXME. -> UP */
Direction d = (Direction) (sign (chord.delta ()) * UP);
- pos[d] = get_thickness (me) / 2;
+ pos[d] = get_beam_thickness (me) / 2;
pos[-d] = -pos[d];
}
else
if (robust_scm2int (me->get_property ("gap-count"), 0))
{
gap = true;
- thick = get_thickness (me);
+ thick = get_beam_thickness (me);
}
Grob *fvs = first_normal_stem (me);
+ (stem->relative_coordinate (common, X_AXIS) - x0) * slope;
Real beam_translation = get_beam_translation (beam);
- Real beam_thickness = Beam::get_thickness (beam);
+ Real beam_thickness = Beam::get_beam_thickness (beam);
/*
TODO: this is not strictly correct for 16th knee beams.
ADD_INTERFACE (Beam,
"A beam.\n"
"\n"
- "The @code{thickness} property is the weight of beams,"
+ "The @code{beam-thickness} property is the weight of beams,"
" measured in staffspace. The @code{direction} property is"
" not user-serviceable. Use the @code{direction} property"
" of @code{Stem} instead.\n"
"auto-knee-gap "
"beamed-stem-shorten "
"beaming "
+ "beam-thickness "
"break-overshoot "
"clip-edges "
"concaveness "
"quantized-positions "
"shorten "
"stems "
- "thickness "
);
+++ /dev/null
-/*
- easy-notation.cc -- implement easy notation heads
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2005--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#include "note-head.hh"
-
-#include <cctype>
-using namespace std;
-
-#include "font-interface.hh"
-#include "grob.hh"
-#include "music.hh"
-#include "output-def.hh"
-#include "staff-symbol-referencer.hh"
-#include "stem.hh"
-#include "stream-event.hh"
-#include "text-interface.hh"
-#include "rhythmic-head.hh"
-
-/*
-
-TODO: move to scheme
-
-*/
-MAKE_SCHEME_CALLBACK (Note_head, brew_ez_stencil, 1);
-SCM
-Note_head::brew_ez_stencil (SCM smob)
-{
- Grob *me = unsmob_grob (smob);
- int log = Rhythmic_head::duration_log (me);
-
- SCM cause = me->get_property ("cause");
- SCM spitch = unsmob_stream_event (cause)->get_property ("pitch");
- Pitch *pit = unsmob_pitch (spitch);
-
- SCM idx = scm_from_int (pit->get_notename ());
- SCM names = me->get_property ("note-names");
- SCM charstr = SCM_EOL;
- if (scm_is_vector (names))
- charstr = scm_vector_ref (names, idx);
- else
- {
- char s[2] = "a";
- s[0] = char ((pit->get_notename () + 2) % 7 + 'a');
- s[0] = char (toupper (s[0]));
- charstr = scm_from_locale_string (s);
- }
-
- SCM letter
- = Text_interface::interpret_string (me->layout ()->self_scm (),
- Font_interface::text_font_alist_chain (me),
- charstr);
-
- Stencil l (*unsmob_stencil (letter));
- l.align_to (X_AXIS, CENTER);
- l.align_to (Y_AXIS, CENTER);
-
- l = Stencil (Box (), l.expr ());
- Real ss = Staff_symbol_referencer::staff_space (me);
- Real lt = Staff_symbol_referencer::line_thickness (me);
-
- Real radius = (ss + lt) / 2.0;
- Real stem_thick = 1.3 * lt;
- if (Grob *stem = unsmob_grob (me->get_object ("stem")))
- stem_thick = Stem::thickness (stem);
-
- int black = (log >= 2);
-
- Stencil head;
- Box extent (Interval (-radius, radius),
- Interval (-radius, radius));
-
- Stencil black_head (extent,
- scm_list_4 (ly_symbol2scm ("circle"),
- scm_from_double (radius),
- scm_from_double (0.0),
- SCM_BOOL_T));
- Stencil white_head;
- if (black)
- l = l.in_color (1, 1, 1);
- else
- {
- white_head = Stencil (extent,
- scm_list_4 (ly_symbol2scm ("circle"),
- scm_from_double (radius - stem_thick),
- scm_from_double (0.0),
- SCM_BOOL_T));
-
- white_head = white_head.in_color (1, 1, 1);
- }
-
- Stencil total;
- total.add_stencil (l);
- total.add_stencil (white_head);
- total.add_stencil (black_head);
- total.translate_axis (radius, X_AXIS);
-
- return total.smobbed_copy ();
-}
-
#include <cstring>
#include "align-interface.hh"
+#include "axis-group-interface.hh"
#include "input.hh"
#include "international.hh"
#include "item.hh"
return false;
}
+
static void get_children (Grob *, vector<Grob*> *);
static Interval staff_extent (Grob *me, Grob *ref, Axis, Grob *staff, Axis);
static SCM calc_common (Grob *, Axis);
+ static Real minimum_distance (Grob*, Grob*, Axis);
DECLARE_GROB_INTERFACE();
};
static void set_stemlens (Grob *);
static int get_beam_count (Grob *me);
static Real get_beam_translation (Grob *me);
- static Real get_thickness (Grob *me);
+ static Real get_beam_thickness (Grob *me);
static void connect_beams (Grob *me);
static vector<Beam_segment> get_beam_segments (Grob *me_grob, Grob **common);
static Interval no_visible_stem_positions (Grob *me, Interval default_value);
friend SCM ly_grob_basic_properties (SCM);
/* standard callbacks */
- DECLARE_SCHEME_CALLBACK(x_parent_positioning, (SCM));
- DECLARE_SCHEME_CALLBACK(y_parent_positioning, (SCM));
+ DECLARE_SCHEME_CALLBACK (x_parent_positioning, (SCM));
+ DECLARE_SCHEME_CALLBACK (y_parent_positioning, (SCM));
DECLARE_SCHEME_CALLBACK (stencil_height, (SCM smob));
DECLARE_SCHEME_CALLBACK (stencil_width, (SCM smob));
void solve_rod_spring_problem (bool ragged);
SCM find_system_offsets ();
void distribute_loose_lines (vector<Grob*> const&, vector<Real> const&, Real, Real);
- void add_loose_lines_as_spaceable_lines (vector<Grob*> const&,
- vector<Real> const&,
- vsize start, vsize end);
- static Grob* find_vertical_alignment (System*);
static void build_system_skyline (vector<Grob*> const&, vector<Real> const&, Skyline* up, Skyline* down);
static vector<Grob*> filter_dead_elements (vector<Grob*> const&);
Real page_height_;
Real header_height_;
Real footer_height_;
+ Real header_padding_;
+ Real footer_padding_;
};
#endif /* PAGE_LAYOUT_HH */
DECLARE_SCHEME_CALLBACK (y_aligned_side, (SCM element, SCM current));
DECLARE_SCHEME_CALLBACK (pure_y_aligned_side, (SCM element, SCM start, SCM end, SCM current));
DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM element));
+ DECLARE_SCHEME_CALLBACK (move_to_extremal_staff, (SCM));
static SCM aligned_side (Grob*me, Axis a, bool pure, int start, int end, Real *current_off_ptr);
public:
Paper_score *paper_score () const;
+ Grob *get_vertical_alignment ();
+ Grob *get_extremal_staff (Direction dir, Interval const&);
int get_rank () const;
void do_break_substitution_and_fixup_refpoints ();
void post_processing ();
&& defined(HAVE_FPU_CONTROL_H) && (HAVE_FPU_CONTROL_H == 1))
#include <fpu_control.h>
-static void configure_fpu() {
+static void
+configure_fpu ()
+{
fpu_control_t fpu_control = 0x027f;
_FPU_SETCW (fpu_control);
}
#else
-static void configure_fpu() {
+static void
+configure_fpu ()
+{
}
#endif /* defined(__x86__) || defined(__i386__) */
copyright ()
{
/* Do not update the copyright years here, run grand-replace.sh. */
- printf (_f ("Copyright (c) %s by\n%s and others.", "1996--2009",
- AUTHORS).c_str ());
+ printf ("%s", (_f ("Copyright (c) %s by\n%s and others.", "1996--2009",
+ AUTHORS).c_str ()));
printf ("\n");
}
"Print usage message.")
{
/* No version number or newline here. It confuses help2man. */
- printf (_f ("Usage: %s [OPTION]... FILE...", PROGRAM_NAME).c_str ());
+ printf ("%s", (_f ("Usage: %s [OPTION]... FILE...", PROGRAM_NAME).c_str ()));
printf ("\n\n");
- printf (_ ("Typeset music and/or produce MIDI from FILE.").c_str ());
+ printf ("%s", (_ ("Typeset music and/or produce MIDI from FILE.").c_str ()));
printf ("\n\n");
- printf (_ ("LilyPond produces beautiful music notation.").c_str ());
+ printf ("%s", (_ ("LilyPond produces beautiful music notation.").c_str ()));
printf ("\n");
- printf (_f ("For more information, see %s", PROGRAM_URL).c_str ());
+ printf ("%s", (_f ("For more information, see %s", PROGRAM_URL).c_str ()));
printf ("\n\n");
- printf (_ ("Options:").c_str ());
+ printf ("%s", (_ ("Options:").c_str ()));
printf ("\n");
- printf (Long_option_init::table_string (options_static).c_str ());
+ printf ("%s", Long_option_init::table_string (options_static).c_str ());
printf ("\n");
/* Translators, please translate this string as
- "Report bugs in English via %s",
+ "Report bugs in English via %s",
or if there is a LilyPond users list or forum in your language
- "Report bugs in English via %s or in YOUR_LANG via URI" */
- printf (_f ("Report bugs via %s",
- "http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs"
- ).c_str ());
+ "Report bugs in English via %s or in YOUR_LANG via URI" */
+ printf ("%s", (_f ("Report bugs via %s",
+ "http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs"
+ ).c_str ()));
printf ("\n");
printf ("\n");
return SCM_UNSPECIFIED;
printf ("\n");
copyright ();
printf ("\n");
- printf (_ (WARRANTY).c_str ());
+ printf ("%s", (_ (WARRANTY).c_str ()));
}
static void
*tail = scm_cons (scm_from_locale_string (arg), SCM_EOL);
tail = SCM_CDRLOC (*tail);
}
-
+
delete option_parser;
option_parser = 0;
case 'j':
jail_spec = option_parser->optional_argument_str0_;
break;
-
+
case 'e':
- init_scheme_code_global += option_parser->optional_argument_str0_ + string (" ");
+ init_scheme_code_global
+ += option_parser->optional_argument_str0_ + string (" ");
break;
case 'w':
warranty ();
void
setup_guile_env ()
{
- const char *yield = getenv ("LILYPOND_GC_YIELD");
+ char const *yield = getenv ("LILYPOND_GC_YIELD");
bool overwrite = true;
if (!yield)
{
}
vector<string> start_environment_global;
-
+
int
main (int argc, char **argv, char **envp)
{
for (char **p = envp; *p; p++)
start_environment_global.push_back(*p);
-
+
if (getenv ("LILYPOND_VERBOSE"))
be_verbose_global = true;
#else
scm_boot_guile (argc, argv, main_with_guile, 0);
#endif
-
+
/* Only reachable if GUILE exits. That is an error. */
return 1;
}
/* read */
"internalBarNumber "
"restNumberThreshold "
- "breakableSeparationItem "
"currentCommandColumn "
"measurePosition "
"measureLength ",
Item *it = dynamic_cast<Item *> (items[i]);
if (!Note_column::has_interface (it))
continue;
+ if (d == RIGHT && it->get_column () != rcolumn)
+ continue;
/*
Find accidentals which are sticking out of the right side.
Constrained_breaking breaking (system_specs_[i].pscore_);
vector<Line_details> details = breaking.line_details (0, VPOS, scm_to_int (system_count));
+ cols.push_back (system_specs_[i].pscore_->root_system ()->used_columns ()[0]);
for (vsize j = 0; j < details.size (); j++)
cols.push_back (details[j].last_column_);
}
else
cols = system_specs_[i].pscore_->root_system ()->used_columns ();
- int last_chunk_idx = -1;
+ int last_chunk_idx = 0;
vector<vsize> line_breaker_columns;
line_breaker_columns.push_back (0);
Real
Page_breaking::min_whitespace_at_top_of_page (Line_details const &line) const
{
- SCM first_system_spacing = book_->paper_->c_variable ("first-system-spacing");
+ SCM first_system_spacing = book_->paper_->c_variable ("top-system-spacing");
if (line.title_)
- first_system_spacing = book_->paper_->c_variable ("first-system-title-spacing");
+ first_system_spacing = book_->paper_->c_variable ("top-title-spacing");
Real min_distance = -infinity_f;
Real padding = 0;
Real
Page_breaking::min_whitespace_at_bottom_of_page (Line_details const &line) const
{
- SCM last_system_spacing = book_->paper_->c_variable ("last-system-spacing");
+ SCM last_system_spacing = book_->paper_->c_variable ("bottom-system-spacing");
Real min_distance = -infinity_f;
Real padding = 0;
#include "page-layout-problem.hh"
#include "align-interface.hh"
+#include "axis-group-interface.hh"
#include "hara-kiri-group-spanner.hh"
#include "international.hh"
#include "item.hh"
#include "output-def.hh"
#include "paper-book.hh"
+#include "paper-column.hh"
#include "pointer-group-interface.hh"
#include "prob.hh"
#include "skyline-pair.hh"
Prob *page = unsmob_prob (page_scm);
header_height_ = 0;
footer_height_ = 0;
+ header_padding_ = 0;
+ footer_padding_ = 0;
page_height_ = 100;
if (page)
bottom_skyline_.set_minimum_height (-header_height_);
SCM between_system_spacing = SCM_EOL;
+ SCM between_scores_system_spacing = SCM_EOL;
SCM after_title_spacing = SCM_EOL;
SCM before_title_spacing = SCM_EOL;
SCM between_title_spacing = SCM_EOL;
- // first_system_spacing controls the spring from the top of the printable
+ // top_system_spacing controls the spring from the top of the printable
// area to the first staff. It allows the user to control the offset of
// the first staff (as opposed to the top of the first system) from the
- // top of the page. Similarly for last_system_spacing.
- SCM first_system_spacing = SCM_EOL;
- SCM last_system_spacing = SCM_EOL;
+ // top of the page. Similarly for bottom_system_spacing.
+ SCM top_system_spacing = SCM_EOL;
+ SCM bottom_system_spacing = SCM_EOL;
if (pb && pb->paper_)
{
Output_def *paper = pb->paper_;
between_system_spacing = paper->c_variable ("between-system-spacing");
+ between_scores_system_spacing = paper->c_variable ("between-scores-system-spacing");
after_title_spacing = paper->c_variable ("after-title-spacing");
before_title_spacing = paper->c_variable ("before-title-spacing");
between_title_spacing = paper->c_variable ("between-title-spacing");
- last_system_spacing = paper->c_variable ("last-system-spacing");
- first_system_spacing = paper->c_variable ("first-system-spacing");
+ bottom_system_spacing = paper->c_variable ("bottom-system-spacing");
+ top_system_spacing = paper->c_variable ("top-system-spacing");
if (scm_is_pair (systems) && unsmob_prob (scm_car (systems)))
- first_system_spacing = paper->c_variable ("first-system-title-spacing");
+ top_system_spacing = paper->c_variable ("top-title-spacing");
// Note: the page height here does _not_ reserve space for headers and
- // footers. This is because we want to anchor the first-system-spacing
+ // footers. This is because we want to anchor the top-system-spacing
// spring at the _top_ of the header.
page_height_ -= robust_scm2double (paper->c_variable ("top-margin"), 0)
+ robust_scm2double (paper->c_variable ("bottom-margin"), 0);
+
+ read_spacing_spec (top_system_spacing, &header_padding_, ly_symbol2scm ("padding"));
+ read_spacing_spec (bottom_system_spacing, &footer_padding_, ly_symbol2scm ("padding"));
}
bool last_system_was_title = false;
continue;
}
- SCM spec = first ? first_system_spacing
- : (last_system_was_title ? after_title_spacing : between_system_spacing);
+ SCM spec = between_system_spacing;
+ if (first)
+ spec = top_system_spacing;
+ else if (last_system_was_title)
+ spec = after_title_spacing;
+ else if (0 == Paper_column::get_rank (sys->get_bound (LEFT)))
+ spec = between_scores_system_spacing;
+
Spring spring (first ? 0 : 1, 0.0);
Real padding = 0.0;
alter_spring_from_spacing_spec (spec, &spring);
}
else if (Prob *p = unsmob_prob (scm_car (s)))
{
- SCM spec = first ? first_system_spacing
+ SCM spec = first ? top_system_spacing
: (last_system_was_title ? between_title_spacing : before_title_spacing);
Spring spring (first ? 0 : 1, 0.0);
Real padding = 0.0;
Spring last_spring (0, 0);
Real last_padding = 0;
- alter_spring_from_spacing_spec (last_system_spacing, &last_spring);
- read_spacing_spec (last_system_spacing, &last_padding, ly_symbol2scm ("padding"));
+ alter_spring_from_spacing_spec (bottom_system_spacing, &last_spring);
+ read_spacing_spec (bottom_system_spacing, &last_padding, ly_symbol2scm ("padding"));
last_spring.ensure_min_distance (last_padding - bottom_skyline_.max_height () + footer_height_);
springs_.push_back (last_spring);
+
+ if (elements_.size ())
+ {
+ Real bottom_padding = 0;
+
+ // TODO: junk bottom-space now that we have bottom-system-spacing?
+ // bottom-space has the flexibility that one can do it per-system.
+ // NOTE: bottom-space is misnamed since it is not stretchable space.
+ if (Prob *p = elements_.back ().prob)
+ bottom_padding = robust_scm2double (p->get_property ("bottom-space"), 0);
+ else if (elements_.back ().staves.size ())
+ {
+ SCM details = get_details (elements_.back ());
+ bottom_padding = robust_scm2double (ly_assoc_get (ly_symbol2scm ("bottom-space"),
+ details,
+ SCM_BOOL_F),
+ 0.0);
+ }
+ page_height_ -= bottom_padding;
+ }
}
void
footer_height_ = height;
}
-Grob*
-Page_layout_problem::find_vertical_alignment (System *sys)
-{
- extract_grob_set (sys, "elements", elts);
- for (vsize i = 0; i < elts.size (); ++i)
- if (Align_interface::has_interface (elts[i]))
- return elts[i];
-
- return 0;
-}
-
void
Page_layout_problem::append_system (System *sys, Spring const& spring, Real padding)
{
- Grob *align = find_vertical_alignment (sys);
+ Grob *align = sys->get_vertical_alignment ();
if (!align)
- {
- sys->programming_error ("no VerticalAlignment in system: can't do vertical spacing");
- return;
- }
+ return;
align->set_property ("positioning-done", SCM_BOOL_T);
// we are only adding springs _between_ staves here.
if (!found_spaceable_staff)
{
- if (i > 0)
- add_loose_lines_as_spaceable_lines (elts, minimum_offsets, 0, i-1);
-
found_spaceable_staff = true;
last_spaceable_staff = i;
continue;
alter_spring_from_spacing_spec (spec, &spring);
springs_.push_back (spring);
- Real min_distance = minimum_offsets[last_spaceable_staff] - minimum_offsets[i];
+ Real min_distance = (found_spaceable_staff ? minimum_offsets[last_spaceable_staff] : 0) - minimum_offsets[i];
springs_.back ().ensure_min_distance (min_distance);
if (scm_is_pair (manual_dists))
last_spaceable_staff = i;
}
}
- // Any loose lines hanging off the end are treated as spaceable
- // lines. This might give slightly weird results if the hanging
- // systems have staff-affinity != UP. It's not quite clear what
- // should happen in that case, though.
- if (last_spaceable_staff + 1 < elts.size ())
- add_loose_lines_as_spaceable_lines (elts, minimum_offsets,
- found_spaceable_staff ? last_spaceable_staff + 1 : 0,
- elts.size () - 1);
+
// Corner case: there was only one staff, and it wasn't spaceable.
// Mark it spaceable, because we do not allow non-spaceable staves
// to be at the top or bottom of a system.
- else if (!found_spaceable_staff && elts.size ())
+ if (!found_spaceable_staff && elts.size ())
mark_as_spaceable (elts[0]);
}
-// first and last are inclusive
-void
-Page_layout_problem::add_loose_lines_as_spaceable_lines (vector<Grob*> const& elts,
- vector<Real> const& minimum_offsets,
- vsize first, vsize last)
-{
- vsize start = first;
- vsize end = last;
- if (start > 0)
- --start;
- if (end + 1 < elts.size ())
- ++end;
-
- for (vsize i = start; i < end; ++i)
- {
- SCM spec = get_spacing_spec (elts[i], elts[i+1]);
- Spring spring (1.0, 0.0);
- alter_spring_from_spacing_spec (spec, &spring);
- if (spec == SCM_BOOL_F)
- {
- spring.set_inverse_compress_strength (10000);
- spring.set_inverse_stretch_strength (10000);
- }
-
- Real min_distance = minimum_offsets[i] - minimum_offsets[i+1];
- spring.ensure_min_distance (min_distance);
- springs_.push_back (spring);
- }
-
- for (vsize i = first; i <= last; ++i)
- mark_as_spaceable (elts[i]);
-}
-
void
Page_layout_problem::append_prob (Prob *prob, Spring const& spring, Real padding)
{
for (vsize i = 0; i < springs_.size (); ++i)
spacer.add_spring (springs_[i]);
- Real bottom_padding = 0;
- Interval first_staff_iv (0, 0);
- Interval last_staff_iv (0, 0);
- if (elements_.size ())
- {
- first_staff_iv = first_staff_extent (elements_[0]);
- last_staff_iv = last_staff_extent (elements_.back ());
-
- // TODO: junk bottom-space now that we have last-spring-spacing?
- // bottom-space has the flexibility that one can do it per-system.
- // NOTE: bottom-space is misnamed since it is not stretchable space.
- if (Prob *p = elements_.back ().prob)
- bottom_padding = robust_scm2double (p->get_property ("bottom-space"), 0);
- else if (elements_.back ().staves.size ())
- {
- SCM details = get_details (elements_.back ());
- bottom_padding = robust_scm2double (ly_assoc_get (ly_symbol2scm ("bottom-space"),
- details,
- SCM_BOOL_F),
- 0.0);
- }
- }
-
- spacer.solve (page_height_ - bottom_padding, ragged);
+ spacer.solve (page_height_, ragged);
solution_ = spacer.spring_positions ();
}
// spring_idx 0 is the top of the page. Interesting values start from 1.
vsize spring_idx = 1;
+ vector<Grob*> loose_lines;
+ vector<Real> loose_line_min_distances;
+ Grob *last_spaceable_line = 0;
+ Real last_spaceable_line_translation = 0;
for (vsize i = 0; i < elements_.size (); ++i)
{
if (elements_[i].prob)
{
*tail = scm_cons (scm_from_double (solution_[spring_idx]), SCM_EOL);
tail = SCM_CDRLOC (*tail);
+
+ // Lay out any non-spaceable lines between this line and
+ // the last one.
+ if (loose_lines.size ())
+ {
+ Interval loose_extent = loose_lines.back ()->extent (loose_lines.back (), Y_AXIS);
+ Interval prob_extent = unsmob_stencil (elements_[i].prob->get_property ("stencil"))->extent (Y_AXIS);
+ Real min_distance = -loose_extent[DOWN] + prob_extent[UP]; // TODO: include padding/minimum-distance
+
+ loose_line_min_distances.push_back (min_distance);
+ loose_lines.push_back (0);
+
+ distribute_loose_lines (loose_lines, loose_line_min_distances,
+ last_spaceable_line_translation, -solution_[spring_idx]);
+ loose_lines.clear ();
+ loose_line_min_distances.clear ();
+ }
+
+ last_spaceable_line = 0;
+ last_spaceable_line_translation = -solution_[spring_idx];
spring_idx++;
}
else
// Position the staves within this system.
Real translation = 0;
- vector<Grob*> loose_lines;
vector<Real> const& min_offsets = elements_[i].min_offsets;
- vector<Real> loose_line_min_distances;
- Grob *last_spaceable_line = 0;
- Real last_spaceable_line_translation = 0;
+ bool found_spaceable_staff = false;
for (vsize staff_idx = 0; staff_idx < elements_[i].staves.size (); ++staff_idx)
{
Grob *staff = elements_[i].staves[staff_idx];
+ staff->set_property ("system-Y-offset", scm_from_double (-system_position));
if (is_spaceable (staff))
{
{
loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]);
loose_lines.push_back (staff);
+
distribute_loose_lines (loose_lines, loose_line_min_distances,
- last_spaceable_line_translation, translation);
+ last_spaceable_line_translation, translation - system_position);
loose_lines.clear ();
loose_line_min_distances.clear ();
}
last_spaceable_line = staff;
- last_spaceable_line_translation = translation;
+ // Negative is down but the translation is relative to the whole page.
+ last_spaceable_line_translation = -system_position + translation;
staff->translate_axis (translation, Y_AXIS);
+ found_spaceable_staff = true;
}
else
{
loose_lines.push_back (last_spaceable_line);
loose_lines.push_back (staff);
- loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]);
+ if (staff_idx)
+ loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]);
+ else
+ {
+ Real min_dist = 0;
+ if (last_spaceable_line)
+ min_dist = Axis_group_interface::minimum_distance (last_spaceable_line,
+ staff,
+ Y_AXIS);
+ else // distance to the top margin
+ min_dist = header_padding_ + header_height_ + staff->extent (staff, Y_AXIS)[UP];
+
+ loose_line_min_distances.push_back (min_dist);
+ }
}
}
// Corner case: even if a system has no live staves, it still takes up
// one spring (a system with one live staff also takes up one spring),
// which we need to increment past.
- if (elements_[i].staves.empty ())
+ if (!found_spaceable_staff)
spring_idx++;
*tail = scm_cons (scm_from_double (system_position), SCM_EOL);
}
}
+ if (loose_lines.size ())
+ {
+ Grob *last = loose_lines.back ();
+ Interval last_ext = last->extent (last, Y_AXIS);
+ loose_line_min_distances.push_back (-last_ext[DOWN] + footer_height_ + footer_padding_);
+ loose_lines.push_back (0);
+
+ distribute_loose_lines (loose_lines, loose_line_min_distances,
+ last_spaceable_line_translation, -page_height_);
+
+ }
+
assert (spring_idx == solution_.size () - 1);
return system_offsets;
}
alter_spring_from_spacing_spec (spec, &spring);
spring.ensure_min_distance (min_distances[i]);
- if (spec == SCM_BOOL_F)
+ if ((spec == SCM_BOOL_F && loose_lines[0] && loose_lines.back ())
+ || !loose_lines[i]
+ || !loose_lines[i+1])
{
// Insert a very flexible spring, so it doesn't have much effect.
+ // TODO: set a default distance and a compress strength so that a
+ // lyrics line, for example, will stay closer to the top staff
+ // even in a compressed configuration.
spring.set_inverse_stretch_strength (100000);
spring.set_inverse_compress_strength (100000);
}
vector<Real> solution = spacer.spring_positions ();
for (vsize i = 1; i + 1 < solution.size (); ++i)
- loose_lines[i]->translate_axis (first_translation - solution[i], Y_AXIS);
+ {
+ Real system_offset = scm_to_double (loose_lines[i]->get_property ("system-Y-offset"));
+ loose_lines[i]->translate_axis (first_translation - solution[i] - system_offset, Y_AXIS);
+ }
}
SCM
assert (staves.size () == minimum_translations.size ());
Real first_translation = minimum_translations[0];
- Real last_dy = 0;
+ Real last_spaceable_dy = 0;
+ Real first_spaceable_dy = 0;
+ bool found_spaceable_staff = false;
for (vsize i = 0; i < staves.size (); ++i)
{
down->raise (-dy);
down->merge ((*sky)[DOWN]);
down->raise (dy);
-
- last_dy = dy;
+ }
+ if (is_spaceable (staves[i]))
+ {
+ if (!found_spaceable_staff)
+ {
+ found_spaceable_staff = true;
+ first_spaceable_dy = dy;
+ }
+ last_spaceable_dy = dy;
}
}
+ // Leave the up skyline at a position relative
+ // to the top spaceable staff.
+ up->raise (-first_spaceable_dy);
+
// Leave the down skyline at a position
- // relative to the bottom staff.
- down->raise (-last_dy);
+ // relative to the bottom spaceable staff.
+ down->raise (-last_spaceable_dy);
}
Interval
SCM
Page_layout_problem::get_spacing_spec (Grob *before, Grob *after)
{
+ if (!before || !after)
+ return SCM_BOOL_F;
+
if (is_spaceable (before))
{
if (is_spaceable (after))
LY_DEFINE (ly_paper_book_pages, "ly:paper-book-pages",
1, 0, 0, (SCM pb),
- "Return pages in book @var{pb}.")
+ "Return pages in @code{Paper_book} object @var{pb}.")
{
LY_ASSERT_SMOB (Paper_book, pb, 1);
return unsmob_paper_book (pb)->pages ();
}
LY_DEFINE (ly_paper_book_scopes, "ly:paper-book-scopes",
- 1, 0, 0, (SCM book),
- "Return scopes in layout book @var{book}.")
+ 1, 0, 0, (SCM pb),
+ "Return scopes in @code{Paper_book} object @var{pb}.")
{
- LY_ASSERT_SMOB (Paper_book, book, 1);
- Paper_book *pb = unsmob_paper_book (book);
+ LY_ASSERT_SMOB (Paper_book, pb, 1);
+ Paper_book *book = unsmob_paper_book (pb);
SCM scopes = SCM_EOL;
- if (pb->parent_)
+ if (book->parent_)
{
- scopes = ly_paper_book_scopes (pb->parent_->self_scm ());
+ scopes = ly_paper_book_scopes (book->parent_->self_scm ());
}
- if (ly_is_module (pb->header_))
- scopes = scm_cons (pb->header_, scopes);
+ if (ly_is_module (book->header_))
+ scopes = scm_cons (book->header_, scopes);
return scopes;
}
LY_DEFINE (ly_paper_book_performances, "ly:paper-book-performances",
- 1, 0, 0, (SCM paper_book),
- "Return performances in book @var{paper-book}.")
+ 1, 0, 0, (SCM pb),
+ "Return performances in @code{Paper_book} object @var{pb}.")
{
- LY_ASSERT_SMOB (Paper_book, paper_book, 1);
- return unsmob_paper_book (paper_book)->performances ();
+ LY_ASSERT_SMOB (Paper_book, pb, 1);
+ return unsmob_paper_book (pb)->performances ();
}
LY_DEFINE (ly_paper_book_systems, "ly:paper-book-systems",
1, 0, 0, (SCM pb),
- "Return systems in book @var{pb}.")
+ "Return systems in @code{Paper_book} object @var{pb}.")
{
LY_ASSERT_SMOB (Paper_book, pb, 1);
return unsmob_paper_book (pb)->systems ();
LY_DEFINE (ly_paper_book_paper, "ly:paper-book-paper",
1, 0, 0, (SCM pb),
"Return the paper output definition (@code{\\paper})"
- " in book @var{pb}.")
+ " in @code{Paper_book} object @var{pb}.")
{
LY_ASSERT_SMOB (Paper_book, pb, 1);
Paper_book *pbook = unsmob_paper_book (pb);
"line-break-system-details "
"line-break-penalty "
"line-break-permission "
+ "maybe-loose "
"page-break-penalty "
"page-break-permission "
"page-turn-penalty "
using namespace std;
+#include "axis-group-interface.hh"
#include "directional-element-interface.hh"
#include "grob.hh"
+#include "grob-array.hh"
#include "main.hh"
#include "misc.hh"
#include "note-head.hh"
#include "staff-symbol.hh"
#include "stem.hh"
#include "string-convert.hh"
+#include "system.hh"
#include "warn.hh"
void
return NO_AXES;
}
+MAKE_SCHEME_CALLBACK (Side_position_interface, move_to_extremal_staff, 1);
+SCM
+Side_position_interface::move_to_extremal_staff (SCM smob)
+{
+ Grob *me = unsmob_grob (smob);
+ System *sys = dynamic_cast<System*> (me->get_system ());
+ Direction dir = Side_position_interface::get_direction (me);
+ if (dir != DOWN)
+ dir = UP;
+
+ Interval iv = me->extent (sys, X_AXIS);
+ iv.widen (1.0);
+ Grob *top_staff = sys->get_extremal_staff (dir, iv);
+
+ if (!top_staff)
+ return SCM_BOOL_F;
+
+ // Only move this grob if it is a direct child of the system. We
+ // are not interested in moving marks from other staves to the top
+ // staff; we only want to move marks from the system to the top
+ // staff.
+ if (sys != me->get_parent (Y_AXIS))
+ return SCM_BOOL_F;
+
+ me->set_parent (top_staff, Y_AXIS);
+ me->flush_extent_cache (Y_AXIS);
+ Axis_group_interface::add_element (top_staff, me);
+
+ // Remove any cross-staff side-support dependencies
+ Grob_array *ga = unsmob_grob_array (me->get_object ("side-support-elements"));
+ if (ga)
+ {
+ vector<Grob*> const& elts = ga->array ();
+ vector<Grob*> new_elts;
+ for (vsize i = 0; i < elts.size (); ++i)
+ {
+ if (me->common_refpoint (elts[i], Y_AXIS) == top_staff)
+ new_elts.push_back (elts[i]);
+ }
+ ga->set_array (new_elts);
+ }
+ return SCM_BOOL_T;
+}
+
+
ADD_INTERFACE (Side_position_interface,
"Position a victim object (this one) next to other objects"
" (the support). The property @code{direction} signifies where"
{
ei.stem_ = stem->extent (common_[Y_AXIS], Y_AXIS)[dir_];
if (Grob *b = Stem::get_beam (stem))
- ei.stem_ += stem_dir * 0.5 * Beam::get_thickness (b);
+ ei.stem_ += stem_dir * 0.5 * Beam::get_beam_thickness (b);
Interval x = stem->extent (common_[X_AXIS], X_AXIS);
ei.x_ = x.is_empty ()
"allow-loose-spacing "
"ideal-distances "
"keep-inside-line "
- "left-neighbors "
+ "left-neighbor "
"measure-length "
"minimum-distances "
- "right-neighbors "
+ "right-neighbor "
"spacing-wishes "
);
}
- if (Paper_column::is_musical (col)
- || Paper_column::is_breakable (col))
+ if (Paper_column::is_musical (col))
return false;
/*
*/
- extract_grob_set (col, "right-neighbors", rns);
- extract_grob_set (col, "left-neighbors", lns);
-
- if (lns.empty () || rns.empty ())
- return false;
-
-
- Item *l_neighbor = dynamic_cast<Item *> (lns[0]);
- Item *r_neighbor = dynamic_cast<Item *> (rns[0]);
+ Item *r_neighbor = unsmob_item (col->get_object ("right-neighbor"));
+ Item *l_neighbor = unsmob_item (col->get_object ("left-neighbor"));
if (!l_neighbor || !r_neighbor)
return false;
- l_neighbor = l_neighbor->get_column ();
- r_neighbor = dynamic_cast<Item *> (Spacing_interface::right_column (r_neighbor));
-
- if (l == l_neighbor && r == r_neighbor)
- return false;
-
- if (!l_neighbor || !r_neighbor)
- return false;
+ /* If a non-empty column (ie. not \bar "") is placed nicely in series with
+ its neighbor (ie. no funny polyphonic stuff), don't make it loose.
+ */
+ if (l == l_neighbor && r == r_neighbor && col->extent (col, X_AXIS).length () > 0)
+ return false;
/*
Only declare loose if the bounds make a little sense. This means
Grob *h = gelts[j];
if (h && h->get_property ("break-align-symbol") == ly_symbol2scm ("staff-bar"))
- return false;
+ {
+ extract_grob_set (h, "elements", helts);
+ for (vsize k = helts.size (); k--;)
+ if ("" != robust_scm2string (helts[k]->get_property ("glyph-name"), ""))
+ return false;
+ }
}
}
}
bool loose = (i > 0 && i + 1 < cols->size ())
&& is_loose_column (cols->at (i - 1), c, cols->at (i + 1), options);
- if (loose)
+ /* Breakable columns never get pruned; even if they are loose,
+ their broken pieces are not. However, we mark them so that
+ the spacing can take their mid-line looseness into account. */
+ if (loose && Paper_column::is_breakable (c))
{
- extract_grob_set (c, "right-neighbors", rns_arr);
- extract_grob_set (c, "left-neighbors", lns_arr);
+ loose = false;
+ c->set_property ("maybe-loose", SCM_BOOL_T);
+ }
- SCM lns = lns_arr.size () ? lns_arr.back ()->self_scm () : SCM_BOOL_F;
- SCM rns = rns_arr.size () ? rns_arr.back ()->self_scm () : SCM_BOOL_F;
+ if (loose)
+ {
+ Grob *right_neighbor = unsmob_grob (c->get_object ("right-neighbor"));
+ Grob *left_neighbor = unsmob_grob (c->get_object ("left-neighbor"));
/*
Either object can be non existent, if the score ends
prematurely.
*/
-
- extract_grob_set (unsmob_grob (rns), "right-items", right_items);
- if (right_items.size () == 0 || !unsmob_grob (lns))
+ if (!right_neighbor || !left_neighbor)
{
c->programming_error ("Cannot determine neighbors for floating column. ");
c->set_object ("between-cols", scm_cons (cols->at (i-1)->self_scm (),
}
else
{
- Grob *min_item = 0;
- int min_rank = INT_MAX;
- for (vsize j = 0; j < right_items.size (); j ++)
- {
- int rank = dynamic_cast<Item*> (right_items[j])->get_column ()->get_rank ();
- if (rank < min_rank)
- {
- min_item = right_items[j];
- min_rank = rank;
- }
- }
-
- c->set_object ("between-cols", scm_cons (lns,
- min_item->self_scm ()));
+ c->set_object ("between-cols", scm_cons (left_neighbor->self_scm (),
+ right_neighbor->self_scm ()));
+
/*
Set distance constraints for loose columns
{
for (vsize i = 0; i < cols.size (); i++)
{
- SCM right_neighbors = Grob_array::make_array ();
- Grob_array *rn_arr = unsmob_grob_array (right_neighbors);
- int min_rank = INT_MAX;
-
extract_grob_set (cols[i], "spacing-wishes", wishes);
- for (vsize k = wishes.size (); k--;)
+ for (vsize j = wishes.size (); j--;)
{
- Item *wish = dynamic_cast<Item *> (wishes[k]);
+ Item *wish = dynamic_cast<Item*> (wishes[j]);
+ Item *left_col = wish->get_column ();
+ int left_rank = Paper_column::get_rank (left_col);
+ int min_right_rank = INT_MAX;
- Item *lc = wish->get_column ();
- Grob *right = Spacing_interface::right_column (wish);
-
- if (!right)
- continue;
-
- Item *rc = dynamic_cast<Item *> (right);
-
- int right_rank = Paper_column::get_rank (rc);
- int left_rank = Paper_column::get_rank (lc);
-
- /*
- update the left column.
- */
- if (right_rank <= min_rank)
- {
- if (right_rank < min_rank)
- rn_arr->clear ();
-
- min_rank = right_rank;
- rn_arr->add (wish);
- }
-
- /*
- update the right column of the wish.
- */
- int maxrank = 0;
-
- extract_grob_set (rc, "left-neighbors", lns_arr);
- if (lns_arr.size ())
- {
- Item *it = dynamic_cast<Item *> (lns_arr.back ());
- maxrank = Paper_column::get_rank (it->get_column ());
- }
-
- if (left_rank >= maxrank)
+ extract_grob_set (wish, "right-items", right_items);
+ for (vsize k = right_items.size (); k--;)
{
+ Item *right_col = dynamic_cast<Item*> (right_items[k])->get_column ();
+ int right_rank = Paper_column::get_rank (right_col);
- if (left_rank > maxrank)
+ if (right_rank < min_right_rank)
{
- Grob_array *ga = unsmob_grob_array (rc->get_object ("left-neighbors"));
- if (ga)
- ga->clear ();
+ left_col->set_object ("right-neighbor", right_col->self_scm ());
+ min_right_rank = right_rank;
}
- Pointer_group_interface::add_grob (rc, ly_symbol2scm ("left-neighbors"), wish);
+ Grob *old_left_neighbor = unsmob_grob (right_col->get_object ("left-neighbor"));
+ if (!old_left_neighbor || left_rank > Paper_column::get_rank (old_left_neighbor))
+ right_col->set_object ("left-neighbor", left_col->self_scm ());
}
}
-
- if (rn_arr->size ())
- cols[i]->set_object ("right-neighbors", right_neighbors);
}
}
/*
Set neighboring columns that have no left/right-neighbor set
yet. Only do breakable non-musical columns, and musical columns.
+ Why only these? --jneem
*/
void
Spacing_spanner::set_implicit_neighbor_columns (vector<Grob*> const &cols)
if (!Paper_column::is_breakable (it) && !Paper_column::is_musical (it))
continue;
- /*
- sloppy with typing left/right-neighbors should take list, but paper-column found instead.
- */
- extract_grob_set (cols[i], "left-neighbors", lns);
- if (lns.empty () && i)
- {
- SCM ga_scm = Grob_array::make_array ();
- Grob_array *ga = unsmob_grob_array (ga_scm);
- ga->add (cols[i - 1]);
- cols[i]->set_object ("left-neighbors", ga_scm);
- }
- extract_grob_set (cols[i], "right-neighbors", rns);
- if (rns.empty () && i + 1 < cols.size ())
- {
- SCM ga_scm = Grob_array::make_array ();
- Grob_array *ga = unsmob_grob_array (ga_scm);
- ga->add (cols[i + 1]);
- cols[i]->set_object ("right-neighbors", ga_scm);
- }
+ if (i && !unsmob_grob (cols[i]->get_object ("left-neighbor")))
+ cols[i]->set_object ("left-neighbor", cols[i-1]->self_scm ());
+ if (i + 1 < cols.size () && !unsmob_grob (cols[i]->get_object ("right-neighbor")))
+ cols[i]->set_object ("right-neighbor", cols[i+1]->self_scm ());
}
}
}
/*
- Compute the column of the right-items. This is a big function,
- since RIGHT-ITEMS may span more columns (eg. if a clef is inserted,
- this will add a new column to RIGHT-ITEMS. Here we look at the
- columns, and return the left-most. If there are multiple columns, we
- prune RIGHT-ITEMS.
-
- If we end up pruning, we add a left-neighbor to every column that
- gets pruned. This ensures that loose columns in cross-staff music
- do indeed get marked as loose. The problem situation is when a voice
- passes from staff 1 to staff 2 and a clef appears later on in staff 1.
- Then the NoteSpacing attached to the last note in staff 1 has two
- right-items: one pointing to the next note in staff 2 and one pointing
- to the clef. We will prune the clef right-item here and, unless we add
- a left-neighbor to the clef, it won't get marked as loose.
+ Compute the left-most column of the right-items.
*/
Item *
Spacing_interface::right_column (Grob *me)
Grob_array *a = unsmob_grob_array (me->get_object ("right-items"));
Item *mincol = 0;
int min_rank = INT_MAX;
- bool prune = false;
for (vsize i = 0; a && i < a->size (); i++)
{
Item *ri = a->item (i);
if (rank < min_rank)
{
min_rank = rank;
- if (mincol)
- prune = true;
-
mincol = col;
}
- else if (rank > min_rank)
- prune = true;
- }
-
- if (prune && a)
- {
- vector<Grob*> &right = a->array_reference ();
- for (vsize i = right.size (); i--;)
- {
- if (dynamic_cast<Item *> (right[i])->get_column () != mincol)
- {
- extract_grob_set (right[i], "left-neighbors", lns);
- if (lns.empty ())
- Pointer_group_interface::add_grob (right[i],
- ly_symbol2scm ("left-neighbors"),
- dynamic_cast<Item*> (me)->get_column ());
-
- right.erase (right.begin () + i);
- }
- }
}
return mincol;
if (Paper_column::is_musical (left_col))
{
if (!Paper_column::is_musical (right_col)
- && options->float_nonmusical_columns_
+ && (options->float_nonmusical_columns_ || to_boolean (right_col->get_property ("maybe-loose")))
&& after_right_col
&& Paper_column::is_musical (after_right_col))
{
else
{
vector<Spring> springs;
- extract_grob_set (left_col, "right-neighbors", neighbors);
+ extract_grob_set (left_col, "spacing-wishes", wishes);
- for (vsize i = 0; i < neighbors.size (); i++)
+ for (vsize i = 0; i < wishes.size (); i++)
{
- Grob *wish = neighbors[i];
+ Grob *wish = wishes[i];
+ if (Spacing_interface::left_column (wish) != left_col)
+ {
+ /* This shouldn't really happen, but the ancient music
+ stuff really messes up the spacing code, grrr
+ */
+ continue;
+ }
- Item *wish_rcol = Spacing_interface::right_column (wish);
- if (Spacing_interface::left_column (wish) != left_col
- || (wish_rcol != right_col && wish_rcol != right_col->original ()))
- continue;
+ extract_grob_set (wish, "right-items", right_items);
+ bool found_matching_column = false;
+ for (vsize j = 0; j < right_items.size (); j++)
+ {
+ Item *it = dynamic_cast<Item*> (right_items[j]);
+ if (it && (right_col == it->get_column ()
+ || right_col->original () == it->get_column ()))
+ found_matching_column = true;
+ }
/*
This is probably a waste of time in the case of polyphonic
music. */
- if (Note_spacing::has_interface (wish))
+ if (found_matching_column && Note_spacing::has_interface (wish))
{
Real inc = options->increment_;
Grob *gsp = unsmob_grob (left_col->get_object ("grace-spacing"));
*/
#include "grob.hh"
-#include "staff-symbol-referencer.hh"
-#include "staff-symbol.hh"
#include "libc-extension.hh"
+#include "staff-symbol.hh"
+#include "staff-symbol-referencer.hh"
LY_DEFINE (ly_grob_staff_position, "ly:grob-staff-position",
- 1, 0, 0, (SCM sg),
- "Return the Y-position of @var{sg} relative to the staff.")
+ 1, 0, 0, (SCM sg),
+ "Return the Y-position of @var{sg} relative to the staff.")
{
LY_ASSERT_SMOB (Grob, sg, 1);
Grob *g = unsmob_grob (sg);
LY_DEFINE (ly_position_on_line_p, "ly:position-on-line?",
2, 0, 0, (SCM sg, SCM spos),
- "Return whether @var{pos} is on a line of the staff associated with the the grob @var{sg} (even on an extender line).")
+ "Return whether @var{spos} is on a line of the staff associated"
+ " with the the grob @var{sg} (even on an extender line).")
{
LY_ASSERT_SMOB (Grob, sg, 1);
LY_ASSERT_TYPE (scm_is_number, spos, 2);
LY_DEFINE (ly_staff_symbol_line_thickness, "ly:staff-symbol-line-thickness",
1, 0, 0, (SCM grob),
- "Returns the line-thickness of the staff associated with @var{grob}.")
+ "Returns the @code{line-thickness} of the staff associated"
+ " with @var{grob}.")
{
LY_ASSERT_SMOB (Grob, grob, 1);
Grob *g = unsmob_grob (grob);
Real thickness = Staff_symbol_referencer::line_thickness (g);
return scm_from_double (thickness);
}
+
+LY_DEFINE (ly_staff_symbol_staff_space, "ly:staff-symbol-staff-space",
+ 1, 0, 0, (SCM grob),
+ "Returns the @code{staff-space} of the staff associated"
+ " with @var{grob}.")
+{
+ LY_ASSERT_SMOB (Grob, grob, 1);
+ Grob *g = unsmob_grob (grob);
+ Real staff_space = Staff_symbol_referencer::staff_space (g);
+ return scm_from_double (staff_space);
+}
programming_error ("no stem direction");
dir = UP;
}
- iv[dir] += dir * Beam::get_thickness (beam) * 0.5;
+ iv[dir] += dir * Beam::get_beam_thickness (beam) * 0.5;
}
return ly_interval2scm (iv);
else if (stemlet)
{
Real beam_translation = Beam::get_beam_translation (beam);
- Real beam_thickness = Beam::get_thickness (beam);
+ Real beam_thickness = Beam::get_beam_thickness (beam);
int beam_count = beam_multiplicity (me).length () + 1;
y2 -= d
}
Real beam_translation = Beam::get_beam_translation (beam);
- Real beam_thickness = Beam::get_thickness (beam);
+ Real beam_thickness = Beam::get_beam_thickness (beam);
int beam_count = Beam::get_direction_beam_count (beam, my_dir);
Real length_fraction
= robust_scm2double (me->get_property ("length-fraction"), 1.0);
source file of the GNU LilyPond music typesetter
(c) 2005--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
*/
#include "engraver.hh"
-
-#include "side-position-interface.hh"
-#include "system-start-delimiter.hh"
-#include "staff-symbol.hh"
-#include "pointer-group-interface.hh"
-#include "paper-column.hh"
#include "output-def.hh"
+#include "paper-column.hh"
+#include "pointer-group-interface.hh"
+#include "side-position-interface.hh"
#include "spanner.hh"
+#include "staff-symbol.hh"
+#include "system-start-delimiter.hh"
struct Bracket_nesting_node
{
public:
- virtual ~Bracket_nesting_node (){}
+ virtual ~Bracket_nesting_node () {}
virtual bool add_staff (Grob *) { return false; }
- virtual void add_support (Grob *) { }
- virtual void set_bound (Direction, Grob *){}
- virtual void set_nesting_support (Grob*) {}
- virtual void create_grobs (Engraver*, SCM) {}
+ virtual void add_support (Grob *) {}
+ virtual void set_bound (Direction, Grob *) {}
+ virtual void set_nesting_support (Grob *) {}
+ virtual void create_grobs (Engraver *, SCM) {}
};
struct Bracket_nesting_group : public Bracket_nesting_node
vector<Bracket_nesting_node*> children_;
SCM symbol_;
- void from_list (SCM );
+ void from_list (SCM);
virtual void add_support (Grob *grob);
virtual bool add_staff (Grob *grob);
- virtual void set_nesting_support (Grob*);
+ virtual void set_nesting_support (Grob *);
virtual void set_bound (Direction, Grob *grob);
- virtual void create_grobs (Engraver*, SCM);
+ virtual void create_grobs (Engraver *, SCM);
~Bracket_nesting_group ();
Bracket_nesting_group ();
};
Bracket_nesting_group::create_grobs (Engraver *engraver, SCM default_type)
{
SCM type = scm_is_symbol (symbol_) ? symbol_ : default_type;
- delimiter_ = engraver->make_spanner (ly_symbol2string (type).c_str (), SCM_EOL);
+ delimiter_ = engraver->make_spanner (ly_symbol2string (type).c_str (),
+ SCM_EOL);
for (vsize i = 0 ; i < children_.size (); i++)
- {
- children_[i]->create_grobs (engraver, default_type);
- }
+ children_[i]->create_grobs (engraver, default_type);
}
void
{
Side_position_interface::add_support (g, delimiter_);
for (vsize i = 0 ; i < children_.size (); i++)
- {
- children_[i]->add_support (g);
- }
+ children_[i]->add_support (g);
}
Bracket_nesting_group::~Bracket_nesting_group ()
{
delimiter_->set_bound (d, g);
for (vsize i = 0 ; i < children_.size (); i++)
- {
- children_[i]->set_bound (d, g);
- }
+ children_[i]->set_bound (d, g);
}
void
{
if (parent)
Side_position_interface::add_support (delimiter_, parent);
-
+
for (vsize i = 0 ; i < children_.size (); i++)
- {
- children_[i]->set_nesting_support (delimiter_);
- }
+ children_[i]->set_nesting_support (delimiter_);
}
else if (entry == ly_symbol2scm ("SystemStartBrace")
|| entry == ly_symbol2scm ("SystemStartBracket")
|| entry == ly_symbol2scm ("SystemStartBar")
- || entry == ly_symbol2scm ("SystemStartSquare")
- )
+ || entry == ly_symbol2scm ("SystemStartSquare"))
symbol_ = entry;
else
- {
- children_.push_back (new Bracket_nesting_staff (0));
- }
+ children_.push_back (new Bracket_nesting_staff (0));
}
}
{
if (children_[i]->add_staff (grob))
{
- Pointer_group_interface::add_grob (delimiter_, ly_symbol2scm ("elements"), grob);
+ Pointer_group_interface::add_grob (delimiter_,
+ ly_symbol2scm ("elements"), grob);
return true;
}
}
-
return false;
}
protected:
Bracket_nesting_group *nesting_;
-
+
DECLARE_ACKNOWLEDGER (system_start_delimiter);
- DECLARE_ACKNOWLEDGER (system_start_text);
DECLARE_ACKNOWLEDGER (staff_symbol);
void process_music ();
nesting_->from_list (hierarchy);
nesting_->create_grobs (this, delimiter_name);
- nesting_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
+ nesting_->set_bound (LEFT,
+ unsmob_grob (get_property ("currentCommandColumn")));
}
}
}
}
-
-
-void
-System_start_delimiter_engraver::acknowledge_system_start_text (Grob_info inf)
-{
- nesting_->add_support (inf.grob ());
-}
-
void
System_start_delimiter_engraver::acknowledge_system_start_delimiter (Grob_info inf)
{
ADD_ACKNOWLEDGER (System_start_delimiter_engraver, staff_symbol);
ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_delimiter);
-ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_text);
ADD_TRANSLATOR (System_start_delimiter_engraver,
/* doc */
+++ /dev/null
-/*
- system-start-text.cc -- implement System_start_text
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2006--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-*/
-
-#include "text-interface.hh"
-#include "pointer-group-interface.hh"
-#include "output-def.hh"
-#include "font-interface.hh"
-#include "spanner.hh"
-#include "stencil.hh"
-#include "item.hh"
-
-class System_start_text
-{
-public:
- static Stencil get_stencil (Grob *);
- DECLARE_GROB_INTERFACE ();
-
- DECLARE_SCHEME_CALLBACK (print, (SCM));
-};
-
-Stencil
-System_start_text::get_stencil (Grob *me_grob)
-{
- Spanner *me = dynamic_cast<Spanner*> (me_grob);
- SCM t = me->get_property ("text");
- if (me->get_break_index () == 0)
- t = me->get_property ("long-text");
-
-
- SCM chain = Font_interface::text_font_alist_chain (me);
-
- SCM scm_stencil = Text_interface::is_markup (t)
- ? Text_interface::interpret_markup (me->layout ()->self_scm (), chain, t)
- : SCM_EOL;
-
-
- if (Stencil *p = unsmob_stencil (scm_stencil))
- {
- SCM align_y = me_grob->get_property ("self-alignment-Y");
- if (scm_is_number (align_y))
- p->align_to (Y_AXIS, robust_scm2double (align_y, 0.0));
-
- /* Horizontal alignment according to the self-alignment-X property
- * and indent value. */
- Output_def *layout = me_grob->layout ();
- Real indent;
- if (me->get_break_index () == 0)
- indent = robust_scm2double (layout->c_variable ("indent"), 0);
- else
- indent = robust_scm2double (layout->c_variable ("short-indent"), 0);
- Real align_x = robust_scm2double (me->get_property ("self-alignment-X"), 0);
- Interval p_extent_x = p->extent (X_AXIS);
- Interval padding (0.0, max (0.0, indent - p_extent_x.length ()));
- Real right_padding = padding.length () - padding.linear_combination (align_x);
- Box box (Interval (p_extent_x[LEFT], p_extent_x[RIGHT] + right_padding),
- p->extent (Y_AXIS));
- Stencil *aligned_p = new Stencil (box, p->expr ());
- return *aligned_p;
- }
- return Stencil ();
-}
-
-
-MAKE_SCHEME_CALLBACK (System_start_text, print, 1);
-SCM
-System_start_text::print (SCM smob)
-{
- Spanner *me = unsmob_spanner (smob);
-
- if (!me->get_bound (LEFT)->break_status_dir ())
- {
- me->suicide ();
- return SCM_EOL;
- }
-
- extract_grob_set (me, "elements", all_elts);
- vector<Grob*> elts;
- for (vsize i = 0; i < all_elts.size (); i++)
- if (all_elts[i]->is_live ())
- elts.push_back (all_elts[i]);
-
- if (!elts.size ())
- {
- me->suicide ();
- return SCM_EOL;
- }
-
- Grob *common = common_refpoint_of_array (elts, me, Y_AXIS);
-
- Interval ext;
- for (vsize i = elts.size (); i--;)
- {
- Spanner *sp = dynamic_cast<Spanner *> (elts[i]);
-
- if (sp
- && sp->get_bound (LEFT) == me->get_bound (LEFT))
- ext.add_point (sp->relative_coordinate (common, Y_AXIS));
- }
-
- Stencil m = get_stencil (me);
- if (!ext.is_empty ())
- m.translate_axis (ext.center (), Y_AXIS);
- return m.smobbed_copy ();
-}
-
-
-ADD_INTERFACE (System_start_text,
- "Text in front of the system.",
-
- /* properties */
- "text "
- "long-text "
- "self-alignment-Y "
- "self-alignment-X "
- );
#include "all-font-metrics.hh"
#include "axis-group-interface.hh"
#include "grob-array.hh"
+#include "hara-kiri-group-spanner.hh"
#include "international.hh"
#include "lookup.hh"
#include "main.hh"
#include "output-def.hh"
+#include "page-layout-problem.hh"
#include "paper-column.hh"
#include "paper-score.hh"
#include "paper-system.hh"
{
System *child = dynamic_cast<System*> (broken_intos_[i]);
child->all_elements_->remove_duplicates ();
+ for (vsize j = 0; j < child->all_elements_->size (); j++)
+ {
+ Grob *g = child->all_elements_->grob (j);
+
+ (void) g->get_property ("after-line-breaking");
+ }
}
if (be_verbose_global)
void
System::post_processing ()
{
- for (vsize i = 0; i < all_elements_->size (); i++)
- {
- Grob *g = all_elements_->grob (i);
-
- (void) g->get_property ("after-line-breaking");
- }
-
Interval iv (extent (this, Y_AXIS));
if (iv.is_empty ())
programming_error ("system with empty extent");
return dynamic_cast<System*> (system_grob);
}
+Grob *
+System::get_vertical_alignment ()
+{
+ extract_grob_set (this, "elements", elts);
+ Grob *ret = 0;
+ for (vsize i = 0; i < elts.size (); i++)
+ if (Align_interface::has_interface (elts[i]))
+ {
+ if (ret)
+ programming_error ("found multiple vertical alignments in this system");
+ ret = elts[i];
+ }
+
+ if (!ret)
+ programming_error ("didn't find a vertical alignment in this system");
+ return ret;
+}
+
+// Finds the furthest staff in the given direction whose x-extent
+// overlaps with the given interval.
+Grob *
+System::get_extremal_staff (Direction dir, Interval const &iv)
+{
+ Grob *align = get_vertical_alignment ();
+ if (!align)
+ return 0;
+
+ extract_grob_set (align, "elements", elts);
+ vsize start = (dir == UP) ? 0 : elts.size () - 1;
+ vsize end = (dir == UP) ? elts.size () : VPOS;
+ for (vsize i = start; i != end; i += dir)
+ {
+ if (Hara_kiri_group_spanner::has_interface (elts[i]))
+ Hara_kiri_group_spanner::consider_suicide (elts[i]);
+
+ Interval intersection = elts[i]->extent (this, X_AXIS);
+ intersection.intersect (iv);
+ if (elts[i]->is_live () && !intersection.is_empty ())
+ return elts[i];
+ }
+ return 0;
+}
+
ADD_INTERFACE (System,
"This is the top-level object: Each object in a score"
" ultimately has a @code{System} object as its X and"
if (arr[i] == before_grob)
{
arr.insert (arr.begin () + i, added);
+ added->set_property ("staff-affinity", scm_from_int (DOWN));
break;
}
else if (arr[i] == after_grob)
{
arr.insert (arr.begin () + i + 1, added);
+ added->set_property ("staff-affinity", scm_from_int (UP));
break;
}
}
/*
vertically-spaced-contexts-engraver.cc -- implement Vertically_spaced_contexts_engraver
+ TODO: junk this, since we now determine spaceability using Page_layout_problem::is_spaceable.
source file of the GNU LilyPond music typesetter
\grobdescriptions #all-grob-descriptions
}
-% FIXME: replace minimum-Y-extents with proper spacing commands.
-
\context {
\type "Engraver_group"
\name "FretBoards"
localKeySignature = #'()
createSpacing = ##t
ignoreFiguredBassRest = ##t
- \override VerticalAxisGroup #'minimum-Y-extent = #'(-4 . 4)
%% explicitly set instrument, so we don't get
%% weird effects when doing instrument names for
\context{
\type "Engraver_group"
- \override VerticalAxisGroup #'minimum-Y-extent = ##f
localKeySignature = #'()
createSpacing = ##t
fontSize = #-4
\override Stem #'length-fraction = #(magstep -4)
\override Beam #'length-fraction = #(magstep -4)
- \override Beam #'thickness = #0.35
+ \override Beam #'beam-thickness = #0.35
}
\context {
\context{
\type "Engraver_group"
- \override VerticalAxisGroup #'minimum-Y-extent = #'(-0.75 . 2.0)
\description "Corresponds to a voice with lyrics. Handles the
printing of a single line of lyrics."
\override VerticalAxisGroup #'remove-empty = ##t
\override VerticalAxisGroup #'staff-affinity = #UP
\override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5.5) (stretchability . 1) (padding . 0.5))
- \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 2) (stretchability . 0.5) (padding . 0.2))
+ \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) (stretchability . 0) (padding . 0.2))
\override SeparationItem #'padding = #0.2
\override InstrumentName #'self-alignment-Y = ##f
\description "A context for printing the names of notes."
\consists "Axis_group_engraver"
- \override VerticalAxisGroup #'minimum-Y-extent = ##f
% FIXME: not sure what the default should be here.
\override VerticalAxisGroup #'staff-affinity = #DOWN
\consists "Skip_event_swallow_translator"
\consists "Hara_kiri_engraver"
% \consists "Note_spacing_engraver"
- \override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 2)
\override VerticalAxisGroup #'remove-first = ##t
\override VerticalAxisGroup #'remove-empty = ##t
\override VerticalAxisGroup #'staff-affinity = #DOWN
+ \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
+ \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
}
(Voice Dots font-size -3)
(Voice Stem length-fraction 0.8)
(Voice Stem no-stem-extend #t)
- (Voice Beam thickness 0.384)
+ (Voice Beam beam-thickness 0.384)
(Voice Beam length-fraction 0.8)
(Voice Accidental font-size -4)
(Voice AccidentalCautionary font-size -4)
\override VerticalAxisGroup #'remove-empty = ##t
\override VerticalAxisGroup #'remove-first = ##t
\override VerticalAxisGroup #'staff-affinity = #UP
- \override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 2)
+ \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
+ \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
}
\context {
%% TabStaff increase the staff-space, which in turn
%% increases beam thickness and spacing; beams are
%% too big. We have to adjust the beam settings:
- \override Beam #'thickness = #0.32
+ \override Beam #'beam-thickness = #0.32
\override Beam #'length-fraction = #0.62
%% No accidental in tablature !
%% For more information, see the Contributors' Guide.
-\version "2.13.0"
+\version "2.13.4"
-#(use-modules (ice-9 debugger) (ice-9 debugging trace) (ice-9 debugging steps) (ice-9 debugging ice-9-debugger-extensions) )
+#(use-modules
+ (ice-9 debugger)
+ (ice-9 debugging trace)
+ (ice-9 debugging steps)
+ (ice-9 debugging ice-9-debugger-extensions))
#(define (break! proc)
- (install-trap (make <procedure-trap>
- #:procedure proc
- #:behaviour debug-trap)))
-
+ (install-trap (make <procedure-trap>
+ #:procedure proc
+ #:behaviour debug-trap)))
+
#(define (trace! proc)
- (install-trap (make <procedure-trap>
- #:procedure proc
- #:behaviour (list trace-trap
- trace-at-exit))))
-
+ (install-trap (make <procedure-trap>
+ #:procedure proc
+ #:behaviour (list trace-trap
+ trace-at-exit))))
+
#(define (trace-subtree! proc)
- (install-trap (make <procedure-trap>
- #:procedure proc
- #:behaviour (list trace-trap
- trace-until-exit))))
-#(module-define! (resolve-module '(guile-user)) 'lilypond-module (current-module))
+ (install-trap (make <procedure-trap>
+ #:procedure proc
+ #:behaviour (list trace-trap
+ trace-until-exit))))
+
+#(module-define! (resolve-module '(guile-user))
+ 'lilypond-module
+ (current-module))
#(top-repl)
#(set-current-module lilypond-module)
(set! toplevel-scores (list))
(book-handler parser book)))
((or (pair? toplevel-scores) output-empty-score-list)
- (book-handler parser (apply ly:make-book $defaultpaper
- $defaultheader toplevel-scores)))))
+ (let ((book (apply ly:make-book $defaultpaper
+ $defaultheader toplevel-scores)))
+ (set! toplevel-scores (list))
+ (book-handler parser book)))))
#(if (eq? expect-error (ly:parser-has-error? parser))
(ly:parser-clear-error parser)
%% this file is alphabetically sorted.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% need SRFI-1 filter
+%% need SRFI-1 for filter; optargs for lambda*
+#(use-modules (srfi srfi-1)
+ (ice-9 optargs))
-#(use-modules (srfi srfi-1))
+%% TODO: using define-music-function in a .scm causes crash.
acciaccatura =
#(def-grace-function startAcciaccaturaMusic stopAcciaccaturaMusic
(_i "Create an acciaccatura from the following music expression"))
+%% keep these two together
+"instrument-definitions" = #'()
+addInstrumentDefinition =
+#(define-music-function
+ (parser location name lst) (string? list?)
+ (_i "Create instrument @var{name} with properties @var{list}.")
+ (set! instrument-definitions (acons name lst instrument-definitions))
+ (make-music 'SequentialMusic 'void #t))
+
addQuote =
#(define-music-function (parser location name music) (string? ly:music?)
(_i "Define @var{music} as a quotable music expression named
(add-quotable parser name music)
(make-music 'SequentialMusic 'void #t))
-afterGraceFraction =
-#(cons 6 8)
-
+%% keep these two together
+afterGraceFraction = #(cons 6 8)
afterGrace =
#(define-music-function
(parser location main grace)
(make-music 'GraceMusic
'element grace)))))))
+
+%% music identifiers not allowed at top-level,
+%% so this is a music-function instead.
+allowPageTurn =
+#(define-music-function (location parser) ()
+ (_i "Allow a page turn. May be used at toplevel (ie between scores or
+markups), or inside a score.")
+ (make-music 'EventChord
+ 'page-marker #t
+ 'page-turn-permission 'allow
+ 'elements (list (make-music 'PageTurnEvent
+ 'break-permission 'allow))))
+
+applyContext =
+#(define-music-function (parser location proc) (procedure?)
+ (_i "Modify context properties with Scheme procedure @var{proc}.")
+ (make-music 'ApplyContext
+ 'origin location
+ 'procedure proc))
+
applyMusic =
#(define-music-function (parser location func music) (procedure? ly:music?)
(_i"Apply procedure @var{func} to @var{music}.")
(func music))
-
applyOutput =
#(define-music-function (parser location ctx proc) (symbol? procedure?)
(_i "Apply function @code{proc} to every layout object in context @code{ctx}")
(make-music 'ApplyOutputEvent
- 'origin location
- 'procedure proc
- 'context-type ctx))
+ 'origin location
+ 'procedure proc
+ 'context-type ctx))
appoggiatura =
#(def-grace-function startAppoggiaturaMusic stopAppoggiaturaMusic
(_i "Create an appoggiatura from @var{music}"))
-
% for regression testing purposes.
assertBeamQuant =
#(define-music-function (parser location l r) (pair? pair?)
(list chain-grob-member-functions `(,cons 0 0))
(check-slope-callbacks comp))))))
-
-
autochange =
#(define-music-function (parser location music) (ly:music?)
(_i "Make voices that switch between staves automatically")
(make-autochange-music parser music))
-applyContext =
-#(define-music-function (parser location proc) (procedure?)
- (_i "Modify context properties with Scheme procedure @var{proc}.")
- (make-music 'ApplyContext
- 'origin location
- 'procedure proc))
balloonGrobText =
#(define-music-function (parser location grob-name offset text)
- (symbol? number-pair? markup?)
+ (symbol? number-pair? markup?)
(_i "Attach @var{text} to @var{grob-name} at offset @var{offset}
(use like @code{\\once})")
(make-music 'AnnotateOutputEvent
'Y-offset (cdr offset)
'text text))
-
bar =
#(define-music-function (parser location type) (string?)
(_i "Insert a bar line of type @var{type}")
(make-property-set 'whichBar type)
'Timing))
-
barNumberCheck =
#(define-music-function (parser location n) (integer?)
(_i "Print a warning if the current bar number is not @var{n}.")
(ly:input-message location "Barcheck failed got ~a expect ~a"
cbn n))))))
-
bendAfter =
#(define-music-function (parser location delta) (real?)
(_i "Create a fall or doit of pitch interval @var{delta}.")
breathe =
#(define-music-function (parser location) ()
(_i "Insert a breath mark.")
- (make-music 'EventChord
- 'origin location
- 'elements (list (make-music 'BreathingEvent))))
+ (make-music 'EventChord
+ 'origin location
+ 'elements (list (make-music 'BreathingEvent))))
+
clef =
(_i "Set the current clef to @var{type}.")
(make-clef-set type))
-
cueDuring =
#(define-music-function
(parser location what dir main-music) (string? ly:dir? ly:music?)
'quoted-voice-direction dir
'origin location))
+
+
displayLilyMusic =
#(define-music-function (parser location music) (ly:music?)
- (_i "Display the LilyPond input representation of @var{music}
+ (_i "Display the LilyPond input representation of @var{music}
to the console.")
(newline)
(display-lily-music music parser)
music)
+
endSpanners =
#(define-music-function (parser location music) (ly:music?)
(_i "Terminate the next spanner prematurely after exactly one note without the need of a specific end spanner.")
(ly:input-message location (_ "argument endSpanners is not an EventChord: ~a" music))))
+
+
featherDurations=
#(define-music-function (parser location factor argument) (ly:moment? ly:music?)
(_i "Adjust durations of music in @var{argument} by rational @var{factor}. ")
argument))
+
+
grace =
#(def-grace-function startGraceMusic stopGraceMusic
(_i "Insert @var{music} as grace notes."))
-"instrument-definitions" = #'()
-addInstrumentDefinition =
-#(define-music-function
- (parser location name lst) (string? list?)
- (_i "Create instrument @var{name} with properties @var{list}.")
- (set! instrument-definitions (acons name lst instrument-definitions))
+%% see comment for page-layout-parser definition below.
+includePageLayoutFile =
+#(define-music-function (parser location) ()
+ (_i "Include the file @var{<basename>-page-layout.ly}. Deprecated as
+part of two-pass spacing.")
+ (if (not (ly:get-option 'dump-tweaks))
+ (let ((tweak-filename (format #f "~a-page-layout.ly"
+ (ly:parser-output-name parser))))
+ (if (access? tweak-filename R_OK)
+ (begin
+ (ly:message "Including tweak file ~a" tweak-filename)
+ (set! page-layout-parser (ly:parser-clone parser))
+ (ly:parser-parse-string page-layout-parser
+ (format #f "\\include \"~a\""
+ tweak-filename))))))
(make-music 'SequentialMusic 'void #t))
-
instrumentSwitch =
#(define-music-function
(parser location name) (string?)
(_i "Switch instrument to @var{name}, which must be predefined with
@code{\\addInstrumentDefinition}.")
(let*
- ((handle (assoc name instrument-definitions))
+ ((handle (assoc name instrument-definitions))
(instrument-def (if handle (cdr handle) '()))
)
'Staff)))
-%% Parser used to read page-layout file, and then retreive score tweaks.
-#(define page-layout-parser #f)
-
-includePageLayoutFile =
-#(define-music-function (parser location) ()
- (_i "Include the file @var{<basename>-page-layout.ly}. Deprecated as
-part of two-pass spacing.")
- (if (not (ly:get-option 'dump-tweaks))
- (let ((tweak-filename (format #f "~a-page-layout.ly"
- (ly:parser-output-name parser))))
- (if (access? tweak-filename R_OK)
- (begin
- (ly:message "Including tweak file ~a" tweak-filename)
- (set! page-layout-parser (ly:parser-clone parser))
- (ly:parser-parse-string page-layout-parser
- (format #f "\\include \"~a\""
- tweak-filename))))))
- (make-music 'SequentialMusic 'void #t))
keepWithTag =
#(define-music-function
(music-filter
(lambda (m)
(let* ((tags (ly:music-property m 'tags))
- (res (memq tag tags)))
+ (res (memq tag tags)))
(or
(eq? tags '())
res)))
music))
-removeWithTag =
-#(define-music-function
- (parser location tag music) (symbol? ly:music?)
- (_i "Remove elements of @var{music} that are tagged with @var{tag}.")
- (music-filter
- (lambda (m)
- (let* ((tags (ly:music-property m 'tags))
- (res (memq tag tags)))
- (not res)))
- music))
-
killCues =
#(define-music-function
(parser location music)
(ly:music-property mus 'element)
mus)) music))
+
+
label =
#(define-music-function (parser location label) (symbol?)
(_i "Create @var{label} as a bookmarking label")
'elements (list (make-music 'LabelEvent
'page-label label))))
+
+
makeClusters =
#(define-music-function
(parser location arg) (ly:music?)
#(define-music-function (parser location proc mus) (procedure? ly:music?)
(music-map proc mus))
+
+
+%% noPageBreak and noPageTurn are music functions (not music indentifiers),
+%% because music identifiers are not allowed at top-level.
+noPageBreak =
+#(define-music-function (location parser) ()
+ (_i "Forbid a page break. May be used at toplevel (ie between scores or
+markups), or inside a score.")
+ (make-music 'EventChord
+ 'page-marker #t
+ 'page-break-permission 'forbid
+ 'elements (list (make-music 'PageBreakEvent
+ 'break-permission '()))))
+
+noPageTurn =
+#(define-music-function (location parser) ()
+ (_i "Forbid a page turn. May be used at toplevel (ie between scores or
+markups), or inside a score.")
+ (make-music 'EventChord
+ 'page-marker #t
+ 'page-turn-permission 'forbid
+ 'elements (list (make-music 'PageTurnEvent
+ 'break-permission '()))))
+
+
+
+octaveCheck =
+#(define-music-function (parser location pitch-note) (ly:music?)
+ (_i "octave check")
+
+ (make-music 'RelativeOctaveCheck
+ 'origin location
+ 'pitch (pitch-of-note pitch-note)
+ ))
+
+ottava = #(define-music-function (parser location octave) (number?)
+ (_i "set the octavation ")
+ (make-ottava-set octave))
+
overrideBeamSettings =
#(define-music-function
(parser location
of @var{time-signature}.")
;; TODO -- add warning if largest value of grouping is
- ;; greater than time-signature.
+ ;; greater than time-signature.
#{
#(override-beam-setting
grob-name)
(set! (ly:grob-property grob property) value))))))
-%% These are music functions (iso music indentifiers), because music identifiers
-%% are not allowed at top-level.
+
+
+%% Parser used to read page-layout file (see includePageLayoutFile
+%% above), and then retreive score tweaks (see scoreTweak below).
+#(define page-layout-parser #f)
+
+%% pageBreak and pageTurn are music functions (iso music indentifiers),
+%% because music identifiers are not allowed at top-level.
pageBreak =
#(define-music-function (location parser) ()
(_i "Force a page break. May be used at toplevel (ie between scores or
(make-music 'PageBreakEvent
'break-permission 'force))))
-noPageBreak =
-#(define-music-function (location parser) ()
- (_i "Forbid a page break. May be used at toplevel (ie between scores or
-markups), or inside a score.")
- (make-music 'EventChord
- 'page-marker #t
- 'page-break-permission 'forbid
- 'elements (list (make-music 'PageBreakEvent
- 'break-permission '()))))
-
pageTurn =
#(define-music-function (location parser) ()
(_i "Force a page turn between two scores or top-level markups.")
(make-music 'PageTurnEvent
'break-permission 'force))))
-noPageTurn =
-#(define-music-function (location parser) ()
- (_i "Forbid a page turn. May be used at toplevel (ie between scores or
-markups), or inside a score.")
- (make-music 'EventChord
- 'page-marker #t
- 'page-turn-permission 'forbid
- 'elements (list (make-music 'PageTurnEvent
- 'break-permission '()))))
-
-allowPageTurn =
-#(define-music-function (location parser) ()
- (_i "Allow a page turn. May be used at toplevel (ie between scores or
-markups), or inside a score.")
- (make-music 'EventChord
- 'page-marker #t
- 'page-turn-permission 'allow
- 'elements (list (make-music 'PageTurnEvent
- 'break-permission 'allow))))
-
-%% Todo:
-%% doing
-%% define-music-function in a .scm causes crash.
-
-octaveCheck =
-#(define-music-function (parser location pitch-note) (ly:music?)
- (_i "octave check")
-
- (make-music 'RelativeOctaveCheck
- 'origin location
- 'pitch (pitch-of-note pitch-note)
- ))
-
-ottava = #(define-music-function (parser location octave) (number?)
- (_i "set the octavation ")
- (make-ottava-set octave))
-
-partcombine =
-#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
- (make-part-combine-music parser
- (list part1 part2)))
-
-
-pitchedTrill =
-#(define-music-function
- (parser location main-note secondary-note)
- (ly:music? ly:music?)
- (let*
- ((get-notes (lambda (ev-chord)
- (filter
- (lambda (m) (eq? 'NoteEvent (ly:music-property m 'name)))
- (ly:music-property ev-chord 'elements))))
- (sec-note-events (get-notes secondary-note))
- (trill-events (filter (lambda (m) (music-has-type m 'trill-span-event))
- (ly:music-property main-note 'elements))))
-
- (if (pair? sec-note-events)
- (begin
- (let*
- ((trill-pitch (ly:music-property (car sec-note-events) 'pitch))
- (forced (ly:music-property (car sec-note-events ) 'force-accidental)))
-
- (if (ly:pitch? trill-pitch)
- (for-each (lambda (m) (ly:music-set-property! m 'pitch trill-pitch))
- trill-events)
- (begin
- (ly:warning (_ "Second argument of \\pitchedTrill should be single note: "))
- (display sec-note-events)))
-
- (if (eq? forced #t)
- (for-each (lambda (m) (ly:music-set-property! m 'force-accidental forced))
- trill-events)))))
- main-note))
-
-
-
-%% for lambda*
-#(use-modules (ice-9 optargs))
-
parallelMusic =
#(define-music-function (parser location voice-ids music) (list? ly:music?)
(_i "Define parallel music sequences, separated by '|' (bar check signs),
@end verbatim
")
(let* ((voices (apply circular-list (make-list (length voice-ids) (list))))
- (current-voices voices)
- (current-sequence (list)))
+ (current-voices voices)
+ (current-sequence (list)))
;;
;; utilities
(define (push-music m)
"Stores the previously built sequence into the current voice and
change to the following voice."
(list-set! current-voices 0 (cons (make-music 'SequentialMusic
- 'elements (reverse! current-sequence))
- (car current-voices)))
+ 'elements (reverse! current-sequence))
+ (car current-voices)))
(set! current-sequence (list))
(set! current-voices (cdr current-voices)))
(define (bar-check? m)
(define (music-origin music)
"Recursively search an origin location stored in music."
(cond ((null? music) #f)
- ((not (null? (ly:music-property music 'origin)))
- (ly:music-property music 'origin))
- (else (or (music-origin (ly:music-property music 'element))
- (let ((origins (remove not (map music-origin
- (ly:music-property music 'elements)))))
- (and (not (null? origins)) (car origins)))))))
+ ((not (null? (ly:music-property music 'origin)))
+ (ly:music-property music 'origin))
+ (else (or (music-origin (ly:music-property music 'element))
+ (let ((origins (remove not (map music-origin
+ (ly:music-property music 'elements)))))
+ (and (not (null? origins)) (car origins)))))))
;;
;; first, split the music and fill in voices
(map-in-order (lambda (m)
- (push-music m)
- (if (bar-check? m) (change-voice)))
- (ly:music-property music 'elements))
+ (push-music m)
+ (if (bar-check? m) (change-voice)))
+ (ly:music-property music 'elements))
(if (not (null? current-sequence)) (change-voice))
;; un-circularize `voices' and reorder the voices
(set! voices (map-in-order (lambda (dummy seqs)
- (reverse! seqs))
- voice-ids voices))
+ (reverse! seqs))
+ voice-ids voices))
;;
;; set origin location of each sequence in each voice
;; for better type error tracking
(for-each (lambda (voice)
- (for-each (lambda (seq)
- (set! (ly:music-property seq 'origin)
- (or (music-origin seq) location)))
- voice))
- voices)
+ (for-each (lambda (seq)
+ (set! (ly:music-property seq 'origin)
+ (or (music-origin seq) location)))
+ voice))
+ voices)
;;
;; check sequence length
(apply for-each (lambda* (#:rest seqs)
- (let ((moment-reference (ly:music-length (car seqs))))
- (for-each (lambda (seq moment)
- (if (not (equal? moment moment-reference))
- (ly:music-message seq
- "Bars in parallel music don't have the same length")))
- seqs (map-in-order ly:music-length seqs))))
- voices)
+ (let ((moment-reference (ly:music-length (car seqs))))
+ (for-each (lambda (seq moment)
+ (if (not (equal? moment moment-reference))
+ (ly:music-message seq
+ "Bars in parallel music don't have the same length")))
+ seqs (map-in-order ly:music-length seqs))))
+ voices)
;;
;; bind voice identifiers to the voices
(map (lambda (voice-id voice)
- (ly:parser-define! parser voice-id
- (make-music 'SequentialMusic
- 'origin location
- 'elements voice)))
- voice-ids voices))
+ (ly:parser-define! parser voice-id
+ (make-music 'SequentialMusic
+ 'origin location
+ 'elements voice)))
+ voice-ids voices))
;; Return an empty sequence. this function is actually a "void" function.
(make-music 'SequentialMusic 'void #t))
-
-
parenthesize =
#(define-music-function (parser loc arg) (ly:music?)
(_i "Tag @var{arg} to be parenthesized.")
; arg is an EventChord -> set the parenthesize property on all child notes and rests
(map
(lambda (ev)
- (if (or (memq 'note-event (ly:music-property ev 'types))
- (memq 'rest-event (ly:music-property ev 'types)))
- (set! (ly:music-property ev 'parenthesize) #t)))
+ (if (or (memq 'note-event (ly:music-property ev 'types))
+ (memq 'rest-event (ly:music-property ev 'types)))
+ (set! (ly:music-property ev 'parenthesize) #t)))
(ly:music-property arg 'elements))
; No chord, simply set property for this expression:
(set! (ly:music-property arg 'parenthesize) #t))
arg)
+partcombine =
+#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
+ (make-part-combine-music parser
+ (list part1 part2)))
+
+pitchedTrill =
+#(define-music-function
+ (parser location main-note secondary-note)
+ (ly:music? ly:music?)
+ (let*
+ ((get-notes (lambda (ev-chord)
+ (filter
+ (lambda (m) (eq? 'NoteEvent (ly:music-property m 'name)))
+ (ly:music-property ev-chord 'elements))))
+ (sec-note-events (get-notes secondary-note))
+ (trill-events (filter (lambda (m) (music-has-type m 'trill-span-event))
+ (ly:music-property main-note 'elements))))
-quoteDuring = #
-(define-music-function
+ (if (pair? sec-note-events)
+ (begin
+ (let*
+ ((trill-pitch (ly:music-property (car sec-note-events) 'pitch))
+ (forced (ly:music-property (car sec-note-events ) 'force-accidental)))
+
+ (if (ly:pitch? trill-pitch)
+ (for-each (lambda (m) (ly:music-set-property! m 'pitch trill-pitch))
+ trill-events)
+ (begin
+ (ly:warning (_ "Second argument of \\pitchedTrill should be single note: "))
+ (display sec-note-events)))
+
+ (if (eq? forced #t)
+ (for-each (lambda (m) (ly:music-set-property! m 'force-accidental forced))
+ trill-events)))))
+ main-note))
+
+
+
+quoteDuring =
+#(define-music-function
(parser location what main-music)
(string? ly:music?)
(make-music 'QuoteMusic
-resetRelativeOctave =
+removeWithTag =
+#(define-music-function
+ (parser location tag music) (symbol? ly:music?)
+ (_i "Remove elements of @var{music} that are tagged with @var{tag}.")
+ (music-filter
+ (lambda (m)
+ (let* ((tags (ly:music-property m 'tags))
+ (res (memq tag tags)))
+ (not res)))
+ music))
+
+resetRelativeOctave =
#(define-music-function
(parser location reference-note)
(ly:music?)
(set! (ly:music-property reference-note
'to-relative-callback)
(lambda (music last-pitch)
- pitch))
+ pitch))
reference-note))
#(revert-beam-setting $time-signature $rule-type $context)
#})
+rightHandFinger =
+#(define-music-function (parser location finger) (number-or-string?)
+ (_i "Apply @var{finger} as a fingering indication.")
+
+ (apply make-music
+ (append
+ (list
+ 'StrokeFingerEvent
+ 'origin location)
+ (if (string? finger)
+ (list 'text finger)
+ (list 'digit finger)))))
+
+
+
scaleDurations =
#(define-music-function (parser location fraction music) (number-pair? ly:music?)
(_i "Multiply the duration of events in @var{music} by @var{fraction}.")
(ly:music-compress music
(ly:make-moment (car fraction) (cdr fraction))))
+%% see comment for page-layout-parser definition above.
+scoreTweak =
+#(define-music-function (parser location name) (string?)
+ (_i "Include the score tweak, if exists.")
+ (if (and page-layout-parser (not (ly:get-option 'dump-tweaks)))
+ (let ((tweak-music (ly:parser-lookup page-layout-parser
+ (string->symbol name))))
+ (if (ly:music? tweak-music)
+ tweak-music
+ (make-music 'SequentialMusic)))
+ (make-music 'SequentialMusic)))
+
setBeatGrouping =
#(define-music-function (parser location grouping) (pair?)
(_i "Set the beat grouping in the current time signature to
@var{grouping}.")
(define (default-group-setting c)
(let* ((context-time-signature
- (ly:context-property c 'timeSignatureFraction))
- (time-signature (if (null? context-time-signature)
- '(4 . 4)
- context-time-signature)))
+ (ly:context-property c 'timeSignatureFraction))
+ (time-signature (if (null? context-time-signature)
+ '(4 . 4)
+ context-time-signature)))
(override-property-setting
c
'beamSettings
(make-apply-context default-group-setting)
'Score))
-
shiftDurations =
#(define-music-function (parser location dur dots arg) (integer? integer? ly:music?)
(_i "Scale @var{arg} up by a factor of @var{2^dur*(2-(1/2)^dots)}.")
the `parameters' assoc list.")
#{
\overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details
- #$(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters)))
+ #'line-break-system-details
+ #$(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters)))
(cons 'system-Y-extent (cdr (assoc 'system-Y-extent parameters))))
#})
+styledNoteHeads =
+#(define-music-function
+ (parser location style heads music)
+ (symbol? list-or-symbol? ly:music?)
+ (_i "Set @var{heads} in @var{music} to @var{style}.")
+ (style-note-heads heads style music))
-rightHandFinger =
-#(define-music-function (parser location finger) (number-or-string?)
- (_i "Apply @var{finger} as a fingering indication.")
-
- (apply make-music
- (append
- (list
- 'StrokeFingerEvent
- 'origin location)
- (if (string? finger)
- (list 'text finger)
- (list 'digit finger)))))
-
-scoreTweak =
-#(define-music-function (parser location name) (string?)
- (_i "Include the score tweak, if exists.")
- (if (and page-layout-parser (not (ly:get-option 'dump-tweaks)))
- (let ((tweak-music (ly:parser-lookup page-layout-parser
- (string->symbol name))))
- (if (ly:music? tweak-music)
- tweak-music
- (make-music 'SequentialMusic)))
- (make-music 'SequentialMusic)))
tag =
(ly:music-property arg 'tags)))
arg)
-
-
transposedCueDuring =
#(define-music-function
(parser location what dir pitch-note main-music)
(_i "Insert notes from the part @var{what} into a voice called @code{cue},
using the transposition defined by @var{pitch-note}. This happens
-simultaneously with @var{main-music}, which is usually a rest. The
+simultaneously with @var{main-music}, which is usually a rest. The
argument @var{dir} determines whether the cue notes should be notated
as a first or second voice.")
'quoted-transposition (pitch-of-note pitch-note)
'origin location))
-
-
transposition =
#(define-music-function (parser location pitch-note) (ly:music?)
(_i "Set instrument transposition")
(context-spec-music
(make-property-set 'instrumentTransposition
(ly:pitch-negate (pitch-of-note pitch-note)))
- 'Staff))
+ 'Staff))
tweak =
#(define-music-function (parser location sym val arg)
%% Note: these are not scaled; they are in staff-spaces.
between-system-spacing = #'((space . 12) (minimum-distance . 8) (padding . 1))
+ between-scores-system-spacing = #'((space . 14) (minimum-distance . 8) (padding . 1))
after-title-spacing = #'((space . 2) (padding . 0.5))
before-title-spacing = #'((space . 5) (padding . 0.5))
between-title-spacing = #'((space . 1) (padding . 0.5))
- first-system-spacing = #'((space . 1) (padding . 0) (min-distance . 0))
- first-system-title-spacing = #'((space . 1) (padding . 1) (min-distance . 0))
- last-system-spacing = #'((space . 1) (padding . 0) (min-distance . 0) (stretchability . 5))
+ top-system-spacing = #'((space . 1) (padding . 1) (min-distance . 0))
+ top-title-spacing = #'((space . 1) (padding . 1) (min-distance . 0))
+ bottom-system-spacing = #'((space . 1) (padding . 1) (min-distance . 0) (stretchability . 5))
ragged-bottom = ##f
\name GrandStaff
\accepts RhythmicStaff
\accepts Staff
+ \accepts Dynamics
\defaultchild Staff
}
\context { \Staff \name RhythmicStaff }
-
+\context {
+ \type "Performer_group"
+ \name Dynamics
+ \consists "Piano_pedal_performer"
+}
\version "2.12.0"
stemUp = \override Stem #'direction = #UP
-stemDown = \override Stem #'direction = #DOWN
+stemDown = \override Stem #'direction = #DOWN
stemNeutral = \revert Stem #'direction
slurUp = \override Slur #'direction = #UP
slurDashed = {
\override Slur #'dash-definition = #'((0 1 0.4 0.75))
}
-slurDashPattern =
+slurDashPattern =
#(define-music-function (parser location dash-fraction dash-period)
(number? number?)
#{
phrasingSlurDashed = {
\override PhrasingSlur #'dash-definition = #'((0 1 0.4 0.75))
}
-phrasingSlurDashPattern =
+phrasingSlurDashPattern =
#(define-music-function (parser location dash-fraction dash-period)
(number? number?)
#{
tieDashed = {
\override Tie #'dash-definition = #'((0 1 0.4 0.75))
}
-tieDashPattern =
+tieDashPattern =
#(define-music-function (parser location dash-fraction dash-period)
(number? number?)
#{
}
easyHeadsOn = {
- \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
- \override NoteHead #'font-size = #-7
+ \override NoteHead #'stencil = #note-head::brew-ez-stencil
+ \override NoteHead #'font-size = #-8
\override NoteHead #'font-family = #'sans
\override NoteHead #'font-series = #'bold
}
\set Timing.measurePosition = #ZERO-MOMENT
}
-% dynamic ly:dir? text script, articulation script ly:dir?
+% dynamic ly:dir? text script, articulation script ly:dir?
oneVoice = #(context-spec-music (make-voice-props-revert) 'Voice)
voiceOne = #(context-spec-music (make-voice-props-set 0) 'Voice)
voiceTwo = #(context-spec-music (make-voice-props-set 1) 'Voice)
% For drawing vertical chord brackets with \arpeggio
-% This is a shorthand for the value of the print-function property
-% of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether
-% cross-staff brackets are desired.
+% This is a shorthand for the value of the print-function property
+% of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether
+% cross-staff brackets are desired.
arpeggio = #(make-music 'ArpeggioEvent)
glissando = #(make-music 'GlissandoEvent)
-fermataMarkup = \markup { \musicglyph #"scripts.ufermata" }
+fermataMarkup =
+#(make-music 'MultiMeasureTextEvent
+ ; Set the 'text based on the 'direction
+ 'tweaks (list (cons 'text (lambda (grob)
+ (if (eq? (ly:grob-property grob 'direction) DOWN)
+ (markup #:musicglyph "scripts.dfermata")
+ (markup #:musicglyph "scripts.ufermata"))))))
hideNotes = {
% hide notes, accidentals, etc.
\revert Staff.BassFigureAlignmentPositioning #'direction
}
-predefinedFretboardsOff = {
+predefinedFretboardsOff = {
\set FretBoards.predefinedDiagramTable = ##f
}
(ly:set-option 'point-and-click #t)
(make-music 'SequentialMusic 'void #t))
-palmMuteOn = {
- \override NoteHead #'style = #'do
-}
+palmMuteOn =
+#(define-music-function (parser location) ()
+ (override-head-style 'NoteHead 'do))
-palmMuteOff = {
- \revert NoteHead #'style
-}
+palmMuteOff =
+#(define-music-function (parser location) ()
+ (revert-head-style 'NoteHead))
palmMute =
#(define-music-function (parser location note) (ly:music?)
- ;; are we inside a <...>?
- (if (eq? (ly:music-property note 'name) 'NoteEvent)
- ;; yes -> add a tweak
- (begin (set! (ly:music-property note 'tweaks)
- (acons 'style 'do (ly:music-property note 'tweaks)))
- note)
- ;; no -> use predefined commands to switch to triangle-shaped note heads
- #{
- \palmMuteOn
- $note
- \palmMuteOff
- #}))
-
-deadNotesOn = {
- \override TabNoteHead #'style = #'cross
- \override NoteHead #'style = #'cross
-}
+ (style-note-heads 'NoteHead 'do note))
-deadNotesOff = {
- \revert TabNoteHead #'style
- \revert NoteHead #'style
-}
+xNotesOn =
+#(define-music-function (parser location) ()
+ (override-head-style '(TabNoteHead NoteHead) 'cross))
-deadNote =
+xNotesOff =
+#(define-music-function (parser location) ()
+ (revert-head-style '(TabNoteHead NoteHead)))
+
+xNote =
#(define-music-function (parser location note) (ly:music?)
- ;; are we inside a <...>?
- (if (eq? (ly:music-property note 'name) 'NoteEvent)
- ;; yes -> add a tweak
- (begin (set! (ly:music-property note 'tweaks)
- (acons 'style 'cross (ly:music-property note 'tweaks)))
- note)
- ;; no -> use predefined commmands for changing
- ;; note head and tablature fret signs
- #{
- \deadNotesOn
- $note
- \deadNotesOff
- #}))
+ (style-note-heads '(TabNoteHead NoteHead) 'cross note))
+
+% Define aliases of cross-head notes for specific purposes
+deadNotesOn = \xNotesOn
+deadNotesOff = \xNotesOff
+deadNote = #xNote
tabFullNotation = {
% time signature
\revert TabVoice.Tie #'stencil
\revert TabVoice.Tie #'after-line-breaking
\revert TabVoice.RepeatTie #'stencil
- \revert TabVoice.RepeatTie #'after-line-braking
+ \revert TabVoice.RepeatTie #'after-line-breaking
\revert TabVoice.LaissezVibrerTie #'stencil
\revert TabVoice.Slur #'stencil
\revert PhrasingSlur #'stencil
+$(outdir)/%.texi: %.texi
+ cp -p $< $@
+
$(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(TRANSLATION_LILY_IMAGES)
mkdir -p $(dir $@)
mkdir -p $(outdir)/$*
- $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) $(TEXI2HTML_FLAGS) --output=$(outdir)/$* --prefix=index --split=section $(TEXI2HTML_INIT) $<
+ $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(TEXI2HTML_SPLIT) --output=$(outdir)/$* $<
find $(outdir)/$* -name '*.html' | xargs grep -L --label="" 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link --prepend-suffix .$(ISOLANG) hard $(outdir) $(top-build-dir)/Documentation/$(outdir)
-
$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(TRANSLATION_LILY_IMAGES)
- $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) -D bigpage $(TEXI2HTML_FLAGS) --output=$@ $(TEXI2HTML_INIT) $<
+ $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage --output=$@ $<
$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(outdir)/version.itexi
- $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) $(TEXI2HTML_FLAGS) --output=$@ $(TEXI2HTML_INIT) $<
+ $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $<
$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf: $(outdir)/%.texi
cd $(outdir) && \
- texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $*.texi && \
- mkdir -p $(dir $@) && mv $*.pdf $@
+ texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $*.texi && \
+ mkdir -p $(dir $@) && mv $*.pdf $@
$(outdir)/version.%: $(top-src-dir)/VERSION
echo '@macro version'> $@
$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map
$(buildscript-dir)/extract_texi_filenames -o $(XREF_MAPS_DIR) $(XREF_MAP_FLAGS) --master-map-file=$(XREF_MAPS_DIR)/$*.xref-map $<
+ touch -r $< $@
$(MASTER_TEXI_FILES): $(ITELY_FILES) $(ITEXI_FILES) $(outdir)/pictures
find $(outdir) \( -name 'lily-*.png' -o -name 'lily-*.ly' \) | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link hard $(outdir) $(top-build-dir)/Documentation/$(outdir)
touch $@
+$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+ $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+
+$(outdir)/lilypond.info: $(outdir)/general.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+ $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+
+$(outdir)/general/index.html: $(outdir)/macros.itexi $(outdir)/common-macros.itexi
+
.SECONDARY:
CSS_SOURCE_FILES = $(shell ls $(top-src-dir)/Documentation/lilypond*.css)
TELY_FILES := $(call src-wildcard,*.tely)
-MASTER_TEXI_FILES := $(TELY_FILES:%.tely=$(outdir)/%.texi)
+TEXI_FILES := $(call src-wildcard,*.texi)
+MASTER_TEXI_FILES := $(TEXI_FILES) $(TELY_FILES:%.tely=$(outdir)/%.texi)
-SPLITTED_HTML_MANUALS = $(foreach manual, $(TELY_FILES:%.tely=%),\
+TEXINFO_MANUALS =\
+ $(TELY_FILES:%.tely=%)\
+ $(TEXI_FILES:%.texi=%)
+
+SPLITTED_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\
$(if $(findstring $(manual), $(UNSPLITTED_HTML_MANUALS)),,$(manual)))
OUT_HTML_FILES += $(UNSPLITTED_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html)
BIG_PAGE_HTML_FILES := $(SPLITTED_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html)
DEEP_HTML_FILES := $(SPLITTED_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html)
-PDF_FILES := $(TELY_FILES:%.tely=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf)
+#PDF_FILES := $(TEXINFO_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf)
ITELY_FILES := $(call src-wildcard,*.itely)
ITEXI_FILES := $(call src-wildcard,*.itexi)
MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
# texi2html xref map files
-XREF_MAPS_DIR=$(top-build-dir)/out/xref-maps
-XREF_MAPS_FILES=$(TELY_FILES:%.tely=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map)
+# FIXME: duplicated in stepake/texinfo-vars.make make/doc-i18n-root-vars.make
+XREF_MAPS_DIR=$(top-build-dir)/$(outbase)/xref-maps
+XREF_MAPS_FILES=$(TEXINFO_MANUALS:%=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map)
XREF_MAP_FLAGS += -I $(outdir)
-# texi2html flags
-TEXI2HTML_INIT= --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
-TEXI2HTML_LANG=--lang=$(ISOLANG)
-TEXI2HTML_FLAGS += $(TEXI2HTML_LANG) $(DOCUMENTATION_INCLUDES) \
- -I $(XREF_MAPS_DIR)
-TEXI2HTML = PERL_UNICODE=SD LANG= $(TEXI2HTML_PROGRAM)
+WEB_MANUALS=general
+
+###########
+ifneq ($(ISOLANG),)
+TEXI2HTML_LANG = --lang=$(ISOLANG)
+endif
+
+DOC_TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
+WEB_TEXI2HTML_INIT =--init-file=$(top-src-dir)/Documentation/web-texi2html.init
+TEXI2HTML_INIT = $(DOC_TEXI2HTML_INIT)
+
+DOC_TEXI2HTML_SPLIT = --prefix=index --split=section
+# --split=node --node-files makes that translated pages have
+# translated file names, that breaks.
+## WEB_TEXI2HTML_SPLIT = --prefix=index --split=node --node-files
+WEB_TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT)
+TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT)
+
+$(top-build-dir)/Documentation/$(outdir)/general/index.$(ISOLANG).html:\
+ TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT)
+$(top-build-dir)/Documentation/$(outdir)/general/index.$(ISOLANG).html:\
+ TEXI2HTML_SPLIT := $(WEB_TEXI2HTML_SPLIT)
+
+TEXI2HTML_INCLUDES += --I=. --I=$(src-dir) --I=$(outdir) $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR)
+TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_INIT) $(TEXI2HTML_LANG)
+TEXI2HTML = PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
+###########
TEXI2PDF_FLAGS += --batch $(DOCUMENTATION_INCLUDES)
+TEXI2PDF_FLAGS += -I $(LYS_OUTPUT_DIR)
ifdef QUIET_BUILD
TEXI2PDF_FLAGS += -q
error = code + ' ' + error
return (output, error)
+### Renamed files map to ensure continuity of file history
+## Map of new_name: old_name
+renames_map = {
+ 'application.tely': 'user/lilypond-program.tely',
+ 'notation.tely': 'user/lilypond.tely',
+ 'learning.tely': 'user/lilypond-learning.tely',
+ 'changes.tely': 'topdocs/NEWS.tely',
+}
+
+# FIXME: Hardcoded file names!?
+manuals_subdirectories_re = \
+ re.compile ('(application|automated-engraving|essay|general|learning|notation)/')
+
+def add_old_name (file_path):
+ for new_path in renames_map:
+ if file_path.endswith (new_path):
+ old_file_path = file_path.replace (new_path,
+ renames_map[new_path])
+ break
+ else:
+ if file_path.endswith ('macros.itexi'):
+ old_file_path = file_path.replace ('macros.itexi',
+ 'user/macros.itexi')
+ elif file_path.endswith ('.itely'):
+ old_file_path = manuals_subdirectories_re.sub ('user/',
+ file_path)
+ elif 'snippets/' in file_path:
+ old_file_path = file_path.replace ('snippets/',
+ '../input/lsr/')
+ else:
+ return file_path
+ return file_path + ' ' + old_file_path
+
revision_re = re.compile ('GIT [Cc]ommittish:\s+([a-f0-9]+)')
-vc_diff_cmd = 'git diff --patience -M %(color_flag)s %(revision)s %(upper_revision)s -- %(original)s | cat'
+vc_diff_cmd = 'git diff -M %(color_flag)s %(revision)s \
+%(upper_revision)s -- %(original_with_old_name)s | cat'
no_committish_fatal_error = """error: %s: no 'GIT committish: <hash>' found.
Please check the whole file against the original in English, then
fill in HEAD committish in the header.
color_flag = '--color --color-words'
else:
color_flag = '--no-color'
+ original_with_old_name = add_old_name (original)
c = vc_diff_cmd % vars ()
if verbose:
sys.stderr.write ('running: ' + c)
'notation': 'ruser',
'learning': 'rlearning',
'application': 'rprogram',
+ 'essay': 'ressay',
'snippets': 'rlsr',
'music-glossary': 'rglos',
- 'internals': 'rinternals' }
+ 'internals': 'rinternals',
+ }
</p>
</div>
'''
+
+web_footer = '''
+<div class="footer">
+</div>
+'''
+
footer_name_version = _doc ('This page is for %(package_name)s-%(package_version)s (%(branch_str)s).')
# ugh, must not have "_doc" in strings because it is naively replaced with "_" in hacked gettext process
footer_report_links = _doc ('Your <a href="%(suggest_Docs_url)s">suggestions for the documentation</a> are welcome, please report errors to our <a href="%(mail_address_url)s">bug list</a>.')
def source_links_replace (m, source_val):
return 'href="' + os.path.join (source_val, m.group (1)) + '"'
-splitted_docs_re = re.compile ('(Documentation/out-www/(notation|\
-music-glossary|application|general|learning|snippets))/')
-lily_snippets_re = re.compile ('(href|src)="(../lily-.*?|.*?[.]png)"')
+# More hardcoding, yay!
+splitted_docs_re = re.compile ('(Documentation/out-www/(automated-engraving|essay|notation|music-glossary|application|general|learning|snippets))/')
+lily_snippets_re = re.compile ('(href|src)="([0-9a-f]{2}/lily-.*?)"')
pictures_re = re.compile ('src="(pictures/.*?)"')
docindex_link_re = re.compile (r'href="index.html"')
### add footer
if footer_tag_re.search (s) == None:
- s = add_footer (s, footer_tag + footer)
+ if 'general' in file_name:
+ s = add_footer (s, footer_tag + web_footer)
+ else:
+ s = add_footer (s, footer_tag + footer)
available, missing = find_translations (prefix, lang_ext)
page_flavors = process_links (s, prefix, lang_ext, file_name, missing, target)
NOT_SMART = _ ("Not smart enough to convert %s")
-UPDATE_MANUALLY = _ ("Please refer to the manual for details, and update manually.")
+UPDATE_MANUALLY = _ ("Please refer to the manual for details, and update manually.")
FROM_TO = _ ( "%s has been replaced by %s")
_ ("Autobeaming rules have changed. override-auto-beam-setting and\n\
revert-auto-beam-setting have been eliminated. \\overrideBeamSettings has been\n\
added. BeatGrouping has been eliminated.\n\
-Different settings for vertical layout."))
+Different settings for vertical layout.\n\
+ly:system-start-text::print -> system-start-text::print\n\
+Beam #'thickness -> Beam #'beam-thickness\n\
+ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil"))
def conv(str):
if re.search("override-auto-beam-setting", str):
stderr_write ("\n")
stderr_write (NOT_SMART % _("override-auto-beam-setting.\n\
Autobeam settings are now reverted with \\revertBeamSettings.\n"))
stderr_write (UPDATE_MANUALLY)
- str = re.sub(r"\\set\s+#\'beatGrouping", r"\\setBeatGrouping", str)
- if re.search(r"(\w+\.beatGrouping)", str):
- stderr_write (NOT_SMART % _(".beatGrouping. \n\
+ str = re.sub(r"\\set\s+beatGrouping", r"\\setBeatGrouping", str)
+ if re.search(r"\w+\s*.\s*beatGrouping", str):
+ stderr_write (NOT_SMART % _("beatGrouping. \n\
beatGrouping with a specified context must now be accomplished with\n\
\\overrideBeamSettings.\n"))
stderr_write (UPDATE_MANUALLY)
stderr_write(NOT_SMART % _("alignment-offsets has been changed to alignment-distances: \
you must now specify the distances between staves rather than the offset of staves.\n"))
stderr_write(UPDATE_MANUALLY)
+ str = re.sub ('ly:(system-start-text::print|note-head::brew-ez-stencil)',
+ '\\1', str)
+ str = re.sub ('(\\bBeam\\s+#\')(?=thickness\\b)', '\\1beam-', str)
return str
# Guidelines to write rules (please keep this at the end of this file)
fr = LanguageDef ('fr', 'français', double_punct_char_sep=' ', html_filter = french_html_filter)
es = LanguageDef ('es', 'español')
de = LanguageDef ('de', 'deutsch')
+nl = LanguageDef ('nl', 'nederlands')
ja = LanguageDef ('ja', '日本語', enable_ly_identifier_l10n=False)
# Outdated or broken translations may be disabled
# (please run 'make doc-clean' before doing that):
#fr.enabled = False
-LANGUAGES = (site, fr, es, de, ja)
+LANGUAGES = (site, fr, es, de, nl, ja)
if __name__ == '__main__':
print ' '.join ([l.code for l in LANGUAGES if l.enabled and l.code != 'en'])
(define-public (postprocess-output paper-book module filename formats)
(let* ((completed (completize-formats formats))
- (base (string-regexp-substitute "\\.[a-z]+$" "" filename))
+ (base (dir-basename filename ".ps" ".eps"))
(intermediate (remove (lambda (x) (member x formats)) completed)))
-
(for-each (lambda (f)
((eval (string->symbol (format "convert-to-~a" f))
module) paper-book filename)) completed)
(if (ly:get-option 'delete-intermediate-files)
(for-each (lambda (f)
- (delete-file (string-append base "." f))) intermediate))))
+ (if (file-exists? f) (delete-file f)))
+ (map (lambda (x) (string-append base "." x)) intermediate)))))
(define-public (completize-formats formats)
(define new-fmts '())
;; in 4 4 (common) time:
;; default: end beams on beats
- ;; use beatLength for all except 32nd notes:
- ;; end beams with 32nd notes each 1 8 beat
+ ;; end beams with 8th notes each 1 2 beat
(((4 . 4) end) .
- ((* . (2 2))
- ((1 . 32) . (4 4 4 4
- 4 4 4 4))))
+ ((* . (1 1 1 1))
+ ((1 . 8) . (4 4))))
;; in 4 8 time:
;; default: group on 1 4 notes
(define-public (string-or-pair? x)
(or (string? x) (pair? x)))
+(define-public (cheap-list? x)
+ (or (pair? x) (null? x)))
+
+(define-public (list-or-symbol? x)
+ (or (cheap-list? x) (symbol? x)))
+
(define-public (scheme? x) #t)
(barCheckLastFail ,ly:moment? "Where in the measure did the last
barcheck fail?")
(beamMelismaBusy ,boolean? "Signal if a beam is present.")
- (breakableSeparationItem ,ly:grob? "The breakable items in this
-time step, for this staff.")
(busyGrobs ,list? "A queue of @code{(@var{end-moment} .
@var{GROB})} cons cells. This is for internal (C++) use only. This
property contains the grobs which are still busy (e.g. note heads,
"A right hand finger instruction."
'(digit-names))
-;;; todo: this is not typesetting info. Move to interpretation.
(ly:add-interface
- 'tablature-interface
- "An interface for any notes set in a tablature staff."
- '())
+ 'system-start-text-interface
+ "Text in front of the system."
+ '(long-text self-alignment-X self-alignment-Y text))
(ly:add-interface
'trill-spanner-interface
(thickness ,number? "Line thickness, generally measured in
@code{line-thickness}.")
(thin-kern ,number? "The space after a hair-line in a bar line.")
- (threshold ,number-pair? "@code{(@var{min} . @var{max})}, where
-@var{min} and @var{max} are dimensions in staff space.")
(tie-configuration ,list? "List of @code{(@var{position} .
@var{dir})} pairs, indicating the desired tie configuration, where
@var{position} is the offset from the center of the staff in staff
empty in a particular staff, then that staff is erased.")
(left-items ,ly:grob-array? "DOCME")
- (left-neighbors ,ly:grob-array? "An array of @code{spacing-wishes} grobs
-that are close to the current column.
-
-The closest @code{spacing-wishes} determine the actual distances between the
-columns.")
+ (left-neighbor ,ly:grob? "The right-most column that has a spacing-wish
+for this column.")
(normal-stems ,ly:grob-array? "An array of visible stems.")
(note-columns ,ly:grob-array? "An array of @code{NoteColumn} grobs.")
(rest-collision ,ly:grob? "A rest collision that a rest is in.")
(rests ,ly:grob-array? "An array of rest objects.")
(right-items ,ly:grob-array? "DOCME")
- (right-neighbors ,ly:grob-array? "See @code{left-neighbors}.")
+ (right-neighbor ,ly:grob? "See @code{left-neighbor}.")
(separation-item ,ly:grob? "A pointer to a @code{SeparationItem}
object.")
(least-squares-dy ,number? "The ideal beam slope, without damping.")
+ (maybe-loose ,boolean? "Used to mark a breakable column that is
+loose if and only if it is in the middle of a line.")
(meta ,list? "Provide meta information. It is an alist with the
entries @code{name} and @code{interfaces}.")
(minimum-distances ,list? "A list of rods that have the format
(skyline-distance ,number? "The distance between this staff and the
next one, as determined by a skyline algorithm.")
(stem-info ,pair? "A cache of stem parameters.")
+ (system-Y-offset ,number? "The Y-offset (relative to the bottom of the
+top-margin of the page) of the system to which this staff belongs.")
(use-breve-rest ,boolean? "Use breve rests for measures longer
than a whole rest.")
(BarNumber
. (
+ (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
;; want the bar number before the clef at line start.
(break-align-symbols . (left-edge staff-bar))
(padding . 0.2)
(positioning-done . ,ly:align-interface::align-to-minimum-distances)
(stacking-dir . ,DOWN)
- (threshold . (2 . 1000))
(Y-extent . ,ly:axis-group-interface::height)
(meta . ((class . Spanner)
(interfaces . (align-interface
;; rather long.
(auto-knee-gap . 5.5)
+ (beam-thickness . 0.48) ; in staff-space
;; We have some unreferenced problems here.
;;
(shorten . ,ly:beam::calc-stem-shorten)
(stencil . ,ly:beam::print)
- ;; TODO: should be in SLT.
- (thickness . 0.48) ; in staff-space
-
(meta . ((class . Spanner)
(object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems)))
(interfaces . (beam-interface
(padding . 0.3)
(self-alignment-X . ,CENTER)
(self-alignment-Y . ,CENTER)
- (stencil . ,ly:system-start-text::print)
- (X-offset . ,ly:side-position-interface::x-aligned-side)
+ (stencil . ,system-start-text::print)
+ (X-offset . ,system-start-text::calc-x-offset)
+ (Y-offset . ,system-start-text::calc-y-offset)
(meta . ((class . Spanner)
(interfaces . (font-interface
self-alignment-interface
(MetronomeMark
. (
+ (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
(direction . ,UP)
(extra-spacing-width . (+inf.0 . -inf.0))
(outside-staff-priority . 1000)
(RehearsalMark
. (
+ (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
(baseline-skip . 2)
(break-align-symbols . (staff-bar clef))
(break-visibility . ,end-of-line-invisible)
(VoltaBracketSpanner
. (
+ (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
(axes . (,Y))
(direction . ,UP)
(no-alignment . ,#t)
- (outside-staff-priority . 100)
+ (outside-staff-priority . 600)
(padding . 1)
(side-axis . ,Y)
(X-extent . ,ly:axis-group-interface::width)
\\markup { \\eyeglasses }
@end lilypond"
(interpret-markup layout props
- (make-with-dimensions-markup '(-0.61 . 3.21) '(0.21 . 2.4)
+ (make-with-dimensions-markup '(-0.61 . 3.22) '(0.2 . 2.41)
(make-postscript-markup eyeglassesps))))
(define-builtin-markup-command (left-brace layout props size)
(else
(ly:warning (_ "do not know how to embed font ~s ~s ~s")
name file-name font))))))
-
+
(define (load-fonts paper)
(let* ((fonts (ly:paper-fonts paper))
(display "stroke grestore\n%%Trailer\n%%EOF\n" port)
(ly:outputter-close outputter)))
-(define (clip-systems-to-region basename paper systems region do-pdf)
+(define (clip-systems-to-region basename paper systems region do-pdf do-png)
(let* ((extents-system-pairs
(filtered-map (lambda (paper-system)
(let* ((x-ext (system-clipped-x-extent
(ly:get-option 'include-eps-fonts)
bbox)
(if do-pdf
- (postscript->pdf 0 0 (format "~a.eps" filename)))))
+ (postscript->pdf 0 0 (format "~a.eps" filename)))
+ (if do-png
+ (postscript->png (ly:get-option 'resolution) 0 0
+ (format "~a.eps" filename)))))
extents-system-pairs)))
(define-public (clip-system-EPSes basename paper-book)
(define do-pdf
(member "pdf" (ly:output-formats)))
+ (define do-png
+ (member "png" (ly:output-formats)))
(define (clip-score-systems basename systems)
(let* ((layout (ly:grob-layout (paper-system-system-grob (car systems))))
(rhythmic-location->file-string (car region))
(rhythmic-location->file-string (cdr region)))
layout systems region
- do-pdf))
+ do-pdf do-png))
regions)))
;; partition in system lists sharing their layout blocks
-;;;; framework-scm.scm
+;;;; framework-scm.scm -- output full-page stencil expressions
-(define-module (scm framework-scm)
- #:export (output-framework)
- )
+(define-module (scm framework-scm))
-(use-modules (ice-9 regex)
- (ice-9 string-fun)
- (guile)
- (srfi srfi-1)
- (ice-9 pretty-print)
- (srfi srfi-13)
- (scm page)
- (lily))
+(use-modules
+ (ice-9 regex)
+ (ice-9 string-fun)
+ (guile)
+ (srfi srfi-1)
+ (ice-9 pretty-print)
+ (srfi srfi-13)
+ (scm page)
+ (lily))
-(define-public (output-framework basename book scopes fields )
- (let*
- ((file (open-output-file (format #f "~a.scm" basename))))
+(define format ergonomic-simple-format)
+
+(define-public (output-framework basename book scopes fields)
+ (let* ((file (open-output-file (format "~a.scm" basename))))
(display ";;Creator: LilyPond\n" file)
(display ";; raw SCM output\n" file)
-
- (for-each
- (lambda (page)
- (display
- ";;;;;;;;;;;;;;;;;;;;;;;;;;\n;;;PAGE\n" file)
-; (pretty-print (ly:stencil-expr page) file)
- (write (ly:stencil-expr page) file)
- )
- (map page-stencil (ly:paper-book-pages book)))))
+
+ (for-each
+ (lambda (page)
+ (display ";;;;;;;;;;;;;;;;;;;;;;;;;;\n;;;PAGE\n" file)
+ ;; The following two lines are alternates
+ ;(pretty-print (ly:stencil-expr page) file)
+ (write (ly:stencil-expr page) file)
+ )
+ (map page-stencil (ly:paper-book-pages book)))))
(define-public output-classic-framework output-framework)
-
(define-public (convert-to-ps . args) #t)
(define-public (convert-to-pdf . args) #t)
(define-public (convert-to-png . args) #t)
-;;
-;; framework-svg.scm -- structure for SVG output
+;;;; framework-svg.scm -- structure for SVG output
;;;;
;;;; source file of the GNU LilyPond music typesetter
-;;;;
+;;;;
;;;; (c) 2004--2009 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Patrick McCarty <pnorcks@gmail.com>
-(define-module (scm framework-svg))
+;;;; Recommendations:
+;;;; http://www.w3.org/TR/SVG11/
+;;;; http://www.w3.org/TR/SVGTiny12/
+;;;;
+;;;; Working draft:
+;;;; http://www.w3.org/TR/SVGPrint/ -- for <pageSet> and <page>
-(use-modules (guile)
- (lily)
- (scm page)
- (scm output-svg))
+;;;; TODO:
+;;;; * Once <pageSet> and <page> are supported by Inkscape and
+;;;; other user agents, add a -d option (-dsvg-multiple-page)
+;;;; that will create a single SVG file containing all pages
+;;;; of output. --pmccarty
-(use-modules (srfi srfi-1)
- (srfi srfi-2)
- (srfi srfi-13)
- (ice-9 regex))
+(define-module (scm framework-svg))
+
+(use-modules
+ (guile)
+ (lily)
+ (scm page)
+ (scm output-svg)
+ (srfi srfi-1)
+ (srfi srfi-2)
+ (srfi srfi-13)
+ (ice-9 regex))
(define format ergonomic-simple-format)
-(define-public (output-framework basename book scopes fields)
- (let* ((filename (format "~a.svg" basename))
- (outputter (ly:make-paper-outputter (open-file filename "wb")
- (ly:get-option 'backend)))
+(define (svg-header paper unit-length)
+ (let* ((lookup (lambda (x) (ly:output-def-lookup paper x)))
+ (output-scale (* lily-unit->mm-factor unit-length))
+ (paper-width (lookup 'paper-width))
+ (paper-height (lookup 'paper-height))
+ (page-width (* output-scale paper-width))
+ (page-height (* output-scale paper-height)))
+
+ `((xmlns . "http://www.w3.org/2000/svg")
+ (xmlns:xlink . "http://www.w3.org/1999/xlink")
+ (version . "1.2")
+ (width . ,(ly:format "~2fmm" page-width))
+ (height . ,(ly:format "~2fmm" page-height))
+ (viewBox . ,(ly:format "0 0 ~4f ~4f"
+ paper-width paper-height)))))
+
+(define (dump-page paper filename page page-number page-count)
+ (let* ((outputter (ly:make-paper-outputter (open-file filename "wb") 'svg))
(dump (lambda (str) (display str (ly:outputter-port outputter))))
- (paper (ly:paper-book-paper book))
- (unit-length (ly:output-def-lookup paper 'output-scale))
- (output-scale (* lily-unit->mm-factor
- unit-length))
+ (unit-length (ly:output-def-lookup paper 'output-scale)))
+
+ (dump (apply eo 'svg (svg-header paper unit-length)))
+ (dump (comment (format "Page: ~S/~S" page-number page-count)))
+ (ly:outputter-output-scheme outputter
+ `(begin (set! lily-unit-length ,unit-length)
+ ""))
+ (ly:outputter-dump-stencil outputter page)
+ (dump (ec 'svg))
+ (ly:outputter-close outputter)))
+
+(define (output-framework basename book scopes fields)
+ (let* ((paper (ly:paper-book-paper book))
(page-stencils (map page-stencil (ly:paper-book-pages book)))
- (landscape? (eq? (ly:output-def-lookup paper 'landscape) #t))
(page-number (1- (ly:output-def-lookup paper 'first-page-number)))
(page-count (length page-stencils))
- (paper-width (ly:output-def-lookup paper 'paper-width))
- (paper-height (ly:output-def-lookup paper 'paper-height))
- (page-width (* output-scale paper-width))
- (page-height (* output-scale paper-height))
- (page-set? (or (> page-count 1) landscape?)))
+ (filename "")
+ (file-suffix (lambda (num)
+ (if (= page-count 1) "" (format "-page-~a" num)))))
- (ly:outputter-output-scheme outputter
- `(begin (set! lily-unit-length ,unit-length) ""))
- (dump (eo 'svg
- '(xmlns . "http://www.w3.org/2000/svg")
- '(xmlns:xlink . "http://www.w3.org/1999/xlink")
- '(version . "1.2")
- `(width . ,(ly:format "~2fmm" page-width))
- `(height . ,(ly:format "~2fmm" page-height))
- `(viewBox . ,(ly:format "0 0 ~4f ~4f"
- paper-width paper-height))))
-
- (dump
- (string-append
- ;; FIXME: only use pages if there are more than one, pageSet is
- ;; not supported by all SVG applications yet.
- (if page-set? (eo 'pageSet) "")))
-
(for-each
- (lambda (page)
- (set! page-number (1+ page-number))
- (dump-page outputter page page-number page-count landscape? page-set?))
- page-stencils)
-
- (if page-set? (eo 'pageSet) "")
- (dump
- (string-append
- (if page-set? (ec 'pageSet) "")
- (ec 'svg)))
-
- (ly:outputter-close outputter)
- ))
-
-(define (dump-page outputter page page-number page-count landscape? page-set?)
- (define (dump str) (display str (ly:outputter-port outputter)))
-
- (dump (comment (format "Page: ~S/~S" page-number page-count)))
- (if (or landscape? page-set?)
- (dump
- (if landscape?
- (eo 'page '(page-orientation . "270"))
- (eo 'page))))
-
- (ly:outputter-dump-stencil outputter page)
- (if (or landscape? page-set?)
- (dump (ec 'page))))
+ (lambda (page)
+ (set! page-number (1+ page-number))
+ (set! filename (format "~a~a.svg"
+ basename
+ (file-suffix page-number)))
+ (dump-page paper filename page page-number page-count))
+ page-stencils)))
. QUANT) pairs, where QUANT is -1 (hang), 0 (center), 1 (sit) or -2/ 2 (inter)
"
- (let* ((thick (ly:grob-property beam 'thickness))
+ (let* ((thick (ly:grob-property beam 'beam-thickness))
(layout (ly:grob-layout beam))
(lthick (ly:output-def-lookup layout 'line-thickness))
(staff-thick lthick) ; fixme.
;;;; lily-library.scm -- utilities
;;;;
;;;; source file of the GNU LilyPond music typesetter
-;;;;
+;;;;
;;;; (c) 1998--2009 Jan Nieuwenhuizen <janneke@gnu.org>
;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; moments
-(define-public ZERO-MOMENT (ly:make-moment 0 1))
+(define-public ZERO-MOMENT (ly:make-moment 0 1))
(define-public (moment-min a b)
(if (ly:moment<? a b) a b))
+(define-public (moment<=? a b)
+ (or (equal? a b)
+ (ly:moment<? a b)))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; arithmetic
(define-public (average x . lst)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; parser <-> output hooks.
-
+
(define-public (collect-bookpart-for-book parser book-part)
"Toplevel book-part handler"
(define (add-bookpart book-part)
(define-public (scorify-music music parser)
"Preprocess MUSIC."
-
+
(for-each (lambda (func)
(set! music (func music parser)))
toplevel-music-functions)
(hash-fold (lambda (k v acc) (acons k v acc))
'() t))
-;; todo: code dup with C++.
+;; todo: code dup with C++.
(define-safe-public (alist->hash-table lst)
"Convert alist to table"
(let ((m (make-hash-table (length lst))))
(define (split-list lst n)
"Split LST in N equal sized parts"
-
+
(define (helper todo acc-vector k)
(if (null? todo)
acc-vector
(begin
(if (< k 0)
(set! k (+ n k)))
-
+
(vector-set! acc-vector k (cons (car todo) (vector-ref acc-vector k)))
(helper (cdr todo) acc-vector (1- k)))))
(reverse (helper lst '() 1)))
-
+
(define-public (list-join lst intermediate)
"put INTERMEDIATE between all elts of LST."
(define (flatten-list lst)
- "Unnest LST"
+ "Unnest LST"
(if (null? lst)
'()
(if (pair? (car lst))
(define-public (uniq-list lst)
"Uniq LST, assuming that it is sorted. Uses equal? for comparisons."
- (reverse!
+ (reverse!
(fold (lambda (x acc)
(if (null? acc)
(list x)
(define-public (offset-add a b)
(cons (+ (car a) (car b))
- (+ (cdr a) (cdr b))))
+ (+ (cdr a) (cdr b))))
(define-public (offset-flip-y o)
(cons (car o) (- (cdr o))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; intervals
+(define-public empty-interval '(+inf.0 . -inf.0))
+
(define-public (interval-length x)
"Length of the number-pair X, when an interval"
(max 0 (- (cdr x) (car x))))
(define-public (interval-index interval dir)
"Interpolate INTERVAL between between left (DIR=-1) and right (DIR=+1)"
-
+
(* (+ (interval-start interval) (interval-end interval)
(* dir (- (interval-end interval) (interval-start interval))))
0.5))
(inf? (cdr i))
(> (car i) (cdr i)))))
+(define-public (add-point interval p)
+ (cons (min (interval-start interval) p)
+ (max (interval-end interval) p)))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; string
(equal? suffix (substring s
(max 0 (- (string-length s) (string-length suffix)))
(string-length s))))
-
+
(define-public (string-startswith s prefix)
(equal? prefix (substring s 0 (min (string-length s) (string-length prefix)))))
-
+
(define-public (string-encode-integer i)
(cond
((= i 0) "o")
(fold-right conc #f lst))
(define-public (string-regexp-substitute a b str)
- (regexp-substitute/global #f a str 'pre b 'post))
+ (regexp-substitute/global #f a str 'pre b 'post))
(define (regexp-split str regex)
(define matches '())
(string<? (symbol->string (car lst)) (symbol->string (car r))))
;;
-;; don't confuse users with #<procedure .. > syntax.
-;;
+;; don't confuse users with #<procedure .. > syntax.
+;;
(define-public (scm->string val)
(if (and (procedure? val)
(symbol? (procedure-name val)))
(define-public (version-not-seen-message input-file-name)
(ly:message
- "~a:0: ~a ~a"
+ "~a:0: ~a ~a"
input-file-name
(_ "warning:")
(format #f
(define-public (old-relative-not-used-message input-file-name)
(ly:message
- "~a:0: ~a ~a"
+ "~a:0: ~a ~a"
input-file-name
(_ "warning:")
(_ "old relative compatibility not used")))
'pop-first #t))
(define-public (make-grob-property-override grob gprop val)
- "Make a Music expression that sets GPROP to VAL in GROB. Does a pop first,
-i.e. this is not an override"
+ "Make a Music expression that overrides GPROP to VAL in GROB."
(make-music 'OverrideProperty
'symbol grob
'grob-property gprop
(Voice Dots font-size -3)
(Voice Stem length-fraction 0.8)
(Voice Stem no-stem-extend #t)
- (Voice Beam thickness 0.384)
+ (Voice Beam beam-thickness 0.384)
(Voice Beam length-fraction 0.8)
(Voice Accidental font-size -4)
(Voice AccidentalCautionary font-size -4)
(make-music type
'span-direction span-dir))
-(define-public (set-mus-properties! m alist)
+(define-public (override-head-style heads style)
+ "Override style for @var{heads} to @var{style}."
+ (make-sequential-music
+ (if (pair? heads)
+ (map (lambda (h)
+ (make-grob-property-override h 'style style))
+ heads)
+ (list (make-grob-property-override heads 'style style)))))
+
+(define-public (revert-head-style heads)
+ "Revert style for @var{heads}."
+ (make-sequential-music
+ (if (pair? heads)
+ (map (lambda (h)
+ (make-grob-property-revert h 'style))
+ heads)
+ (list (make-grob-property-revert heads 'style)))))
+
+(define-public (style-note-heads heads style music)
+ "Set @var{style} for all @var{heads} in @var{music}. Works both
+inside of and outside of chord construct."
+ ;; are we inside a <...>?
+ (if (eq? (ly:music-property music 'name) 'NoteEvent)
+ ;; yes -> use a tweak
+ (begin
+ (set! (ly:music-property music 'tweaks)
+ (acons 'style style (ly:music-property music 'tweaks)))
+ music)
+ ;; not in <...>, so use overrides
+ (make-sequential-music
+ (list
+ (override-head-style heads style)
+ music
+ (revert-head-style heads)))))
+
+ (define-public (set-mus-properties! m alist)
"Set all of ALIST as properties of M."
(if (pair? alist)
(begin
;;;; output-lib.scm -- implement Scheme output helper functions
;;;;
;;;; source file of the GNU LilyPond music typesetter
-;;;;
+;;;;
;;;; (c) 1998--2009 Jan Nieuwenhuizen <janneke@gnu.org>
;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; general
+
(define-public (grob::has-interface grob iface)
(memq iface (ly:grob-interfaces grob)))
+(define-public (grob::is-live? grob)
+ (pair? (ly:grob-basic-properties grob)))
+
(define-public (make-stencil-boxer thickness padding callback)
"Return function that adds a box around the grob passed as argument."
(lambda (grob)
-
(box-stencil (callback grob) thickness padding)))
(define-public (make-stencil-circler thickness padding callback)
"Return function that adds a circle around the grob passed as argument."
-
+
(lambda (grob) (circle-stencil (callback grob) thickness padding)))
(define-public (print-circled-text-callback grob)
(grob-interpret-markup grob (make-circle-markup
- (ly:grob-property grob 'text))
- ))
+ (ly:grob-property grob 'text))))
(define-public (event-cause grob)
- (let*
- ((cause (ly:grob-property grob 'cause)))
-
+ (let ((cause (ly:grob-property grob 'cause)))
+
(cond
((ly:stream-event? cause) cause)
((ly:grob? cause) (event-cause cause))
(else #f))))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; tablature
-
-;; The TabNoteHead tablatureFormat callback.
-;; Compute the text grob-property
-(define-public (fret-number-tablature-format string
- context event)
- (let*
- ((tuning (ly:context-property context 'stringTunings))
- (pitch (ly:event-property event 'pitch))
- (is-harmonic (apply
- functional-or
- (map
- (lambda (ev)
- (eq? 'harmonic-event (ly:event-property ev 'class)))
- (ly:event-property event 'articulations)))))
-
-
- (make-whiteout-markup
- (make-vcenter-markup
- (format
- "~a"
- (- (ly:pitch-semitones pitch)
- (list-ref tuning
- ;; remove 1 because list index starts at 0 and guitar string at 1.
- (- string 1))))))
- ))
-
-;; The 5-string banjo has got a extra string, the fifth (duh), wich
-;; starts at the fifth fret on the neck. Frets on the fifth string
-;; are referred to relative to the other frets:
-;; the "first fret" on the fifth string is really the sixth fret
-;; on the banjo neck.
-;; We solve this by defining a new fret-number-tablature function:
-(define-public (fret-number-tablature-format-banjo string
- context event)
- (let*
- ((tuning (ly:context-property context 'stringTunings))
- (pitch (ly:event-property event 'pitch))
- )
- (make-whiteout-markup
- (make-vcenter-markup
- (let ((fret (- (ly:pitch-semitones pitch) (list-ref tuning (- string 1)))))
- (number->string (cond
- ((and (> fret 0) (= string 5))
- (+ fret 5))
- (else fret))))))
- ))
+(define-public (grob-interpret-markup grob text)
+ (let* ((layout (ly:grob-layout grob))
+ (defs (ly:output-def-lookup layout 'text-font-defaults))
+ (props (ly:grob-alist-chain grob defs)))
+
+ (ly:text-interface::interpret-markup layout props text)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; note heads
-
(define-public (stem::calc-duration-log grob)
(ly:duration-log
(ly:event-property (event-cause grob) 'duration)))
(define-public (note-head::calc-duration-log grob)
- (min 2
+ (min 2
(ly:duration-log
(ly:event-property (event-cause grob) 'duration))))
(ly:event-property (event-cause grob) 'duration)))
(define-public (dots::calc-staff-position grob)
- (let*
- ((head (ly:grob-parent grob Y))
- (log (ly:grob-property head 'duration-log)))
+ (let* ((head (ly:grob-parent grob Y))
+ (log (ly:grob-property head 'duration-log)))
(cond
((or (not (grob::has-interface head 'rest-interface))
- (not (integer? log))) 0)
+ (not (integer? log))) 0)
((= log 7) 4)
((> log 4) 3)
((= log 0) -1)
((= log -1) 1)
(else 0))))
-(define (note-head::calc-tablature-stem-attachment grob)
- (cons 0.0 1.35))
-
-
-
-;; silly, use alist?
+;; silly, use alist?
(define-public (note-head::calc-glyph-name grob)
- (let*
- ((style (ly:grob-property grob 'style))
- (log (min 2 (ly:grob-property grob 'duration-log))))
-
+ (let ((style (ly:grob-property grob 'style))
+ (log (min 2 (ly:grob-property grob 'duration-log))))
+
(case style
;; "default" style is directly handled in note-head.cc as a
;; special case (HW says, mainly for performance reasons).
((harmonic) "0harmonic")
((harmonic-black) "2harmonic")
((harmonic-mixed) (if (<= log 1) "0harmonic"
- "2harmonic"))
- ((baroque)
+ "2harmonic"))
+ ((baroque)
;; Oops, I actually would not call this "baroque", but, for
;; backwards compatibility to 1.4, this is supposed to take
;; brevis, longa and maxima from the neo-mensural font and all
(string-append (number->string (max 0 log))
(symbol->string style)))))))
-;; TODO junk completely?
-(define (note-head-style->attachment-coordinates grob axis)
- "Return pair (X . Y), containing multipliers for the note head
-bounding box, where to attach the stem. e.g.: X==0 means horizontally
-centered, X==1 is at the right, X == -1 is at the left."
-
- '(1.0 . 0.0))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; bar numbers
-
-(define-public ((every-nth-bar-number-visible n) barnum) (= 0 (modulo barnum n)))
-
-(define-public ((modulo-bar-number-visible n m) barnum) (and (> barnum 1) (= m (modulo barnum n))))
-
-(define-public ((set-bar-number-visibility n) tr)
- (let* ((bn (ly:context-property tr 'currentBarNumber)))
- (ly:context-set-property! tr 'barNumberVisibility (modulo-bar-number-visible n (modulo bn n)))))
-
-(define-public (first-bar-number-invisible barnum) (> barnum 1))
-
-(define-public (all-bar-numbers-visible barnum) #t)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; percent repeat counters
-
-(define-public ((every-nth-repeat-count-visible n) count context) (= 0 (modulo count n)))
-
-(define-public (all-repeat-counts-visible count context) #t)
+(define-public (note-head::brew-ez-stencil grob)
+ (let* ((log (ly:grob-property grob 'duration-log))
+ (pitch (ly:event-property (event-cause grob) 'pitch))
+ (pitch-index (ly:pitch-notename pitch))
+ (note-names (ly:grob-property grob 'note-names))
+ (pitch-string (if (vector? note-names)
+ (vector-ref note-names pitch-index)
+ (string
+ (integer->char
+ (+ (modulo (+ pitch-index 2) 7)
+ (char->integer #\A))))))
+ (staff-space (ly:staff-symbol-staff-space grob))
+ (line-thickness (ly:staff-symbol-line-thickness grob))
+ (stem (ly:grob-object grob 'stem))
+ (stem-thickness (* (if (ly:grob? stem)
+ (ly:grob-property stem 'thickness)
+ 1.3)
+ line-thickness))
+ (radius (/ (+ staff-space line-thickness) 2))
+ (letter (markup #:center-align #:vcenter pitch-string))
+ (filled-circle (markup #:draw-circle radius 0 #t)))
+
+ (grob-interpret-markup
+ grob
+ (if (>= log 2)
+ (make-combine-markup
+ filled-circle
+ (make-with-color-markup white letter))
+ (make-combine-markup
+ (make-combine-markup
+ filled-circle
+ (make-with-color-markup white (make-draw-circle-markup
+ (- radius stem-thickness) 0 #t)))
+ letter)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; break visibility
(define-public end-of-line-visible #(#t #f #f))
(define-public all-invisible #(#f #f #f))
-(define-public spanbar-begin-of-line-invisible
- #(#t #f #f))
+(define-public spanbar-begin-of-line-invisible #(#t #f #f))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Bar lines.
;;
-;; How should a bar line behave at a break?
+;; How should a bar line behave at a break?
(define bar-glyph-alist
'((":|:" . (":|" . "|:"))
(":|.|:" . (":|" . "|:"))
(":|.:" . (":|" . "|:"))
("||:" . ("||" . "|:"))
- ("dashed" . ("dashed" . '()))
+ ("dashed" . ("dashed" . '()))
("|" . ("|" . ()))
("||:" . ("||" . "|:"))
("|s" . (() . "|"))
("|:" . ("|" . "|:"))
("|." . ("|." . ()))
-
+
;; hmm... should we end with a bar line here?
(".|" . ("|" . ".|"))
(":|" . (":|" . ()))
("'" . ("'" . ()))
("empty" . (() . ()))
("brace" . (() . "brace"))
- ("bracket" . (() . "bracket"))
- ))
+ ("bracket" . (() . "bracket"))))
(define-public (bar-line::calc-glyph-name grob)
- (let* (
- (glyph (ly:grob-property grob 'glyph))
+ (let* ((glyph (ly:grob-property grob 'glyph))
(dir (ly:item-break-dir grob))
(result (assoc glyph bar-glyph-alist))
(glyph-name (if (= dir CENTER)
glyph
- (if (and result (string? (index-cell (cdr result) dir)))
+ (if (and result
+ (string? (index-cell (cdr result) dir)))
(index-cell (cdr result) dir)
- #f)))
- )
+ #f))))
glyph-name))
(define-public (bar-line::calc-break-visibility grob)
(let* ((glyph (ly:grob-property grob 'glyph))
(result (assoc glyph bar-glyph-alist)))
+
(if result
(vector (string? (cadr result)) #t (string? (cddr result)))
- #(#f #f #f))))
-
+ all-invisible)))
(define-public (shift-right-at-line-begin g)
"Shift an item to the right, but only at the start of the line."
(number->string (ly:event-property (event-cause grob) 'denominator)))
(define-public (tuplet-number::calc-fraction-text grob)
- (let*
- ((ev (event-cause grob)))
+ (let ((ev (event-cause grob)))
- (format "~a:~a"
+ (format "~a:~a"
(ly:event-property ev 'denominator)
(ly:event-property ev 'numerator))))
-
-; a formatter function, which is simply a wrapper around an existing
-; tuplet formatter function. It takes the value returned by the given
-; function and appends a note of given length.
+;; a formatter function, which is simply a wrapper around an existing
+;; tuplet formatter function. It takes the value returned by the given
+;; function and appends a note of given length.
(define-public ((tuplet-number::append-note-wrapper function note) grob)
- (let* ((txt (if function (function grob) #f)))
- (if txt
- (markup txt #:fontsize -5 #:note note UP)
- (markup #:fontsize -5 #:note note UP))))
-
-; Print a tuplet denominator with a different number than the one derived from
-; the actual tuplet fraction
-(define-public ((tuplet-number::non-default-tuplet-denominator-text denominator) grob)
-(number->string (if denominator
- denominator
- (ly:event-property (event-cause grob) 'denominator))))
-
-; Print a tuplet fraction with different numbers than the ones derived from
-; the actual tuplet fraction
-(define-public ((tuplet-number::non-default-tuplet-fraction-text denominator numerator) grob)
+ (let ((txt (if function (function grob) #f)))
+
+ (if txt
+ (markup txt #:fontsize -5 #:note note UP)
+ (markup #:fontsize -5 #:note note UP))))
+
+;; Print a tuplet denominator with a different number than the one derived from
+;; the actual tuplet fraction
+(define-public ((tuplet-number::non-default-tuplet-denominator-text denominator)
+ grob)
+ (number->string (if denominator
+ denominator
+ (ly:event-property (event-cause grob) 'denominator))))
+
+;; Print a tuplet fraction with different numbers than the ones derived from
+;; the actual tuplet fraction
+(define-public ((tuplet-number::non-default-tuplet-fraction-text
+ denominator numerator) grob)
(let* ((ev (event-cause grob))
(den (if denominator denominator (ly:event-property ev 'denominator)))
(num (if numerator numerator (ly:event-property ev 'numerator))))
- (format "~a:~a" den num)))
-; Print a tuplet fraction with note durations appended to the numerator and the
-; denominator
-(define-public ((tuplet-number::fraction-with-notes denominatornote numeratornote) grob)
+ (format "~a:~a" den num)))
+
+;; Print a tuplet fraction with note durations appended to the numerator and the
+;; denominator
+(define-public ((tuplet-number::fraction-with-notes
+ denominatornote numeratornote) grob)
(let* ((ev (event-cause grob))
(denominator (ly:event-property ev 'denominator))
(numerator (ly:event-property ev 'numerator)))
- ((tuplet-number::non-default-fraction-with-notes denominator denominatornote numerator numeratornote) grob)))
-; Print a tuplet fraction with note durations appended to the numerator and the
-; denominator
-(define-public ((tuplet-number::non-default-fraction-with-notes denominator denominatornote numerator numeratornote) grob)
+ ((tuplet-number::non-default-fraction-with-notes
+ denominator denominatornote numerator numeratornote) grob)))
+
+;; Print a tuplet fraction with note durations appended to the numerator and the
+;; denominator
+(define-public ((tuplet-number::non-default-fraction-with-notes
+ denominator denominatornote numerator numeratornote) grob)
(let* ((ev (event-cause grob))
(den (if denominator denominator (ly:event-property ev 'denominator)))
(num (if numerator numerator (ly:event-property ev 'numerator))))
- (make-concat-markup (list
- (make-simple-markup (format "~a" den))
- (markup #:fontsize -5 #:note denominatornote UP)
- (make-simple-markup " : ")
- (make-simple-markup (format "~a" num))
- (markup #:fontsize -5 #:note numeratornote UP)))))
+
+ (make-concat-markup (list
+ (make-simple-markup (format "~a" den))
+ (markup #:fontsize -5 #:note denominatornote UP)
+ (make-simple-markup " : ")
+ (make-simple-markup (format "~a" num))
+ (markup #:fontsize -5 #:note numeratornote UP)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-public darkmagenta '(0.5 0.0 0.5))
(define-public darkyellow '(0.5 0.5 0.0))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; key signature
-
-(define-public (key-signature-interface::alteration-position step alter c0-position)
+(define-public (key-signature-interface::alteration-position step alter
+ c0-position)
;; TODO: memoize - this is mostly constant.
-
+
;; fes, ges, as and bes typeset in lower octave
(define FLAT_TOP_PITCH 2)
-
+
;; ais and bis typeset in lower octave
(define SHARP_TOP_PITCH 4)
(if (pair? step)
- (+ (cdr step) (* (car step) 7) c0-position)
- (let*
- ((from-bottom-pos (modulo (+ 4 49 c0-position) 7))
- (p step)
- (c0 (- from-bottom-pos 4)))
-
+ (+ (cdr step) (* (car step) 7) c0-position)
+ (let* ((from-bottom-pos (modulo (+ 4 49 c0-position) 7))
+ (p step)
+ (c0 (- from-bottom-pos 4)))
+
(if
- (or (and (< alter 0) (or (> p FLAT_TOP_PITCH) (> (+ p c0) 4)) (> (+ p c0) 1))
- (and (> alter 0) (or (> p SHARP_TOP_PITCH) (> (+ p c0) 5)) (> (+ p c0) 2))
- )
+ (or (and (< alter 0)
+ (or (> p FLAT_TOP_PITCH) (> (+ p c0) 4)) (> (+ p c0) 1))
+ (and (> alter 0)
+ (or (> p SHARP_TOP_PITCH) (> (+ p c0) 5)) (> (+ p c0) 2)))
- ;; Typeset below c_position
+ ;; Typeset below c_position
(set! p (- p 7)))
;; Provide for the four cases in which there's a glitch
;; it's a hack, but probably not worth
;; the effort of finding a nicer solution.
- ;; --dl.
+ ;; --dl.
(cond
((and (= c0 2) (= p 3) (> alter 0))
(set! p (- p 7)))
;; accidentals
(define-public (accidental-interface::calc-alteration grob)
- (ly:pitch-alteration (ly:event-property (event-cause grob) 'pitch)))
-
+ (ly:pitch-alteration (ly:event-property (event-cause grob) 'pitch)))
(define-public cancellation-glyph-name-alist
'((0 . "accidentals.natural")))
(define-public standard-alteration-glyph-name-alist
- '(
- ;; ordered for optimal performance.
- (0 . "accidentals.natural")
- (-1/2 . "accidentals.flat")
- (1/2 . "accidentals.sharp")
-
- (1 . "accidentals.doublesharp")
- (-1 . "accidentals.flatflat")
-
- (3/4 . "accidentals.sharp.slashslash.stemstemstem")
- (1/4 . "accidentals.sharp.slashslash.stem")
- (-1/4 . "accidentals.mirroredflat")
- (-3/4 . "accidentals.mirroredflat.flat")
- ))
+ '(
+ ;; ordered for optimal performance.
+ (0 . "accidentals.natural")
+ (-1/2 . "accidentals.flat")
+ (1/2 . "accidentals.sharp")
+
+ (1 . "accidentals.doublesharp")
+ (-1 . "accidentals.flatflat")
+
+ (3/4 . "accidentals.sharp.slashslash.stemstemstem")
+ (1/4 . "accidentals.sharp.slashslash.stem")
+ (-1/4 . "accidentals.mirroredflat")
+ (-3/4 . "accidentals.mirroredflat.flat")))
;; FIXME: standard vs default, alteration-FOO vs FOO-alteration
-(define-public alteration-default-glyph-name-alist standard-alteration-glyph-name-alist)
+(define-public alteration-default-glyph-name-alist
+ standard-alteration-glyph-name-alist)
(define-public makam-alteration-glyph-name-alist
- '((1 . "accidentals.doublesharp")
- (8/9 . "accidentals.sharp.slashslashslash.stemstem")
- (5/9 . "accidentals.sharp.slashslashslash.stem")
- (4/9 . "accidentals.sharp")
- (1/9 . "accidentals.sharp.slashslash.stem")
- (0 . "accidentals.natural")
- (-1/9 . "accidentals.mirroredflat")
- (-4/9 . "accidentals.flat.slash")
- (-5/9 . "accidentals.flat")
- (-8/9 . "accidentals.flat.slashslash")
- (-1 . "accidentals.flatflat")
- ))
-
+ '((1 . "accidentals.doublesharp")
+ (8/9 . "accidentals.sharp.slashslashslash.stemstem")
+ (5/9 . "accidentals.sharp.slashslashslash.stem")
+ (4/9 . "accidentals.sharp")
+ (1/9 . "accidentals.sharp.slashslash.stem")
+ (0 . "accidentals.natural")
+ (-1/9 . "accidentals.mirroredflat")
+ (-4/9 . "accidentals.flat.slash")
+ (-5/9 . "accidentals.flat")
+ (-8/9 . "accidentals.flat.slashslash")
+ (-1 . "accidentals.flatflat")))
+
(define-public alteration-hufnagel-glyph-name-alist
- '((-1/2 . "accidentals.hufnagelM1")
- (0 . "accidentals.vaticana0")
- (1/2 . "accidentals.mensural1")))
+ '((-1/2 . "accidentals.hufnagelM1")
+ (0 . "accidentals.vaticana0")
+ (1/2 . "accidentals.mensural1")))
(define-public alteration-medicaea-glyph-name-alist
- '((-1/2 . "accidentals.medicaeaM1")
- (0 . "accidentals.vaticana0")
- (1/2 . "accidentals.mensural1")))
+ '((-1/2 . "accidentals.medicaeaM1")
+ (0 . "accidentals.vaticana0")
+ (1/2 . "accidentals.mensural1")))
(define-public alteration-vaticana-glyph-name-alist
- '((-1/2 . "accidentals.vaticanaM1")
- (0 . "accidentals.vaticana0")
- (1/2 . "accidentals.mensural1")))
+ '((-1/2 . "accidentals.vaticanaM1")
+ (0 . "accidentals.vaticana0")
+ (1/2 . "accidentals.mensural1")))
(define-public alteration-mensural-glyph-name-alist
- '((-1/2 . "accidentals.mensuralM1")
- (0 . "accidentals.vaticana0")
- (1/2 . "accidentals.mensural1")))
+ '((-1/2 . "accidentals.mensuralM1")
+ (0 . "accidentals.vaticana0")
+ (1/2 . "accidentals.mensural1")))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(list lp rp)))
-
-(define-public (grob-interpret-markup grob text)
- (let*
- ((layout (ly:grob-layout grob))
- (defs (ly:output-def-lookup layout 'text-font-defaults))
- (props (ly:grob-alist-chain grob defs)))
-
- (ly:text-interface::interpret-markup
- layout props text)))
-
(define-public (parentheses-item::calc-angled-bracket-stencils grob)
- (let* (
- (font (ly:grob-default-font grob))
- (lp (ly:stencil-aligned-to (ly:stencil-aligned-to (grob-interpret-markup grob (ly:wide-char->utf-8 #x2329))
- Y CENTER) X RIGHT))
- (rp (ly:stencil-aligned-to (ly:stencil-aligned-to (grob-interpret-markup grob (ly:wide-char->utf-8 #x232A))
- Y CENTER) X LEFT))
- )
+ (let* ((font (ly:grob-default-font grob))
+ (lp (ly:stencil-aligned-to (ly:stencil-aligned-to
+ (grob-interpret-markup
+ grob
+ (ly:wide-char->utf-8 #x2329))
+ Y CENTER)
+ X RIGHT))
+ (rp (ly:stencil-aligned-to (ly:stencil-aligned-to
+ (grob-interpret-markup
+ grob
+ (ly:wide-char->utf-8 #x232A))
+ Y CENTER)
+ X LEFT)))
(list (stencil-whiteout lp)
(stencil-whiteout rp))))
(define (parenthesize-elements grob . rest)
- (let*
- ((refp (if (null? rest)
- grob
- (car rest)))
- (elts (ly:grob-object grob 'elements))
- (x-ext (ly:relative-group-extent elts refp X))
- (stencils (ly:grob-property grob 'stencils))
- (lp (car stencils))
- (rp (cadr stencils))
- (padding (ly:grob-property grob 'padding 0.1)))
-
+ (let* ((refp (if (null? rest)
+ grob
+ (car rest)))
+ (elts (ly:grob-object grob 'elements))
+ (x-ext (ly:relative-group-extent elts refp X))
+ (stencils (ly:grob-property grob 'stencils))
+ (lp (car stencils))
+ (rp (cadr stencils))
+ (padding (ly:grob-property grob 'padding 0.1)))
+
(ly:stencil-add
(ly:stencil-translate-axis lp (- (car x-ext) padding) X)
- (ly:stencil-translate-axis rp (+ (cdr x-ext) padding) X))
- ))
+ (ly:stencil-translate-axis rp (+ (cdr x-ext) padding) X))))
(define (parentheses-item::print me)
- (let*
- ((elts (ly:grob-object me 'elements))
- (y-ref (ly:grob-common-refpoint-of-array me elts Y))
- (x-ref (ly:grob-common-refpoint-of-array me elts X))
- (stencil (parenthesize-elements me x-ref))
- (elt-y-ext (ly:relative-group-extent elts y-ref Y))
- (y-center (interval-center elt-y-ext)))
+ (let* ((elts (ly:grob-object me 'elements))
+ (y-ref (ly:grob-common-refpoint-of-array me elts Y))
+ (x-ref (ly:grob-common-refpoint-of-array me elts X))
+ (stencil (parenthesize-elements me x-ref))
+ (elt-y-ext (ly:relative-group-extent elts y-ref Y))
+ (y-center (interval-center elt-y-ext)))
(ly:stencil-translate
stencil
(cons
- (-
- (ly:grob-relative-coordinate me x-ref X))
- (-
- y-center
- (ly:grob-relative-coordinate me y-ref Y))))
- ))
+ (- (ly:grob-relative-coordinate me x-ref X))
+ (- y-center (ly:grob-relative-coordinate me y-ref Y))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
+;;
(define-public (chain-grob-member-functions grob value . funcs)
(for-each
value)
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; falls/doits
(define-public (bend::print spanner)
(define (close a b)
(< (abs (- a b)) 0.01))
-
- (let*
- ((delta-y (* 0.5 (ly:grob-property spanner 'delta-position)))
- (left-span (ly:spanner-bound spanner LEFT))
- (dots (if (and (grob::has-interface left-span 'note-head-interface)
- (ly:grob? (ly:grob-object left-span 'dot)))
- (ly:grob-object left-span 'dot) #f))
-
- (right-span (ly:spanner-bound spanner RIGHT))
- (thickness (* (ly:grob-property spanner 'thickness)
- (ly:output-def-lookup (ly:grob-layout spanner)
- 'line-thickness)))
- (padding (ly:grob-property spanner 'padding 0.5))
- (common (ly:grob-common-refpoint right-span
- (ly:grob-common-refpoint spanner
- left-span X)
- X))
- (common-y (ly:grob-common-refpoint spanner left-span Y))
- (minimum-length (ly:grob-property spanner 'minimum-length 0.5))
-
- (left-x (+ padding
- (max (interval-end (ly:grob-robust-relative-extent
- left-span common X))
- (if (and
- dots
- (close (ly:grob-relative-coordinate dots common-y Y)
- (ly:grob-relative-coordinate spanner common-y Y)))
- (interval-end (ly:grob-robust-relative-extent dots common X))
- -10000) ;; TODO: use real infinity constant.
- )))
- (right-x (max (- (interval-start (ly:grob-robust-relative-extent right-span common X))
- padding)
- (+ left-x minimum-length)))
- (self-x (ly:grob-relative-coordinate spanner common X))
- (dx (- right-x left-x))
- (exp (list 'path thickness
- `(quote
- (rmoveto
- ,(- left-x self-x) 0
-
- rcurveto
- ,(/ dx 3)
- 0
- ,dx ,(* 0.66 delta-y)
- ,dx ,delta-y
- )))))
+
+ (let* ((delta-y (* 0.5 (ly:grob-property spanner 'delta-position)))
+ (left-span (ly:spanner-bound spanner LEFT))
+ (dots (if (and (grob::has-interface left-span 'note-head-interface)
+ (ly:grob? (ly:grob-object left-span 'dot)))
+ (ly:grob-object left-span 'dot) #f))
+
+ (right-span (ly:spanner-bound spanner RIGHT))
+ (thickness (* (ly:grob-property spanner 'thickness)
+ (ly:output-def-lookup (ly:grob-layout spanner)
+ 'line-thickness)))
+ (padding (ly:grob-property spanner 'padding 0.5))
+ (common (ly:grob-common-refpoint right-span
+ (ly:grob-common-refpoint spanner
+ left-span X)
+ X))
+ (common-y (ly:grob-common-refpoint spanner left-span Y))
+ (minimum-length (ly:grob-property spanner 'minimum-length 0.5))
+
+ (left-x (+ padding
+ (max
+ (interval-end (ly:grob-robust-relative-extent
+ left-span common X))
+ (if
+ (and dots
+ (close
+ (ly:grob-relative-coordinate dots common-y Y)
+ (ly:grob-relative-coordinate spanner common-y Y)))
+ (interval-end
+ (ly:grob-robust-relative-extent dots common X))
+ ;; TODO: use real infinity constant.
+ -10000))))
+ (right-x (max (- (interval-start
+ (ly:grob-robust-relative-extent right-span common X))
+ padding)
+ (+ left-x minimum-length)))
+ (self-x (ly:grob-relative-coordinate spanner common X))
+ (dx (- right-x left-x))
+ (exp (list 'path thickness
+ `(quote
+ (rmoveto
+ ,(- left-x self-x) 0
+
+ rcurveto
+ ,(/ dx 3)
+ 0
+ ,dx ,(* 0.66 delta-y)
+ ,dx ,delta-y)))))
(ly:make-stencil
exp
(cons (min 0 delta-y)
(max 0 delta-y)))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; grace spacing
-
(define-public (grace-spacing::calc-shortest-duration grob)
- (let*
- ((cols (ly:grob-object grob 'columns))
- (get-difference
- (lambda (idx)
- (ly:moment-sub (ly:grob-property
- (ly:grob-array-ref cols (1+ idx)) 'when)
- (ly:grob-property
- (ly:grob-array-ref cols idx) 'when))))
-
- (moment-min (lambda (x y)
- (cond
- ((and x y)
- (if (ly:moment<? x y)
- x
- y))
- (x x)
- (y y)))))
-
+ (let* ((cols (ly:grob-object grob 'columns))
+ (get-difference
+ (lambda (idx)
+ (ly:moment-sub (ly:grob-property
+ (ly:grob-array-ref cols (1+ idx)) 'when)
+ (ly:grob-property
+ (ly:grob-array-ref cols idx) 'when))))
+
+ (moment-min (lambda (x y)
+ (cond
+ ((and x y)
+ (if (ly:moment<? x y)
+ x
+ y))
+ (x x)
+ (y y)))))
+
(fold moment-min #f (map get-difference
(iota (1- (ly:grob-array-length cols)))))))
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; fingering
(define-public (fingering::calc-text grob)
- (let*
- ((event (event-cause grob))
- (digit (ly:event-property event 'digit)))
-
+ (let* ((event (event-cause grob))
+ (digit (ly:event-property event 'digit)))
+
(if (> digit 5)
(ly:input-message (ly:event-property event 'origin)
- "Warning: Fingering notation for finger number ~a" digit))
+ "Warning: Fingering notation for finger number ~a"
+ digit))
- (number->string digit 10)
- ))
+ (number->string digit 10)))
(define-public (string-number::calc-text grob)
- (let*
- ((digit (ly:event-property (event-cause grob) 'string-number)))
-
- (number->string digit 10)
- ))
+ (let ((digit (ly:event-property (event-cause grob) 'string-number)))
+ (number->string digit 10)))
(define-public (stroke-finger::calc-text grob)
- (let*
- ((digit (ly:event-property (event-cause grob) 'digit))
- (text (ly:event-property (event-cause grob) 'text)))
+ (let* ((digit (ly:event-property (event-cause grob) 'digit))
+ (text (ly:event-property (event-cause grob) 'text)))
(if (string? text)
text
- (vector-ref (ly:grob-property grob 'digit-names) (1- (max (min 5 digit) 1))))))
+ (vector-ref (ly:grob-property grob 'digit-names)
+ (1- (max (min 5 digit) 1))))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; dynamics
+
(define-public (hairpin::calc-grow-direction grob)
(if (eq? (ly:event-property (event-cause grob) 'class) 'decrescendo-event)
START
- STOP
- ))
+ STOP))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; lyrics
(define-public (lyric-text::print grob)
"Allow interpretation of tildes as lyric tieing marks."
-
- (let*
- ((text (ly:grob-property grob 'text)))
- (grob-interpret-markup grob
- (if (string? text)
- (make-tied-lyric-markup text)
- text))))
+ (let ((text (ly:grob-property grob 'text)))
+
+ (grob-interpret-markup grob (if (string? text)
+ (make-tied-lyric-markup text)
+ text))))
(define-public ((grob::calc-property-by-copy prop) grob)
(ly:event-property (event-cause grob) prop))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; fret boards
(define-public (fret-board::calc-stencil grob)
- (grob-interpret-markup
- grob
- (make-fret-diagram-verbose-markup
- (ly:grob-property grob 'dot-placement-list))))
+ (grob-interpret-markup
+ grob
+ (make-fret-diagram-verbose-markup
+ (ly:grob-property grob 'dot-placement-list))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; scripts
(define-public (script-interface::calc-x-offset grob)
(ly:grob-property grob 'positioning-done)
(let* ((shift (ly:grob-property grob 'toward-stem-shift 0.0))
- (note-head-location (ly:self-alignment-interface::centered-on-x-parent grob))
+ (note-head-location
+ (ly:self-alignment-interface::centered-on-x-parent grob))
(note-head-grob (ly:grob-parent grob X))
(stem-grob (ly:grob-object note-head-grob 'stem)))
+
(+ note-head-location
- ;; If the property 'toward-stem-shift is defined and the script has the
- ;; same direction as the stem, move the script accordingly. Since scripts can
- ;; also be over skips, we need to check whether the grob has a stem at all.
+ ;; If the property 'toward-stem-shift is defined and the script
+ ;; has the same direction as the stem, move the script accordingly.
+ ;; Since scripts can also be over skips, we need to check whether
+ ;; the grob has a stem at all.
(if (ly:grob? stem-grob)
(let ((dir1 (ly:grob-property grob 'direction))
(dir2 (ly:grob-property stem-grob 'direction)))
(if (equal? dir1 dir2)
(let* ((common-refp (ly:grob-common-refpoint grob stem-grob X))
- (stem-location (ly:grob-relative-coordinate stem-grob common-refp X)))
- (* shift (- stem-location
- note-head-location)))
+ (stem-location
+ (ly:grob-relative-coordinate stem-grob common-refp X)))
+ (* shift (- stem-location note-head-location)))
0.0))
0.0))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; instrument names
+
+(define-public (system-start-text::print grob)
+ (let* ((left-bound (ly:spanner-bound grob LEFT))
+ (left-mom (ly:grob-property left-bound 'when))
+ (name (if (moment<=? left-mom ZERO-MOMENT)
+ (ly:grob-property grob 'long-text)
+ (ly:grob-property grob 'text))))
+
+ (if (and (markup? name)
+ (!= (ly:item-break-dir left-bound) CENTER))
+
+ (grob-interpret-markup grob name)
+ (ly:grob-suicide! grob))))
+
+(define-public (system-start-text::calc-x-offset grob)
+ (let* ((left-bound (ly:spanner-bound grob LEFT))
+ (left-mom (ly:grob-property left-bound 'when))
+ (layout (ly:grob-layout grob))
+ (indent (ly:output-def-lookup layout
+ (if (moment<=? left-mom ZERO-MOMENT)
+ 'indent
+ 'short-indent)
+ 0.0))
+ (system (ly:grob-system grob))
+ (my-extent (ly:grob-extent grob system X))
+ (elements (ly:grob-object system 'elements))
+ (common (ly:grob-common-refpoint-of-array system elements X))
+ (total-ext empty-interval)
+ (align-x (ly:grob-property grob 'self-alignment-X 0))
+ (padding (min 0 (- (interval-length my-extent) indent)))
+ (right-padding (- padding
+ (/ (* padding (1+ align-x)) 2))))
+
+ ;; compensate for the variation in delimiter extents by
+ ;; calculating an X-offset correction based on united extents
+ ;; of all delimiters in this system
+ (let unite-delims ((l (ly:grob-array-length elements)))
+ (if (> l 0)
+ (let ((elt (ly:grob-array-ref elements (1- l))))
+
+ (if (grob::has-interface elt 'system-start-delimiter-interface)
+ (let ((dims (ly:grob-extent elt common X)))
+ (if (interval-sane? dims)
+ (set! total-ext (interval-union total-ext dims)))))
+ (unite-delims (1- l)))))
+
+ (+
+ (ly:side-position-interface::x-aligned-side grob)
+ right-padding
+ (- (interval-length total-ext)))))
+
+(define-public (system-start-text::calc-y-offset grob)
+
+ (define (live-elements-list me)
+ (let* ((elements (ly:grob-object me 'elements))
+ (elts-length (ly:grob-array-length elements))
+ (live-elements '()))
+
+ (let get-live ((len elts-length))
+ (if (> len 0)
+ (let ((elt (ly:grob-array-ref elements (1- len))))
+
+ (if (grob::is-live? elt)
+ (set! live-elements (cons elt live-elements)))
+ (get-live (1- len)))))
+ live-elements))
+
+ (let* ((left-bound (ly:spanner-bound grob LEFT))
+ (live-elts (live-elements-list grob))
+ (system (ly:grob-system grob))
+ (extent empty-interval))
+
+ (if (and (pair? live-elts)
+ (interval-sane? (ly:grob-extent grob system Y)))
+ (let get-extent ((lst live-elts))
+ (if (pair? lst)
+ (let ((axis-group (car lst)))
+
+ (if (and (ly:spanner? axis-group)
+ (equal? (ly:spanner-bound axis-group LEFT)
+ left-bound))
+ (set! extent (add-point extent
+ (ly:grob-relative-coordinate
+ axis-group system Y))))
+ (get-extent (cdr lst)))))
+ ;; no live axis group(s) for this instrument name -> remove from system
+ (ly:grob-suicide! grob))
+
+ (+
+ (ly:self-alignment-interface::y-aligned-on-self grob)
+ (interval-center extent))))
;;;; (c) 2002--2009 Jan Nieuwenhuizen <janneke@gnu.org>
;;;; Patrick McCarty <pnorcks@gmail.com>
-;;;; Recommendations:
-;;;; http://www.w3.org/TR/SVG11/
-;;;; http://www.w3.org/TR/SVGTiny12/
-;;;; http://www.w3.org/TR/SVGPrint/ -- page, pageSet in draft
-
-;;;; TODO:
-;;;; * inkscape page/pageSet support
-
(define-module (scm output-svg))
(define this-module (current-module))
(define (dispatch expr)
(let ((keyword (car expr)))
- (cond
- ((eq? keyword 'some-func) "")
- (else
- (if (module-defined? this-module keyword)
- (apply (eval keyword this-module) (cdr expr))
- (begin
- (ly:warning (_ "undefined: ~S") keyword)
- ""))))))
+ (cond ((eq? keyword 'some-func) "")
+ (else (if (module-defined? this-module keyword)
+ (apply (eval keyword this-module) (cdr expr))
+ (begin (ly:warning (_ "undefined: ~S") keyword)
+ ""))))))
;; Helper functions
(define-public (attributes attributes-alist)
(define alist '())
(define (set-attribute attr val)
(set! alist (assoc-set! alist attr val)))
- (let*
- ((match-1 (regexp-exec pango-description-regexp-comma str))
- (match-2 (regexp-exec pango-description-regexp-nocomma str))
- (match (if match-1
- match-1
- match-2)))
+ (let* ((match-1 (regexp-exec pango-description-regexp-comma str))
+ (match-2 (regexp-exec pango-description-regexp-nocomma str))
+ (match (if match-1 match-1 match-2)))
(if (regexp-match? match)
(begin
(define (circle radius thick is-filled)
(entity
- 'circle ""
- '(stroke-linejoin . "round")
- '(stroke-linecap . "round")
- `(fill . ,(if is-filled "currentColor" "none"))
- `(stroke . "currentColor")
- `(stroke-width . ,thick)
- `(r . ,radius)))
+ 'circle ""
+ '(stroke-linejoin . "round")
+ '(stroke-linecap . "round")
+ `(fill . ,(if is-filled "currentColor" "none"))
+ `(stroke . "currentColor")
+ `(stroke-width . ,thick)
+ `(r . ,radius)))
(define (dashed-line thick on off dx dy phase)
(draw-line thick 0 0 dx dy
(define (draw-line thick x1 y1 x2 y2 . alist)
(apply entity 'line ""
(append
- `((stroke-linejoin . "round")
- (stroke-linecap . "round")
- (stroke-width . ,thick)
- (stroke . "currentColor")
- (x1 . ,x1)
- (y1 . ,(- y1))
- (x2 . ,x2)
- (y2 . ,(- y2)))
- alist)))
+ `((stroke-linejoin . "round")
+ (stroke-linecap . "round")
+ (stroke-width . ,thick)
+ (stroke . "currentColor")
+ (x1 . ,x1)
+ (y1 . ,(- y1))
+ (x2 . ,x2)
+ (y2 . ,(- y2)))
+ alist)))
(define (ellipse x-radius y-radius thick is-filled)
(entity
- 'ellipse ""
- '(stroke-linejoin . "round")
- '(stroke-linecap . "round")
- `(fill . ,(if is-filled "currentColor" "none"))
- `(stroke . "currentColor")
- `(stroke-width . ,thick)
- `(rx . ,x-radius)
- `(ry . ,y-radius)))
+ 'ellipse ""
+ '(stroke-linejoin . "round")
+ '(stroke-linecap . "round")
+ `(fill . ,(if is-filled "currentColor" "none"))
+ `(stroke . "currentColor")
+ `(stroke-width . ,thick)
+ `(rx . ,x-radius)
+ `(ry . ,y-radius)))
(define (embedded-svg string)
string)
(define (oval x-radius y-radius thick is-filled)
(let ((x-max x-radius)
- (x-min (- x-radius))
- (y-max y-radius)
- (y-min (- y-radius)))
+ (x-min (- x-radius))
+ (y-max y-radius)
+ (y-min (- y-radius)))
(entity
- 'path ""
- '(stroke-linejoin . "round")
- '(stroke-linecap . "round")
- `(fill . ,(if is-filled "currentColor" "none"))
- `(stroke . "currentColor")
- `(stroke-width . ,thick)
- `(d . ,(ly:format "M~4f ~4fC~4f ~4f ~4f ~4f ~4f ~4fS~4f ~4f ~4f ~4fz"
- x-max 0
- x-max y-max
- x-min y-max
- x-min 0
- x-max y-min
- x-max 0)))))
+ 'path ""
+ '(stroke-linejoin . "round")
+ '(stroke-linecap . "round")
+ `(fill . ,(if is-filled "currentColor" "none"))
+ `(stroke . "currentColor")
+ `(stroke-width . ,thick)
+ `(d . ,(ly:format "M~4f ~4fC~4f ~4f ~4f ~4f ~4f ~4fS~4f ~4f ~4f ~4fz"
+ x-max 0
+ x-max y-max
+ x-min y-max
+ x-min 0
+ x-max y-min
+ x-max 0)))))
(define (path thick commands)
(define (convert-path-exps exps)
(closepath . z))
"")))
- (cons (format "~a~a"
- svg-head (number-list->point args))
+ (cons (format "~a~a" svg-head (number-list->point args))
(convert-path-exps (drop rest arity))))
'()))
(define (polygon coords blot-diameter is-filled)
(entity
- 'polygon ""
- '(stroke-linejoin . "round")
- '(stroke-linecap . "round")
- `(stroke-width . ,blot-diameter)
- `(fill . ,(if is-filled "currentColor" "none"))
- '(stroke . "currentColor")
- `(points . ,(string-join
- (map offset->point (ly:list->offsets '() coords))))))
+ 'polygon ""
+ '(stroke-linejoin . "round")
+ '(stroke-linecap . "round")
+ `(stroke-width . ,blot-diameter)
+ `(fill . ,(if is-filled "currentColor" "none"))
+ '(stroke . "currentColor")
+ `(points . ,(string-join
+ (map offset->point (ly:list->offsets '() coords))))))
(define (repeat-slash width slope thickness)
(define (euclidean-length x y)
"</g>\n")
(define (round-filled-box breapth width depth height blot-diameter)
- (entity 'rect ""
- ;; The stroke will stick out. To use stroke,
- ;; the stroke-width must be subtracted from all other dimensions.
- ;;'(stroke-linejoin . "round")
- ;;'(stroke-linecap . "round")
- ;;`(stroke-width . ,blot)
- ;;'(stroke . "red")
- ;;'(fill . "orange")
-
- `(x . ,(- breapth))
- `(y . ,(- height))
- `(width . ,(+ breapth width))
- `(height . ,(+ depth height))
- `(ry . ,(/ blot-diameter 2))
- '(fill . "currentColor")))
+ (entity
+ 'rect ""
+ ;; The stroke will stick out. To use stroke,
+ ;; the stroke-width must be subtracted from all other dimensions.
+ ;;'(stroke-linejoin . "round")
+ ;;'(stroke-linecap . "round")
+ ;;`(stroke-width . ,blot)
+ ;;'(stroke . "red")
+ ;;'(fill . "orange")
+
+ `(x . ,(- breapth))
+ `(y . ,(- height))
+ `(width . ,(+ breapth width))
+ `(height . ,(+ depth height))
+ `(ry . ,(/ blot-diameter 2))
+ '(fill . "currentColor")))
(define (setcolor r g b)
(format "<g color=\"rgb(~a%, ~a%, ~a%)\">\n"
(define (annotate-top-space first-system layout header-stencil stencil)
(let* ((top-margin (ly:output-def-lookup layout 'top-margin))
(sym (if (paper-system-title? first-system)
- 'first-system-title-spacing
- 'first-system-spacing))
+ 'top-title-spacing
+ 'top-system-spacing))
(spacing-spec (ly:output-def-lookup layout sym))
(X-offset (ly:prob-property first-system 'X-offset 5))
(header-extent (ly:stencil-extent header-stencil Y)))
system-separator-markup)
#f))
- (head-height (if (ly:stencil? (prop 'head-stencil))
- (interval-length (ly:stencil-extent (prop 'head-stencil) Y))
- 0.0))
-
(page-stencil (ly:make-stencil '()))
(last-system #f)
(ly:stencil? head)
(not (ly:stencil-empty? head)))
(begin
+ ;; Ensure that the top of the header just touches the top margin.
(set! head (ly:stencil-translate-axis head
- (- 0 head-height (prop 'top-margin)) Y))
+ (- 0 (cdr (ly:stencil-extent head Y)) (prop 'top-margin)) Y))
(set! page-stencil (ly:stencil-add page-stencil head))))
(if (and
ly:multi-measure-rest::print
ly:multi-measure-rest::set-spacing-rods
ly:note-head::print
-;; ly:note-head::brew-ez-stencil
ly:ottava-bracket::print
ly:paper-column::print
ly:percent-repeat-item-interface::beat-slash
;; which will ignore 'style = 'do
(define-public (tab-note-head::calc-glyph-name grob)
(let ((style (ly:grob-property grob 'style)))
- (case style
+
+ (case style
((cross) "2cross"))))
;; ensure we only call notehead callback when
;; 'style = 'cross
(define-public (tab-note-head::whiteout-if-style-set grob)
(let ((style (ly:grob-property grob 'style)))
- (if (and (symbol? style)
- (eq? style 'cross))
- (stencil-whiteout (ly:note-head::print grob))
- (ly:text-interface::print grob))))
+
+ (if (and (symbol? style)
+ (eq? style 'cross))
+ (stencil-whiteout (ly:note-head::print grob))
+ (ly:text-interface::print grob))))
;; definitions for the "moderntab" clef:
;; the "moderntab" clef will be added to the list of known clefs,
(add-new-clef "moderntab" "markup.moderntab" 0 0 0)
;; define sans serif-style tab-Clefs as a markup:
-(define-builtin-markup-command (customTabClef layout props num-strings staff-space)
+(define-builtin-markup-command (customTabClef
+ layout props num-strings staff-space)
(integer? number?)
music
()
(font-size (- (* num-strings 1.5 scale-factor) 7))
(base-skip (* (square (+ (* num-strings 0.195) 0.4)) scale-factor)))
- (interpret-markup layout props
- (markup #:vcenter #:bold
- #:override (cons 'font-family 'sans)
- #:fontsize font-size
- #:override (cons 'baseline-skip base-skip)
- #:left-align #:center-column ("T" "A" "B")))))
+ (interpret-markup layout props
+ (markup #:vcenter #:bold
+ #:override (cons 'font-family 'sans)
+ #:fontsize font-size
+ #:override (cons 'baseline-skip base-skip)
+ #:left-align #:center-column ("T" "A" "B")))))
;; this function decides which clef to take
(define-public (clef::print-modern-tab-if-set grob)
(let ((glyph (ly:grob-property grob 'glyph)))
- ;; which clef is wanted?
- (if (string=? glyph "markup.moderntab")
- ;; if it is "moderntab", we'll draw it
- (let* ((staff-symbol (ly:grob-object grob 'staff-symbol))
- (line-count (ly:grob-property staff-symbol 'line-count))
- (staff-space (ly:grob-property staff-symbol 'staff-space 1)))
- (grob-interpret-markup grob (make-customTabClef-markup line-count staff-space)))
- ;; otherwise, we simply use the default printing routine
- (ly:clef::print grob))))
+
+ ;; which clef is wanted?
+ (if (string=? glyph "markup.moderntab")
+ ;; if it is "moderntab", we'll draw it
+ (let* ((staff-symbol (ly:grob-object grob 'staff-symbol))
+ (line-count (ly:grob-property staff-symbol 'line-count))
+ (staff-space (ly:staff-symbol-staff-space grob)))
+
+ (grob-interpret-markup grob (make-customTabClef-markup line-count
+ staff-space)))
+ ;; otherwise, we simply use the default printing routine
+ (ly:clef::print grob))))
;; if stems are drawn, it is nice to have a double stem for
;; (dotted) half notes to distinguish them from quarter notes:
(define-public (tabvoice::draw-double-stem-for-half-notes grob)
(let ((stem (ly:stem::print grob)))
- ;; is the note a (dotted) half note?
- (if (= 1 (ly:grob-property grob 'duration-log))
- ;; yes -> draw double stem
- (ly:stencil-combine-at-edge stem X RIGHT stem 0.5)
- ;; no -> draw simple stem
- stem)))
+ ;; is the note a (dotted) half note?
+ (if (= 1 (ly:grob-property grob 'duration-log))
+ ;; yes -> draw double stem
+ (ly:stencil-combine-at-edge stem X RIGHT stem 0.5)
+ ;; no -> draw simple stem
+ stem)))
;; as default, the glissando line between fret numbers goes
;; upwards, here we have a function to correct this behavior:
(if (< (ly:pitch-semitones right-pitch) (ly:pitch-semitones left-pitch))
-0.75
- 0.75)))
+ 0.75)))
;; for ties in tablature, fret numbers that are tied to should be invisible,
;; except for 'tied to' numbers after a line break;; these will be
;; in accidental.cc, converted to Scheme
(let* ((font (ly:grob-default-font grob))
(open (stencil-whiteout
- (ly:font-get-glyph font "accidentals.leftparen")))
+ (ly:font-get-glyph font "accidentals.leftparen")))
(close (stencil-whiteout
- (ly:font-get-glyph font "accidentals.rightparen")))
+ (ly:font-get-glyph font "accidentals.rightparen")))
(me (ly:text-interface::print grob)))
- (ly:stencil-combine-at-edge
- (ly:stencil-combine-at-edge
- me
- X
- LEFT
- open)
- X
- RIGHT
- close)))
+
+ (ly:stencil-combine-at-edge
+ (ly:stencil-combine-at-edge me X LEFT open) X RIGHT close)))
;; ParenthesesItem doesn't work very well for TabNoteHead, since
;; the parentheses are too small and clash with the staff-lines
;; Define a callback for the 'stencils property which will tweak
;; the parentheses' appearance for TabNoteHead
(define-public (parentheses-item::calc-tabstaff-parenthesis-stencils grob)
- ;; the grob we want to parenthesize
- (let ((victim (ly:grob-array-ref (ly:grob-object grob 'elements) 0)))
- ;; check whether it's a notehead
- (if (grob::has-interface victim 'note-head-interface)
- (begin
- ;; tweak appearance before retrieving
- ;; list of stencils '(left-paren right-paren)
- ;; get the font-size from victim (=TabNoteHead) to handle
- ;; grace notes properly
- (ly:grob-set-property! grob 'font-size
- (ly:grob-property victim 'font-size))
- (ly:grob-set-property! grob 'padding 0)
- ;; apply whiteout to each element of the list
- (map stencil-whiteout
- (parentheses-item::calc-parenthesis-stencils grob)))
- (parentheses-item::calc-parenthesis-stencils grob))))
+ ;; the grob we want to parenthesize
+ (let ((victim (ly:grob-array-ref (ly:grob-object grob 'elements) 0)))
+
+ ;; check whether it's a note head
+ (if (grob::has-interface victim 'note-head-interface)
+ (begin
+ ;; tweak appearance before retrieving
+ ;; list of stencils '(left-paren right-paren)
+ ;; get the font-size from victim (=TabNoteHead) to handle
+ ;; grace notes properly
+ (ly:grob-set-property! grob 'font-size
+ (ly:grob-property victim 'font-size))
+ (ly:grob-set-property! grob 'padding 0)
+ ;; apply whiteout to each element of the list
+ (map stencil-whiteout
+ (parentheses-item::calc-parenthesis-stencils grob)))
+ (parentheses-item::calc-parenthesis-stencils grob))))
;; the handler for ties in tablature;; split ties yield in a parenthesized
;; fret number, otherwise the fret number will be invisible.
(define-public (tie::handle-tab-tie grob)
- (let* ((original (ly:grob-original grob))
- (tied-tab-note-head (ly:spanner-bound grob RIGHT))
- (siblings (if (ly:grob? original)
- (ly:spanner-broken-into original) '())))
+ (let* ((original (ly:grob-original grob))
+ (tied-tab-note-head (ly:spanner-bound grob RIGHT))
+ (siblings (if (ly:grob? original)
+ (ly:spanner-broken-into original) '())))
- (if (and (>= (length siblings) 2)
- (eq? (car (last-pair siblings)) grob))
- ;; tie is split -> parenthesize
- (ly:grob-set-property! tied-tab-note-head 'stencil
- (lambda (grob) (parenthesize-tab-note-head grob)))
+ (if (and (>= (length siblings) 2)
+ (eq? (car (last-pair siblings)) grob))
+ ;; tie is split -> parenthesize
+ (ly:grob-set-property! tied-tab-note-head 'stencil
+ (lambda (grob)
+ (parenthesize-tab-note-head grob)))
- ;; tie is not split -> make fret number invisible
- (ly:grob-set-property! tied-tab-note-head 'transparent #t))))
+ ;; tie is not split -> make fret number invisible
+ (ly:grob-set-property! tied-tab-note-head 'transparent #t))))
;; repeat ties occur within alternatives in a repeat construct;
;; the correspondig fret numbers are shown in parentheses:
(define-public (repeat-tie::parenthesize-tab-note-head grob)
(let ((tied-tab-note-head (ly:grob-object grob 'note-head)))
- (ly:grob-set-property! tied-tab-note-head 'stencil
- (lambda (grob) (parenthesize-tab-note-head grob)))))
\ No newline at end of file
+ (ly:grob-set-property! tied-tab-note-head 'stencil
+ (lambda (grob) (parenthesize-tab-note-head grob)))))
;;;; (c) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; metronome marks
+
(define-public (format-metronome-markup text dur count context)
(let* ((hide-note (eq? #t (ly:context-property context 'tempoHideNote))))
(metronome-markup text dur count hide-note)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Bass figures.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-public (format-bass-figure figure event context)
(let* ((fig (ly:event-property event 'figure))
))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; fret diagrams
(sort notes note-pitch>?))
string-fret-fingering-tuples)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; tablature
+
+;; The TabNoteHead tablatureFormat callback.
+;; Compute the text grob-property
+(define-public (fret-number-tablature-format string context event)
+ (let* ((tuning (ly:context-property context 'stringTunings))
+ (pitch (ly:event-property event 'pitch))
+ (is-harmonic (apply
+ functional-or
+ (map
+ (lambda (ev)
+ (eq? 'harmonic-event (ly:event-property ev 'class)))
+ (ly:event-property event 'articulations)))))
+
+ (make-whiteout-markup
+ (make-vcenter-markup
+ (format
+ "~a"
+ (- (ly:pitch-semitones pitch)
+ (list-ref tuning
+ ;; remove 1 because list index starts at 0
+ ;;and guitar string at 1.
+ (1- string))))))))
+
+;; The 5-string banjo has got a extra string, the fifth (duh), which
+;; starts at the fifth fret on the neck. Frets on the fifth string
+;; are referred to relative to the other frets:
+;; the "first fret" on the fifth string is really the sixth fret
+;; on the banjo neck.
+;; We solve this by defining a new fret-number-tablature function:
+(define-public (fret-number-tablature-format-banjo string context event)
+ (let* ((tuning (ly:context-property context 'stringTunings))
+ (pitch (ly:event-property event 'pitch)))
+
+ (make-whiteout-markup
+ (make-vcenter-markup
+ (let ((fret (- (ly:pitch-semitones pitch) (list-ref tuning (1- string)))))
+ (number->string (cond
+ ((and (> fret 0) (= string 5))
+ (+ fret 5))
+ (else fret))))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; bar numbers
+
+(define-public ((every-nth-bar-number-visible n) barnum)
+ (= 0 (modulo barnum n)))
+
+(define-public ((modulo-bar-number-visible n m) barnum)
+ (and (> barnum 1) (= m (modulo barnum n))))
+
+(define-public ((set-bar-number-visibility n) tr)
+ (let ((bn (ly:context-property tr 'currentBarNumber)))
+ (ly:context-set-property! tr 'barNumberVisibility
+ (modulo-bar-number-visible n (modulo bn n)))))
+
+(define-public (first-bar-number-invisible barnum) (> barnum 1))
+
+(define-public (all-bar-numbers-visible barnum) #t)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; percent repeat counters
+
+(define-public ((every-nth-repeat-count-visible n) count context)
+ (= 0 (modulo count n)))
+
+(define-public (all-repeat-counts-visible count context) #t)
ref_re = re.compile \
- ('@(ref|ruser|rlearning|rprogram|rglos)(?:\\{(?P<ref>[^,\\\\\\}]+?)|\
+ ('@((?:ressay|rgloss|rinternals|rlearning|rslr|rprogram|ruser|ref)|named)(?:\\{(?P<ref>[^,\\\\\\}]+?)|\
named\\{(?P<refname>[^,\\\\]+?),(?P<display>[^,\\\\\\}]+?))\\}(?P<last>.)',
re.DOTALL)
node_include_re = re.compile (r'(?m)^@(node|include)\s+(.+?)$')
include_re = re.compile (r'@include (.*?)$', re.M)
whitespaces = re.compile (r'\s+')
-ref_re = re.compile (r'(?ms)@(ruser|rprogram|ref|rlearning)\{(.*?)\}')
+ref_re = re.compile (r'(?ms)@((?:ressay|rgloss|rinternals|rlearning|rslr|rprogram|ruser|ref)|named)\{(.*?)\}')
node_section_re = re.compile (r'@node (.*?)\n@((?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) (.*?)\n')
section_only_re = re.compile (r'@((?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) (.*?)\n')
menu_entry_re = re.compile (r'\* (.*?)::')
'''
doclang = ''
head_committish = read_pipe ('git rev-parse HEAD')
-intro_blurb = '''@c -*- coding: utf-8; mode: texinfo%(doclang)s -*-
+intro_blurb = '''\\input texinfo @c -*- coding: utf-8; mode: texinfo%(doclang)s -*-
@c This file is part of %(topfile)s
@ignore
Translation of GIT committish: %(head_committish)s
if x[0] == '-o': # -o NAME set PO output file name to NAME
output_name = x[1]
elif x[0] == '-d': # -d DIR set working directory to DIR
+ print 'FIXME: this is evil. use cd DIR && texi-langutils ...'
+ # even better, add a sane -o option
os.chdir (x[1])
elif x[0] == '-b': # -b BLURB set blurb written at each node to BLURB
node_blurb = x[1]
elif x[0] == '-l': # -l ISOLANG set documentlanguage to ISOLANG
doclang = '; documentlanguage: ' + x[1]
-texinfo_with_menus_re = re.compile (r"^(\*) +([^:\n]+)::.*?$|^@(include|menu|end menu|node|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) *(.*?)$|@(rglos){(.+?)}", re.M)
+texinfo_with_menus_re = re.compile (r"^(\*) +([^:\n]+)::.*?$|^@(afourpaper|author|bye|contents|copying|end copying|divClass|divEnd|divId|documentencoding|documentlanguage|finalout|ifnottex|end ifnottex|imageClickable|imageFloat|imageId|image|include|menu|end menu|node|quotation|end quotation|ref|rgloss|setfilename|settitle|set|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|titlefont|titlepage|end titlepage|title|sourceimage|subtitle|top|vskip|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading|c) *(([^ \n].*)|$)", re.M)
texinfo_re = re.compile (r"^@(include|node|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) *(.+?)$|@(rglos){(.+?)}", re.M)
g.write ('@menu\n')
elif item[2] == 'end menu':
g.write ('@end menu\n\n')
+ elif item[2] == 'documentlanguage':
+ g.write ('@documentlanguage ' + doclang + '\n')
else:
- g.write ('@' + item[2] + ' ' + item[3] + '\n')
+ space = ' '
+ if item[3].startswith ('{') or not item[3].strip ():
+ space = ''
+ g.write ('@' + item[2] + space + item[3] + '\n')
if node_trigger:
g.write (n_blurb)
node_trigger = False
node_list.write ('# -*- coding: utf-8 -*-\n')
for texi_file in texi_files:
# Urgly: scan ly comments and variable names only in English doco
- is_english_doc = 'Documentation/user' in texi_file
+ is_english_doc = (
+ True
+ and not 'Documentation/de/' in texi_file
+ and not 'Documentation/es/' in texi_file
+ and not 'Documentation/fr/' in texi_file
+ and not 'Documentation/ja/' in texi_file
+ and not 'Documentation/nl/' in texi_file
+ and not 'Documentation/po/' in texi_file
+ )
process_texi (texi_file, intro_blurb, node_blurb, make_skeleton,
os.path.basename (texi_file), node_list,
scan_ly=is_english_doc)
#! /usr/bin/env python
-
+#
+# yyout2grammar.py
+#
+# Auxiliary script of the GNU LilyPond music engraver
+#
# Convert from bison output file parser.output to
# Grammar and index.
# Drops all of the state information.
# Converts \\ to \
-# Eliminates the @ variables created when {} is placed in the middle of a rule## all of the c-code stuff
-#
+# Eliminates the @ variables created when {} is placed
+# in the middle of a rule
+# Eliminates all of the c-code stuff
+# Wraps lines that are longer than 78 characters for improved
+# formatting
#
# Copyright 2005 by Carl D. Sorensen
-#
+# Licensed under the GPL, version 2 or any later version
# to create input file, run
# bison -v parser.yy
atre = re.compile('(@\d+):')
+intro_re = re.compile (r'(.*[:|])\s')
+keyword_re = re.compile (r'(\S+)\s')
+
+# strip extra backslashes that are inserted by the python
+# string handling routines
+def strip_backslash(input_string):
+ i=input_string.find(r'"\\')
+ while i > -1 :
+ input_string = input_string[:i+1]+input_string[i+2:]
+ i = input_string.find(r'"\\')
+ return input_string
+
+# write an output line, adjusting to make sure that max_line_length
+# is not exceeded
+def write_line (output_line, output_file):
+ max_line_length = 78
+ indent_value = 3
+ if len(output_line) > max_line_length:
+ intro = intro_re.match(output_line)
+ if intro:
+ output_file.write(intro.group(1)+" ")
+ indent_column = len(intro.group(1))
+ output_line = output_line[indent_column:]
+ keyword = keyword_re.search(output_line)
+ while keyword:
+ output_file.write(strip_backslash(keyword.group(1))+" \n")
+ output_line = output_line[keyword.end(1):]
+ keyword = keyword_re.search(output_line)
+ if keyword:
+ output_file.write("".rjust(indent_column + indent_value))
+ else:
+ output_file.write(strip_backslash(output_line))
+ return
+
write_me = True
if len(sys.argv)!=3:
print "Usage: yyout2grammar.py parser_output_file grammar_file."
else:
- in_name = sys.argv[1]
+ in_name = sys.argv[1]
out_name = sys.argv[2]
print "input file name",in_name
at_items=[]
inline = in_file.readline()
+
+ ## skip header material from file
while inline != '' and not(inline.startswith("Grammar")):
inline = in_file.readline()
+
+ ## process the Grammar lines
if inline != '':
- out_file.write(inline)
+ write_line(inline, out_file)
inline = in_file.readline()
while inline != '' and not(inline.startswith("Terminals")):
i = inline.find("$accept:")
atfound = re.findall(atre,inline)
if len(atfound) > 0:
at_items.extend(atfound)
- print at_items
+ # print at_items
write_me = False
inline=in_file.readline()
else:
for at_item in at_items:
i=inline.find(at_item)
+ ## remove @ item
if i >= 0:
inline=inline[:i] + inline[i+len(at_item):]
- i=inline.find('"\\\\')
- while i > -1 :
- inline = inline[:i+1]+inline[i+2:]
- i = inline.find('"\\\\')
+
if write_me:
- out_file.write(inline)
+ write_line(inline, out_file)
inline = in_file.readline()
write_me = True
index_items = []
+
# Write the Terminals header line and the following blank line
- out_file.write(inline)
+ write_line(inline, out_file)
inline = in_file.readline()
- out_file.write(inline)
+ write_line(inline, out_file)
inline = in_file.readline()
while inline != '' and not(inline.startswith("Nonterminals")):
i=inline.find('"\\\\')
inline = in_file.readline()
index_items.sort(lambda x,y:cmp(x.lower(),y.lower()))
for index_item in index_items:
- out_file.write(index_item)
- out_file.write('\n')
+ write_line (index_item, out_file)
+ write_line ('\n', out_file)
+
# Write the Nonterminals header and the blank line
- out_file.write(inline)
+ write_line(inline, out_file)
inline = in_file.readline()
- out_file.write(inline)
+ write_line(inline, out_file)
index_items = []
index_item=in_file.readline()
inline=in_file.readline()
inline=in_file.readline()
index_items.sort(lambda x,y:cmp(x.lower(),y.lower()))
for index_item in index_items:
- out_file.write(index_item)
+ write_line (index_item, out_file)
outdir = '.'
split = "custom"
-include_path = []
+include_path = ['.',]
master_map_file = ''
initial_map = {}
for opt in options_list:
if o == '-I' or o == '--include':
if os.path.isdir (a):
include_path.append (a)
+ else:
+ print 'NOT A DIR from: ', os.getcwd (), a
elif o == '-o' or o == '--output':
outdir = a
elif o == '-s' or o == '--split':
external_node_re = re.compile (r'\s+@c\s+external.*')
def expand_includes (m, filename):
- filepath = os.path.join (os.path.dirname (filename), m.group(1))
+ include_name = m.group (1)
+ filepath = os.path.join (os.path.dirname (filename), include_name)
if os.path.exists (filepath):
return extract_sections (filepath)[1]
else:
for directory in include_path:
- filepath = os.path.join (directory, m.group(1))
+ filepath = os.path.join (directory, include_name)
if os.path.exists (filepath):
return extract_sections (filepath)[1]
- print "Unable to locate include file " + filepath
+ print 'No such file: ' + include_name
+ print 'Search path: ' + ':'.join (include_path)
return ''
lang_re = re.compile (r'^@documentlanguage (.+)', re.M)
sections = section_translation_re.findall (page)
basename = os.path.splitext (os.path.basename (filename))[0]
p = os.path.join (outdir, basename) + lang_suffix + '.xref-map'
+ print 'writing:', p
f = open (p, 'w')
this_title = ''
tree_roots = doc_dirs,
process_dirs = outdir,
exclude_dirs = '(^|/)((' + \
- r'po|out|out-test|out-cov|.*?[.]t2d|\w*?-root)|^Documentation/(' + \
+ r'po|xref-maps|out|out-test|out-cov|.*?[.]t2d|\w*?-root)|^Documentation/(' + \
'|'.join ([l.code for l in langdefs.LANGUAGES]) + '))(/|$)',
- find_files = r'.*?\.(?:midi|html|pdf|png|txt|i?ly|signature|css|zip)$|VERSION',
+ find_files = r'.*?\.(?:midi|html|pdf|png|jpe?g|txt|i?ly|signature|css|zip)$|VERSION',
exclude_files = r'lily-[0-9a-f]+.*\.(pdf|txt)')
# actual mirrorring stuff
fi
])
-
-AC_DEFUN(STEPMAKE_COMPILE, [
+AC_DEFUN(STEPMAKE_COMPILE_BEFORE, [
# -O is necessary to get inlining
CFLAGS=${CFLAGS-""}
CXXFLAGS=${CXXFLAGS-$CFLAGS}
if test $debug_b = yes; then
OPTIMIZE="$OPTIMIZE -g"
fi
-
- AC_PROG_CC
+])
+
+AC_DEFUN(STEPMAKE_COMPILE, [
+
+ AC_REQUIRE([STEPMAKE_COMPILE_BEFORE])
+ AC_REQUIRE([AC_PROG_CC])
+
STEPMAKE_OPTIONAL_REQUIRED(CC, cc, $1)
LD='$(CC)'
AC_SUBST(LD)
endif
touch $@
-$(outdir)/%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
- $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
-
-$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
- $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+$(outdir)/%.texi: %.texi
+ cp -p $< $@
-$(outdir)/lilypond.info: general.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+$(outdir)/%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
$(outdir)/%-big-page.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi
- $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) -D bigpage --output=$@ $(TEXI2HTML_INIT) $<
+ $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage --output=$@ $<
$(outdir)/%.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi
- $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) --output=$@ $(TEXI2HTML_INIT) $<
+ $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $<
$(outdir)/%/index.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/%.html.omf
mkdir -p $(dir $@)
- $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) --output=$(dir $@) --prefix=index --split=section $(TEXI2HTML_INIT) $<
+ $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$(dir $@) $(TEXI2HTML_SPLIT) $<
cp $(top-src-dir)/Documentation/css/*.css $(dir $@)
+$(XREF_MAPS_DIR)/%.xref-map: $(outdir)/%.texi
+ $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -o $(XREF_MAPS_DIR) $<
+ touch -r $< $@
-$(outdir)/%.html.omf: %.texi
- $(call GENERATE_OMF,html)
-
-$(outdir)/%.pdf.omf: %.texi
- $(call GENERATE_OMF,pdf)
+$(outdir)/%.info: %.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+ $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
$(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/%.pdf.omf
cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -I $(abs-src-dir) --batch $(TEXINFO_PAPERSIZE_OPTION) $(<F)
$(outdir)/%.txt: $(outdir)/%.texi $(outdir)/version.itexi
$(MAKEINFO) -I$(src-dir) -I$(outdir) --no-split --no-headers --output $@ $<
-$(XREF_MAPS_DIR)/%.xref-map: $(outdir)/%.texi
- $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -o $(XREF_MAPS_DIR) $<
+$(outdir)/%.html.omf: %.texi
+ $(call GENERATE_OMF,html)
-$(outdir)/%.texi: %.texi
- cp -f $< $@
+$(outdir)/%.pdf.omf: %.texi
+ $(call GENERATE_OMF,pdf)
$(outdir)/version.%: $(top-src-dir)/VERSION
echo '@macro version'> $@
MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
# texi2html xref map files
-XREF_MAPS_DIR = $(top-build-dir)/out/xref-maps
+# FIXME: duplicated in stepake/texinfo-vars.make make/doc-i18n-root-vars.make
+XREF_MAPS_DIR = $(top-build-dir)/$(outbase)/xref-maps
XREF_MAPS_FILES += $(TEXI_FILES:%.texi=$(XREF_MAPS_DIR)/%.xref-map) \
$(TELY_FILES:%.tely=$(XREF_MAPS_DIR)/%.xref-map)
XREF_MAP_FLAGS += -I $(outdir)
-# texi2html flags
+###########
ifneq ($(ISOLANG),)
TEXI2HTML_LANG = --lang=$(ISOLANG)
endif
-TEXI2HTML_FLAGS += $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR)
-TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
-TEXI2HTML = PERL_UNICODE=SD $(TEXI2HTML_PROGRAM) $(TEXI2HTML_FLAGS) $(TEXI2HTML_LANG)
+
+DOC_TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
+WEB_TEXI2HTML_INIT =--init-file=$(top-src-dir)/Documentation/web-texi2html.init
+TEXI2HTML_INIT = $(DOC_TEXI2HTML_INIT)
+
+DOC_TEXI2HTML_SPLIT = --prefix=index --split=section
+# --split=node --node-files makes that translated pages have
+# translated file names, that breaks.
+## WEB_TEXI2HTML_SPLIT = --prefix=index --split=node --node-files
+WEB_TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT)
+TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT)
+
+TEXI2HTML_INCLUDES += --I=. --I=$(src-dir) --I=$(outdir) $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR)
+TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_INIT) $(TEXI2HTML_LANG)
+TEXI2HTML = PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
+###########
+
TEXI2PDF_FLAGS += $(DOCUMENTATION_INCLUDES)