]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'lilypond/translation' into staging
authorFrancisco Vila <francisco.vila@hispalinux.es>
Fri, 17 Feb 2012 09:00:23 +0000 (10:00 +0100)
committerFrancisco Vila <francisco.vila@hispalinux.es>
Fri, 17 Feb 2012 09:00:23 +0000 (10:00 +0100)
107 files changed:
Documentation/changes.tely
Documentation/contributor/administration.itexi
Documentation/contributor/issues.itexi
Documentation/contributor/source-code.itexi
Documentation/cs/GNUmakefile
Documentation/cs/included/GNUmakefile [new file with mode: 0644]
Documentation/es/notation/wind.itely
Documentation/fr/notation/wind.itely
Documentation/hu/GNUmakefile
Documentation/hu/included/GNUmakefile [new file with mode: 0644]
Documentation/included/font-table.ly
Documentation/included/helpus.itexi
Documentation/ja/notation/wind.itely
Documentation/notation/changing-defaults.itely
Documentation/notation/input.itely
Documentation/notation/notation-appendices.itely
Documentation/notation/percussion.itely
Documentation/notation/wind.itely
Documentation/snippets/formatting-lyrics-syllables.ly
Documentation/snippets/hymn-template.ly
Documentation/snippets/new/bar-chords-notation-for-guitar--with-text-spanner.ly
Documentation/snippets/new/woodwind-diagrams-key-lists.ly
Documentation/snippets/partcombine-and-autobeamoff.ly
Documentation/snippets/woodwind-diagrams-key-lists.ly
Documentation/web/news-front.itexi
Documentation/zh/GNUmakefile
Documentation/zh/included/GNUmakefile [new file with mode: 0644]
VERSION
input/regression/ambitus-cue.ly [new file with mode: 0644]
input/regression/breve-extent.ly [new file with mode: 0644]
input/regression/glissando-cross-staff.ly [new file with mode: 0644]
input/regression/lilypond-book/GNUmakefile
input/regression/lilypond-book/html-newline-after-tag.html
input/regression/lilypond-book/html-space-after-tag.html
input/regression/lilypond-book/html-version-newline.html
input/regression/lilypond-book/html-version.html
input/regression/lilypond-book/include3.ily
input/regression/lilypond-book/papersize-docs.tely [deleted file]
input/regression/lilypond-book/tex-comment-firstline.lytex
input/regression/lilypond-book/tex-graphics-package-added.lytex
input/regression/lilypond-book/tex-include-file.lytex
input/regression/lilypond-book/tex-include-options.lytex
input/regression/lilypond-book/tex-inline-lilypond.lytex
input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex
input/regression/lilypond-book/tex-lilypond-inside-table.lytex
input/regression/lilypond-book/tex-musicxml-file-options.lytex
input/regression/lilypond-book/tex-musicxml-file.lytex
input/regression/lilypond-book/tex-paragraphs.lytex
input/regression/lilypond-book/tex-snippet-options.lytex
input/regression/lilypond-book/tex-twocolumn.lytex
input/regression/lilypond-book/tex-verbatim.lytex
input/regression/lilypond-book/tex-version.lytex
input/regression/lilypond-book/texinfo-include-language-detection.tely
input/regression/lilypond-book/texinfo-language-detection.tely
input/regression/lilypond-book/texinfo-musicxml-file-options.tely
input/regression/lilypond-book/texinfo-musicxml-file.tely
input/regression/lilypond-book/texinfo-papersize-docs.tely [new file with mode: 0644]
input/regression/metronome-mark-broken-bound.ly [new file with mode: 0644]
input/regression/note-head-style.ly
input/regression/rest-on-nonstandard-staff.ly
input/regression/tuplet-subdivision.ly [new file with mode: 0644]
lily/ambitus-engraver.cc
lily/auto-beam-engraver.cc
lily/bar-line.cc
lily/beam-engraver.cc
lily/beam.cc
lily/beaming-pattern.cc
lily/event-chord-iterator.cc
lily/hairpin.cc
lily/include/beaming-pattern.hh
lily/include/staff-symbol.hh
lily/line-spanner.cc
lily/lyric-hyphen.cc
lily/note-head.cc
lily/ottava-bracket.cc
lily/parser.yy
lily/rest.cc
lily/slur-engraver.cc
lily/staff-symbol-referencer.cc
lily/staff-symbol.cc
lily/stem-engraver.cc
lily/stem.cc
lily/tuplet-bracket.cc
ly/articulate.ly
ly/engraver-init.ly
ly/music-functions-init.ly
ly/property-init.ly
mf/feta-ties.mf
mf/parmesan-accidentals.mf
mf/parmesan-clefs.mf
mf/parmesan-dots.mf
mf/parmesan-noteheads.mf
mf/parmesan-scripts.mf
po/de.po
po/es.po
po/fr.po
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-music-display-methods.scm
scm/define-music-types.scm
scm/music-functions.scm
scm/output-lib.scm
scm/parser-clef.scm
scm/part-combiner.scm
scm/song-util.scm
scripts/auxiliar/lily-git.tcl
scripts/build/lys-to-tely.py

index c07c270ba166035e7c83aa46adaced811face466..058a0d5c0edfb29cba348b0f786727ec5b268c2e 100644 (file)
@@ -61,6 +61,21 @@ which scares away people.
 
 @end ignore
 
+@item
+Lilypond's stencil commands have been simplified to allow for less code
+duplication and better height approximations of graphical objects.  The
+following stencil commands have been eliminated:
+@itemize
+@item @code{beam}
+@item @code{bezier-sandwich}
+@item @code{bracket}
+@item @code{dashed-slur}
+@item @code{dot}
+@item @code{oval}
+@item @code{repeat-slash}
+@item @code{zigzag-line}
+@end itemize
+
 @item
 Flags are now treated as separate objects rather than as stem parts.
 @lilypond[fragment,quote,relative=2]
@@ -99,11 +114,16 @@ representation: Rhythmic events like @code{LyricEvent} and
 @code{NoteEvent} are no longer wrapped in @code{EventChord} unless they
 have been actually entered as part of a chord in the input.  If you
 manipulate music expressions in Scheme, the new behavior may require
-changes in your code.  The advantages of making input and music match
-more closely are numerous: music functions previously worked differently
-when used inside or outside of chords.  Now they are the same, including
-all the possibilities of argument parsing.  You can now use music
-variables inside of chords: a construct like
+changes in your code.  Calling the music function @code{\eventChords} or
+the Scheme function @code{event-chord-wrap!}  converts to the old
+representation; using one of those might be easiest for keeping legacy
+code operative.
+
+The advantages of making input and music match more closely are
+numerous: music functions previously worked differently when used inside
+or outside of chords.  Now they are the same, including all the
+possibilities of argument parsing.  You can now use music variables
+inside of chords: a construct like
 @lilypond[verbatim,quote,ragged-right]
 tonic=fis'
 { <\tonic \transpose c g \tonic> }
@@ -154,7 +174,8 @@ nomenclature.
 
 @item
 The interface for specifying string tunings in tablature has been
-simplified considerably.
+simplified considerably and employs the scheme function
+@code{\stringTuning} for most purposes.
 
 @item
 Beams can now have their slopes preserved over line breaks.
@@ -177,10 +198,11 @@ to help calculations over line breaks.  All of these functions are now
 automatically called when setting the @code{positions} parameter.
 
 @item
-In function arguments music, markups and Scheme expressions (as well
-as several other syntactic entities) have become mostly
-interchangeable and are told apart only by evaluating the respective
-predicate.
+In function arguments music, markups and Scheme expressions (as well as
+several other syntactic entities) have become mostly interchangeable and
+are told apart only by evaluating the respective predicate.  In several
+cases, the predicate is consulted by the parser, like when deciding
+whether to interpret @code{-3} as a number or a fingering event.
 
 @item
 Music functions (and their close relatives) can now be defined with
@@ -218,20 +240,28 @@ syntax.
 
 @item
 The construct @code{#@{ @dots{} #@}} can now be used not just for
-constructing sequential music lists, but also for single music events,
-void music expressions, post events, markups (mostly freeing users from
+constructing sequential music lists, but also for pitches (distinguished
+from single note events by the absence of a duration or other
+information that can't be part of a pitch), single music events, void
+music expressions, post events, markups (mostly freeing users from
 having to use the @code{markup} macro), markup lists, number
 expressions, context definitions and modifications, and a few other
 things.  If it encloses nothing or only a single music event, it no
 longer returns a sequential music list but rather a void music
 expression or just the music event itself, respectively.
 
+@item
+Pitches can be used on the right side of assignments.  They are
+distinguished from single note events by the absence of a duration by
+the absence of a duration or other information that can't be part of a
+pitch.
+
 @item
 New command-line option @option{--loglevel=@var{level}} to control how much output
 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
 
 @item
-@code{\set \once} now correctly resets the property value to the previous value.
+@code{\once \set} now correctly resets the property value to the previous value.
 @lilypond[fragment,quote,relative=2]
   \set fingeringOrientations = #'(left)
   <e-1>4
index c724a4836bb20ae3a4c13f7976bae753e1f020ac..36886d19cb7acf89195b0850891024b6eb87bb67 100644 (file)
@@ -128,22 +128,25 @@ Currently: Carl
 
 @subheading Introduction
 
-Patchy is a set of Python scripts written by Graham to automate
-two administrative tasks:
+Patchy is a set of Python scripts to automate two administrative
+tasks:
 
 @itemize
 @item
-checking that patches compile
+@code{lilypond-patchy-staging.py}: checks that new commits in
+@code{staging} can compile the regtests and documentation before
+merging @code{staging} into @code{master}.
+
+(completely automatic)
 
 @item
-trying to ensure that git master is not corrupted by non-compiling
-patches.
+@code{test-patches.py}: checks that patches apply to git master,
+compile, and lets a human check that there are no big unintended
+changes to the regtests.
 
-@end itemize
+(requires some human input)
 
-Checking that patches compile is the job of @code{test-patches.py},
-whilst @code{lilypond-patchy-staging.py} tests patches in staging
-before pushing them to master.
+@end itemize
 
 @subheading Installing patchy
 
@@ -151,16 +154,17 @@ To install patchy, you should run do the following:
 
 @enumerate
 @item
-Create a new user on your box - use this solely to run patchy.  It
-is recommended that this should not be an administrator. New
-users are created from System; Administration; Users and Groups.
+Create a new user on your box to to run patchy; this is a security
+step for your own protection.  It is recommended that this should
+not be an administrator.  New users are created from System;
+Administration; Users and Groups.
 
 @item
 Get the patchy scripts from
 @example
 https://github.com/gperciva/lilypond-extra/
 @end example
-Patchy is in the @code{patches} directory.
+Patchy is in the @file{patches/} directory.
 
 @item
 Put the scripts in a sensible place on your system
@@ -177,18 +181,22 @@ Make sure it's where you want it and name it lilypond-git
 @item
 Create an environment variable called LILYPOND_GIT and make it
 equal to the location of your new git repo.  You can do this by
-editing .profile and adding the line:
+editing @file{$HOME/.profile} and adding the line:
 @example
 export LILYPOND_GIT=~/lilypond-git
 @end example
-and logging out and in.
+then logging out and in.
+
+@item
+Run patchy once to set up config files.  Cancel this build
+(ctrl-c).
 
 @item
-Edit lilypond-patchy-config-DEFAULT to provide working directories
-for your build directory, your results directory, compiler options
-and notification method.  If you don't want to use email
-notification, then delete everything after @code{smtp_command:}.
-Save this as lilypond-patchy-config.
+Edit @file{$HOME/.lilypond-patchy-config} to provide working
+directories for your build directory, your results directory,
+compiler options and notification method.  If you don't want to
+use email notification, then delete everything after
+@code{smtp_command:}.
 
 @item
 Ensure that your new user has git push access.  Follow the
@@ -206,8 +214,10 @@ python lilypond-patchy-staging.py
 @end example
 Not much appears to happen except you can see a lot of CPU gets
 used if you open System Monitor. There's not much point running
-patch-merge unless there something in staging to be merged to
-master.
+@code{lilypond-patchy-staging.py} unless there something in
+staging to be merged to master, however, if there's nothing in
+staging then the script won't waste resources by compiling
+anything.
 
 The script fetches the current patches in staging and runs
 @code{make}, @code{make test} and @code{make doc} to ensure that all of
@@ -217,11 +227,15 @@ them in a logfile.  It also merges staging into master.
 
 @subheading test-patches.py
 test-patches prepares a regtest comparison for a human to quickly
-glance at, to determine if the patch is ready for a review.  If
-the patch passes test-patches, it should be reviewed by relevant
-developers, and if it passes this, it can be considered for
-countdown (see @ref{Commits and patches}) and pushing to staging
-(see @ref{Pushing to staging}).
+glance at, to determine if the patch is ready for a review.  After
+looking at the comparison (or the lack of a comparison in the case
+of problems), run @code{accept-patch.py} or
+@code{reject-patch.py}.
+
+Once a patch has gotten a "LGTM" from Patchy, it should be
+reviewed by relevant developers, and if it passes this, it can be
+considered for countdown (see @ref{Commits and patches}) and
+pushing to staging (see @ref{Pushing to staging}).
 
 
 @node Administrative mailing list
index 2316f95855d30eebde70d21afd1c44797b7f5640..19509f1e52d03584505ea565cfdbceeddef81001 100644 (file)
@@ -7,6 +7,7 @@ miscellaneous development tasks.
 
 @menu
 * Introduction to issues::
+* Bug Squad overview::
 * Bug Squad setup::
 * Bug Squad checklists::
 * Issue classification::
@@ -38,6 +39,35 @@ that a developer's fix actually resolves the problem.
 New volunteers for the Bug Squad should contact the
 @ref{Meisters, Bug Meister}.
 
+@node Bug Squad overview
+@section Bug Squad overview
+
+The Bug Squad are volunteers who progress issue tracking using the
+Google Issue tracker at
+
+@example
+@uref{http://code.google.com/p/lilypond/issues/list}
+@end example
+
+Bug Squad members have 2 primary responsiblities:
+
+@enumerate
+
+@item
+Monitoring the LilyPond Bugs mailing list and adding to the
+tracker any new issues reported there.
+
+@item
+Verifying issues that are claimed fixed by a developer, to ensure
+that the fix works, and is actually in the code base.
+
+@end enumerate
+
+It's also part of the Bug Squad's responsibility to check that
+the Regression Tests don't show up any problems in the latest
+release.  The Bug Meister currently does this.
+
+All of this is explained in more detail in the following sections.
 
 @node Bug Squad setup
 @section Bug Squad setup
@@ -158,10 +188,10 @@ the currently-active Bug Squad member(s) can handle the message.
 @example
 Monday:    Ralph
 Tuesday:   Eluze
-Wednesday: Brett
+Wednesday: Marek
 Thursday:  Colin Hall (disambiguation here)
 Friday:    Marek
-Saturday:  Brett
+Saturday:  James
 Sunday:    Phil
 @end example
 
@@ -312,19 +342,28 @@ After @strong{every release} (both stable and unstable):
 @itemize
 
 @item
-Issues to verify: try to reproduce the bug with the latest
-officially released version (not one you've built yourself from
-source); if the bug is no longer there, mark the
-issue @qq{Verified} (i.e. @qq{the fix has been verified to work}).
-
-The list of items to verify is here:
+Issues to verify: go to
 
 @example
 @uref{http://code.google.com/p/lilypond/issues/list?can=7}
 @end example
 
-You can also generate this list by selecting @qq{Issues to verify}
-from the drop-down list next to the search box.
+(You can also generate this list by selecting
+@qq{Issues to verify} from the drop-down list next to the search
+box.)
+
+You should see a list of Issues that have been claimed fixed by a
+developer.  If the developer has done their job properly, the
+Issue should have a tag @qq{Fixed_mm_MM_ss}, where mm is
+the major version, MM the minor version and ss the current
+release.  This will help you work out which you can verify - do
+not verify any Issues where the claimed fixed build is not yet
+released.  Work your way through these as follows:
+
+If the Issue refers to a bug, try to reproduce the bug with the latest
+officially released version (not one you've built yourself from
+source); if the bug is no longer there, mark the
+issue @qq{Verified} (i.e. @qq{the fix has been verified to work}).
 
 Quite a few of these will be issues tracking patches.  @strong{You
 do not have to prove these patches work - simply that they have
@@ -345,13 +384,25 @@ finding these is to enter the committish at the following address:
 @uref{http://philholmes.net/lilypond/git/}
 @end example
 
+The Issue tracker also requires that any issues labelled as
+@qq{Duplicate} are also verified.  Check that the linked issue is
+a duplicate and verify the issue.
+
 A few (approximately 10%) of the fixed issues relate to the
 build system or fundamental architecture changes; there is no way
 for you to verify these.  Leave those issues alone; somebody else
 will handle them.
 
 @item
-Regression test comparison: if anything has changed suspiciously,
+The official regression test comparison is online at:
+
+@c NOTE: leave this here.  In this case, it's worth duplicating
+@c       the link.  -gp
+@example
+@uref{http://lilypond.org/test/}
+@end example
+
+If anything has changed suspiciously,
 ask if it was deliberate.  If the text output from LilyPond (the
 logfile) changes, the differences will be displayed with a +
 before text added to the logfile and - before any text removed
@@ -362,14 +413,6 @@ regtests are created. @code{test-output-distance.ly} creates
 randomly spaced notes and will always have different output if the
 regtest checker is working.
 
-The official comparison is online, at:
-
-@c NOTE: leave this here.  In this case, it's worth duplicating
-@c       the link.  -gp
-@example
-@uref{http://lilypond.org/test/}
-@end example
-
 More information is available from in
 @ref{Precompiled regression tests}.
 
@@ -481,8 +524,9 @@ The issue's Type should be the first relevant item in this list.
 
 @item
 Type-Critical: normally a regression
-against a previous stable version or a regression against a fix
-developed for this version. This does not apply where the
+against the current stable version or the previous stable version.
+Alternatively, a regression against a fix developed for the
+current version. This does not apply where the
 @qq{regression} occurred because a feature was removed
 deliberately - this is not a bug.
 
@@ -519,6 +563,10 @@ Type-Enhancement: a feature request for the core program.  The
 distinction between enhancement and defect isn't extremely clear;
 when in doubt, mark it as enhancement.
 
+@item
+Type-Patch: tracking a patch on Rietveld.  Bug squad should not
+need to use this label.
+
 @item
 Type-Other: anything else.
 
@@ -576,10 +624,11 @@ be downgraded from Priority-Critical by one of the programmers.
 
 Issues that only affect specific operating systems.
 
-@subheading Patch (optional)
+@subheading Patch label (optional)
 
-Normal Bug Squad members should not add or modify Patch issues;
-leave them to the Patch Meister.
+Normal Bug Squad members should not add or modify Patch issues
+except to verify them; for all other Patch work, leave them to the
+Patch Meister.
 
 @itemize
 
@@ -605,6 +654,12 @@ If the patch is updated, the category should be changed to
 @code{patch-new} (for normal contributors) or @code{patch-review}
 (for developers who are very confident about their patch).
 
+@item
+Patch-countdown: final call for any patch problems
+
+@item
+Patch-push: patch has passed the countdown and should be pushed.
+
 @item
 Patch-abandoned: the author has not responded to review comments
 for a few months.
@@ -618,11 +673,11 @@ Other labels:
 @itemize
 
 @item
-Regression: it used to work intentionally in an earlier
-stable release.  If the earlier output was accidental (i.e. we
-didn't try to stop a collision, but it just so happened that two
-grobs didn't collide), then breaking it does not count as a
-regression.
+Regression: it used to work intentionally in the current
+stable release or the previous stable release.  If the earlier
+output was accidental (i.e. we didn't try to stop a collision,
+but it just so happened that two grobs didn't collide), then
+breaking it does not count as a regression.
 
 To help decide whether the change is a regression, please adopt
 the following process:
@@ -672,7 +727,7 @@ Performance: performance issue.
 
 If you particularly want to add a label not in the list, go
 ahead, but this is not recommended, except when an issue is marked
-as fixed.  In this case it should be labeled fixed_mm_MM_ss,
+as fixed.  In this case it should be labeled Fixed_mm_MM_ss,
 where mm is major version, MM minor version and ss current
 release.
 
@@ -699,7 +754,7 @@ have been added.
 @item
 Add the issue and classify it according to the guidelines in
 @ref{Issue classification}.  In particular, the item should have
-@code{Status}, @code{Type-}, and @code{Priority-} labels.
+@code{Status} and @code{Type-} labels.
 
 Include output with the first applicable method:
 
@@ -732,7 +787,10 @@ lilypond --png bug.ly
 @item
 Images created as @file{bug.png} may be trimmed to a minimum size
 by using the @code{trimtagline.sh} script, which can be found at
+
+@smallexample
 @uref{https://raw.github.com/gperciva/lilypond-extra/master/bug-squad/trimtagline.sh}
+@end smallexample
 
 @example
 trimtagline.sh bug.ly
index ee20d3e76e1b64891ea463c8b4c28155e3876f54..930f7857afbe350783f8620e1becf444639f5b37 100644 (file)
@@ -526,6 +526,18 @@ a @code{-D}.
 @node Other repositories
 @subsection Other repositories
 
+We have a few other code repositories.
+
+@menu
+* lilypond-extra::
+* Grand Unified Builder (GUB)::
+* lilypad::
+* yet more repositories::
+@end menu
+
+@node lilypond-extra
+@unnumberedsubsubsec lilypond-extra
+
 There is a separate repository for general administrative scripts,
 as well as pictures and media files for the website.  People
 interested in working on the website should download this
@@ -543,6 +555,36 @@ Linux distributions),
 export LILYPOND_WEB_MEDIA_GIT=$HOME/dir/of/lilypond-extra/
 @end example
 
+@node Grand Unified Builder (GUB)
+@unnumberedsubsubsec Grand Unified Builder (GUB)
+
+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}.
+
+There are two locations for this repository, which will hopefully
+be kept up-to-date with each other:
+
+@example
+@uref{http://github.com/janneke/gub}
+@uref{http://github.com/gperciva/gub}
+@end example
+
+
+@node lilypad
+@unnumberedsubsubsec lilypad
+
+Our binary releases on MacOS X and Windows contain a lightweight
+text editor.  This code is here:
+
+@example
+https://github.com/gperciva/lilypad
+@end example
+
+
+@node yet more repositories
+@unnumberedsubsubsec yet more repositories
 
 There are a few other repositories floating around, which will
 hopefully be documented in the near future.
@@ -730,13 +772,10 @@ branch.
 @item @code{stable/XYZ}:
 The branches are kept for archival reasons.
 
-@end itemize
+@item @code{archive/XYZ}:
+The branches are kept for archival reasons.
 
-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
-@uref{http://github.com/janneke/gub}.
+@end itemize
 
 
 @node Basic Git procedures
index 601aaf78a542b2f882ba83e4551ff52cc164905e..97300b529614aa3bf2cef1ed1608ae19a2a3597a 100644 (file)
@@ -1,7 +1,7 @@
 ISOLANG = cs
 depth = ../..
 # SUBDIRS = web learning notation texidocs usage included essay extending
-SUBDIRS = web learning texidocs essay usage
+SUBDIRS = web learning texidocs essay usage included
 STEPMAKE_TEMPLATES = documentation texinfo
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
 NO_PDF_FILES = 1
diff --git a/Documentation/cs/included/GNUmakefile b/Documentation/cs/included/GNUmakefile
new file mode 100644 (file)
index 0000000..afe7a4d
--- /dev/null
@@ -0,0 +1,10 @@
+depth = ../../..
+
+STEPMAKE_TEMPLATES=documentation
+
+EXTRA_DIST_FILES+=$(call src-wildcard,*.ly)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.ily)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.itexi)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.itely)
+
+include $(depth)/make/stepmake.make
index 6227e5a0fb6e29c2a914cac49d59c01934833d00..045477506f50b6dccde9f6458eb9f8c91da7800b 100644 (file)
@@ -397,15 +397,10 @@ c1^\markup {
 @end lilypond
 
 La lista de todas las tonalidades y ajustes posibles para un
-instrumento dado, se pueden relacionar sobre la consola o en el
-archivo de registro de salida, aunque no se pueden mostrar en la
-salida de música impresa:
-
-@lilypond[verbatim,quote]
-
-#(print-keys-verbose 'flute)
-
-@end lilypond
+instrumento dado se puede imprimir en la consola usando
+@code{#(print-keys-verbose 'flute)} o en el archivo de registro
+usando @code{#(print-keys-verbose 'flute (current-error-port))},
+aunque no se pueden mostrar en la salida de música impresa.
 
 Se pueden crear diagramas nuevos siguiendo los patrones que están en
 @file{scm/define-woodwind-diagrams.scm} y en
index f7ef201eb2fc08b82da61dc8537dd6e23ce49d7d..1b9f3c0470250f3c8f17d2c8a36bf42f298123df 100644 (file)
@@ -434,15 +434,12 @@ c1^\markup {
 }
 @end lilypond
 
-Bien que cela ne produise pas de notation, vous pouvez obtenir à l'écran
-ou dans un fichier de journalisation la liste de toutes les possibilités
-pour un instrument donné, en utilisant dans un fichier
-
-@lilypond[verbatim,quote]
-
-#(print-keys-verbose 'flute)
-
-@end lilypond
+Bien que cela ne produise pas de notation, vous pouvez obtenir la liste
+de toutes les possibilités pour un instrument donné, en utilisant dans
+un fichier les instructions
+@code{#(print-keys-verbose@tie{}'@var{vent})} -- affichage à l'écran --
+@code{#(print-keys-verbose@tie{}'@var{vent}@tie{}(current-error-port))}
+-- génération d'un fichier de journalisation.
 
 De nouveaux diagrammes sont réalisables, en suivant les directives
 contenues dans les fichiers @file{scm/define-woodwind-diagrams.scm} et
index 6233e837832cb33eed2c1d465b67232edbf76ca5..2205f934ad5d28e727d60c7436797edbaf30c6fb 100644 (file)
@@ -1,6 +1,6 @@
 ISOLANG = hu
 depth = ../..
-SUBDIRS = web learning texidocs usage
+SUBDIRS = web learning texidocs usage included
 STEPMAKE_TEMPLATES = documentation texinfo
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
 
diff --git a/Documentation/hu/included/GNUmakefile b/Documentation/hu/included/GNUmakefile
new file mode 100644 (file)
index 0000000..afe7a4d
--- /dev/null
@@ -0,0 +1,10 @@
+depth = ../../..
+
+STEPMAKE_TEMPLATES=documentation
+
+EXTRA_DIST_FILES+=$(call src-wildcard,*.ly)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.ily)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.itexi)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.itely)
+
+include $(depth)/make/stepmake.make
index 398286ac4ec2af3242f61c07a7b27c2262d1ec37..0dfaac3a59a082468dbcdec54b86da342d35cf87 100644 (file)
@@ -32,6 +32,7 @@
   (define hufnagel (get-group glyph-list "^.*hufnagel.*$"))
   (define petrucci (get-group glyph-list "^.*petrucci.*$"))
   (define solesmes (get-group glyph-list "^.*solesmes.*$"))
+  (define kievan (get-group glyph-list "^.*kievan.*$"))
 
   ;; remove ancient-music groups from the glyph-list
   (for-each
@@ -42,7 +43,8 @@
             mensural
             neomensural
             petrucci
-            solesmes))
+            solesmes
+            kievan))
 
   ;; define all remaining groups
   (define numbers
index 0bb2cffb02367c3d6cd6ece11aab3a96b358ba7b..07b6ffb4bd33c5f601088d1c6c57bfedd2b99541 100644 (file)
@@ -58,6 +58,8 @@ Contributors using Linux or FreeBSD may also use Lilydev, but if
 they prefer their own development environment, they should read
 @rcontrib{Working with source code}, and @rcontrib{Compiling}.
 
+Begin by reading @rcontrib{Summary for experienced developers}.
+
 @itemize
 @item
 Documentation: for large changes, see
index a7df94c0f51e29c3888959a981b39ce723b18d54..f974aa66aeec282e2af6d36a18a82f5028081862 100644 (file)
@@ -411,15 +411,11 @@ c1^\markup {
 }
 @end lilypond
 
-楽器に対して使用できるすべてのキーと設定のリストを@c
-コンソールやログ ファイルに表示させることができますが、@c
-楽譜出力には表示されません:
-
-@lilypond[verbatim,quote]
-
-#(print-keys-verbose 'flute)
-
-@end lilypond
+楽器に対して使用できるすべてのキーと設定のリストを表示させることができます。@c
+コンソールに表示させるには @code{#(print-keys-verbose 'flute)} を用い、@c
+ログ ファイルに表示させるには
+@code{#(print-keys-verbose 'flute (current-error-port))} を用います。@c
+楽譜出力に表示させることはできません。
 
 @file{scm/define-woodwind-diagrams.scm} と
 @file{scm/display-woodwind-diagrams.scm} のパターンに従って、@c
index 1db53e061fdde7efb5039453b770738ea32ec668..13061c09266f56ea430a8d43d241929c4be9dc51 100644 (file)
@@ -3711,8 +3711,8 @@ require an additional @code{Y-extent} override with an unpure-pure
 container.  When a function overrides a @code{Y-offset} and/or
 @code{Y-extent} it is assumed that this will trigger line breaking
 calculations too early during compilation.  So the function is not
-evaluated at all (usually returning a value of @var{0} or
-@var{'(0 . 0)}) which can result in collisions.  A @q{pure} function
+evaluated at all (usually returning a value of @samp{0} or
+@samp{'(0 . 0)}) which can result in collisions.  A @q{pure} function
 will not affect properties, objects or grob suicides and therefore will
 always have its Y-axis-related evaluated correctly.
 
index aebf84fc122b66fbcdeef599393bcb19b0dee3d5..19c87ce9718aef4fc7fd9b9f2b890e1fbc55ca75 100644 (file)
@@ -1041,7 +1041,7 @@ indicator and so footnotes are created during compilation.
 @unnumberedsubsubsec Automatic footnotes
 
 Automatic footnotes take three arguments; the @var{Layout Object} to be
-annotated, the @var{(x . y)} position of the indicator and a
+annotated, the @samp{(x . y)} position of the indicator and a
 @code{\markup} that will appear in the footnote at the bottom of the
 page.
 
@@ -1134,7 +1134,7 @@ required:
 @cindex footnotes, manual
 
 Manual footnotes takes four arguments; the @var{Layout Object} to be
-annotated, the @var{(x . y)} position of the indicator and two
+annotated, the @samp{(x . y)} position of the indicator and two
 @code{\markup} commands; the first is the indicator attached to the note
 or grob and the second is the footnote at the bottom of the page.
 
index eb0bef92a915f2daf9543672e70e40154c75ab6e..830366ddd4d5be3f7f46e3a2180c739e0b8fa451 100644 (file)
@@ -636,6 +636,7 @@ see @ref{Formatting text}.
 * Neomensural glyphs::
 * Petrucci glyphs::
 * Solesmes glyphs::
+* Kievan Notation glyphs::
 @end menu
 
 
@@ -878,6 +879,14 @@ see @ref{Formatting text}.
             \doc-chars #solesmes
 @end lilypond
 
+@node Kievan Notation glyphs
+@unnumberedsubsec Kievan Notation glyphs
+
+@lilypond[quote]
+\include "font-table.ly"
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #kievan
+@end lilypond
 
 @node Note head styles
 @appendixsec Note head styles
index e04acdf42c01c8c2bdce7af708104f73dc0a8b13..cc4dd03a2c335bfff16d20a54dd5c591042be23d 100644 (file)
@@ -144,7 +144,7 @@ as described in @ref{Tremolo repeats}.
 }
 @end lilypond
 
-Sticking can be indicated by placing placing markup for @code{"R"}
+Sticking can be indicated by placing a markup for @code{"R"}
 or @code{"L"} above or below notes, as discussed in
 @ref{Direction and placement}.  The @code{staff-padding} property
 may be overridden to achieve a pleasing baseline.
index a9725fd7172391e37d629c06f0927ae5471701cf..a935aa121da5f79d712eb7bc5493ed86b9359386 100644 (file)
@@ -393,14 +393,10 @@ c1^\markup {
 @end lilypond
 
 The list of all possible keys and settings for a given instrument
-can be displayed on the console or in the log file, although they
-will not show up in the music output:
-
-@lilypond[verbatim,quote]
-
-#(print-keys-verbose 'flute)
-
-@end lilypond
+can be displayed on the console using
+@code{#(print-keys-verbose 'flute)} or in the log file using
+@code{#(print-keys-verbose 'flute (current-error-port))}, although
+they will not show up in the music output.
 
 New diagrams can be created by following the patterns in
 @file{scm/define-woodwind-diagrams.scm} and
index fa99151b8e5b7ee8a1c699a04764d54dcd685c18..f64e9f012a2123236fc906850b62d53a0a0698d8 100644 (file)
@@ -16,7 +16,6 @@ zu formatieren.
 
 "
   doctitlede = "Silben im Gesangstext formatieren"
-
 %%  Translation of GIT committish: d9d1da30361a0bcaea1ae058eb1bc8dd3a5b2e4c
   texidocfr = "
 Le mode markup permet d'individualiser la mise en forme de certaines syllabes.
index d2d680e43dfea62090a156715ec1e9f0c6aa7c6a..b8af195da3061d7efafc9ed554bbdc6866882ef8 100644 (file)
@@ -27,7 +27,6 @@ strofe come testo separato sotto la musica.
 
 "
   doctitleit = "Modello per inno"
-
 %%    Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
 
   texidocde = "
index 3775949b0550181135203964f27abd74b3e4ac81..3b3825e6e870210e3f5e691c7fc94ee206009133 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.15.24"
+\version "2.15.30"
 
 \header {
   lsrtags = "chords, fretted-strings"
@@ -7,11 +7,7 @@
 Here is how to print bar chords, or half-bar chords (just uncomment the
 appropriate line for to select either one).
 
-The syntax is @code{\\bbarre #'fret_number' @{ notes @} }
-
-
-
-
+The syntax is @code{\\bbarre #\"@var{fret number}\" @{ notes @} }.
 "
   doctitle = "Bar chords notation for Guitar ( with Text Spanner)"
 }
@@ -25,45 +21,39 @@ cWithSlash = \markup {
 }
 %% Span -----------------------------------
 %% Syntax: \bbarre #"text" { notes } - text = any number of box
-bbarre= #(define-music-function (barre location str music) (string? ly:music?)
-           (let ((spanned-music
-                   (let ((first-element #f)
-                         (last-element #f)
-                         (first-found? #f))
-                     (music-map (lambda (m)
-                                  (if (eqv? (ly:music-property m 'name) 'EventChord)
-                                      (begin
-                                        (if (not first-found?)
-                                            (begin
-                                              (set! first-found? #t)
-                                              (set! first-element m)))
-                                        (set! last-element m)))
-                                  m)
-                                music)
-                     (if first-found?
-                         (begin
-                           (set! (ly:music-property first-element 'elements)
-                                 (cons (make-music 'TextSpanEvent 'span-direction -1)
-                                       (ly:music-property first-element 'elements)))
-                           (set! (ly:music-property last-element 'elements)
-                                 (cons (make-music 'TextSpanEvent 'span-direction 1)
-                                       (ly:music-property last-element 'elements)))))
-                     music)))
-             (make-music 'SequentialMusic
-               'origin location
-               'elements (list #{
-                       \once \override TextSpanner #'font-size = #-2
-                       \once \override TextSpanner #'font-shape = #'upright
-                       \once \override TextSpanner #'staff-padding = #3
-                       \once \override TextSpanner #'style = #'line
-                        \once \override TextSpanner #'to-barline = ##f
-                        \once \override TextSpanner #'bound-details =  #'((left (Y . 0) (padding . 0.25) (attach-dir . -2)) (right (Y . 0) (padding . 0.25) (attach-dir . 2)))
-                        \once  \override TextSpanner #'bound-details #'right #'text = \markup { \draw-line #'( 0 . -.5) }
-                        \once  \override TextSpanner #'bound-details #'left #'text =  \markup { \cWithSlash #str }
+bbarre =
+#(define-music-function (barre location str music) (string? ly:music?)
+   (let ((elts (extract-named-music music '(NoteEvent EventChord))))
+     (if (pair? elts)
+         (let ((first-element (first elts))
+               (last-element (last elts)))
+           (set! (ly:music-property first-element 'articulations)
+                 (cons (make-music 'TextSpanEvent 'span-direction -1)
+                       (ly:music-property first-element 'articulations)))
+           (set! (ly:music-property last-element 'articulations)
+                 (cons (make-music 'TextSpanEvent 'span-direction 1)
+                       (ly:music-property last-element 'articulations))))))
+   #{
+       \once \override TextSpanner #'font-size = #-2
+       \once \override TextSpanner #'font-shape = #'upright
+       \once \override TextSpanner #'staff-padding = #3
+       \once \override TextSpanner #'style = #'line
+       \once \override TextSpanner #'to-barline = ##f
+       \once \override TextSpanner #'bound-details =
+            #`((left
+                (text . ,#{ \markup { \draw-line #'( 0 . -.5) } #})
+                (Y . 0)
+                (padding . 0.25)
+                (attach-dir . -2))
+               (right
+                (text . ,#{ \markup { \cWithSlash #str } #})
+                (Y . 0)
+                (padding . 0.25)
+                (attach-dir . 2)))
 %% uncomment this line for make full barred
-                       % \once  \override TextSpanner #'bound-details #'left #'text =  \markup { "B" #str }
-                          #}
-    spanned-music))))
+       % \once  \override TextSpanner #'bound-details #'left #'text =  \markup { "B" #str }
+       $music
+   #})
 
 %% %%%%%%%  Cut here ----- End 'bbarred.ly'
 %% Copy and change the last line for full barred. Rename in 'fbarred.ly'
index bdb803cfd9c04e5c101deb8e69f33eda1b961672..0fcdecac584d302b2c221f6bc607e8327dab298b 100644 (file)
@@ -7,19 +7,24 @@
 The snippet below produces a list of all possible keys and key
 settings for woodwind diagrams as defined in
 @file{scm/define-woodwind-diagrams.scm}.  The list will be displayed
-on the console and in the log file, but not in the music.
+in the log file, but not in the music.  If output to the console
+is wanted, omit the @code{(current-error-port)} from the commands.
 "
   doctitle = "Woodwind diagrams key lists"
 }
 
-#(print-keys-verbose 'piccolo)
-#(print-keys-verbose 'flute)
-#(print-keys-verbose 'flute-b-extension)
-#(print-keys-verbose 'oboe)
-#(print-keys-verbose 'clarinet)
-#(print-keys-verbose 'bass-clarinet)
-#(print-keys-verbose 'low-bass-clarinet)
-#(print-keys-verbose 'saxophone)
-#(print-keys-verbose 'baritone-saxophone)
-#(print-keys-verbose 'bassoon)
-#(print-keys-verbose 'contrabassoon)
+#(print-keys-verbose 'piccolo (current-error-port))
+#(print-keys-verbose 'flute (current-error-port))
+#(print-keys-verbose 'flute-b-extension (current-error-port))
+#(print-keys-verbose 'tin-whistle (current-error-port))
+#(print-keys-verbose 'oboe (current-error-port))
+#(print-keys-verbose 'clarinet (current-error-port))
+#(print-keys-verbose 'bass-clarinet (current-error-port))
+#(print-keys-verbose 'low-bass-clarinet (current-error-port))
+#(print-keys-verbose 'saxophone (current-error-port))
+#(print-keys-verbose 'soprano-saxophone (current-error-port))
+#(print-keys-verbose 'alto-saxophone (current-error-port))
+#(print-keys-verbose 'tenor-saxophone (current-error-port))
+#(print-keys-verbose 'baritone-saxophone (current-error-port))
+#(print-keys-verbose 'bassoon (current-error-port))
+#(print-keys-verbose 'contrabassoon (current-error-port))
index bf5fb3e519f6c174cca955b991465fdd9f6d0f31..fb3f88f3409a22923d0ebf63d4045387a98a4ba8 100644 (file)
@@ -47,7 +47,6 @@ necesario hacer tres llamadas a @code{\\autoBeamOff}.
 
 "
   doctitlees = "Partcombine y autoBeamOff"
-
 %%   Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
 
   texidocde = "
@@ -79,7 +78,6 @@ wenn man es mit @code{\\partcombine} verwendet, muss @code{\\autoBeamOff}
 "
 doctitlede = "Partcombine und autoBeamOff"
 
-
 %% Translation of GIT committish: 3b125956b08d27ef39cd48bfa3a2f1e1bb2ae8b4
   texidocfr = "
 La fonction @code{\\autoBeamOff} dans le cadre d'un
index 0f0d6f355462ee5cd79bd101d49b927e358576bd..075f6e814c767597dcba673e95c8321402e2e9b0 100644 (file)
@@ -50,20 +50,25 @@ sous forme de musique.
 The snippet below produces a list of all possible keys and key
 settings for woodwind diagrams as defined in
 @file{scm/define-woodwind-diagrams.scm}.  The list will be displayed
-on the console and in the log file, but not in the music.
+in the log file, but not in the music.  If output to the console
+is wanted, omit the @code{(current-error-port)} from the commands.
 "
   doctitle = "Woodwind diagrams key lists"
 } % begin verbatim
 
 
-#(print-keys-verbose 'piccolo)
-#(print-keys-verbose 'flute)
-#(print-keys-verbose 'flute-b-extension)
-#(print-keys-verbose 'oboe)
-#(print-keys-verbose 'clarinet)
-#(print-keys-verbose 'bass-clarinet)
-#(print-keys-verbose 'low-bass-clarinet)
-#(print-keys-verbose 'saxophone)
-#(print-keys-verbose 'baritone-saxophone)
-#(print-keys-verbose 'bassoon)
-#(print-keys-verbose 'contrabassoon)
+#(print-keys-verbose 'piccolo (current-error-port))
+#(print-keys-verbose 'flute (current-error-port))
+#(print-keys-verbose 'flute-b-extension (current-error-port))
+#(print-keys-verbose 'tin-whistle (current-error-port))
+#(print-keys-verbose 'oboe (current-error-port))
+#(print-keys-verbose 'clarinet (current-error-port))
+#(print-keys-verbose 'bass-clarinet (current-error-port))
+#(print-keys-verbose 'low-bass-clarinet (current-error-port))
+#(print-keys-verbose 'saxophone (current-error-port))
+#(print-keys-verbose 'soprano-saxophone (current-error-port))
+#(print-keys-verbose 'alto-saxophone (current-error-port))
+#(print-keys-verbose 'tenor-saxophone (current-error-port))
+#(print-keys-verbose 'baritone-saxophone (current-error-port))
+#(print-keys-verbose 'bassoon (current-error-port))
+#(print-keys-verbose 'contrabassoon (current-error-port))
index 77141c73b0d3c95eb07b438d5e33a48275a4fa98..72935e8a773072fda59f73053726908c366f8d5f 100644 (file)
@@ -9,6 +9,20 @@
 @c used for news about the upcoming release; see CG 10.2
 
 
+@newsItem
+@subsubheading LilyPond 2.15.29 released!  @emph{Feb 9, 2012}
+
+We are happy to announce the release of LilyPond 2.15.29.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.  Please
+note that due to a few Critical bugs, this is not the next release
+candidate.
+
+@newsEnd
+
+
 @newsItem
 @subsubheading LilyPond 2.15.28 released!  @emph{Feb 3, 2012}
 
index 250158e44b1ba77b88e7936b471bff4dc37af803..c46b13bb43f61b8e9ee40d06964a5292ce317cf1 100644 (file)
@@ -1,7 +1,7 @@
 ISOLANG = zh
 depth = ../..
 # SUBDIRS = web learning notation texidocs usage included essay extending
-SUBDIRS = web texidocs
+SUBDIRS = web texidocs included
 STEPMAKE_TEMPLATES = documentation texinfo
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
 NO_PDF_FILES = 1
diff --git a/Documentation/zh/included/GNUmakefile b/Documentation/zh/included/GNUmakefile
new file mode 100644 (file)
index 0000000..afe7a4d
--- /dev/null
@@ -0,0 +1,10 @@
+depth = ../../..
+
+STEPMAKE_TEMPLATES=documentation
+
+EXTRA_DIST_FILES+=$(call src-wildcard,*.ly)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.ily)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.itexi)
+EXTRA_DIST_FILES+=$(call src-wildcard,*.itely)
+
+include $(depth)/make/stepmake.make
diff --git a/VERSION b/VERSION
index 4d34a38b40ee6cd115b31274e0d66c8a8eee2243..0f2688971592a1013f3b4c4815d581c1cf5bccff 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=15
-PATCH_LEVEL=29
+PATCH_LEVEL=30
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.14.2
-VERSION_DEVEL=2.15.28
+VERSION_DEVEL=2.15.29
diff --git a/input/regression/ambitus-cue.ly b/input/regression/ambitus-cue.ly
new file mode 100644 (file)
index 0000000..6bb87b9
--- /dev/null
@@ -0,0 +1,27 @@
+\version "2.14.2"
+
+\header {
+  texidoc = "Ambitus for pieces beginning with @code{\\cueDuringWithClef}.
+
+Cues are often used at or near the beginning of a piece. Furthermore,
+a cue is frequently in a different clef, so the
+@code{\\cueDuringWithClef} command is handy.  Using this command at
+the beginning of a piece should leave the ambitus displayed based
+on the main clef.
+"
+}
+
+\addQuote "other" \relative c { r4 c e g }
+
+\new Staff \new Voice \relative c'
+{
+ \cueDuringWithClef #"other" #UP #"bass" { R1 } |
+ e4 b c2
+}
+
+\layout {
+ \context {
+   \Voice
+   \consists "Ambitus_engraver"
+ }
+}
diff --git a/input/regression/breve-extent.ly b/input/regression/breve-extent.ly
new file mode 100644 (file)
index 0000000..46bb510
--- /dev/null
@@ -0,0 +1,31 @@
+\version "2.15.13"
+
+\header  {
+  texidoc = "LilyPond knows that breves and longas are wider than whole notes
+  (because of vertical lines on their sides).  Breves and longas don't collide
+  with accidentals, barlines, neighbor notes etc.  The distance between
+  accidental and note is the same for whole notes, breves and longas."
+}
+
+{ 
+  gis'1
+  gis'\breve*1/2
+  gis'\longa*1/4
+  \override NoteHead #'style = #'altdefault 
+  gis'\breve*1/2
+}
+
+\score {
+    \new Staff {
+      \repeat unfold 8 { a'\breve*1/16 }
+      \override NoteHead #'style = #'altdefault 
+      \repeat unfold 8 { a'\breve*1/16 }
+    }
+    \layout {
+        \context {
+            \Score
+            \override SpacingSpanner
+            #'common-shortest-duration = #(ly:make-moment 1 1 )
+        }
+    }
+}
diff --git a/input/regression/glissando-cross-staff.ly b/input/regression/glissando-cross-staff.ly
new file mode 100644 (file)
index 0000000..2e687e6
--- /dev/null
@@ -0,0 +1,20 @@
+\version "2.15.29"
+\header {
+  texidoc = "Cross staff glissandi reach their endpoints correctly.
+"
+}
+
+\new PianoStaff <<
+\new Staff = "right" {
+  e'''2\glissando
+  \change Staff = "left"
+
+  a,,\glissando
+  \change Staff = "right"
+  b''8
+}
+\new Staff = "left" {
+  \clef bass
+  s1 s8
+}
+>>
index 6081f7fe36d84daf75f222b41d94ae2b7841b816..4cec06b66140d5f77e9982743d6b87208d5b259f 100644 (file)
@@ -3,16 +3,35 @@ depth = ../../..
 STEPMAKE_TEMPLATES=documentation texinfo
 LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc lilypond-book
 
-COLLATED_FILES = $(OUT_FILES)
-
 include $(depth)/make/stepmake.make
 
 TITLE=lilypond-book Test Suite
 
+COLLATED_FILES = $(OUT_FILES)
+
 EXTRA_DIST_FILES = include.mxl
+EXTRA_DIST_FILES += include.xml
 EXTRA_DIST_FILES += $(call src-wildcard,*.ly)
 EXTRA_DIST_FILES += $(call src-wildcard,*.ily)
 EXTRA_DIST_FILES += $(call src-wildcard,*.tely)
 EXTRA_DIST_FILES += $(call src-wildcard,*.itely)
 
+OUT_TEXI_FILES += ${TEXI_FILES:%.texi=$(outdir)/%.info}
+OUT_TEXI_FILES += ${TEXI_FILES:%.texi=$(outdir)/%.pdf}
+OUT_TEXINFO_FILES += ${TEXINFO_FILES:%.texinfo=$(outdir)/%.info}
+OUT_TEXINFO_FILES += ${TEXINFO_FILES:%.texinfo=$(outdir)/%.pdf}
+OUT_TELY_FILES += ${TELY_FILES:%.tely=$(outdir)/%.info}
+OUT_TELY_FILES += ${TELY_FILES:%.tely=$(outdir)/%.pdf}
+
+XML_FILES = $(filter-out include%,$(call src-wildcard,*.xml))
+
+local-test: $(OUT_FILES)
+
+$(outdir)/collated-files.list: $(OUT_FILES)
+       echo $(sort $(filter-out %.xml,$(OUT_FILES))) > $@
+
+$(outdir)/suffix-texi.texi: suffix-texi.texi $(outdir)/version.itexi $(DOCUMENTATION_LOCALE_TARGET) $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
+       LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
 
+# Prevent parallel lilypond-book instances for this subdir
+.NOTPARALLEL:
index 2ad549cab82e7dc3f8917d453d003799721039ac..1f5b82662efa18b61a50266900ead703ba895428 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-Lilypond fragment with newlines before the end tags.
+A LilyPond fragment with newlines before the end tags.
 <lilypond fragment relative=2
 >
 \key c \minor c4 es g2
index a0be117f61938158d6c6b524ef9742312f286130..50edb7da3fa1a29f69a5ae85baebda8458e6ba8d 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-Lilypond fragment with spaces and tabs before the end tags.
+A LilyPond fragment with spaces and tabs before the end tags.
 <lilypond fragment relative=2     >
 \key c \minor c4 es g2
 </lilypond     >
index 8519705199b174ae841683d286e016c781f7f527..58bb007fe0542e602d4ce517785a6f9c52b6bb37 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <body>
-Lilypond version: <lilypondversion
+LilyPond version: <lilypondversion
 />
 </body>
 </html>
index 3fdc33272d1adac329a97dcaba89908a9c0c864b..c4a58be45edf7f4a772bbf6928f6ae186243e928 100644 (file)
@@ -1,5 +1,5 @@
 <html>
 <body>
-Lilypond version: <lilypondversion/>
+LilyPond version: <lilypondversion/>
 </body>
 </html>
index 0b877e32517bf65e743840ab60fc0ba62d83dbef..5cb7ef23533cd84df05754bc37b0fc067820d3d4 100644 (file)
@@ -1,9 +1,9 @@
 \version "2.14.0"
 
 \header {
-doctitlees = "If you see this 'translated' doctitle, language detection work"
+doctitlees = "If you see this 'translated' doctitle, language detection works!"
 
-texidoces = "If you see this 'translated' texidoc, language detection work"
+texidoces = "If you see this 'translated' texidoc, language detection works!"
 
   texidoc = "Original texidoc (you should not see this!)"
   doctitle = "Original doctitle (you should not see this!)"
diff --git a/input/regression/lilypond-book/papersize-docs.tely b/input/regression/lilypond-book/papersize-docs.tely
deleted file mode 100644 (file)
index e47e57f..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
-@setfilename papersize-docs.info
-@settitle Different paper sizes for documentation
-@documentencoding UTF-8
-@documentlanguage en
-@afourpaper
-
-@node Top
-@top Different paper sizes for documentation.
-
-This is a sample of a small papersize, which is useful when you
-want to add a @code{\book@{@}} around some input.
-
-@lilypond[verbatim,papersize=a8landscape]
-\book {
-  \header {
-    title = "A scale in LilyPond"
-  }
-  \score {
-    \relative c' {
-      c4 d e f
-    }
-  }
-}
-@end lilypond
-
-Here is a different paper size, and a changed tagline.
-
-@lilypond[verbatim,quote,papersize=a8]
-\book {
-  \header {
-    title = "A scale in LilyPond"
-    tagline = "... music notation for Everyone"
-  }
-  \score {
-    \relative c' {
-      c4 d e f
-    }
-  }
-}
-@end lilypond
-
-@bye
index 5d0ae0c0a3699123e41f66b6c304748bf92beba5..f14873fff0df0b916de87052da8e0a658bde9428 100644 (file)
@@ -4,8 +4,9 @@
 
 \begin{document}
 
-\section{A coment on the first line of the file}
+\section{A comment on the first line of the file}
 
+The source file for this document contains a comment on the first line.
 This should not confuse the auto-detection of lilypond-book...
 
 \begin{lilypond}
index d94360ab54a3453abb768ff402c9219010d130ff..b4b51b31cb468c41bd719f02e29b35192f5738d0 100644 (file)
@@ -2,7 +2,7 @@
 
 \begin{document}
 
-\section{Lilypond-book should add the graphicx package}
+\section{LilyPond-book should add the graphicx package}
 
 If a latex file does not yet include the graphicx package, it is added by
 lilypond-book.
index 6705a7ff14b886948df1e2f8ea343f2a1942b8e2..1045df472972769ddb09fd302c91352451b0ac87 100644 (file)
@@ -1,5 +1,5 @@
 \documentclass{article}
 \begin{document}
-Including Lilypond file:
+Including a LilyPond file without any options:
 \lilypondfile{include2.ly}
 \end{document}
index a53fb5dcd0c70255758689b002e654a4c47725c6..99934bf049567a4adb88854b47868e45c813f6d7 100644 (file)
@@ -1,5 +1,5 @@
 \documentclass{article}
 \begin{document}
-Including Lilypond file with options (quote and noindent):
+Including a LilyPond file with options (quote and noindent):
 \lilypondfile[quote,noindent]{include2.ly}
 \end{document}
index 0d4886a5b0a7d3243178eb11cb181d5339475e25..cdc6c60c66336ea62452b5aac8f7e7eed46f8bd1 100644 (file)
@@ -1,4 +1,4 @@
 \documentclass{article}
 \begin{document}
-Adding Lilypond code inline: \lilypond[relative=2]{ d g ceses }
+Adding LilyPond code inline: \lilypond[relative=2]{ d g ceses }
 \end{document}
index 91d78bb60fd5eb521c35e70d2e7e6a0915057079..59ac7127ab1f8335d41054c853d3797b017b7f18 100644 (file)
@@ -2,7 +2,7 @@
 
 \begin{document}
 
-\section{Lilypond snippets inside lists:}
+\section{LilyPond snippets inside lists:}
 
 Itemize environment:
 \begin{itemize}
index a75c4df735ff36b47afbae1efd4efe1fc97c54aa..9723b35bd5d9c7e2ca572ad681978b5de8e1493d 100644 (file)
@@ -2,7 +2,7 @@
 
 \begin{document}
 
-\section{Lilypond snippets inside tables:}
+\section{LilyPond snippets inside tables:}
 
 Tables:
 
index 154ed6646a20813cfd1095133baff530f03fe4af..daf1aa55869852d14062f0b403c0838ac4bff3a3 100644 (file)
@@ -1,5 +1,5 @@
 \documentclass{article}
 \begin{document}
-Including MusicMXL file:
+Including a MusicXML file with options:
 \musicxmlfile[language=deutsch,absolute,no-beaming]{include.xml}
 \end{document}
index 2995b35cb38c99a905cf1f9f0b8a38c937693cab..f1df08562a4a957daa1143f86153388ca8092287 100644 (file)
@@ -1,5 +1,5 @@
 \documentclass{article}
 \begin{document}
-Including MusicMXL file:
+Including a MusicXML file without options:
 \musicxmlfile{include.xml}
 \end{document}
index da2452981ed9698e47a606b48b506cd1158aace3..f46683a15c069576d86c74bbb048c0d6e29fe8e6 100644 (file)
@@ -17,7 +17,7 @@ text text text text text text text text text text text text
 text text text text text text text text text text text text
 text text text text text text text text text text text text
 
-Next has no empty lines.
+The next music has no surrounding empty lines.
 text text text text text text text text text text text text
 text text text text text text text text text text text text
 text text text text text text text text text text text text
index 1f175af37e2131830f2f547a35f67ffc37876641..17f41dc8b709a9913d6b2b35045ac8ff5df16f6e 100644 (file)
@@ -4,32 +4,41 @@
 
 \section{Snippet options}
 
-Fragment:
+This document shows the effect of various snippet options.
+
+The fragment option:
+
 \begin{lilypond}[fragment]
-c d e %\score
+c' d' e' %\score
 \end{lilypond}
 
-This shows the verbatim option:
+The verbatim option:
+
 \begin{lilypond}[fragment,verbatim]
 c' d' e'
 \end{lilypond}
 
-printfilename:
+The printfilename option:
+
 \lilypondfile[printfilename]{include.ly}
 
-staffsize:
+The staffsize option:
+
 \begin{lilypond}[staffsize=7,fragment]
 \context Voice <<c' e' g'>>
 \end{lilypond}
 \lilypond[fragment,staffsize=7]{\context Voice <<c' es' g'>>}
 
-relative:
+The relative option:
+
 \lilypond[relative=1]{ c4 f b e }
 
-quote:
-\lilypond[quote,fragment]{\relative c' c1 }
+The quote option:
+
+\lilypond[quote,fragment]{\relative c' c1 d4 c d e}
+
+Combining fragment, quote, staffsize=26, and verbatim options:
 
-fragment, quote, staffsize=26, verbatim:
 \begin{lilypond}[fragment,quote,staffsize=26,verbatim]
   c'4 f16
 \end{lilypond}
index 69c10bb7be73d5051b974447d9d70ccbbf19b2ec..b0f759f803cfe6079c2dce7c077bde645fa67ef3 100644 (file)
@@ -1,16 +1,39 @@
 \documentclass[a4paper, 12pt]{article}
 
-\begin{document}
 \twocolumn
+\begin{document}
 
 \section{A latex file with two columns}
 
-In this example, the width auto-detection shall detect the two columns
-and produce snippets that have the smaller width for a column!
+In this example, the width autodetection should detect the two-column
+settings in the preamble of the document and produce snippets that
+have the width of a column.
+
+\begin{lilypond}
+\score{
+  \relative c'{c d e f g a b c | c, d e f g a b c | c, d e f g a b c}
+}
+\end{lilypond}
+
+Wraping at the end of a column is similar to wraping at the end of a
+page.
+
+Text text text text text text text text text text text text text text
+text text text text text text text text text text text text text text
+text text text text text text text text text text text text text text
+text text text text text text text text text text text text text text
+text text text text text text text text text text text text text text
+text text text text text text text text text text text text text text
+text.
+
+Text text text text text text text text text text text text text text
+text text text text text text text text text text text text text text
+text text text text text text text text text text text text text text
+text.
 
 \begin{lilypond}
 \score{
-  \relative c'{c d e f g a b c | c d e f g a b c | c d e f g a b c}
+  \relative c'{c d e f g a b c | c, d e f g a b c | c, d e f g a b c}
 }
 \end{lilypond}
 
index 363138d454ef66087c6cdb60e3717b3ad477d162..efd6e7baa779d4d2f5c9ad9dcc2a8e82378173e8 100644 (file)
@@ -9,11 +9,15 @@ This file should not contain (and produce) any lilypond images!
 Snippets inside a verbatim environment or a comment are not run through
 lilypond, but left as is.
 
+You should see the begin/end lilypond commands in all three of the below tests.
+
 % TODO: These do not yet work, as \verb is explicitly disabled in lilypond-book for now!
 % \verb|\lilypond[fragment]{c' d' e'}|
 %
 % and
 
+The verbatim environment does not confuse lilypond-book:
+
 \begin{verbatim}
 \begin{lilypond}
 c d e
@@ -21,9 +25,6 @@ c d e
 \end{verbatim}
 
 
-As you can see, the begin/end lilypond commands inside
-do not confuse lilypond-book.
-
 % TODO: These do not yet work, as \verb is explicitly disabled in lilypond-book for now!
 % \verb|\begin{lilypond}[fragment]c d e\end{lilypond}|
 
index 9509cc8a31fd8409e4fc34a7902628f0f71d8cdc..8573dfa8b79e16e22036f436b9f16e923705d20f 100644 (file)
@@ -1,4 +1,4 @@
 \documentclass{article}
 \begin{document}
-Lilypond version: \lilypondversion
+LilyPond version: \lilypondversion
 \end{document}
index d4c4c1e3968c8674d2a7c0ba5995ee0017c8f3d3..55bb5c4e734a095ae33076050ea225bea363a034 100644 (file)
@@ -8,6 +8,11 @@
 @node Top
 @top Texinfo language detection
 
+@macro lydoctitle {TEXT}
+@need 600
+@emph{\TEXT\}
+@end macro
+
 @include texinfo-include-language-detection-included.itely
 
 @bye
index 7bf528934286e95de34e949b9f2ebd4608da9847..cf5adc868dcf6a33cae80a61516e43bcdf583e55 100644 (file)
@@ -8,6 +8,11 @@
 @node Top
 @top Texinfo language detection
 
+@macro lydoctitle {TEXT}
+@need 600
+@emph{\TEXT\}
+@end macro
+
 The texidoc of the following snippet should be "translated":
 @lilypondfile[printfilename,texidoc,doctitle]{include3.ily}
 
index 85454531fb38c8f6bb4a7a51c11e58d6fde5b75e..3a753a730e6af46b23b0cfe68bacc1e18398d7fb 100644 (file)
@@ -3,9 +3,9 @@
 @settitle MusicXML inside texinfo
 
 @node Top
-@top MusicMXL in texinfo
+@top MusicXML in texinfo
 
-MusicXML included in texinfo
+A MusicXML file included in texinfo with options (language=deutsch, absolute, no-beaming):
 @musicxmlfile[language=deutsch,absolute,no-beaming]{include.xml}
 
 
index 8ff23841f263920c60e5e1932f966e84802d308e..09391e2c098c264e99f73ed7b50f2fa0fda4b806 100644 (file)
@@ -3,9 +3,9 @@
 @settitle MusicXML inside texinfo
 
 @node Top
-@top MusicMXL in texinfo
+@top MusicXML in texinfo
 
-MusicXML included in texinfo
+A MusicXML file included in texinfo without any options:
 @musicxmlfile{include.xml}
 
 
diff --git a/input/regression/lilypond-book/texinfo-papersize-docs.tely b/input/regression/lilypond-book/texinfo-papersize-docs.tely
new file mode 100644 (file)
index 0000000..9120bb6
--- /dev/null
@@ -0,0 +1,43 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: en -*-
+@setfilename papersize-docs.info
+@settitle Different paper sizes for documentation
+@documentencoding UTF-8
+@documentlanguage en
+@afourpaper
+
+@node Top
+@top Different paper sizes for documentation.
+
+This is a sample of a small papersize, which is useful when you
+want to add a @code{\book@{@}} around some input.
+
+@lilypond[verbatim,papersize=a8landscape]
+\book {
+  \header {
+    title = "A scale in LilyPond"
+  }
+  \score {
+    \relative c' {
+      c4 d e f
+    }
+  }
+}
+@end lilypond
+
+Here is a different paper size, and a changed tagline.
+
+@lilypond[verbatim,quote,papersize=a8]
+\book {
+  \header {
+    title = "A scale in LilyPond"
+    tagline = "... music notation for Everyone"
+  }
+  \score {
+    \relative c' {
+      c4 d e f
+    }
+  }
+}
+@end lilypond
+
+@bye
diff --git a/input/regression/metronome-mark-broken-bound.ly b/input/regression/metronome-mark-broken-bound.ly
new file mode 100644 (file)
index 0000000..a4d1cf2
--- /dev/null
@@ -0,0 +1,36 @@
+\version "2.15.28"
+
+\header {
+texidoc = "A @code{MetronomeMark}, @code{RehearsalMark} and @code{BarNumber}
+should not effect the starting point of spanners.
+"
+}
+
+<<
+ \new Staff {
+   e'1 \time 4/4 \break |
+   \tempo \markup { "fooooo" } 4 = 90
+   e'1 |
+   e'1 |
+ }
+
+ \new Staff {
+   \override Score.MetronomeMark #'break-visibility = #all-visible
+   \override TupletBracket #'breakable = ##t
+   \override Beam #'breakable = ##t
+   \override Glissando #'breakable = ##t
+
+   \ottava #1 \times 1/1 { e'8\<\startTextSpan\startTrillSpan\glissando
+     [ \override NoteColumn #'glissando-skip = ##t\repeat unfold 22 e'8
+       \revert NoteColumn #'glissando-skip e'8\!\stopTextSpan\stopTrillSpan ] } |
+ }
+ \addlyrics { ah __ \repeat unfold 21 { \skip 4 } _ rrgh }
+ \addlyrics { ah --  \repeat unfold 21 { \skip 4 } _ rrgh }
+>>
+
+\layout {
+ \context {
+   \Voice
+   \remove "Forbid_line_break_engraver"
+ }
+}
index 255ce007dd2ce3f2356eb37b5351976820c39c4f..5fe18054d40188562947336d01052fcaded6a9a5 100644 (file)
@@ -98,6 +98,13 @@ pattern = <<
   \override Staff.NoteHead  #'style = #'slash
   s1*0^\markup { "slash" }
   \pattern
+
+  \break
+
+  \override Staff.NoteHead  #'style = #'kievan
+  s1*0^\markup { "kievan" }
+  \pattern
+
 }
 
 
index b68330a6872b0ca0525f3813995795e6d009ac5d..4870f578cfc0df64c293991a4329240025f6d03d 100644 (file)
   indent = 0.0
 }
 
+mus = {
+  r2
+  b\rest
+  c'\rest d'\rest e'\rest f'\rest g'\rest a'\rest b'\rest
+  c''\rest d''\rest e''\rest f''\rest g''\rest a''\rest b''\rest
+  r1
+  b\rest
+  c'\rest d'\rest e'\rest f'\rest g'\rest a'\rest b'\rest
+  c''\rest d''\rest e''\rest f''\rest g''\rest a''\rest b''\rest
+  r\breve
+  b\rest
+  c'\rest d'\rest e'\rest f'\rest g'\rest a'\rest b'\rest
+  c''\rest d''\rest e''\rest f''\rest g''\rest a''\rest b''\rest
+  r\longa
+  b\rest
+  c'\rest d'\rest e'\rest f'\rest g'\rest a'\rest b'\rest
+  c''\rest d''\rest e''\rest f''\rest g''\rest a''\rest b''\rest
+  <<
+    { r2 r2 r1 r\breve r\longa }
+    \\
+    { r2 r2 r1 r\breve r\longa }
+  >>
+}
+
 \new StaffGroup <<
   \new Staff {
-    r2
-    g'2\rest
-    r1
-    g'1\rest
+    \mus
   }
 
   \new Staff {
     \override Staff.StaffSymbol #'line-positions = #'(-4 -2 0 2)
-    r2
-    g'2\rest
-    r1
-    g'1\rest
+    \mus
   }
 
   \new Staff {
     \override Staff.StaffSymbol #'line-count = #4
-    r2
-    g'2\rest
-    r1
-    g'1\rest
+    \mus
+  }
+
+  \new Staff {
+    \override Staff.StaffSymbol #'line-positions = #'(-4 -2 1 5)
+    \mus
   }
 >>
diff --git a/input/regression/tuplet-subdivision.ly b/input/regression/tuplet-subdivision.ly
new file mode 100644 (file)
index 0000000..08b164e
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.15.30"
+
+\header {
+
+  texinfo = "
+Subdivision works properly for tuplets
+  "
+}
+
+\relative c'' {
+  \set subdivideBeams = ##t
+  \set baseMoment = #(ly:make-moment 1 8)
+  \set beatStructure = #'(2 2 2 2)
+  \repeat unfold 8 {
+    \times 2/3 { c16 e d }
+  }
+}
index dfd23f1724c4633efaae681f6e0efa187f7523ca..8690b01f80b4dedab341344fb3e8ff8485fcfe00 100644 (file)
@@ -120,8 +120,14 @@ Ambitus_engraver::stop_translation_timestep ()
        * may then oversee a clef that is defined in a staff context if
        * we are in a voice context; middleCPosition would then be
        * assumed to be 0.
+
+       * Don't use middleCPosition as this may be thwarted by a cue
+       * starting here.  middleCOffset is not affected by cue clefs.
        */
-      start_c0_ = robust_scm2int (get_property ("middleCPosition"), 0);
+      int clef_pos = robust_scm2int (get_property ("middleCClefPosition"), 0);
+      int offset = robust_scm2int (get_property ("middleCOffset"), 0);
+
+      start_c0_ = clef_pos + offset;
       start_key_sig_ = get_property ("keySignature");
 
       is_typeset_ = true;
@@ -231,7 +237,8 @@ ADD_TRANSLATOR (Ambitus_engraver,
 
                 /* read */
                 "keySignature "
-                "middleCPosition ",
+                "middleCClefPosition "
+               "middleCOffset ",
 
                 /* write */
                 ""
index a7cc3cf257abfd69bd2ff8eab2d5342b5cae66a8..41c96eae76b84f2c5468526d93406ce2c7527663 100644 (file)
@@ -429,7 +429,8 @@ Auto_beam_engraver::acknowledge_stem (Grob_info info)
   grouping_->add_stem (now - beam_start_moment_ + beam_start_location_,
                        durlog - 2,
                        Stem::is_invisible (stem),
-                       stem_duration->factor ());
+                       stem_duration->factor (),
+                       (stem->get_property ("tuplet-start") == SCM_BOOL_T));
   stems_->push_back (stem);
   last_add_mom_ = now;
   extend_mom_ = max (extend_mom_, now) + get_event_length (ev, now);
index c642c3159d03cb677dad15b80eb23752e1303ba7..1f2d9b2963401327cc49a04ffe3920c937eba6ac 100644 (file)
@@ -286,7 +286,8 @@ Bar_line::compound_barline (Grob *me, string str, Interval const &extent,
     m = dashed_bar_line (me, extent, hair);
   else if (str == "'")
     m = tick_bar_line (me, extent.at (UP), rounded);
-
+  else if (str == "kievan")
+    m.add_stencil (Font_interface::get_default_font (me)->find_by_name("scripts.barline.kievan"));
   return m;
 }
 
index 455239d5ed247b587fd9fe46e467fa60f8604a32..a89435de6871a6ff391ac34075cea7e3c3f44527 100644 (file)
@@ -291,7 +291,8 @@ Beam_engraver::acknowledge_stem (Grob_info info)
   beam_info_->add_stem (stem_location,
                         max (durlog - 2, 0),
                         Stem::is_invisible (stem),
-                        stem_duration->factor ());
+                        stem_duration->factor (),
+                        (stem->get_property ("tuplet-start") == SCM_BOOL_T));
   Beam::add_stem (beam_, stem);
 }
 
index d0b975ec04c10f74d7afe6c58f6798b5f49b334d..4a27d648e1a0790f5321b12bc1a42bf518bf03be 100644 (file)
@@ -37,6 +37,7 @@
 
 #include "beam.hh"
 
+#include "axis-group-interface.hh"
 #include "align-interface.hh"
 #include "beam-scoring-problem.hh"
 #include "beaming-pattern.hh"
@@ -483,8 +484,8 @@ Beam::calc_beam_segments (SCM smob)
                       && me->get_bound (event_dir)->break_status_dir ())
                     {
                       current.horizontal_[event_dir]
-                        = (robust_relative_extent (me->get_bound (event_dir),
-                                                   commonx, X_AXIS)[RIGHT]
+                        = (Axis_group_interface::generic_bound_extent (me->get_bound (event_dir),
+                                                                       commonx, X_AXIS)[RIGHT]
                            + event_dir * break_overshoot[event_dir]);
                     }
                   else
index cc569c7c73b696aad614dd2d7344f182803e3dac..b6b9060ddaeb59a9e3a3ed30782920148cee9919 100644 (file)
@@ -40,10 +40,11 @@ Beam_rhythmic_element::Beam_rhythmic_element ()
   beam_count_drul_[RIGHT] = 0;
   invisible_ = false;
   factor_ = Rational (1);
-
+  tuplet_start_ = false;
 }
 
-Beam_rhythmic_element::Beam_rhythmic_element (Moment m, int i, bool inv, Rational factor)
+Beam_rhythmic_element::Beam_rhythmic_element (Moment m, int i, bool inv, 
+  Rational factor, bool tuplet_start)
 {
   start_moment_ = m;
   rhythmic_importance_ = 0;
@@ -51,6 +52,7 @@ Beam_rhythmic_element::Beam_rhythmic_element (Moment m, int i, bool inv, Rationa
   beam_count_drul_[RIGHT] = i;
   invisible_ = inv;
   factor_ = factor;
+  tuplet_start_ = tuplet_start;
 }
 
 void
@@ -269,10 +271,15 @@ Beaming_pattern::find_rhythmic_importance (Beaming_options const &options)
           Moment tuplet_dt = infos_[i].start_moment_ - tuplet_start_moment;
           tuplet_number = tuplet.den ();
           // set the beat end (if not in a tuplet) and increment the next beat
-          if (tuplet_number == 1 && infos_[i].start_moment_ == next_beat_pos)
+          if (infos_[i].start_moment_ == next_beat_pos)
             {
-              infos_[i].rhythmic_importance_ = -1;
-              next_beat_pos += options.base_moment_;
+              if (tuplet_number == 1)
+                {
+                  infos_[i].rhythmic_importance_ = -1;
+                  next_beat_pos += options.base_moment_;
+                }
+              if (infos_[i].tuplet_start_)
+                infos_[i].rhythmic_importance_ = -1;
             }
           // The rhythmic importance of a stem between beats depends on its fraction
           // of a beat: those stems with a lower denominator are deemed more
@@ -326,9 +333,9 @@ Beaming_pattern::unbeam_invisible_stems ()
 }
 
 void
-Beaming_pattern::add_stem (Moment m, int b, bool invisible, Rational factor)
+Beaming_pattern::add_stem (Moment m, int b, bool invisible, Rational factor, bool tuplet_start)
 {
-  infos_.push_back (Beam_rhythmic_element (m, b, invisible, factor));
+  infos_.push_back (Beam_rhythmic_element (m, b, invisible, factor, tuplet_start));
 }
 
 Beaming_pattern::Beaming_pattern ()
@@ -369,6 +376,12 @@ Beaming_pattern::factor (int i) const
   return infos_.at (i).factor_;
 }
 
+bool
+Beaming_pattern::tuplet_start (int i) const
+{
+  return infos_.at (i).tuplet_start_;
+}
+
 /*
     Split a beaming pattern at index i and return a new
     Beaming_pattern containing the removed elements
@@ -386,7 +399,8 @@ Beaming_pattern::split_pattern (int i)
       new_pattern->add_stem (start_moment (j),
                              count,
                              invisibility (j),
-                             factor (j));
+                             factor (j),
+                             tuplet_start (j));
     }
   for (vsize j = i + 1; j < infos_.size ();)
     infos_.pop_back ();
index 899287a99990036b4ccdf78a0c6638bd56254f40..cab7b259b07223b2b49f430029744ebd6fd741e7 100644 (file)
@@ -49,11 +49,11 @@ Event_chord_iterator::process (Moment m)
           Music *mus = unsmob_music (scm_car (s));
           report_event (mus);
         }
-      for (SCM s = get_music ()->get_property ("events");
+      for (SCM s = get_music ()->get_property ("articulations");
            scm_is_pair (s); s = scm_cdr (s))
         {
-          Stream_event *ev = unsmob_stream_event (scm_car (s));
-          get_outlet ()->event_source ()->broadcast (ev);
+          Music *mus = unsmob_music (scm_car (s));
+          report_event (mus);
         }
     }
   Simple_music_iterator::process (m);
index bf590a564bbbf9d0f1b742bdfeebd2ac6338081d..7ef0f847a1e8fdf30e3231434cbb84209d119f57 100644 (file)
@@ -165,9 +165,9 @@ Hairpin::print (SCM smob)
   do
     {
       Item *b = bounds[d];
-      Interval e = (Axis_group_interface::has_interface (b)
-                    ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS)
-                    : robust_relative_extent (b, common, X_AXIS));
+      Interval e = (Paper_column::has_interface (b) && b->break_status_dir ())
+                   ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS)
+                   : robust_relative_extent (b, common, X_AXIS);
 
       x_points[d] = b->relative_coordinate (common, X_AXIS);
       if (broken [d])
index 704c8f070c71a0417eefd71d52903c452370772e..8b9318da5d1ed5e96778a160666752318e70e10a 100644 (file)
@@ -46,7 +46,9 @@ struct Beam_rhythmic_element
 
   Rational factor_;
 
-  Beam_rhythmic_element (Moment, int, bool, Rational);
+  bool tuplet_start_;
+
+  Beam_rhythmic_element (Moment, int, bool, Rational, bool);
   Beam_rhythmic_element ();
 
   int count (Direction d) const;
@@ -64,10 +66,11 @@ public:
 
   void beamify (Beaming_options const &);
   void de_grace ();
-  void add_stem (Moment d, int beams, bool invisible, Rational factor);
+  void add_stem (Moment d, int beams, bool invisible, Rational factor, bool tuplet_starrt);
   int beamlet_count (int idx, Direction d) const;
   bool invisibility (int idx) const;
   Rational factor (int idx) const;
+  bool tuplet_start (int idx) const;
   Moment start_moment (int idx) const;
   Moment end_moment (int idx) const;
   Beaming_pattern *split_pattern (int idx);
index a8a68c34f0121372a53529f12343d201575dc220..688dccb0a686efd50e55eba44767522e2a9f1cde 100644 (file)
@@ -36,7 +36,7 @@ public:
   static vector<Real> line_positions (Grob *);
   static vector<Real> ledger_positions (Grob *me, int pos);
   static int line_count (Grob *);
-  static bool on_line (Grob *me, int pos);
+  static bool on_line (Grob *me, int pos, bool allow_ledger = true);
   static Interval line_span (Grob *);
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (height, (SCM));
index 63970467268b6432948ef2c0fdaded5401e3675b..028fe20e155d5db5ad46ec5624fa6baab3a2f406 100644 (file)
@@ -38,6 +38,7 @@ class Line_spanner
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_left_bound_info, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_left_bound_info_and_text, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_right_bound_info, (SCM));
@@ -200,6 +201,22 @@ Line_spanner::calc_bound_info (SCM smob, Direction dir)
   return details;
 }
 
+MAKE_SCHEME_CALLBACK (Line_spanner, calc_cross_staff, 1);
+SCM
+Line_spanner::calc_cross_staff (SCM smob)
+{
+  Spanner *me = unsmob_spanner (smob);
+  if (!me)
+    return SCM_BOOL_F;
+
+  if (to_boolean (me->get_bound (LEFT)->get_property ("non-musical"))
+      || to_boolean (me->get_bound (RIGHT)->get_property ("non-musical")))
+    return SCM_BOOL_F;
+
+  return scm_from_bool (Staff_symbol_referencer::get_staff_symbol (me->get_bound (LEFT))
+                        != Staff_symbol_referencer::get_staff_symbol (me->get_bound (RIGHT)));
+}
+
 MAKE_SCHEME_CALLBACK (Line_spanner, calc_right_bound_info, 1);
 SCM
 Line_spanner::calc_right_bound_info (SCM smob)
index 86ae8cdc659a85345f436740d057a1d9ef86c1e8..4ce2fddeb86724b23b2da75f03fd482b8b357253 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "lyric-hyphen.hh"
 
+#include "axis-group-interface.hh"
 #include "lookup.hh"
 #include "output-def.hh"
 #include "paper-column.hh"
@@ -47,10 +48,11 @@ Lyric_hyphen::print (SCM smob)
 
   Interval span_points;
   Direction d = LEFT;
-  Drul_array<bool> broken;
   do
     {
-      Interval iv = bounds[d]->extent (common, X_AXIS);
+      Interval iv = bounds[d]->break_status_dir ()
+                    ? Axis_group_interface::generic_bound_extent (bounds[d], common, X_AXIS)
+                    : robust_relative_extent (bounds[d], common, X_AXIS);
 
       span_points[d] = iv.is_empty ()
                        ? bounds[d]->relative_coordinate (common, X_AXIS)
index 3ca686b2f3bbb785345a385aaf63d0365d77536a..fb93e40eeb82f02574c2fa670183d19054214fd6 100644 (file)
@@ -64,7 +64,8 @@ internal_print (Grob *me, string *font_char)
   if (style == "mensural"
       || style == "neomensural"
       || style == "petrucci"
-      || style == "baroque")
+      || style == "baroque"
+      || style == "kievan")
     {
       if (!Staff_symbol_referencer::on_line
           (me,
index 38040342ca645c9ac75501ed3ab9774c31be282b..cbe9928b6e977b12b31d4e31aa913c9e2c667232 100644 (file)
@@ -17,6 +17,7 @@
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include "axis-group-interface.hh"
 #include "text-interface.hh"
 #include "spanner.hh"
 #include "font-interface.hh"
@@ -114,7 +115,7 @@ Ottava_bracket::print (SCM smob)
 
       if (broken[d])
         {
-          span_points[d] = b->extent (common, X_AXIS)[RIGHT];
+          span_points[d] = Axis_group_interface::generic_bound_extent (b, common, X_AXIS)[RIGHT];
           shorten[d] = 0.;
         }
 
index da164e48c4fe2ef46337ef55b09afad2bec762b8..d830cb4c57db08c9acf4e32aafbf03b234d4b587 100644 (file)
@@ -404,6 +404,7 @@ If we give names, Bison complains.
 %type <scm> music
 %type <scm> music_bare
 %type <scm> music_arg
+%type <scm> music_assign
 %type <scm> complex_music
 %type <scm> complex_music_prefix
 %type <scm> mode_changed_music
@@ -507,6 +508,7 @@ If we give names, Bison complains.
 %type <scm> markup_head_1_list
 %type <scm> markup_list
 %type <scm> markup_top
+%type <scm> maybe_notemode_duration
 %type <scm> mode_changing_head
 %type <scm> mode_changing_head_with_context
 %type <scm> multiplied_duration
@@ -773,7 +775,7 @@ identifier_init:
        | context_def_spec_block {
                $$ = $1;
        }
-       | music  {
+       | music_assign  {
                $$ = $1;
        }
        | post_event_nofinger {
@@ -1126,14 +1128,28 @@ braced_music_list:
        }
        ;
 
-music: simple_music
+music: music_arg
        | lyric_element_music
-       | composite_music %prec COMPOSITE
        ;
 
 music_arg:
+       simple_music
+       {
+               if (unsmob_pitch ($1)) {
+                       Music *n = MY_MAKE_MUSIC ("NoteEvent", @1);
+                       n->set_property ("pitch", $1);
+                       n->set_property ("duration",
+                                        parser->default_duration_.smobbed_copy ());
+                       $$ = n->unprotect ();
+               }
+       }
+       | composite_music %prec COMPOSITE
+       ;
+
+music_assign:
        simple_music
        | composite_music %prec COMPOSITE
+       | lyric_element_music
        ;
 
 repeated_music:
@@ -2037,9 +2053,17 @@ scalar_closed:
 event_chord:
        simple_element post_events {
                // Let the rhythmic music iterator sort this mess out.
-               if (scm_is_pair ($2))
-                       unsmob_music ($1)->set_property ("articulations",
+               if (scm_is_pair ($2)) {
+                       if (unsmob_pitch ($1)) {
+                               Music *n = MY_MAKE_MUSIC ("NoteEvent", @1);
+                               n->set_property ("pitch", $1);
+                               n->set_property ("duration",
+                                                parser->default_duration_.smobbed_copy ());
+                               $$ = n->unprotect ();
+                       }
+                       unsmob_music ($$)->set_property ("articulations",
                                                         scm_reverse_x ($2, SCM_EOL));
+               }
        }
        | simple_chord_elements post_events     {
                SCM elts = ly_append2 ($1, scm_reverse_x ($2, SCM_EOL));
@@ -2500,15 +2524,23 @@ duration_length:
        }
        ;
 
-optional_notemode_duration:
+maybe_notemode_duration:
        {
-               Duration dd = parser->default_duration_;
-               $$ = dd.smobbed_copy ();
+               $$ = SCM_UNDEFINED;
        }
        | multiplied_duration   {
                $$ = $1;
                parser->default_duration_ = *unsmob_duration ($$);
        }
+;
+
+
+optional_notemode_duration:
+       maybe_notemode_duration
+       {
+               if (SCM_UNBNDP ($$))
+                       $$ = parser->default_duration_.smobbed_copy ();
+       }
        ;
 
 steno_duration:
@@ -2683,31 +2715,37 @@ optional_rest:
        ;
 
 simple_element:
-       pitch exclamations questions octave_check optional_notemode_duration optional_rest {
+       pitch exclamations questions octave_check maybe_notemode_duration optional_rest {
                if (!parser->lexer_->is_note_state ())
                        parser->parser_error (@1, _ ("have to be in Note mode for notes"));
-
-               Music *n = 0;
-               if ($6)
-                       n = MY_MAKE_MUSIC ("RestEvent", @$);
-               else
-                       n = MY_MAKE_MUSIC ("NoteEvent", @$);
-
-               n->set_property ("pitch", $1);
-               n->set_property ("duration", $5);
-
-               if (scm_is_number ($4))
+               if ($2 || $3 || scm_is_number ($4) || !SCM_UNBNDP ($5) || $6)
                {
-                       int q = scm_to_int ($4);
-                       n->set_property ("absolute-octave", scm_from_int (q-1));
+                       Music *n = 0;
+                       if ($6)
+                               n = MY_MAKE_MUSIC ("RestEvent", @$);
+                       else
+                               n = MY_MAKE_MUSIC ("NoteEvent", @$);
+                       
+                       n->set_property ("pitch", $1);
+                       if (SCM_UNBNDP ($5))
+                               n->set_property ("duration",
+                                                parser->default_duration_.smobbed_copy ());
+                       else
+                               n->set_property ("duration", $5);
+                       
+                       if (scm_is_number ($4))
+                       {
+                               int q = scm_to_int ($4);
+                               n->set_property ("absolute-octave", scm_from_int (q-1));
+                       }
+                       
+                       if ($3 % 2)
+                               n->set_property ("cautionary", SCM_BOOL_T);
+                       if ($2 % 2 || $3 % 2)
+                               n->set_property ("force-accidental", SCM_BOOL_T);
+                       
+                       $$ = n->unprotect ();
                }
-
-               if ($3 % 2)
-                       n->set_property ("cautionary", SCM_BOOL_T);
-               if ($2 % 2 || $3 % 2)
-                       n->set_property ("force-accidental", SCM_BOOL_T);
-
-               $$ = n->unprotect ();
        }
        | DRUM_PITCH optional_notemode_duration {
                Music *n = MY_MAKE_MUSIC ("NoteEvent", @$);
index 552d20f6702dc69d089a71650cf5a1ce262de29d..a25e6a93198298ef4d8ca778dbded2379e583365 100644 (file)
@@ -46,6 +46,13 @@ Rest::y_offset_callback (SCM smob)
     {
       amount =
         robust_scm2double (me->get_property ("staff-position"), 0) * 0.5 * ss;
+
+      /*
+        semibreve rests were always positioned one off
+      */
+      if (duration_log == 0)
+        amount += ss;
+
       /*
         trust the client on good positioning;
         would be tempting to adjust position of rests longer than a quarter
@@ -55,18 +62,24 @@ Rest::y_offset_callback (SCM smob)
     }
   else
     {
-      amount = 2 * ss * get_grob_direction (me);
+      int pos = 4 * get_grob_direction (me);
 
-      if (line_count % 2 == 0)
-        amount += ss / 2;
-    }
+      /*
+        make a semibreve rest hang from the next line,
+        except for a single line staff;
+        assume the next line being integer steps away
+      */
+      if (duration_log == 0 && line_count > 1)
+        ++pos;
 
-  /*
-    make a semibreve rest hang from the next line,
-    except for a single line staff
-  */
-  if (duration_log == 0 && line_count > 1)
-    amount += ss;
+      /*
+        make sure rest is aligned to a staff line
+      */
+      while (!Staff_symbol_referencer::on_line (me, pos))
+        ++pos;
+
+      amount = ss * 0.5 * pos;
+    }
 
   return scm_from_double (amount);
 }
@@ -91,22 +104,22 @@ Rest::calc_cross_staff (SCM smob)
   make this function easily usable in C++
 */
 string
-Rest::glyph_name (Grob *me, int balltype, string style, bool try_ledgers)
+Rest::glyph_name (Grob *me, int durlog, string style, bool try_ledgers)
 {
   bool is_ledgered = false;
-  if (try_ledgers && (balltype == -1 || balltype == 0 || balltype == 1))
+  if (try_ledgers && (durlog == -1 || durlog == 0 || durlog == 1))
     {
-      Real rad = Staff_symbol_referencer::staff_radius (me) * 2.0;
-      Real pos = Staff_symbol_referencer::get_position (me);
+      int const pos = int (Staff_symbol_referencer::get_position (me));
 
       /*
-        Figure out when the rest is far enough outside the staff. This
-        could bemore generic, but hey, we understand this even after
-        dinner.
+       half rests need ledger if not lying on a staff line,
+       whole rests need ledger if not hanging from a staff line,
+       breve rests need ledger if neither lying on nor hanging from a staff line
       */
-      is_ledgered |= (balltype == -1) && (pos <= -rad - 3 || pos >= +rad + 1);
-      is_ledgered |= (balltype == 0) && (pos >= +rad + 2 || pos < -rad);
-      is_ledgered |= (balltype == 1) && (pos <= -rad - 2 || pos > +rad);
+      if (-1 <= durlog && durlog <= 1)
+        is_ledgered = !Staff_symbol_referencer::on_staff_line (me, pos)
+         && !(durlog == -1
+              && Staff_symbol_referencer::on_staff_line (me, pos + 2));
     }
 
   string actual_style (style.c_str ());
@@ -126,11 +139,11 @@ Rest::glyph_name (Grob *me, int balltype, string style, bool try_ledgers)
         There are no 32th/64th/128th mensural/neomensural rests.  In
         these cases, revert back to default style.
       */
-      if (balltype > 4)
+      if (durlog > 4)
         actual_style = "";
     }
 
-  if ((style == "classical") && (balltype != 2))
+  if ((style == "classical") && (durlog != 2))
     {
       /*
         classical style: revert back to default style for any rest other
@@ -148,7 +161,7 @@ Rest::glyph_name (Grob *me, int balltype, string style, bool try_ledgers)
       actual_style = "";
     }
 
-  return ("rests." + to_string (balltype) + (is_ledgered ? "o" : "")
+  return ("rests." + to_string (durlog) + (is_ledgered ? "o" : "")
           + actual_style);
 }
 
@@ -156,16 +169,16 @@ MAKE_SCHEME_CALLBACK (Rest, print, 1);
 SCM
 Rest::brew_internal_stencil (Grob *me, bool ledgered)
 {
-  SCM balltype_scm = me->get_property ("duration-log");
-  if (!scm_is_number (balltype_scm))
+  SCM durlog_scm = me->get_property ("duration-log");
+  if (!scm_is_number (durlog_scm))
     return Stencil ().smobbed_copy ();
 
-  int balltype = scm_to_int (balltype_scm);
+  int durlog = scm_to_int (durlog_scm);
 
   string style = robust_symbol2string (me->get_property ("style"), "default");
 
   Font_metric *fm = Font_interface::get_default_font (me);
-  string font_char = glyph_name (me, balltype, style, ledgered);
+  string font_char = glyph_name (me, durlog, style, ledgered);
   Stencil out = fm->find_by_name (font_char);
   if (out.is_empty ())
     me->warning (_f ("rest `%s' not found", font_char.c_str ()));
@@ -250,4 +263,3 @@ ADD_INTERFACE (Rest,
                "minimum-distance "
                "style "
               );
-
index 40b3b6bd6343201ae0db673753b09cd826b298d8..79f04d6203cf6b0f7bc41897a2c401a0b0b38064 100644 (file)
@@ -178,13 +178,21 @@ Slur_engraver::process_music ()
 
       // Find the slur that is ended with this event (by checking the spanner-id)
       bool ended = false;
+      SCM starter = SCM_BOOL_F;
       for (vsize j = slurs_.size (); j--;)
         {
           if (id == robust_scm2string (slurs_[j]->get_property ("spanner-id"), ""))
             {
-              ended = true;
-              end_slurs_.push_back (slurs_[j]);
-              slurs_.erase (slurs_.begin () + j);
+             // We end only one slur unless several ones have been
+             // caused by the same event, like with double slurs.
+              if (!ended || scm_is_eq (starter,
+                                      slurs_[j]->get_property ("cause")))
+               {
+                 ended = true;
+                 starter = slurs_[j]->get_property ("cause");
+                 end_slurs_.push_back (slurs_[j]);
+                 slurs_.erase (slurs_.begin () + j);
+               }
             }
         }
       if (!ended)
@@ -208,8 +216,12 @@ Slur_engraver::process_music ()
           ev->origin ()->warning (_ ("already have slur"));
           start_events_.erase (start_events_.begin () + i);
         }
-      else
-        {
+    }
+  for (vsize i = start_events_.size (); i--;)
+    {
+      Stream_event *ev = start_events_[i];
+      string id = robust_scm2string (ev->get_property ("spanner-id"), "");
+
           Grob *slur = make_spanner ("Slur", ev->self_scm ());
           Direction updown = to_dir (ev->get_property ("direction"));
           slur->set_property ("spanner-id", ly_string2scm (id));
@@ -225,7 +237,6 @@ Slur_engraver::process_music ()
               set_grob_direction (slur, UP);
               slurs_.push_back (slur);
             }
-        }
     }
   set_melisma (slurs_.size ());
 }
index 74c2c448c61c2407bb14778050b62c354f91b3ab..b18bb04fa3b8f7f2dd6b8d60206e09ac2fb08863 100644 (file)
@@ -41,7 +41,8 @@ Staff_symbol_referencer::on_line (Grob *me, int pos)
 bool
 Staff_symbol_referencer::on_staff_line (Grob *me, int pos)
 {
-  return on_line (me, pos) && abs (pos) <= 2 * staff_radius (me);
+  Grob *st = get_staff_symbol (me);
+  return st ? Staff_symbol::on_line (st, pos, false) : false;
 }
 
 Grob *
index e2ea43a570a37bc5452fec3232bf262233a0ab80..57279033b24c92020cdfba6344464feadd09c6c2 100644 (file)
@@ -80,7 +80,6 @@ Staff_symbol::print (SCM smob)
   Stencil m;
 
   vector<Real> line_positions = Staff_symbol::line_positions (me);
-  int line_count = line_positions.size ();
 
   Stencil line
     = Lookup::horizontal_line (span_points
@@ -88,10 +87,13 @@ Staff_symbol::print (SCM smob)
                                t);
 
   Real space = staff_space (me);
-  for (int i = 0; i < line_count; i++)
+  for (vector<Real>::const_iterator i = line_positions.begin (),
+         e = line_positions.end ();
+       i != e;
+       ++i)
     {
       Stencil b (line);
-      b.translate_axis (line_positions[i] * 0.5 * space, Y_AXIS);
+      b.translate_axis (*i * 0.5 * space, Y_AXIS);
       m.add_stencil (b);
     }
   return m.smobbed_copy ();
@@ -137,17 +139,18 @@ Staff_symbol::ledger_positions (Grob *me, int pos)
   if (line_positions.empty ())
     return values;
 
-  int line_count = line_positions.size ();
-
   // find the staff line nearest to note position
   Real nearest_line = line_positions[0];
   Real line_dist = abs (line_positions[0] - pos);
-  for (int i = 1; i < line_count; i++)
+  for (vector<Real>::const_iterator i = line_positions.begin (),
+         e = line_positions.end ();
+       i != e;
+       ++i)
     {
-      if (abs (line_positions[i] - pos) < line_dist)
+      if (abs (*i - pos) < line_dist)
         {
-          nearest_line = line_positions[i];
-          line_dist = abs (line_positions[i] - pos);
+          nearest_line = *i;
+          line_dist = abs (*i - pos);
         }
     }
 
@@ -303,7 +306,7 @@ Staff_symbol::height (SCM smob)
 }
 
 bool
-Staff_symbol::on_line (Grob *me, int pos)
+Staff_symbol::on_line (Grob *me, int pos, bool allow_ledger)
 {
   SCM line_positions = me->get_property ("line-positions");
   if (scm_is_pair (line_positions))
@@ -321,15 +324,27 @@ Staff_symbol::on_line (Grob *me, int pos)
             min_line = current_line;
 
         }
-      if (pos < min_line)
-        return (( (int) (rint (pos - min_line)) % 2) == 0);
-      if (pos > max_line)
-        return (( (int) (rint (pos - max_line)) % 2) == 0);
+
+      if (allow_ledger)
+        {
+          if (pos < min_line)
+            return (( (int) (rint (pos - min_line)) % 2) == 0);
+          if (pos > max_line)
+            return (( (int) (rint (pos - max_line)) % 2) == 0);
+        }
 
       return false;
     }
   else
-    return ((abs (pos + line_count (me)) % 2) == 1);
+    {
+      int const line_cnt = line_count (me);
+      bool result = abs (pos + line_cnt) % 2 == 1;
+      if (result && !allow_ledger)
+        {
+          result = -line_cnt < pos && pos < line_cnt;
+        }
+      return result;
+    }
 }
 
 Interval
index cb9e6b535b180d8684e8d7d3a26b13e97437af0d..b2720731d34c0fcc3b5de007c6a0fb9cf04065cb 100644 (file)
@@ -41,13 +41,15 @@ class Stem_engraver : public Engraver
   vector <Grob *> maybe_flags_;
   Stream_event *rhythmic_ev_;
   Stream_event *tremolo_ev_;
+  bool tuplet_start_;
 
   TRANSLATOR_DECLARATIONS (Stem_engraver);
 
 protected:
-  void make_stem (Grob_info);
+  void make_stem (Grob_info, bool);
 
   DECLARE_TRANSLATOR_LISTENER (tremolo);
+  DECLARE_TRANSLATOR_LISTENER (tuplet_span);
   DECLARE_ACKNOWLEDGER (rhythmic_head);
   void stop_translation_timestep ();
   void finalize ();
@@ -60,14 +62,17 @@ Stem_engraver::Stem_engraver ()
   stem_ = 0;
   tremolo_ = 0;
   rhythmic_ev_ = 0;
+  tuplet_start_ = false;
 }
 
 void
-Stem_engraver::make_stem (Grob_info gi)
+Stem_engraver::make_stem (Grob_info gi, bool tuplet_start)
 {
   /* Announce the cause of the head as cause of the stem.  The
      stem needs a rhythmic structure to fit it into a beam.  */
   stem_ = make_item ("Stem", gi.grob ()->self_scm ());
+  if (tuplet_start)
+    stem_->set_property ("tuplet-start", SCM_BOOL_T);
   (void) make_item ("StemStub", gi.grob ()->self_scm ());
   if (tremolo_ev_)
     {
@@ -134,7 +139,8 @@ Stem_engraver::acknowledge_rhythmic_head (Grob_info gi)
     return;
 
   if (!stem_)
-    make_stem (gi);
+      make_stem (gi, tuplet_start_);
+      
 
   int ds = Stem::duration_log (stem_);
   int dc = d->duration_log ();
@@ -170,6 +176,8 @@ Stem_engraver::acknowledge_rhythmic_head (Grob_info gi)
       stem_->set_object ("flag", flag->self_scm ());
       maybe_flags_.push_back (flag);
     }
+  if (tuplet_start_) 
+    stem_->set_property ("tuplet-start", SCM_BOOL_T);
 }
 
 void
@@ -210,9 +218,24 @@ Stem_engraver::stop_translation_timestep ()
         }
       stem_ = 0;
     }
+  tuplet_start_ = false;
   tremolo_ev_ = 0;
 }
 
+IMPLEMENT_TRANSLATOR_LISTENER (Stem_engraver, tuplet_span);
+void
+Stem_engraver::listen_tuplet_span (Stream_event *ev)
+{
+  Direction dir = to_dir (ev->get_property ("span-direction"));
+  if (dir == START)
+    {
+      // set stem property if stem already exists
+      if (stem_)
+        stem_->set_property ("tuplet-start", SCM_BOOL_T);
+      tuplet_start_ = true;  // stash the value for use in later creation 
+    }
+}
+
 IMPLEMENT_TRANSLATOR_LISTENER (Stem_engraver, tremolo);
 void
 Stem_engraver::listen_tremolo (Stream_event *ev)
index fb830624ff23b360e1c06d5d85a7c0114033ed8e..8c0e128487b4f48027bb7f23e8810b19aa229c56 100644 (file)
@@ -277,7 +277,12 @@ Stem::is_invisible (Grob *me)
 bool
 Stem::is_normal_stem (Grob *me)
 {
-  return head_count (me) && scm_to_int (me->get_property ("duration-log")) >= 1;
+  if (!head_count (me))
+     return false;
+
+  extract_grob_set (me, "note-heads", heads);
+  SCM style = heads[0]->get_property ("style");
+  return style != ly_symbol2scm ("kievan") && scm_to_int (me->get_property ("duration-log")) >= 1;
 }
 
 MAKE_SCHEME_CALLBACK (Stem, pure_height, 3)
@@ -1128,6 +1133,7 @@ ADD_INTERFACE (Stem,
                "stemlet-length "
                "thickness "
                "tremolo-flag "
+               "tuplet-start "
               );
 
 /****************************************************************/
index dbbd782cfbe7a219a09d7ec6d41a14330ace36b0..40e0c728c5ef2c353de391bd5da025386bce7007 100644 (file)
@@ -41,6 +41,7 @@
 */
 
 #include "tuplet-bracket.hh"
+#include "axis-group-interface.hh"
 #include "line-interface.hh"
 #include "beam.hh"
 #include "warn.hh"
@@ -203,8 +204,9 @@ Tuplet_bracket::calc_x_positions (SCM smob)
   Direction d = LEFT;
   do
     {
-      x_span[d] = robust_relative_extent (bounds[d], commonx, X_AXIS)[d];
-
+      x_span[d] = bounds[d]->break_status_dir ()
+                  ? Axis_group_interface::generic_bound_extent (bounds[d], commonx, X_AXIS)[d]
+                  : robust_relative_extent (bounds[d], commonx, X_AXIS)[d];
       if (connect_to_other[d])
         {
           Interval overshoot (robust_scm2drul (me->get_property ("break-overshoot"),
@@ -213,8 +215,9 @@ Tuplet_bracket::calc_x_positions (SCM smob)
           if (d == RIGHT)
             x_span[d] += d * overshoot[d];
           else
-            x_span[d] = robust_relative_extent (bounds[d],
-                                                commonx, X_AXIS)[RIGHT]
+            x_span[d] = (bounds[d]->break_status_dir ()
+                  ? Axis_group_interface::generic_bound_extent (bounds[d], commonx, X_AXIS)[-d]
+                  : robust_relative_extent (bounds[d], commonx, X_AXIS)[-d])
                         - overshoot[LEFT];
         }
 
index b7174a72c72548bb7802aebb5cdf3574cf9eed6c..3cd98f4436da19cf8d096a8fb9dfc30e7318770c 100644 (file)
@@ -78,6 +78,8 @@
 % * accidentals for trills and turns
 
 % CHANGELOG
+%  * David Kastrup: basic 2.15.28 compatibility by using event-chord-wrap!
+%    This should really be done by rewriting the code more thoroughly.
 %  * From Iain Nicol: appoggiatura timings were out; add staccatissimo; fix
 %    trillSpanner endpoints.
 %  * Also handle Breathing events (by throwing them away).  This isn't ideal;
@@ -87,7 +89,7 @@
 %  * Add Mordents (reported by Patrick Karl)
 %
 
-\version "2.14.0"
+\version "2.15.30"
 
 #(use-modules (ice-9 debug))
 #(use-modules (scm display-lily))
@@ -581,6 +583,7 @@ articulate = #(define-music-function (parser location music)
               "Adjust times of note to add tenuto, staccato and
                 normal articulations.
                "
+              (set! music (event-chord-wrap! music parser))
               (music-map ac:articulate-chord music)
               )
 
@@ -590,8 +593,10 @@ articulate = #(define-music-function (parser location music)
 afterGrace =
 #(define-music-function
   (parser location main grace)
-  (ly:music? ly:music?)p
+  (ly:music? ly:music?)
 
+  (set! main (event-chord-wrap! main parser))
+  (set! grace (event-chord-wrap! grace parser))
   (let*
    ((main-length (ly:music-length main))
     (grace-orig-length (ly:music-length grace))
@@ -616,6 +621,8 @@ afterGrace =
 appoggiatura =
 #(define-music-function (parser location grace main)
   (ly:music? ly:music?)
+  (set! grace (event-chord-wrap! grace parser))
+  (set! main (event-chord-wrap! main parser))
   (let* ((maindur (ly:music-length main))
         (grace-orig-len (ly:music-length grace))
         (main-orig-len (ly:music-length main))
index 67c3522a1506d6d86d4f90ed8d3b050a5d217f7a..6335ab65b1fcd0fb168e0098cfa8efa57ecabe0f 100644 (file)
@@ -559,6 +559,7 @@ automatically when an output definition (a @code{\score} or
   \accepts "PetrucciStaff"
   \accepts "StaffGroup"
   \accepts "DrumStaff"
+  \accepts "KievanStaff"
   \accepts "Lyrics"
   \accepts "ChordNames"
   \accepts "GrandStaff"
@@ -568,7 +569,6 @@ automatically when an output definition (a @code{\score} or
   \accepts "NoteNames"
   \accepts "FiguredBass"
 
-
   noteToFretFunction = #determine-frets
   predefinedDiagramTable = ##f
   soloText = #"Solo"
@@ -1114,6 +1114,54 @@ accommodated for typesetting a piece in Petrucci style."
   printKeyCancellation = ##f
 }
 
+\context {
+ \Voice
+ \name "KievanVoice"
+ \alias "Voice"
+ \description "Same as @code{Voice} context, except that it is
+accommodated for typesetting a piece in Kievan style."
+
+% \override Stem #'stencil = ##f
+
+ %% Set glyph styles.
+ \override NoteHead #'style = #'kievan
+ \override Rest #'style = #'mensural
+ \override Accidental #'glyph-name-alist = #alteration-kievan-glyph-name-alist
+ \override Dots #'style = #'kievan
+ \override Slur #'stencil = ##f
+
+ %% There are beams in Kievan notation, but they are invoked manually
+ autoBeaming = ##f
+ \override Beam #'beam-thickness = #0.32
+ \override Beam #'length-fraction = #0.62
+}
+
+\context {
+ \Staff
+ \name "KievanStaff"
+ \alias "Staff"
+ \denies "Voice"
+ \defaultchild "KievanVoice"
+ \accepts "KievanVoice"
+ \description "Same as @code{Staff} context, except that it is
+accommodated for typesetting a piece in Kievan style."
+
+ %% Choose Kievan tsefaut clef
+ clefGlyph = #"clefs.kievan.do"
+ middleCClefPosition = #0
+ middleCPosition = #0
+ clefPosition = #0
+ clefOctavation = #0
+
+ %% Accidentals are valid only once (if the following note is different)
+ extraNatural = ##f
+ autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
+                            ,neo-modern-accidental-rule)
+ autoCautionaries = #'()
+ printKeyCancellation = ##f
+
+}
+
 %% Keep the old definitions in here for compatibility (they erase previous
 %% settings to the corresponding context!).
 %% For new scores, one should simply insert the \RemoveEmptyStaves settings
index a22292657fcb968b480df290ee347acea9253d18..4082ea9aec31c76d39422c0e6d8a9ad5a8604186 100644 (file)
@@ -315,7 +315,12 @@ without the need of a specific end spanner.")
         (ly:input-message location (_ "argument endSpanners is not an EventChord: ~a") music)
         music)))
 
-
+eventChords =
+#(define-music-function (parser location music) (ly:music?)
+   (_i "Compatibility function wrapping @code{EventChord} around
+isolated rhythmic events occuring since version 2.15.28, after
+expanding repeat chords @samp{q}.")
+   (event-chord-wrap! music parser))
 
 featherDurations=
 #(define-music-function (parser location factor argument) (ly:moment? ly:music?)
@@ -692,7 +697,9 @@ Example:
 ")
    (let* ((voices (apply circular-list (make-list (length voice-ids) (list))))
          (current-voices voices)
-         (current-sequence (list)))
+         (current-sequence (list))
+         (original music)
+         (wrapper #f))
      ;;
      ;; utilities
      (define (push-music m)
@@ -718,6 +725,16 @@ Example:
                       (let ((origins (remove not (map music-origin
                                                       (ly:music-property music 'elements)))))
                         (and (not (null? origins)) (car origins)))))))
+     (while (music-is-of-type? music 'music-wrapper-music)
+           (set! wrapper music)
+           (set! music (ly:music-property wrapper 'element)))
+     (if wrapper
+        (set! (ly:music-property wrapper 'element)
+                                 (make-music 'SequentialMusic
+                                             'origin location))
+        (set! original
+              (make-music 'SequentialMusic
+                          'origin location)))
      ;;
      ;; first, split the music and fill in voices
      ;; We flatten direct layers of SequentialMusic since they are
@@ -758,9 +775,12 @@ Example:
      ;; bind voice identifiers to the voices
      (for-each (lambda (voice-id voice)
            (ly:parser-define! parser voice-id
-                              (make-music 'SequentialMusic
-                                          'origin location
-                                          'elements voice)))
+                              (let ((v (ly:music-deep-copy original)))
+                                (set! (ly:music-property
+                                       (car (extract-named-music
+                                             v 'SequentialMusic))
+                                       'elements) voice)
+                                v)))
          voice-ids voices)))
 
 parenthesize =
index 37a68917e724a1b121ea44c8c205cff4ebc3609e..54b8fab79ffd6b21c3745ff0df705f035378082a 100644 (file)
@@ -247,6 +247,7 @@ hideNotes = {
   \override Flag #'transparent = ##t
   \override Beam #'transparent = ##t
   \override Accidental #'transparent = ##t
+  \override Rest #'transparent = ##t
 }
 unHideNotes = {
   \revert Accidental #'transparent
@@ -256,6 +257,7 @@ unHideNotes = {
   \revert NoteHead #'transparent
   \revert NoteHead #'no-ledgers
   \revert Dots #'transparent
+  \revert Rest #'transparent
 }
 
 
index 784f50bbaac8e8e6229d4155b2d7ea19e414a59f..62702e92ffcdad5e5f13a4bc61ccdca4416e9f8c 100644 (file)
@@ -27,6 +27,7 @@ max_height := .4 staff_space#;
 thin := 1.2 linethickness;
 thick := 2 linethickness;
 
+
 def draw_lyric_tie (expr width_sharp) =
        save padding, angularity, width, height, depth;
 
@@ -34,11 +35,10 @@ def draw_lyric_tie (expr width_sharp) =
        angularity := 2.5;
        width# := max (min (width_sharp, max_width), min_width);
        height# := (max (width# - min_width, 0) / (max_width - min_width))
-                  [min_height, max_height];
+                    [min_height, max_height];
        depth# := padding# + height#;
 
-       set_char_box (0, 0,
-               depth#, 0);
+       set_char_box (0, 0, depth#, 0);
 
        define_pixels (width, padding);
 
@@ -51,18 +51,20 @@ def draw_lyric_tie (expr width_sharp) =
        penpos3 (thin, angularity * angle (z3 - z2) + 90);
 
        fill z2l
-               .. simple_serif (z3l, z3r, 90)
-               .. z2r
-               .. simple_serif (z1r, z1l, 90)
-               .. cycle;
+            .. simple_serif (z3l, z3r, 90)
+            .. z2r
+            .. simple_serif (z1r, z1l, 90)
+            .. cycle;
 
        penlabels (1, 2, 3);
 enddef;
 
+
 fet_beginchar ("Short lyric tie", "lyric.short");
        draw_lyric_tie (1.25 staff_space#);
 fet_endchar;
 
+
 fet_beginchar ("Default lyric tie", "lyric.default");
        draw_lyric_tie (1.75 staff_space#);
 fet_endchar;
index 340986d7e0f0336bc6e51497e6d4af37c2a0de03..7ea7f14f68d8800602a6aae067514d2d10f30c9b 100644 (file)
@@ -393,4 +393,95 @@ fet_beginchar ("Hufnagel Flat" , "hufnagelM1");
 fet_endchar;
 
 
+%%%%%%%%%%%%%%%
+%%%
+%%% Glyphs for Kievan Music Notation
+%%%
+%%%%%%%%%%%%%%%
+
+
+fet_beginchar ("Kievan sharp", "kievan1");
+       % This draws the sharp.
+       % It never occurs in Synodal music and
+       % can only be found in some early manuscripts.
+
+       z1 = (0.579 staff_space, 1.459 staff_space);
+       z2 = (1.414 staff_space, -0.904 staff_space);
+       z3 = (0.187 staff_space, 0.904 staff_space);
+
+       x2 - x1 = x4 - x3;
+       y1 - y2 = y3 - y4;
+
+       z5 = (1.296 staff_space, 1.613 staff_space);
+       z6 = (0.090 staff_space, -0.864 staff_space);
+       z7 = (1.532 staff_space, 0.892 staff_space);
+
+       x5 - x6 = x7 - x8;
+       y5 - y6 = y7 - y8;
+
+       pickup pensquare xscaled 0.167staff_space
+                        yscaled 0.167staff_space
+                        rotated -69.2;
+       draw z1{dir -69.2}
+            .. {dir -74.1}z2;
+       draw z3{dir -69.2}
+            .. {dir -74.1}z4;
+
+       pickup pensquare xscaled 0.167staff_space
+                        yscaled 0.167staff_space
+                        rotated -114.6;
+       draw z5{dir -114.6}
+            ... {dir -125.0}z6;
+       draw z7{dir -114.6}
+            ... {dir -125.0}z8;
+
+       set_char_box (0, 1.6 staff_space#,
+                     1.6 staff_space#, 1.6 staff_space#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan flat", "kievanM1");
+       % This draws the flat sign.
+       % In Synodal music, the flat only occurs on the high B
+       % but it may be used elsewhere in early manuscripts.
+
+       z1 = (0.452 staff_space, 1.772 staff_space);
+       z2 = (0.481 staff_space, 1.735 staff_space);
+       z3 = (0.464 staff_space, 1.626 staff_space);
+       z4 = (0.249 staff_space, 0.322 staff_space);
+       z5 = (0.432 staff_space, -0.762 staff_space);
+       z6 = (0.611 staff_space, -0.583 staff_space);
+       z7 = (0.611 staff_space, 0.224 staff_space);
+       z8 = (0.652 staff_space, 0.513 staff_space);
+       z9 = (0.900 staff_space, 0.684 staff_space);
+       z10 = (0.872 staff_space, 0.640 staff_space);
+       z11 = (0.811 staff_space, 0.359 staff_space);
+       z12 = (0.811 staff_space, -0.587 staff_space);
+       z13 = (0.338 staff_space, -1.063 staff_space);
+       z14 = (0.016 staff_space, 0.196 staff_space);
+       z15 = (0.204 staff_space, 1.316 staff_space);
+
+       fill z13
+            .. z14{up}
+            .. z15{dir 70.8}
+            .. z1{dir 4.9}
+            .. z2
+            .. z3
+            .. z4{down}
+            .. z5
+            -- z6
+            -- z7{up}
+            .. z8
+            .. {dir 23}z9
+            & z9
+            .. z10{dir -135}
+            .. {down}z11
+            -- z12
+            -- z13
+            & cycle;
+
+       set_char_box (0, 1.0 staff_space#,
+                     1.0 staff_space#, 1.8 staff_space#);
+fet_endchar;
+
 fet_endgroup ("accidentals");
index 91988ebc4ca1b6776bcad6208ce5800f2643d957..34a09cf20bc40d7b0def688c2af66fc54731362f 100644 (file)
@@ -1701,4 +1701,61 @@ fet_beginchar ("Hufnagel do/fa clef", "hufnagel.do.fa_change");
 fet_endchar;
 
 
+%%%%%%%%
+%%
+%% Medieval East-Slavic (Kievan) Notation clefs
+%% Code by Aleksandr Andreev <aleksandr.andreev@gmail.com>
+%%
+%%%%%%%%
+
+def draw_kievan_do_clef =
+       z1 = (1.108 staff_space, 0.554 staff_space);
+       z2 = (1.063 staff_space, -0.122 staff_space);
+       z3 = (1.467 staff_space, -1.621 staff_space);
+       z4 = (1.002 staff_space, -2.253 staff_space);
+
+       y5 = y3;
+       x4 - x5 = x3 - x4;
+
+       z6 = (0.917 staff_space, -0.383 staff_space);
+       z7 = (0.012 staff_space, -0.448 staff_space);
+       z8 = (0, -0.167 staff_space);
+       z9 = (0.057 staff_space, 0.464 staff_space);
+       z10 = (0.994 staff_space, 0.387 staff_space);
+       z11 = (1.023 staff_space, 0.554 staff_space);
+
+       fill z1
+            .. z2{down}
+            .. z3
+            -- z4
+            -- z5
+            .. {up}z6
+            & z6{left}
+            .. z7
+            & z7
+            .. z8{up}
+            .. z9
+            & z9
+            .. {right}z10
+            & z10
+            .. z11
+            -- cycle;
+
+       set_char_box (0, 1.5 staff_space#,
+                     2.25 staff_space#, 0.55 staff_space#);
+enddef;
+
+
+fet_beginchar ("Kievan tsefaut clef", "kievan.do");
+       % This draws the Tse-Fa-Ut clef; it is a variant alto clef that
+       % always occurs on the third line of the staff.
+       draw_kievan_do_clef;
+fet_endchar;
+
+
+fet_beginchar ("Kievan tsefaut clef", "kievan.do_change");
+       % This is the same thing as a do clef?
+       draw_kievan_do_clef;
+fet_endchar;
+
 fet_endgroup ("clefs");
index d6aa75682c940b1143e0854bfdb2b889b6955a5e..4e77d9c465c64d3b67e123ca41b738fc71b4e716 100644 (file)
@@ -35,4 +35,29 @@ fet_beginchar ("duration dot", "dotvaticana");
        set_char_box (0, dot_diam#, .5 dot_diam#, .5 dot_diam#);
 fet_endchar;
 
+
+%%%%%%%%%%%%%
+%%%
+%%% Code for Kievan Music Notation
+%%%
+%%%%%%%%%%%%%
+
+
+save kievan_dot_diam;
+kievan_dot_diam# := staff_space# - stafflinethickness#;
+define_whole_pixels (kievan_dot_diam);
+
+
+fet_beginchar ("Kievan augmentation dot", "dotkievan");
+       % parameters for superellipse are right, top, left, bottom
+       fill superellipse ((kievan_dot_diam, 0),
+                          (kievan_dot_diam / 2, kievan_dot_diam / 2),
+                          (0, 0),
+                          (kievan_dot_diam / 2, -kievan_dot_diam / 2),
+                          0.51);
+
+       set_char_box (0, kievan_dot_diam#,
+                     0.5 kievan_dot_diam#, 0.5 kievan_dot_diam#);
+fet_endchar;
+
 fet_endgroup ("dots");
index 8ba6e4bdafb48b65e0693bccc6a3c02784a6c40b..afc713f3523e89e60c4c66f1233e013fe1e9a941 100644 (file)
@@ -383,9 +383,9 @@ def draw_mensural_longa (expr wid, holeheight, open, full, direction, ligature)
 
        penpos6 (stem_width, 0);
        if ligature:
-         penpos7 (stem_width, 0);
+               penpos7 (stem_width, 0);
        else:
-         penpos7 (1.5 stem_width, 0);
+               penpos7 (1.5 stem_width, 0);
        fi;
 
        fill z7l
@@ -473,58 +473,87 @@ m_brevis_width := m_longa_width;
 m_holeheight := nm_holeheight;
 m_red_holeheight := nm_red_holeheight;
 
+
 fet_beginchar ("Mensural maxima notehead (up)", "uM3mensural");
-       draw_mensural_longa (m_maxima_width, m_holeheight, true, true, 1, false);
+       draw_mensural_longa (m_maxima_width, m_holeheight,
+                            true, true, 1, false);
 fet_endchar;
 
+
 fet_beginchar ("Mensural maxima notehead (down)", "dM3mensural");
-       draw_mensural_longa (m_maxima_width, m_holeheight, true, true, -1, false);
+       draw_mensural_longa (m_maxima_width, m_holeheight,
+                            true, true, -1, false);
 fet_endchar;
 
+
 fet_beginchar ("Mensural maxima notehead (ligature)", "sM3ligmensural");
        draw_mensural_brevis (m_maxima_width, m_holeheight, true, true);
 fet_endchar;
 
+
 fet_beginchar ("Mensural longa notehead (up)", "uM2mensural");
-       draw_mensural_longa (m_longa_width, m_holeheight, true, true, 1, false);
+       draw_mensural_longa (m_longa_width, m_holeheight,
+                            true, true, 1, false);
 fet_endchar;
 
+
 fet_beginchar ("Mensural longa notehead (down)", "dM2mensural");
-       draw_mensural_longa (m_longa_width, m_holeheight, true, true, -1, false);
+       draw_mensural_longa (m_longa_width, m_holeheight,
+                            true, true, -1, false);
 fet_endchar;
 
 fet_beginchar ("Mensural longa notehead (ligature)", "sM2ligmensural");
-       draw_mensural_longa (m_longa_width, m_holeheight, true, true, -1, true);
+       draw_mensural_longa (m_longa_width, m_holeheight,
+                            true, true, -1, true);
 fet_endchar;
 
+
 fet_beginchar ("Mensural brevis notehead", "sM1mensural");
        draw_mensural_brevis (m_brevis_width, m_holeheight, true, true);
 fet_endchar;
 
-fet_beginchar ("Mensural maxima notehead (up, reduced hole)", "urM3mensural");
-       draw_mensural_longa (m_maxima_width, m_red_holeheight, true, true, 1, false);
+
+fet_beginchar ("Mensural maxima notehead (up, reduced hole)",
+              "urM3mensural");
+       draw_mensural_longa (m_maxima_width, m_red_holeheight,
+                            true, true, 1, false);
 fet_endchar;
 
-fet_beginchar ("Mensural maxima notehead (down, reduced hole)", "drM3mensural");
-       draw_mensural_longa (m_maxima_width, m_red_holeheight, true, true, -1, false);
+
+fet_beginchar ("Mensural maxima notehead (down, reduced hole)",
+              "drM3mensural");
+       draw_mensural_longa (m_maxima_width, m_red_holeheight,
+                            true, true, -1, false);
 fet_endchar;
 
-fet_beginchar ("Mensural maxima notehead (ligature, reduced hole)", "srM3ligmensural");
+
+fet_beginchar ("Mensural maxima notehead (ligature, reduced hole)",
+              "srM3ligmensural");
        draw_mensural_brevis (m_maxima_width, m_red_holeheight, true, true);
 fet_endchar;
 
-fet_beginchar ("Mensural longa notehead (up, reduced hole)", "urM2mensural");
-       draw_mensural_longa (m_longa_width, m_red_holeheight, true, true, 1, false);
+
+fet_beginchar ("Mensural longa notehead (up, reduced hole)",
+              "urM2mensural");
+       draw_mensural_longa (m_longa_width, m_red_holeheight,
+                            true, true, 1, false);
 fet_endchar;
 
-fet_beginchar ("Mensural longa notehead (down, reduced hole)", "drM2mensural");
-       draw_mensural_longa (m_longa_width, m_red_holeheight, true, true, -1, false);
+
+fet_beginchar ("Mensural longa notehead (down, reduced hole)",
+              "drM2mensural");
+       draw_mensural_longa (m_longa_width, m_red_holeheight,
+                            true, true, -1, false);
 fet_endchar;
 
-fet_beginchar ("Mensural longa notehead (ligature, reduced hole)", "srM2ligmensural");
-       draw_mensural_longa (m_longa_width, m_red_holeheight, true, true, -1, true);
+
+fet_beginchar ("Mensural longa notehead (ligature, reduced hole)",
+              "srM2ligmensural");
+       draw_mensural_longa (m_longa_width, m_red_holeheight,
+                            true, true, -1, true);
 fet_endchar;
 
+
 fet_beginchar ("Mensural brevis notehead (reduced hole)", "srM1mensural");
        draw_mensural_brevis (m_brevis_width, m_red_holeheight, true, true);
 fet_endchar;
@@ -534,59 +563,95 @@ fet_endchar;
 % Semi-colored mensural/Petrucci maxima/longa/brevis
 %
 
-fet_beginchar ("Semi-colored mensural maxima notehead (up)", "uM3semimensural");
-       draw_mensural_longa (m_maxima_width, m_holeheight, true, false, 1, false);
+fet_beginchar ("Semi-colored mensural maxima notehead (up)",
+              "uM3semimensural");
+       draw_mensural_longa (m_maxima_width, m_holeheight,
+                            true, false, 1, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural maxima notehead (down)", "dM3semimensural");
-       draw_mensural_longa (m_maxima_width, m_holeheight, true, false, -1, false);
+
+fet_beginchar ("Semi-colored mensural maxima notehead (down)",
+              "dM3semimensural");
+       draw_mensural_longa (m_maxima_width, m_holeheight,
+                            true, false, -1, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural maxima notehead (ligature)", "sM3semiligmensural");
+
+fet_beginchar ("Semi-colored mensural maxima notehead (ligature)",
+              "sM3semiligmensural");
        draw_mensural_brevis (m_maxima_width, m_holeheight, true, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural longa notehead (up)", "uM2semimensural");
-       draw_mensural_longa (m_longa_width, m_holeheight, true, false, 1, false);
+
+fet_beginchar ("Semi-colored mensural longa notehead (up)",
+              "uM2semimensural");
+       draw_mensural_longa (m_longa_width, m_holeheight,
+                            true, false, 1, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural longa notehead (down)", "dM2semimensural");
-       draw_mensural_longa (m_longa_width, m_holeheight, true, false, -1, false);
+
+fet_beginchar ("Semi-colored mensural longa notehead (down)",
+              "dM2semimensural");
+       draw_mensural_longa (m_longa_width, m_holeheight,
+                            true, false, -1, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural longa notehead (ligature)", "sM2semiligmensural");
-       draw_mensural_longa (m_longa_width, m_holeheight, true, false, -1, true);
+
+fet_beginchar ("Semi-colored mensural longa notehead (ligature)",
+              "sM2semiligmensural");
+       draw_mensural_longa (m_longa_width, m_holeheight,
+                            true, false, -1, true);
 fet_endchar;
 
+
 fet_beginchar ("Semi-colored mensural brevis notehead", "sM1semimensural");
        draw_mensural_brevis (m_brevis_width, m_holeheight, true, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural maxima notehead (up, reduced hole)", "urM3semimensural");
-       draw_mensural_longa (m_maxima_width, m_red_holeheight, true, false, 1, false);
+
+fet_beginchar ("Semi-colored mensural maxima notehead (up, reduced hole)",
+              "urM3semimensural");
+       draw_mensural_longa (m_maxima_width, m_red_holeheight,
+                            true, false, 1, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural maxima notehead (down, reduced hole)", "drM3semimensural");
-       draw_mensural_longa (m_maxima_width, m_red_holeheight, true, false, -1, false);
+
+fet_beginchar ("Semi-colored mensural maxima notehead (down, reduced hole)",
+              "drM3semimensural");
+       draw_mensural_longa (m_maxima_width, m_red_holeheight,
+                            true, false, -1, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural maxima notehead (ligature, reduced hole)", "srM3semiligmensural");
+
+fet_beginchar ("Semi-colored mensural maxima notehead (ligature, reduced hole)",
+              "srM3semiligmensural");
        draw_mensural_brevis (m_maxima_width, m_red_holeheight, true, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural longa notehead (up, reduced hole)", "urM2semimensural");
-       draw_mensural_longa (m_longa_width, m_red_holeheight, true, false, 1, false);
+
+fet_beginchar ("Semi-colored mensural longa notehead (up, reduced hole)",
+              "urM2semimensural");
+       draw_mensural_longa (m_longa_width, m_red_holeheight,
+                            true, false, 1, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural longa notehead (down, reduced hole)", "drM2semimensural");
-       draw_mensural_longa (m_longa_width, m_red_holeheight, true, false, -1, false);
+
+fet_beginchar ("Semi-colored mensural longa notehead (down, reduced hole)",
+              "drM2semimensural");
+       draw_mensural_longa (m_longa_width, m_red_holeheight,
+                            true, false, -1, false);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural longa notehead (ligature, reduced hole)", "srM2semiligmensural");
-       draw_mensural_longa (m_longa_width, m_red_holeheight, true, false, -1, true);
+
+fet_beginchar ("Semi-colored mensural longa notehead (ligature, reduced hole)",
+              "srM2semiligmensural");
+       draw_mensural_longa (m_longa_width, m_red_holeheight,
+                            true, false, -1, true);
 fet_endchar;
 
-fet_beginchar ("Semi-colored mensural brevis notehead (reduced hole)", "srM1semimensural");
+
+fet_beginchar ("Semi-colored mensural brevis notehead (reduced hole)",
+              "srM1semimensural");
        draw_mensural_brevis (m_brevis_width, m_red_holeheight, true, false);
 fet_endchar;
 
@@ -599,26 +664,34 @@ fet_beginchar ("Black mensural maxima notehead (up)", "uM3blackmensural");
        draw_mensural_longa (m_maxima_width, 0, false, false, 1, false);
 fet_endchar;
 
+
 fet_beginchar ("Black mensural maxima notehead (down)", "dM3blackmensural");
        draw_mensural_longa (m_maxima_width, 0, false, false, -1, false);
 fet_endchar;
 
-fet_beginchar ("Black mensural maxima notehead (ligature)", "sM3blackligmensural");
+
+fet_beginchar ("Black mensural maxima notehead (ligature)",
+              "sM3blackligmensural");
        draw_mensural_brevis (m_maxima_width, 0, false, false);
 fet_endchar;
 
+
 fet_beginchar ("Black mensural longa notehead (up)", "uM2blackmensural");
        draw_mensural_longa (m_longa_width, 0, false, false, 1, false);
 fet_endchar;
 
+
 fet_beginchar ("Black mensural longa notehead (down)", "dM2blackmensural");
        draw_mensural_longa (m_longa_width, 0, false, false, -1, false);
 fet_endchar;
 
-fet_beginchar ("Black mensural longa notehead (ligature)", "sM2blackligmensural");
+
+fet_beginchar ("Black mensural longa notehead (ligature)",
+              "sM2blackligmensural");
        draw_mensural_longa (m_longa_width, 0, false, false, -1, true);
 fet_endchar;
 
+
 fet_beginchar ("Black mensural brevis notehead", "sM1blackmensural");
        draw_mensural_brevis (m_brevis_width, 0, false, false);
 fet_endchar;
@@ -632,10 +705,12 @@ fet_beginchar ("Mensural semibrevis head", "s0mensural");
        draw_diamond_head (staff_space#, 0.15, 0.30, 30, true);
 fet_endchar;
 
+
 fet_beginchar ("Mensural minima head", "s1mensural");
        draw_diamond_head (staff_space#, 0.15, 0.30, 30, true);
 fet_endchar;
 
+
 fet_beginchar ("Mensural semiminima head", "s2mensural");
        draw_diamond_head (staff_space#, 0.15, 0.30, 30, false);
 fet_endchar;
@@ -1707,4 +1782,337 @@ fet_beginchar ("Hufnagel pes lower punctum", "shufnagel.lpes")
 fet_endchar;
 
 
+%%%%%%%%%%%%
+%%
+%% Noteheads for Medieval East-Slavic (Kievan) Notation
+%% Code by Aleksandr Andreev <aleksandr.andreev@gmail.com>
+%%
+%%%%%%%%%%%%
+
+
+fet_beginchar ("Kievan final note", "sM2kievan");
+       % This draws the Final Note.
+       % It is the last note of a piece of music
+       % equivalent to having a whole note and fermata in CMN.
+       % It always has an invariant representation.
+
+       vert_bar_thickness# := 2 * stafflinethickness#;
+       vert_height# := 1.5 * staff_space#;
+       blank_space# := 1.5 * stafflinethickness#;
+       note_width#  := vert_height# - 2 * vert_bar_thickness#;
+
+       define_pixels (vert_height, blank_space, note_width);
+       define_blacker_pixels (vert_bar_thickness);
+
+       path p;
+       p := (0, blank_space)
+            -- (0, staff_space - blank_space)
+            -- (note_width + 0.5 vert_bar_thickness,
+                staff_space - blank_space)
+            -- (note_width + 0.5 vert_bar_thickness, blank_space)
+            -- cycle;
+       fill p;
+       fill p reflectedabout ((0, 0), (1, 0));
+
+       pickup pensquare xscaled vert_bar_thickness;
+
+       draw (note_width + 0.5 * vert_bar_thickness, vert_height)
+            -- (note_width + 0.5 * vert_bar_thickness, -vert_height);
+
+       set_char_box (0, note_width# + vert_bar_thickness#,
+                     vert_height#, vert_height#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan recitative mark", "sM1kievan");
+       inner_width# := 4 * staff_space#;
+       vert_bar_thickness# := 2 * stafflinethickness#;
+       vert_bar_height# := staff_space# - stafflinethickness#;
+       blank_space# := 0.20 * vert_bar_height#;
+
+       define_pixels (inner_width, blank_space, vert_bar_height);
+       define_blacker_pixels (vert_bar_thickness);
+
+       path p;
+       p := (2.5 * vert_bar_thickness, blank_space)
+            -- (2.5 * vert_bar_thickness, vert_bar_height - blank_space)
+            -- (3.5 * vert_bar_thickness + inner_width,
+                vert_bar_height - blank_space)
+            -- (3.5 * vert_bar_thickness + inner_width, blank_space)
+            -- cycle;
+       fill p;
+       fill p reflectedabout ((0, 0), (1, 0));
+
+       % draw the four vertical lines
+       pickup pensquare xscaled vert_bar_thickness;
+       p := (0.5 * vert_bar_thickness, vert_bar_height)
+            -- (0.5 * vert_bar_thickness, -vert_bar_height);
+       draw p;
+       draw p shifted (2 * vert_bar_thickness, 0);
+       draw p shifted (3 * vert_bar_thickness + inner_width, 0);
+       draw p shifted (5 * vert_bar_thickness + inner_width, 0);
+
+       set_char_box (0, 6 * vert_bar_thickness# + inner_width#,
+                     vert_bar_height#, vert_bar_height#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan whole note", "s0kievan");
+       % the amount by which top and bottom diamond overlap
+       overlap# := stafflinethickness#;
+       height# := staff_space# - stafflinethickness#;
+       width# := height# + overlap#;
+
+       define_pixels (overlap, height, width);
+
+       % parameters for superellipse are right, top, left, bottom
+       fill superellipse ((width, 0.5 * (height + overlap)),
+                          (width/2, height + overlap),
+                          (0, 0.5 * (height + overlap)),
+                          (width/2, -overlap),
+                          0.51);
+       fill superellipse ((width, -0.5 * (height + overlap)),
+                          (width/2, overlap),
+                          (0, -0.5 * (height + overlap)),
+                          (width/2, -height - overlap),
+                          0.51);
+
+       set_char_box (0, width#, height# + overlap#,
+                     height# + overlap#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan quarter note down", "d2kievan");
+       z1 = (0.09 * staff_space, 0.33 * staff_space);
+       z2 = (0.66 * staff_space, 0.37 * staff_space);
+       z3 = (0.99 * staff_space, 0.36 * staff_space);
+       z4 = (0.90 * staff_space, -1.05 * staff_space);
+       z5 = (1.02 * staff_space, -2.19 * staff_space);
+       z6 = (0.60 * staff_space, -2.49 * staff_space);
+       z7 = (0.58 * staff_space, -1.91 * staff_space);
+       z8 = (0.73 * staff_space, -0.35 * staff_space);
+       z9 = (0.02 * staff_space, -0.39 * staff_space);
+       z10 = (0, -0.24 * staff_space);
+
+       fill z1{dir 8.6}
+            .. z2
+            .. z3
+            & z3
+            .. z4
+            .. z5
+            -- z6
+            .. z7
+            .. z8
+            & z8{left}
+            .. z9
+            & z9
+            .. z10
+            ... {dir 75}cycle;
+
+       set_char_box (0, 1.02 staff_space#,
+                     2.50 staff_space#, 0.40 staff_space#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan quarter note up", "u2kievan");
+       z1 = (0.090 staff_space, -0.330 staff_space);
+       z2 = (0.664 staff_space, -0.371 staff_space);
+       z3 = (0.986 staff_space, -0.363 staff_space);
+       z4 = (0.897 staff_space, 1.051 staff_space);
+       z5 = (1.019 staff_space, 2.387 staff_space);
+       z6 = (0.603 staff_space, 2.587 staff_space);
+       z7 = (0.583 staff_space, 1.911 staff_space);
+       z8 = (0.725 staff_space, 0.346 staff_space);
+       z9 = (0.017 staff_space, 0.391 staff_space);
+       z10 = (0, 0.240 staff_space);
+
+       fill z1{dir -6.9}
+            .. z2
+            .. z3
+            & z3
+            .. z4
+            .. z5
+            -- z6
+            .. z7
+            .. z8
+            & z8{left}
+            .. z9
+            & z9
+            .. z10
+            ... {dir -76.9}cycle;
+
+       set_char_box (0, 1.02 staff_space#,
+                     0.40 staff_space#, 2.6 staff_space#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan half note (line position)", "s1kievan");
+       % This draws the half note with a short tail up and a long tail down.
+       % This version of the half note is used on any line of the staff.
+
+       z1 = (1.031 staff_space, 0.945 staff_space);
+       z2 = (0.945 staff_space, -0.122 staff_space);
+       z3 = (1.059 staff_space, -1.393 staff_space);
+       z4 = (0.713 staff_space, -1.564 staff_space);
+       z5 = (0.672 staff_space, -0.729 staff_space);
+       z6 = (0.684 staff_space, -0.318 staff_space);
+       z7 = (0.448 staff_space, -0.326 staff_space);
+       z8 = (0, -0.281 staff_space);
+       z9 = (0.086 staff_space, 0.350 staff_space);
+       z10 = (0.746 staff_space, 0.277 staff_space);
+       z11 = (0.909 staff_space, 0.921 staff_space);
+
+       fill z1
+            .. z2{down}
+            .. z3
+            -- z4
+            .. z5{up}
+            .. z6
+            & z6
+            .. z7{left}
+            .. z8
+            -- z9
+            .. {right}z10
+            & z10{up}
+            .. z11
+            -- cycle;
+
+       set_char_box (0, 1.06 staff_space#,
+                     1.6 staff_space#, 1.0 staff_space#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan half note (space position)", "sr1kievan");
+       % This draws the half note with a short tail down and a long tail up.
+       % This version of the half note is used in any space of the staff.
+
+       z1 = (1.071 staff_space, 1.426 staff_space);
+       z2 = (0.974 staff_space, 0.191 staff_space);
+       z3 = (1.059 staff_space, -0.994 staff_space);
+       z4 = (0.713 staff_space, -1.169 staff_space);
+       z5 = (0.676 staff_space, -0.436 staff_space);
+       z6 = (0.684 staff_space, -0.310 staff_space);
+       z7 = (0.448 staff_space, -0.322 staff_space);
+       z8 = (0, -0.277 staff_space);
+       z9 = (0.0856 staff_space, 0.359 staff_space);
+       z10 = (0.746 staff_space, 0.281 staff_space);
+       z11 = (0.807 staff_space, 0.847 staff_space);
+       z12 = (0.945 staff_space, 1.401 staff_space);
+
+       fill z1
+            .. z2{down}
+            .. z3
+            -- z4
+            .. z5{up}
+            .. z6
+            & z6
+            .. z7{left}
+            .. z8
+            -- z9
+            .. z10{right}
+            & z10
+            .. z11
+            .. z12
+            -- cycle;
+
+       set_char_box (0, 1.1 staff_space#,
+                     1.0 staff_space#, 1.4 staff_space#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan eighth note (down)", "d3kievan");
+       % This draws the eighth note.
+       % This form of the eight note occurs on the third line or higher
+       % and sometimes between the second line and the third line.
+
+       z1 = (0.261 staff_space, 0.416 staff_space);
+       z2 = (1.022 staff_space, 0.269 staff_space);
+       z3 = (0.664 staff_space, -0.603 staff_space);
+       z4 = (1.259 staff_space, -0.726 staff_space);
+       z5 = (1.055 staff_space, -2.012 staff_space);
+       z6 = (1.186 staff_space, -2.794 staff_space);
+       z7 = (0.778 staff_space, -2.999 staff_space);
+       z8 = (0.741 staff_space, -2.567 staff_space);
+       z9 = (0.941 staff_space, -1.467 staff_space);
+       z10 = (0.33 staff_space, -1.340 staff_space);
+       z11 = (0.631 staff_space, -0.448 staff_space);
+       z12 = (0, -0.334 staff_space);
+
+       fill z1{right}
+            .. z2
+            -- z3{right}
+            .. z4
+            & z4
+            .. z5{down}
+            .. z6
+            -- z7
+            .. z8{up}
+            .. z9
+            & z9
+            .. {left}z10
+            & z10{dir 78.7}
+            .. z11
+            & z11
+            .. {left}z12
+            & z12{dir 78.7}
+            .. {dir 62}cycle;
+
+       set_char_box (0, 1.25 staff_space#,
+                     3.0 staff_space#, 0.5 staff_space#);
+fet_endchar;
+
+
+fet_beginchar ("Kievan eighth note (up)", "u3kievan");
+       % This draws the flagged eighth note.
+       % This version of the eighth note occurs on the second line or lower.
+
+       % first, draw the upside down quarter note
+       z1 = (0.090 staff_space, -0.33 staff_space);
+       z2 = (0.664 staff_space, -0.371 staff_space);
+       z3 = (0.986 staff_space, -0.363 staff_space);
+       z4 = (0.896 staff_space, 1.051 staff_space);
+       z5 = (1.019 staff_space, 2.387 staff_space);
+       z6 = (0.603 staff_space, 2.587 staff_space);
+       z7 = (0.583 staff_space, 1.911 staff_space);
+       z8 = (0.725 staff_space, 0.346 staff_space);
+       z9 = (0.016 staff_space, 0.391 staff_space);
+       z10 = (0, 0.240 staff_space);
+
+       fill z1{dir -6.9}
+            .. z2
+            .. z3
+            & z3
+            .. z4
+            .. z5
+            -- z6
+            .. z7
+            .. z8
+            & z8{left}
+            .. z9
+            & z9
+            .. z10
+            ... {dir -76.9}cycle;
+
+       % now, draw the stem
+       z11 = (0.033 staff_space, 2.823 staff_space);
+       z12 = (0.391 staff_space, 2.648 staff_space);
+       z13 = (0.354 staff_space, 2.290 staff_space);
+       z14 = (0.676 staff_space, 1.076 staff_space);
+       z15 = (0.693 staff_space, 0.88 staff_space);
+       z16 = (0.208 staff_space, 1.699 staff_space);
+       z17 = (0.024 staff_space, 2.616 staff_space);
+
+       fill z11
+            -- z12
+            .. z13{down}
+            .. z14
+            -- z15
+            .. z16
+            .. z17{up}
+            .. cycle;
+
+       set_char_box (0, 1.0 staff_space#,
+                     0.4 staff_space#, 2.9 staff_space#);
+fet_endchar;
+
 fet_endgroup ("noteheads");
index 18646a807e3f9718d8db5497de6b2bedc32c6d62..284aa45f5c163b7bebcf22ee621c2adebbf7142c 100644 (file)
@@ -239,4 +239,62 @@ fet_beginchar ("signum congruentiae down", "dsignumcongruentiae");
 fet_endchar;
 
 
+%%%%%%%%%%%%%
+%%%%
+%%%% Code for Kievan Notation
+%%%%
+%%%%%%%%%%%%%
+
+
+fet_beginchar ("Kievan end of piece (slash)", "barline.kievan");
+       % This draws the end of piece figure.
+       % This figure is placed at the end of the musical piece,
+       % after the staff.
+
+       save hair_thickness, thick_thickness, width, depth, height, padding;
+       hair# = 1.9 linethickness#;
+       thick# = 6.0 linethickness#;
+       width = .8 staff_space;
+       height# + depth# = 4 staff_space#;
+       depth# = height# + hair# / 2;
+       padding = .2 staff_space;
+
+       set_char_box (0, 0, depth#, height#);
+       define_pixels (hair, thick);
+
+       x1r - x2l = width;
+       y1 - y3r = d + h + linethickness / 2;
+       z3 = z2;
+       z4 = .5 [z1, z2]
+          = (width / 2 + padding, hair / 8);
+       z5 = (x2 - .17 staff_space, 9/10 [y2, y1]);
+       z7 - z6 = (.5 staff_space, -.2 staff_space);
+       .4 [z6, z7] = 7/6 [z2, z1];
+
+       penpos1 (hair, 0);
+       penpos2 (hair, 0);
+       penpos3 (hair, -90);
+       penpos4 (thick, 10);
+       penpos5 (thick, 35);
+       penpos6 (hair, -90);
+       penpos7 (.5 thick, -120);
+
+       penlabels (1, 2, 3, 4, 5, 6, 7);
+
+       penstroke z1e
+                 -- z2e;
+
+       fill z3l
+            -- z2l{z2 - z1}
+            .. z3r{right}
+            .. z4r
+            .. z5r
+            .. z6r
+            .. simple_serif (z7r, z7l, 80)
+            .. {left}z6l
+            .. z5l
+            .. z4l
+            .. {left}cycle;
+fet_endchar;
+
 fet_endgroup ("scripts");
index ccdf3e39127cc580d37b9e4fe5bd58a10d99880a..16d027fb9cebcd574bdad38560a24c69e3533faf 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the lilypond package.
 # Erwin Dieterich <bamse@gmx.de>, 1999
 # Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005, 2006, 2007
-# Till Paala <till.rettig@gmx.de>, 2007, 2008, 2009, 2010, 2011.
+# Till Paala <till.rettig@gmx.de>, 2007, 2008, 2009, 2010, 2011, 2012.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.15.9\n"
+"Project-Id-Version: lilypond 2.15.29\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2011-08-02 19:43+0200\n"
-"PO-Revision-Date: 2011-08-10 21:45+0300\n"
+"POT-Creation-Date: 2012-02-04 15:42+0100\n"
+"PO-Revision-Date: 2012-02-08 23:10+0200\n"
 "Last-Translator: Till Paala <till.rettig@gmx.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
@@ -33,49 +33,72 @@ msgstr "%s ausgepackt"
 msgid "Writing fonts to %s"
 msgstr "Schreiben der Schriftarten nach %s"
 
-#: book_snippets.py:519
+#: book_snippets.py:409
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "veraltete ly-option verwendet: %s=%s"
 
-#: book_snippets.py:521
+#: book_snippets.py:411
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "Übersetzung im Kompatibilitätsmodus: %s=%s"
 
-#: book_snippets.py:524
+#: book_snippets.py:414
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "veraltete ly-option verwendet: %s"
 
-#: book_snippets.py:526
+#: book_snippets.py:416
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "Übersetzung im Kompatibilitätsmodus: %s"
 
-#: book_snippets.py:544
+#: book_snippets.py:533
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "unbekannte Option ignoriert: %s"
 
-#: book_snippets.py:736
+#: book_snippets.py:741
 #, python-format
-msgid "Opening filter `%s'\n"
-msgstr "Filter »%s« wird geöffnet\n"
+msgid "Running through filter `%s'"
+msgstr "Durch Filter »%s« schicken"
 
-#: book_snippets.py:756
+#: book_snippets.py:761
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "»%s« gescheitert (%d)"
 
-#: book_snippets.py:757
+#: book_snippets.py:762
 msgid "The error log is as follows:"
 msgstr "Das Fehlerprotokoll lautet wie folgt:"
 
+#: book_snippets.py:882
+#, python-format
+msgid "Converting MusicXML file `%s'...\n"
+msgstr "MusicXML-Datei »%s« konvertieren...\n"
+
+#: book_snippets.py:909
+#, python-format
+msgid ""
+"%s: duplicate filename but different contents of original file,\n"
+"printing diff against existing file."
+msgstr ""
+"%s: Doppelte Dateibezeichnung, aber unterschiedlicher Inhalt der Originaldatei,\n"
+"gebe Diff zur existierenden Datei aus."
+
+#: book_snippets.py:922
+#, python-format
+msgid ""
+"%s: duplicate filename but different contents of converted lilypond file,\n"
+"printing diff against existing file."
+msgstr ""
+"%s: Doppelte Dateibezeichnung, aber unterschiedlicher Inhalt der konvertierten lilypond-Datei,\n"
+"gebe Diff zur existierenden Datei aus."
+
 #: convertrules.py:12
 #, python-format
-msgid "Not smart enough to convert %s"
-msgstr "%s kann nicht umgewandelt werden"
+msgid "Not smart enough to convert %s."
+msgstr "%s kann nicht umgewandelt werden."
 
 #: convertrules.py:13
 msgid "Please refer to the manual for details, and update manually."
@@ -86,112 +109,115 @@ msgstr "Für Details Benutzerhandbuch lesen und manuell aktualisieren."
 msgid "%s has been replaced by %s"
 msgstr "%s wurde durch %s ersetzt"
 
-#: convertrules.py:24 lilylib.py:85 musicexp.py:17 convert-ly.py:64 warn.cc:66
-#: input.cc:108
+#: convertrules.py:24 lilylib.py:131 warn.cc:223
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "Warnung: %s"
 
-#: convertrules.py:49 convertrules.py:99
+#: convertrules.py:49 convertrules.py:94
 msgid "\\header { key = concat + with + operator }"
 msgstr "\\header { Schlüssel = concat + mit + Operator }"
 
-#: convertrules.py:58
+#: convertrules.py:56
 #, python-format
 msgid "deprecated %s"
 msgstr "veraltet %s"
 
-#: convertrules.py:70
+#: convertrules.py:65
 msgid "deprecated \\textstyle, new \\key syntax"
 msgstr "verworfener \\textstyle, neue \\key Syntax"
 
-#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084
-#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862
-#: convertrules.py:3206
+#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031
+#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800
+#: convertrules.py:3150
 msgid "bump version for release"
 msgstr "aktuelle Version ausgeben"
 
-#: convertrules.py:103
+#: convertrules.py:97
 msgid "new \\header format"
 msgstr "neues \\header Format"
 
-#: convertrules.py:132
+#: convertrules.py:124
 msgid "\\translator syntax"
 msgstr "\\translator Syntax"
 
-#: convertrules.py:184
+#: convertrules.py:175
 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
 msgstr "\\repeat NUM Alternative Noten -> \\repeat FOLDSTR Alternative Noten"
 
-#: convertrules.py:216 convertrules.py:699 convertrules.py:1383
-#: convertrules.py:2378
+#: convertrules.py:205 convertrules.py:678 convertrules.py:1350
+#: convertrules.py:2317
 #, python-format
 msgid "deprecate %s"
 msgstr "lehne %s ab"
 
-#: convertrules.py:290
+#: convertrules.py:279
 #, python-format
 msgid "deprecate %s "
 msgstr "lehne %s ab "
 
-#: convertrules.py:319
+#: convertrules.py:305
 msgid "new \\notenames format"
 msgstr "neues \\notenames"
 
-#: convertrules.py:337
+#: convertrules.py:321
 msgid "new tremolo format"
 msgstr "neues Tremolo-Format"
 
-#: convertrules.py:342
+#: convertrules.py:325
 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
 msgstr "Staff_margin_engraver veraltet, benutze Instrument_name_engraver"
 
-#: convertrules.py:395
-msgid "change property definiton case (eg. onevoice -> oneVoice)"
-msgstr "ändere Großschreibung von Eigenschaftsdefinition (z. B. onevoice -> oneVoice)"
+#: convertrules.py:376
+msgid "change property definition case (eg. onevoice -> oneVoice)"
+msgstr "ändere Großschreibung von Eigenschaft (z. B. onevoice -> oneVoice)"
 
-#: convertrules.py:457
+#: convertrules.py:437
 msgid "new \\textscript markup text"
 msgstr "neue \\textscript Beschriftung"
 
-#: convertrules.py:530
+#: convertrules.py:509
 #, python-format
 msgid "identifier names: %s"
 msgstr "Bezeichnernamen: »%s«"
 
-#: convertrules.py:569
+#: convertrules.py:548
 msgid "point-and-click argument changed to procedure."
 msgstr "point-and-click-Argument zu Ablauf verändert"
 
-#: convertrules.py:611
+#: convertrules.py:590
 msgid "semicolons removed"
 msgstr "Semikolons entfernt"
 
 #. 40 ?
-#: convertrules.py:654
+#: convertrules.py:633
 #, python-format
 msgid "%s property names"
 msgstr "%s Eigenschaftsbezeichnungen"
 
-#: convertrules.py:724
+#: convertrules.py:703
 msgid "automaticMelismata turned on by default"
 msgstr "automaticMelismata ist standardmäßig aktiviert"
 
-#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942
-#: convertrules.py:2189
+#: convertrules.py:708
+msgid "automaticMelismata is turned on by default since 1.5.67."
+msgstr "automaticMelismata ist standardmäßig aktiviert seit 1.5.67"
+
+#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889
+#: convertrules.py:2134
 #, python-format
 msgid "remove %s"
 msgstr "»%s« wird gelöscht"
 
-#: convertrules.py:1001 convertrules.py:1005
+#: convertrules.py:977 convertrules.py:980
 msgid "cluster syntax"
 msgstr "Syntax des Clusters"
 
-#: convertrules.py:1014
+#: convertrules.py:987
 msgid "new Pedal style syntax"
 msgstr "neue Syntax für den Pedal-Stil"
 
-#: convertrules.py:1273
+#: convertrules.py:1246
 msgid ""
 "New relative mode,\n"
 "Postfix articulations, new text markup syntax, new chord syntax."
@@ -199,28 +225,28 @@ msgstr ""
 "Neuer relativer Modus,\n"
 "Artikulationen nachgestellt, neue Textbeschriftungssyntax, neue Akkordsyntax."
 
-#: convertrules.py:1286
+#: convertrules.py:1259
 msgid "Remove - before articulation"
 msgstr "- vor Artikulation entfernen"
 
-#: convertrules.py:1324
+#: convertrules.py:1294
 #, python-format
 msgid "%s misspelling"
 msgstr "%s falsch geschrieben"
 
-#: convertrules.py:1346
+#: convertrules.py:1313
 msgid "Swap < > and << >>"
 msgstr "< > und << >> austauschen"
 
-#: convertrules.py:1349
+#: convertrules.py:1316
 msgid "attempting automatic \\figures conversion.  Check results!"
 msgstr "versuche, \\figures automatisch zu konvertieren. Prüfen Sie das Ergebnis!"
 
-#: convertrules.py:1400
+#: convertrules.py:1362
 msgid "Use Scheme code to construct arbitrary note events."
 msgstr "Benutze Scheme-Code, um beliebige Notenereignisse zu erstellen."
 
-#: convertrules.py:1407
+#: convertrules.py:1369
 msgid ""
 "use symbolic constants for alterations,\n"
 "remove \\outputproperty, move ly:verbose into ly:get-option"
@@ -228,7 +254,7 @@ msgstr ""
 "verwende symbolische Konstanten für Alterationen,\n"
 "entferne \\outputproperty, verschiebe ly:verbose nach ly:get-option"
 
-#: convertrules.py:1432
+#: convertrules.py:1394
 #, python-format
 msgid ""
 "\\outputproperty found,\n"
@@ -244,7 +270,7 @@ msgstr ""
 "  \\applyoutput #(outputproperty-compatibility %s '%s <GROB EIGENSCHAFT WERT>)\n"
 "als Ersetzungstext"
 
-#: convertrules.py:1446
+#: convertrules.py:1406
 msgid ""
 "The alteration field of Scheme pitches was multiplied by 2\n"
 "to support quarter tone accidentals.  You must update the following constructs manually:\n"
@@ -259,15 +285,15 @@ msgstr ""
 "* Aufrufe von ly:make-pitch und ly:pitch-alteration\n"
 "* keySignature-Einstellung erstellt mit \\property\n"
 
-#: convertrules.py:1493
+#: convertrules.py:1449
 msgid "removal of automaticMelismata; use melismaBusyProperties instead."
 msgstr "Entfernen von automaticMelismata; benutzen Sie melismaBusyProperties anstatt dessen"
 
-#: convertrules.py:1600
+#: convertrules.py:1556
 msgid "\\partcombine syntax change to \\newpartcombine"
 msgstr "\\partcombine-Syntax zu \\newpartcombine verändern"
 
-#: convertrules.py:1628
+#: convertrules.py:1581
 msgid ""
 "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
 "Harmonic notes. Thread context removed. Lyrics context removed."
@@ -275,11 +301,11 @@ msgstr ""
 "Schlagzeugnotation verändert, entferne \\chordmodifiers, \\notenames.\n"
 "Flageolett-Noten. Thread-Kontext entfernt. Liedtext-Kontext entfernt."
 
-#: convertrules.py:1632
+#: convertrules.py:1585
 msgid "Drums found. Enclose drum notes in \\drummode"
 msgstr "Schlagzeug gefunden. Schlagzeugnoten in \\drummode-Umgebung einbinden"
 
-#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661
+#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614
 #, python-format
 msgid ""
 "\n"
@@ -288,32 +314,33 @@ msgstr ""
 "\n"
 "%s gefunden. Testen Sie die Datei manuell!\n"
 
-#: convertrules.py:1643
+#: convertrules.py:1596
 msgid "Drum notation"
 msgstr "Schlagzeugnotation"
 
-#: convertrules.py:1702
+#: convertrules.py:1655
 msgid "new syntax for property settings:"
 msgstr "neue Syntax für Eigenschaftseinstellungen:"
 
-#: convertrules.py:1728
+#: convertrules.py:1681
 msgid "Property setting syntax in \\translator{ }"
 msgstr "Eigenschaft setzt Syntax in \\translator{ }"
 
-#: convertrules.py:1767
+#: convertrules.py:1720
 msgid "Scheme grob function renaming"
 msgstr "umbenennen der Scheme-grob-Funktion"
 
-#: convertrules.py:1780
+#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142
+#: convertrules.py:2708
 #, python-format
-msgid "use %s"
-msgstr "benutze %s"
+msgid "Use %s\n"
+msgstr "Benutze %s\n"
 
-#: convertrules.py:1797
+#: convertrules.py:1747
 msgid "More Scheme function renaming"
 msgstr "benenne weitere Scheme-Funktionen um"
 
-#: convertrules.py:1924
+#: convertrules.py:1871
 msgid ""
 "Page layout has been changed, using paper size and margins.\n"
 "textheight is no longer used.\n"
@@ -321,7 +348,7 @@ msgstr ""
 "Das Seitenlayout hat sich geändert, benutzen Sie paper size (Papiergröße) und margins (Ränder).\n"
 "textheight wird nicht mehr benutzt.\n"
 
-#: convertrules.py:2010
+#: convertrules.py:1957
 msgid ""
 "\\foo -> \\foomode (for chords, notes, etc.)\n"
 "fold \\new FooContext \\foomode into \\foo."
@@ -329,7 +356,7 @@ msgstr ""
 "\\foo -> \\foomode (für Akkorde, Noten usw.)\n"
 "Komprimiere \\new FooContext \\foomode nach \\foo."
 
-#: convertrules.py:2048
+#: convertrules.py:1995
 msgid ""
 "staff size should be changed at top-level\n"
 "with\n"
@@ -343,40 +370,40 @@ msgstr ""
 "  #(set-global-staff-size <SYSTEMHÖHE-IN-PUNKTEN>)\n"
 "\n"
 
-#: convertrules.py:2068
+#: convertrules.py:2015
 msgid "regularize other identifiers"
 msgstr "normiere andere Bezeichner"
 
-#: convertrules.py:2136
+#: convertrules.py:2083
 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
 msgstr "\\encoding: Konvertiere latin1 zu utf8. Entferne ly:point-and-click"
 
-#: convertrules.py:2149
+#: convertrules.py:2094
 msgid "LilyPond source must be UTF-8"
 msgstr "LilyPond-Quelle muss UTF-8 sein"
 
-#: convertrules.py:2152
+#: convertrules.py:2097
 msgid "Try the texstrings backend"
 msgstr "Das texstrings-Backend probieren"
 
-#: convertrules.py:2155
+#: convertrules.py:2100
 #, python-format
 msgid "Do something like: %s"
 msgstr "Folgendes versuchen: %s"
 
-#: convertrules.py:2158
+#: convertrules.py:2103
 msgid "Or save as UTF-8 in your editor"
 msgstr "Oder als UTF-8 im Editor sichern"
 
-#: convertrules.py:2212
+#: convertrules.py:2153
 msgid "warn about auto beam settings"
 msgstr "Warnung zu den Einstellungen der automatischen Balken"
 
-#: convertrules.py:2217
+#: convertrules.py:2157
 msgid "auto beam settings"
 msgstr "Einstellungen der automatischen Balken"
 
-#: convertrules.py:2219
+#: convertrules.py:2158
 msgid ""
 "\n"
 "Auto beam settings must now specify each interesting moment in a measure\n"
@@ -387,41 +414,41 @@ msgstr ""
 "im Takt, die in Frage kommt, explizit gesetzt werden; 1/4 wird nicht mehr\n"
 "multipliziert, um auch die Positionen von 1/2 und 3/4 zu definieren.\n"
 
-#: convertrules.py:2333
+#: convertrules.py:2271
 msgid "verticalAlignmentChildCallback has been deprecated"
 msgstr "verticalAlignmentChildCallback ist veraltet"
 
-#: convertrules.py:2337
+#: convertrules.py:2276
 msgid "Remove callbacks property, deprecate XY-extent-callback."
 msgstr "Entferne callbacks-Eigenschaft, verwerfe XY-extent-callback."
 
-#: convertrules.py:2358
+#: convertrules.py:2297
 msgid "Use grob closures iso. XY-offset-callbacks."
 msgstr "Benutze grob-Schluss anstelle von XY-offset-callback."
 
-#: convertrules.py:2420
+#: convertrules.py:2359
 msgid "foobar -> foo-bar for \\paper, \\layout"
 msgstr "foobar -> foo-bar für \\paper, \\layout"
 
-#: convertrules.py:2530
+#: convertrules.py:2469
 msgid "deprecate \\tempo in \\midi"
 msgstr "verwerfe \\tempo in \\midi"
 
-#: convertrules.py:2583
+#: convertrules.py:2522
 msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
 msgstr ""
 "verwerfe cautionary-style für warndende Versetzungszeichen.\n"
 "Benutze AccidentalCautionary-Eigenschaften"
 
-#: convertrules.py:2596
+#: convertrules.py:2535
 msgid "Rename accidental glyphs, use glyph-name-alist."
 msgstr "Umbenennen der Versetzungszeichen-Glyphen, benutze glyph-name-alist."
 
-#: convertrules.py:2651
-msgid "edge-text settings for TextSpanner."
-msgstr "edge-text (Randtext)-Einstellungen für TextSpanner."
+#: convertrules.py:2590
+msgid "edge-text settings for TextSpanner"
+msgstr "edge-text (Randtext)-Einstellungen für TextSpanner"
 
-#: convertrules.py:2652
+#: convertrules.py:2591
 #, python-format
 msgid ""
 "Use\n"
@@ -432,35 +459,35 @@ msgstr ""
 "\n"
 "%s"
 
-#: convertrules.py:2685
+#: convertrules.py:2624
 msgid "Use the `alignment-offsets' sub-property of\n"
 msgstr "Die Untereigenschaft `alignment-offsets' von\n"
 
-#: convertrules.py:2686
+#: convertrules.py:2625
 msgid "NonMusicalPaperColumn #'line-break-system-details\n"
 msgstr "NonMusicalPaperColumn #'line-break-system-details benutzen,\n"
 
-#: convertrules.py:2687
+#: convertrules.py:2626
 msgid "to set fixed distances between staves.\n"
 msgstr "um feste Abstände zwischen Systemen zu setzen.\n"
 
-#: convertrules.py:2699
+#: convertrules.py:2638
 msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
 msgstr "Benutze #'style anstelle von #'dash-fraction, um durchgehende/gestrichelte Linien zu benutzen."
 
-#: convertrules.py:2705
-msgid "all settings related to dashed lines.\n"
-msgstr "alle Einstellungen zu gestrichelten Linien.\n"
+#: convertrules.py:2644
+msgid "all settings related to dashed lines"
+msgstr "alle Einstellungen zu gestrichelten Linien"
 
-#: convertrules.py:2706
+#: convertrules.py:2645
 msgid "Use \\override ... #'style = #'line for solid lines and\n"
 msgstr "Benutze \\override ... #'style = #'line für durchgehende Linien und\n"
 
-#: convertrules.py:2707
+#: convertrules.py:2646
 msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
 msgstr "\t\\override ... #'style #'dashed-line für gestrichelte Linien."
 
-#: convertrules.py:2743
+#: convertrules.py:2682
 msgid ""
 "metronomeMarkFormatter uses text markup as second argument,\n"
 "fret diagram properties moved to fret-diagram-details."
@@ -468,11 +495,11 @@ msgstr ""
 "metronomeMarkFormatter benutzt Textbeschriftung as zweites Argument,\n"
 "Bund-Diagramm-Eigenschaften sind nach fret-diagram-details verschoben."
 
-#: convertrules.py:2748
+#: convertrules.py:2688
 msgid "metronomeMarkFormatter got an additional text argument.\n"
 msgstr "metronomeMarkFormatter hat ein zusätzliches Textargument bekommen.\n"
 
-#: convertrules.py:2749
+#: convertrules.py:2689
 #, python-format
 msgid ""
 "The function assigned to Score.metronomeMarkFunction now uses the signature\n"
@@ -481,43 +508,48 @@ msgstr ""
 "Die Funktion, die Score.metronomeMarkFunction zugeschrieben ist, benutzt jetzt\n"
 "die Signatur %s"
 
-#: convertrules.py:2812
-msgid "\\put-adjacent argument order.\n"
-msgstr "\\put-adjacent Argumentreihenfolge.\n"
+#: convertrules.py:2707
+#, python-format
+msgid "%s in fret-diagram properties"
+msgstr "%s in Bunddiagrammeigenschaften"
+
+#: convertrules.py:2751
+msgid "\\put-adjacent argument order"
+msgstr "\\put-adjacent Argumentreihenfolge"
 
-#: convertrules.py:2813
+#: convertrules.py:2752
 msgid "Axis and direction now come before markups:\n"
 msgstr "Achse und Richtung jetzt vor die Beschriftung setzen:\n"
 
-#: convertrules.py:2814
+#: convertrules.py:2753
 msgid "\\put-adjacent axis dir markup markup."
 msgstr "\\put-adjacent Achse Richtung Beschriftung Beschriftung."
 
-#: convertrules.py:2845
-msgid "re-definition of InnerStaffGroup.\n"
-msgstr "Neudefinition von InnerStaffGroup.\n"
+#: convertrules.py:2784
+msgid "re-definition of InnerStaffGroup"
+msgstr "Neudefinition von InnerStaffGroup"
 
-#: convertrules.py:2851
-msgid "re-definition of InnerChoirStaff.\n"
-msgstr "Neudefinition von InnerChoirStaff.\n"
+#: convertrules.py:2789
+msgid "re-definition of InnerChoirStaff"
+msgstr "Neudefinition von InnerChoirStaff"
 
-#: convertrules.py:2861
+#: convertrules.py:2799
 msgid "Syntax changes for \\addChordShape and \\chord-shape"
 msgstr "Syntax-Änderungen für \\addChordShape und \\chord-shape"
 
-#: convertrules.py:2866
+#: convertrules.py:2804
 msgid "stringTuning must be added to addChordShape call.\n"
 msgstr "stringTuning·muss zu einem·addChordShape -Aufruf hinzugefügt werden.\n"
 
-#: convertrules.py:2872
+#: convertrules.py:2809
 msgid "stringTuning must be added to chord-shape call.\n"
 msgstr "stringTuning muss zu dem·chord-shape -Aufruf hinzugefügt werden.\n"
 
-#: convertrules.py:2879
+#: convertrules.py:2815
 msgid "Remove oldaddlyrics"
 msgstr "oldaddlyrics entfernen"
 
-#: convertrules.py:2883
+#: convertrules.py:2819
 msgid ""
 "oldaddlyrics is no longer supported. \n"
 "         Use addlyrics or lyrsicsto instead.\n"
@@ -525,7 +557,7 @@ msgstr ""
 "oldaddlyrics wird nicht mehr unterstützt.\n"
 "         Benutzen Sie anstatt dessen addlyrics oder lyricsto.\n"
 
-#: convertrules.py:2889
+#: convertrules.py:2825
 msgid ""
 "keySignature property not reversed any more\n"
 "MIDI 47: orchestral strings -> orchestral harp"
@@ -533,11 +565,11 @@ msgstr ""
 "keySignature-Eigenschaft ist nicht mehr umgedreht\n"
 "MIDI 47: Orchester-Streicher -> Orchester-Harfe"
 
-#: convertrules.py:2894
+#: convertrules.py:2830
 msgid "The alist for Staff.keySignature is no longer in reversed order.\n"
 msgstr "Die Aliste für Staff.keySignature ist nicht mehr in umgekehrter Reihenfolge.\n"
 
-#: convertrules.py:2900
+#: convertrules.py:2836
 msgid ""
 "\\bar \".\" now produces a thick barline\n"
 "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
@@ -547,15 +579,15 @@ msgstr ""
 "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
 "Strichelunsparameter für Binde- und Legatobögen sind jetzt in dash-definition"
 
-#: convertrules.py:2906
+#: convertrules.py:2842
 msgid "\\bar \".\" now produces a thick barline.\n"
 msgstr "\\bar  \".\" erstellt jetzt einen dicken Taktstrich.\n"
 
-#: convertrules.py:2912
+#: convertrules.py:2848
 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n"
 msgstr "Strichelunsparameter für Binde- und Legatobögen sind jetzt in 'dash-details.\n"
 
-#: convertrules.py:2917
+#: convertrules.py:2853
 msgid ""
 "Autobeaming rules have changed.  override-auto-beam-setting and\n"
 "revert-auto-beam-setting have been eliminated.\n"
@@ -581,37 +613,27 @@ msgstr ""
 "Explizite Definition des Dynamikzeichenkontexts aus der `Piano centered dynamics'\n"
 "Vorlage ersetzt durch neuen `Dynamics'-Kontext."
 
-#: convertrules.py:2931
-msgid ""
-"override-auto-beam-setting.\n"
-"   Autobeam settings are now overriden with \\overrideBeamSettings.\n"
-msgstr ""
-"override-auto-beam-setting.\n"
-"   Automatische Bebalkungseinstellungen werden jetzt mit \\overrideBeamSettings verändert.\n"
+#: convertrules.py:2867
+msgid "    Autobeam settings are now overriden with \\overrideBeamSettings.\n"
+msgstr "   Automatische Bebalkungseinstellungen werden jetzt mit \\overrideBeamSettings verändert.\n"
 
-#: convertrules.py:2936
-msgid ""
-"override-auto-beam-setting.\n"
-"   Autobeam settings are now reverted with \\revertBeamSettings.\n"
-msgstr ""
-"override-auto-beam-setting.\n"
-"   Automatische Bebalkungseinstellungen werden jetzt mit \\revertBeamSettings rückgängig gemacht.\n"
+#: convertrules.py:2872
+msgid "    Autobeam settings are now reverted with \\revertBeamSettings.\n"
+msgstr "   Automatische Bebalkungseinstellungen werden jetzt mit \\revertBeamSettings rückgängig gemacht.\n"
 
-#: convertrules.py:2941
+#: convertrules.py:2878
 msgid ""
-"beatGrouping. \n"
-"   beatGrouping with a specified context must now be accomplished with\n"
+"    beatGrouping with a specified context must now be accomplished with\n"
 "   \\overrideBeamSettings.\n"
 msgstr ""
-"beatGrouping.\n"
 "   beatGrouping mit einem angegebenen Kontext muss jetzt mit\n"
 "   \\overrideBeamSettings vorgenommen werden.\n"
 
-#: convertrules.py:2947
+#: convertrules.py:2884
 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n"
 msgstr "alignment-offsets wurde in alignment-distances geändert: Man muss jetzt die Abstände zwischen Systemen angeben und nicht die Verschiebung der Systeme.\n"
 
-#: convertrules.py:2958
+#: convertrules.py:2895
 msgid ""
 "Remove obsolete engravers/translators: Note_swallow_translator,\n"
 "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n"
@@ -623,23 +645,23 @@ msgstr ""
 "Swallow_performer und String_number_engraver.\n"
 "Neue vertikale Abstandsvariablen."
 
-#: convertrules.py:2989
-msgid "minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
-msgstr "minimum-Y-extent; vertikale Positionierung hängt nicht mehr von Y-extent einer VerticalAxisGroup ab.\n"
+#: convertrules.py:2926
+msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
+msgstr "Vertikale Positionierung hängt nicht mehr von Y-extent einer VerticalAxisGroup ab.\n"
 
-#: convertrules.py:2995
+#: convertrules.py:2932
 msgid "Unify fetaNumber and fetaDynamic encodings"
 msgstr "Kodierungen für fetaNumber und fetaDynamic vereinheitlichen"
 
-#: convertrules.py:3000
+#: convertrules.py:2937
 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 
-#: convertrules.py:3011
+#: convertrules.py:2948
 msgid "\\cresc etc. are now postfix operators"
 msgstr "\\cresc usw. werden jetzt der Note nachgestellt"
 
-#: convertrules.py:3017
+#: convertrules.py:2960
 msgid ""
 "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
@@ -647,27 +669,23 @@ msgstr ""
 "Entferne beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings und \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 
-#: convertrules.py:3035
-msgid "\\overrideBeamSettings.  Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
-msgstr "\\overrideBeamSettings.  Benutze \\set beamExceptions oder \\overrideTimeSignatureSettings.\n"
-
-#: convertrules.py:3039
-msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
-msgstr "\\revertBeamSettings. Benutze \\set beamExceptions oder \\revertTimeSignatureSettings.\n"
+#: convertrules.py:2978
+msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
+msgstr "Benutze \\set beamExceptions oder \\overrideTimeSignatureSettings.\n"
 
-#: convertrules.py:3043
-msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"
-msgstr "beamSettings. Benutze baseMoment, beatStructure und beamExceptions.\n"
+#: convertrules.py:2982
+msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
+msgstr "Benutze \\set beamExceptions oder \\revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3047
-msgid "beatLength. Use baseMoment and beatStructure.\n"
-msgstr "beatLength. Benutze baseMoment und beatStructure.\n"
+#: convertrules.py:2986
+msgid "Use baseMoment, beatStructure, and beamExceptions.\n"
+msgstr "Benutze baseMoment, beatStructure und beamExceptions.\n"
 
-#: convertrules.py:3051
-msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
-msgstr "setbeatGrouping. Benutze baseMoment und beatStructure.\n"
+#: convertrules.py:2990 convertrules.py:2994
+msgid "Use baseMoment and beatStructure.\n"
+msgstr "Benutze baseMoment und beatStructure.\n"
 
-#: convertrules.py:3056
+#: convertrules.py:2999
 msgid ""
 "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n"
 "Deprecate negative dash-period for hidden lines: use #'style = #'none instead."
@@ -675,11 +693,11 @@ msgstr ""
 "Holzbläser-Diagramme: Größe (size), Dicke (thickness) und graphic aus Argumentenliste nach Eigenschaften verschoben.\n"
 "Negatives dash-period für versteckte Linien ist veraltet: #'style = #'none anstellt dessen benutzen."
 
-#: convertrules.py:3061
-msgid "woodwind-diagrams.  Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
-msgstr "woodwind-diagrams.  size, thickness und graphic in Eigenschaften verschoben.  Argument darf nur die Liste der Schlüssel sein.\n"
+#: convertrules.py:3004
+msgid "Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
+msgstr "Verschiebe size, thickness und graphic in die Eigenschaften.  Argument darf nur die Liste der Schlüssel sein.\n"
 
-#: convertrules.py:3069
+#: convertrules.py:3012
 msgid ""
 "Rename vertical spacing variables.\n"
 "Add fretboard-table argument to savePredefinedFretboard."
@@ -687,23 +705,23 @@ msgstr ""
 "Vertikale Abstandsvariablen umbenennen.\n"
 "fretboard-table-Argument hinzufügen, um PredefinedFretboard zu speichern."
 
-#: convertrules.py:3087
+#: convertrules.py:3030
 msgid "Rename vertical spacing grob properties."
 msgstr "Vertikale Abstands-Grob-Eigenschaften umbenennen."
 
-#: convertrules.py:3103
+#: convertrules.py:3046
 msgid "Remove \\paper variables head-separation and foot-separation."
 msgstr "\\paper-Variablen head-separation und foot-separation entfernen."
 
-#: convertrules.py:3108
+#: convertrules.py:3050
 msgid "Adjust settings for top-system-spacing instead.\n"
 msgstr "Anstelle dessen Einstellungen für top-system-spacing anpassen.\n"
 
-#: convertrules.py:3113
+#: convertrules.py:3054
 msgid "Adjust settings for last-bottom-spacing instead.\n"
 msgstr "Anstelle dessen Einstellungen für last-bottom-spacing anpassen.\n"
 
-#: convertrules.py:3119
+#: convertrules.py:3060
 msgid ""
 "Rename space to basic-distance in various spacing alists.\n"
 "Remove HarmonicParenthesesItem grob."
@@ -711,19 +729,19 @@ msgstr ""
 "Umbennen von Abstand in basic-distance in verschiedenen Positionierungs-Alisten.\n"
 "Entfernen des HarmonicParenthesesItem-Grobs."
 
-#: convertrules.py:3127
+#: convertrules.py:3067
 msgid "HarmonicParenthesesItem has been eliminated.\n"
 msgstr "HarmonicParenthesesItem wurde entfernt.\n"
 
-#: convertrules.py:3128
+#: convertrules.py:3068
 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n"
 msgstr "Harmonische Klammern sind Teil des TabNoteHead-Grobs.\n"
 
-#: convertrules.py:3133
+#: convertrules.py:3073
 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n"
 msgstr "Entferne Kontext von overrideTimeSignatureSettings und revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3140
+#: convertrules.py:3080
 msgid ""
 "Change stringTunings from a list of semitones to a list of pitches.\n"
 "Change tenor and baritone ukulele names in string tunings.\n"
@@ -733,241 +751,288 @@ msgstr ""
 "Ändere Tenor- und Bariton-Ukulele-Bezeichnungen in Saitenstimmungen.\n"
 "Erstelle Nachrichten für manuelle Konversion von vertikalem Platz, wenn nötig."
 
-#: convertrules.py:3180
-msgid "Vertical spacing changes might affect user-defined contexts.  "
-msgstr "Vertikale Positionierungsänderungen können sich auf von Benutzern definierte Kontexte auswirken.  "
+#: convertrules.py:3123
+msgid "Vertical spacing changes might affect user-defined contexts."
+msgstr "Vertikale Positionierungsänderungen können sich auf von Benutzern definierte Kontexte auswirken."
 
-#: convertrules.py:3185
+#: convertrules.py:3129
 msgid "Replace bar-size with bar-extent."
 msgstr "Ersetze bar-size durch bar-extent."
 
-#: convertrules.py:3197
+#: convertrules.py:3141
 msgid "Woodwind diagrams: Changes to the clarinet diagram."
 msgstr "Holsbläserdiagramme: Änderungen im Klarinetten-Diagramm."
 
-#: convertrules.py:3201
-msgid "woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"
-msgstr "woodwind-diagrams.  Klarinetten-Fingersatz verändert um Anatomie des Instruments wiederzugeben.\n"
+#: convertrules.py:3145
+msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n"
+msgstr "Klarinetten-Fingersatz verändert, um Anatomie des Instruments wiederzugeben.\n"
 
-#: convertrules.py:3211
-msgid "Change in internal property for MultiMeasureRest"
-msgstr "Änderung in der internen Eigenschaft für MultiMeasureRest"
-
-#: convertrules.py:3214
-msgid "use-breve-rest.  This internal property has been replaced by round-to-longer-rest and usable-duration-logs.\n"
-msgstr "use-breve-rest.  Diese interene Eigenschaft wurde ersetzt durch round-to-longer-rest und usable-duration-logs.\n"
-
-#: convertrules.py:3219
+#: convertrules.py:3155
 msgid "Handling of non-automatic footnotes."
 msgstr "Behandlung von nicht-automatischen Fußnoten."
 
-#: convertrules.py:3223
+#: convertrules.py:3159
 msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n"
 msgstr "Wenn sie nichtautomatische Fußnoten einsetzen, stellen Sie sicher, die Eigenschaft footnote-auto-numbering = ##f in der paper-Umgebund einzustellen.\n"
 
-#: book_base.py:24
+#: convertrules.py:3164
+msgid "Change in internal property for MultiMeasureRest"
+msgstr "Änderung in der internen Eigenschaft für MultiMeasureRest"
+
+#: convertrules.py:3168
+msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n"
+msgstr "Diese interene Eigenschaft wurde ersetzt durch round-to-longer-rest, round-up-exceptions und usable-duration-logs.\n"
+
+#: convertrules.py:3173
+msgid "Creation of a Flag grob and moving of certain Stem properties to this grob"
+msgstr "Erstellung eines Fähnchen-Grobs und Verschiebung von bestimmten Halseigenschaften in diesen Grob"
+
+#: convertrules.py:3209
+msgid "consistent-broken-slope is now handled through the positions callback.\n"
+msgstr "consistent-broken-slope wird jetzt durch einen Positions-Callback gehandhabt.\n"
+
+#: convertrules.py:3210
+msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
+msgstr "input/regression/beam-broken-classic.ly zeigt, wie gebrochene Balken jetzt behandelt werden.\n"
+
+#: book_base.py:26
 #, python-format
 msgid "file not found: %s"
 msgstr "Datei `%s' nicht gefunden"
 
-#: book_base.py:161
+#: book_base.py:164
 msgid "Output function not implemented"
 msgstr "Ausgabefunktion nicht implementiert"
 
-#: lilylib.py:88 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:114
-#: input.cc:122
+#: lilylib.py:96
+#, python-format
+msgid "Setting loglevel to %s"
+msgstr "Logstufe wird auf %s gesetzt"
+
+#: lilylib.py:99
+#, python-format
+msgid "Unknown or invalid loglevel '%s'"
+msgstr "Unbekannte oder ungültige Logstufe »%s«"
+
+#: lilylib.py:128 warn.cc:211
 #, c-format, python-format
 msgid "error: %s"
 msgstr "Fehler: %s"
 
-#: lilylib.py:131
+#: lilylib.py:185
 #, python-format
 msgid "Processing %s.ly"
 msgstr "»%s.ly« wird verarbeitet"
 
-#: lilylib.py:135 lilylib.py:198
+#: lilylib.py:189 lilylib.py:250
 #, python-format
 msgid "Invoking `%s'"
-msgstr "`%s' wird aufgerufen"
+msgstr "»%s« wird aufgerufen"
 
-#: lilylib.py:137 lilylib.py:200
+#: lilylib.py:191 lilylib.py:252
 #, python-format
 msgid "Running %s..."
 msgstr "%s wird ausgeführt..."
 
-#: lilylib.py:276
+#: lilylib.py:328
 #, python-format
 msgid "Usage: %s"
 msgstr "Aufruf: %s"
 
-#: musicexp.py:216 musicexp.py:221
+#: musicexp.py:224 musicexp.py:229
 msgid "Language does not support microtones contained in the piece"
 msgstr "Die Sprache unterstützt nicht die Mikrotöne in diesem Stück"
 
-#: musicexp.py:483
+#: musicexp.py:491
 msgid "Tuplet brackets of curved shape are not correctly implemented"
 msgstr "N-tolen-Klammern mit gekrümmten Klammern sind nicht richtig implementiert"
 
-#: musicexp.py:669
+#: musicexp.py:677
 #, python-format
 msgid "unable to set the music %(music)s for the repeat %(repeat)s"
 msgstr "kann die Noten %(music)s für die Wiederholung %(repeat)s nicht setzen"
 
-#: musicexp.py:678
+#: musicexp.py:686
 msgid "encountered repeat without body"
 msgstr "Wiederholung ohne Body angetroffen"
 
 #. no self.elements!
-#: musicexp.py:848
+#: musicexp.py:856
 #, python-format
 msgid "Grace note with no following music: %s"
 msgstr "Verzierungsnoten ohne folgende Noten: %s"
 
-#: musicexp.py:1010
+#: musicexp.py:1018
 #, python-format
 msgid "Invalid octave shift size found: %s. Using no shift."
 msgstr "Ungültige Oktavenversetzungsgröße gefunden: %s. Versetzung wird nicht angewendet."
 
-#: musicexp.py:1468
+#: musicexp.py:1476
 #, python-format
 msgid "Unable to convert alteration %s to a lilypond expression"
 msgstr "Kann Alteration %s nicht in einen LilyPond-Ausdruck umwandeln"
 
 #. TODO: Handle pieces without a time signature!
-#: musicxml.py:358
+#: musicxml.py:361
 msgid "Senza-misura time signatures are not yet supported!"
 msgstr "Senza-misura-Taktarten sind noch nicht unterstützt!"
 
-#: musicxml.py:376
+#: musicxml.py:379
 msgid "Unable to interpret time signature! Falling back to 4/4."
 msgstr "Unfähig, die Taktart zu interpretieren! Benutze 4/4-Takt."
 
-#: musicxml.py:432
+#: musicxml.py:435
 #, python-format
 msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!"
 msgstr "Tonartalterationsoktave für eine nicht existente Alteration Nr. %s angegeben, mögliche Nummern: %s!"
 
-#: musicxml.py:520
+#: musicxml.py:523
 #, python-format
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "Kann kein Instrument für ID=%s finden\n"
 
-#: book_latex.py:156
+#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is
+#. used to detect relative/absolute paths, so the absolute path is not
+#. detected as such and this command fails:
+#: book_texinfo.py:206
+#, python-format
+msgid "Running texi2pdf on file %s to detect default page settings.\n"
+msgstr "texi2pdf für die Datei %s aufrufen, um Standardseiteneinstellungen zu ermitteln.\n"
+
+#: book_texinfo.py:228 book_latex.py:209
+msgid "Unable to auto-detect default settings:\n"
+msgstr "Kann Standardeinstellungen nicht automatisch bestimmen:\n"
+
+#: book_texinfo.py:240 book_latex.py:221
+#, python-format
+msgid ""
+"Unable to auto-detect default settings:\n"
+"%s"
+msgstr ""
+"Kann Standardeinstellungen nicht automatisch bestimmen:\n"
+"%s"
+
+#: book_latex.py:170
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr "\\begin{document} im LaTeX-Dokument kann nicht gefunden werden"
 
-#: musicxml2ly.py:224
+#: book_latex.py:188
+#, python-format
+msgid "Running `%s' on file `%s' to detect default page settings.\n"
+msgstr "»%s« für Datei »%s« aufrufen, um Standardseiteneinstellungen zu ermitteln.\n"
+
+#: musicxml2ly.py:228
 #, python-format
 msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
 msgstr "Die Datei wurde von %s erstellt und enthält falsche Balkeninformation. Alle Balkeninformation in der MusicXML-Datei wird ignoriert"
 
-#: musicxml2ly.py:240 musicxml2ly.py:242
+#: musicxml2ly.py:247 musicxml2ly.py:249
 #, python-format
 msgid "Unprocessed PartGroupInfo %s encountered"
 msgstr "Unverarbeitetes PartGroupInfo %s angetroffen"
 
-#: musicxml2ly.py:495
+#: musicxml2ly.py:502
 #, python-format
 msgid "Encountered note at %s without type and duration (=%s)"
 msgstr "Note bei %s ohne Art und Dauer angetroffen (=%s)"
 
-#: musicxml2ly.py:515
+#: musicxml2ly.py:522
 #, python-format
 msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
 msgstr "Rationale Dauer mit Nenner %s angetroffen, kann nicht in lilypond-Dauer umgewandelt werden"
 
-#: musicxml2ly.py:762
+#: musicxml2ly.py:769
 msgid "Unable to extract key signature!"
 msgstr "Kann die Tonart nicht extrahieren!"
 
-#: musicxml2ly.py:789
+#: musicxml2ly.py:796
 #, python-format
 msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
 msgstr "unbekannter Modus %s, 'major' (Dur) oder 'minor' (Moll) oder eine Kirchentonart wird erwartet"
 
-#: musicxml2ly.py:927
+#: musicxml2ly.py:934
 #, python-format
 msgid "Encountered unprocessed marker %s\n"
 msgstr "Unverarbeiteter Marker %s angetroffen\n"
 
-#: musicxml2ly.py:1021
+#: musicxml2ly.py:1028
 #, python-format
 msgid "unknown span event %s"
 msgstr "Unbekannte Spannerklasse »%s«"
 
-#: musicxml2ly.py:1031
+#: musicxml2ly.py:1038
 #, python-format
 msgid "unknown span type %s for %s"
 msgstr "Unbekannter Spannertyp %s für %s"
 
-#: musicxml2ly.py:1451
+#: musicxml2ly.py:1458
 msgid "Unknown metronome mark, ignoring"
 msgstr "Unbekanntes Metronom-Zeichen, wird ignoriert"
 
 #. TODO: Implement the other (more complex) way for tempo marks!
-#: musicxml2ly.py:1456
+#: musicxml2ly.py:1463
 msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
 msgstr "Metronommakern mit komplexen Beziehungen (<metronome-note> in MusicXML) sind noch nicht implementiert."
 
-#: musicxml2ly.py:1658
+#: musicxml2ly.py:1665
 #, python-format
 msgid "Unable to convert chord type %s to lilypond."
 msgstr "Kann Akkordtyp %s nicht nach lilypond umwandeln"
 
-#: musicxml2ly.py:1807
+#: musicxml2ly.py:1814
 #, python-format
 msgid "drum %s type unknown, please add to instrument_drumtype_dict"
 msgstr "Schlagzeug %s Typ unbekannt, bitte zum instrument_drumtype_dict hinzufügen"
 
-#: musicxml2ly.py:1811
+#: musicxml2ly.py:1818
 msgid "cannot find suitable event"
 msgstr "passendes Ereignis kann nicht gefunden werden"
 
-#: musicxml2ly.py:1959
+#: musicxml2ly.py:1966
 #, python-format
 msgid "Negative skip %s (from position %s to %s)"
 msgstr "Negativer Sprung (skip) %s (von Position %s bis %s)"
 
-#: musicxml2ly.py:2100
+#: musicxml2ly.py:2107
 #, python-format
 msgid "Negative skip found: from %s to %s, difference is %s"
 msgstr "Negativer Sprung (skip) gefunden: von %s bis %s, Differenz ist %s"
 
-#: musicxml2ly.py:2181
+#: musicxml2ly.py:2188
 #, python-format
 msgid "unexpected %s; expected %s or %s or %s"
 msgstr "unerwartetes %s; %s oder %s oder %s erwartet"
 
-#: musicxml2ly.py:2287
+#: musicxml2ly.py:2294
 msgid "Encountered closing slur, but no slur is open"
 msgstr "Auf schließenden Legatobogen gestoßen, aber es wurde kein Bogen begonnen"
 
-#: musicxml2ly.py:2290
+#: musicxml2ly.py:2297
 msgid "Cannot have two simultaneous (closing) slurs"
 msgstr "Zwei gleichzeitige (schließende) Legatobögen sind nicht möglich"
 
-#: musicxml2ly.py:2299
+#: musicxml2ly.py:2306
 msgid "Cannot have a slur inside another slur"
 msgstr "Ein Legatobogen innerhalb eines anderen Legatobogens ist nicht möglich"
 
-#: musicxml2ly.py:2302
+#: musicxml2ly.py:2309
 msgid "Cannot have two simultaneous slurs"
 msgstr "Zwei gleichzeitige Legatobögen sind nicht möglich"
 
-#: musicxml2ly.py:2436
+#: musicxml2ly.py:2443
 #, python-format
 msgid "cannot simultaneously have more than one mode: %s"
 msgstr "Kann nicht gleichzeitig mehr als einen Modus haben: %s"
 
-#: musicxml2ly.py:2544
+#: musicxml2ly.py:2551
 msgid "Converting to LilyPond expressions..."
 msgstr "In LilyPond-Ausdrücke umwandeln..."
 
-#: musicxml2ly.py:2555
+#: musicxml2ly.py:2562
 msgid "musicxml2ly [OPTION]... FILE.xml"
 msgstr "musicxml2ly [Optionen]... DATEI.xml"
 
-#: musicxml2ly.py:2557
+#: musicxml2ly.py:2564
 msgid ""
 "Convert MusicXML from FILE.xml to LilyPond input.\n"
 "If the given filename is -, musicxml2ly reads from the command line.\n"
@@ -975,12 +1040,12 @@ msgstr ""
 "Wandle MusicXML-Datei von DAT.xml nach LilyPond-Eingabe um.\n"
 "Wenn der angegebene Dateiname - ist, list musicxml2ly von der Kommandozeile.\n"
 
-#: musicxml2ly.py:2563 midi2ly.py:1060 abc2ly.py:1386 lilypond-book.py:140
-#: convert-ly.py:98 etf2ly.py:1202 main.cc:159
+#: musicxml2ly.py:2570 midi2ly.py:1060 abc2ly.py:1387 lilypond-book.py:141
+#: convert-ly.py:92 etf2ly.py:1204 main.cc:153
 msgid "show this help and exit"
 msgstr "diese Hilfe anzeigen und beenden"
 
-#: musicxml2ly.py:2567
+#: musicxml2ly.py:2574
 msgid ""
 "Copyright (c) 2005--2012 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
@@ -992,117 +1057,130 @@ msgstr ""
 "····Jan·Nieuwenhuizen·<janneke@gnu.org>·and\n"
 "····Reinhold·Kainhofer·<reinhold@kainhofer.com>\n"
 
-#: musicxml2ly.py:2581 midi2ly.py:1091 abc2ly.py:1382 lilypond-book.py:217
-#: convert-ly.py:94 etf2ly.py:1206 main.cc:174
+#: musicxml2ly.py:2588 midi2ly.py:1091 abc2ly.py:1383 lilypond-book.py:232
+#: convert-ly.py:88 etf2ly.py:1208 main.cc:174
 msgid "show version number and exit"
 msgstr "Versionsnummer ausgeben und beenden"
 
-#: musicxml2ly.py:2586 midi2ly.py:1085 lilypond-book.py:209 main.cc:175
+#: musicxml2ly.py:2594 midi2ly.py:1085 lilypond-book.py:224
 msgid "be verbose"
 msgstr "wortreich sein"
 
-#: musicxml2ly.py:2592
+#: musicxml2ly.py:2600
 msgid "use lxml.etree; uses less memory and cpu time"
 msgstr "lxml.etree verwenden; benötigt weniger Speicher und Prozessorzeit"
 
-#: musicxml2ly.py:2598
+#: musicxml2ly.py:2606
 msgid "input file is a zip-compressed MusicXML file"
 msgstr "Eingabedatei ist eine zip-komprimierte MusicXML-Datei"
 
-#: musicxml2ly.py:2604
+#: musicxml2ly.py:2612
 msgid "convert pitches in relative mode (default)"
 msgstr "Tonhöhen im relativen Modus konvertieren (Standard)"
 
-#: musicxml2ly.py:2609
+#: musicxml2ly.py:2617
 msgid "convert pitches in absolute mode"
 msgstr "Tonhöhen im absoluten Modus konvertieren"
 
-#: musicxml2ly.py:2612
+#: musicxml2ly.py:2620
 msgid "LANG"
 msgstr "SPRA"
 
-#: musicxml2ly.py:2614
+#: musicxml2ly.py:2622
 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
 msgstr "benutzte SPRA für Notenbezeichnugen, z. B. 'deutsch' für deutsche Notenbezeichnungen"
 
-#: musicxml2ly.py:2620
+#: musicxml2ly.py:2625 lilypond-book.py:180 convert-ly.py:105
+msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"
+msgstr "Logmeldungen ensprechend LOGLEVEL ((NONE, ERROR, WARNING, PROGRESS (Standard), DEBUG) ausgeben"
+
+#: musicxml2ly.py:2627 lilypond-book.py:164 lilypond-book.py:182
+#: convert-ly.py:107 main.cc:167
+msgid "LOGLEVEL"
+msgstr "LOGLEVEL"
+
+#: musicxml2ly.py:2636
 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
 msgstr "Richtungen (^, _ oder -) for Artikulationen, Dynamik usw. nicht konvertieren"
 
-#: musicxml2ly.py:2626
+#: musicxml2ly.py:2642
 msgid "do not convert exact vertical positions of rests"
 msgstr "zusätzliche vertikale Positionen von Pausen nicht konvertieren"
 
-#: musicxml2ly.py:2632
+#: musicxml2ly.py:2648
 msgid "do not convert the exact page layout and breaks"
 msgstr "nicht das exakte Seitenlayout und Umbrüche konvertieren"
 
-#: musicxml2ly.py:2638
+#: musicxml2ly.py:2654
 msgid "do not convert beaming information, use lilypond's automatic beaming instead"
 msgstr "Balkeninformation nicht konvertieren, benutze die automatischen Balken von lilypond statt dessen"
 
-#: musicxml2ly.py:2641 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1208
-#: main.cc:165 main.cc:172
+#: musicxml2ly.py:2657 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1210
+#: main.cc:159 main.cc:171
 msgid "FILE"
 msgstr "DATEI"
 
-#: musicxml2ly.py:2646
+#: musicxml2ly.py:2662
 msgid "set output filename to FILE, stdout if -"
 msgstr "Ausgabedateiname auf DATEI setzen, stout if -"
 
+#: musicxml2ly.py:2668
+msgid "add midi-block to .ly file"
+msgstr "midi-Umgebung zu .ly-Datei hinzufügen"
+
 #. Translators, please translate this string as
 #. "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"
-#: musicxml2ly.py:2649 midi2ly.py:1104 abc2ly.py:1395 lilypond-book.py:239
-#: convert-ly.py:144 etf2ly.py:1216 main.cc:285
+#: musicxml2ly.py:2672 midi2ly.py:1104 abc2ly.py:1396 lilypond-book.py:259
+#: convert-ly.py:146 etf2ly.py:1218 main.cc:285
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr "Melden Sie Fehler an %s"
 
-#: musicxml2ly.py:2729
+#: musicxml2ly.py:2752
 #, python-format
 msgid "unknown part in part-list: %s"
 msgstr "unbekannte Stimme in part-list (Stimmen-Liste): %s"
 
-#: musicxml2ly.py:2791
+#: musicxml2ly.py:2814
 msgid "Input is compressed, extracting raw MusicXML data from stdin"
 msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten von stdin"
 
-#: musicxml2ly.py:2804
+#: musicxml2ly.py:2827
 #, python-format
 msgid "Input file %s is compressed, extracting raw MusicXML data"
 msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten"
 
-#: musicxml2ly.py:2834
+#: musicxml2ly.py:2857
 msgid "Reading MusicXML from Standard input ..."
 msgstr "MusicXML von standard input lesen..."
 
-#: musicxml2ly.py:2836
+#: musicxml2ly.py:2859
 #, python-format
 msgid "Reading MusicXML from %s ..."
 msgstr "MusicXML aus %s lesen..."
 
-#: musicxml2ly.py:2869
+#: musicxml2ly.py:2892
 #, python-format
 msgid "Output to `%s'"
 msgstr "Ausgabe nach »%s«"
 
-#: musicxml2ly.py:2936
+#: musicxml2ly.py:2962
 #, python-format
 msgid "Unable to find input file %s"
 msgstr "Eingabedatei kann nicht gefunden werden %s"
 
-#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:75 etf2ly.py:1191
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s bei"
 
-#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:77 etf2ly.py:1193
 msgid "Distributed under terms of the GNU General Public License."
 msgstr "Vertrieben unter den Bedingungen der GNU General Public License."
 
-#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:78 etf2ly.py:1194
 msgid "It comes with NO WARRANTY."
 msgstr "Es wird OHNE GARANTIE ausgeliefert."
 
@@ -1127,7 +1205,7 @@ msgstr "mehr als fünf Stimmen auf einem System, schlechte Ausgabe kann erwartet
 msgid "%s output to `%s'..."
 msgstr "%s nach »%s« ausgeben..."
 
-#: midi2ly.py:1042 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#: midi2ly.py:1042 abc2ly.py:1374 lilypond-book.py:123 convert-ly.py:81
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [OPTIONEN]... DATEI"
@@ -1169,7 +1247,7 @@ msgstr "Tonart setzen: VORZ=+Kreuze|-B's; MOLL=1"
 msgid "ALT[:MINOR]"
 msgstr "VORZ[:MOLL]"
 
-#: midi2ly.py:1069 abc2ly.py:1388 etf2ly.py:1207
+#: midi2ly.py:1069 abc2ly.py:1389 etf2ly.py:1209
 msgid "write output to FILE"
 msgstr "Ausgabe in DATEI schreiben"
 
@@ -1194,7 +1272,7 @@ msgstr "DAUER*ZÄHLER/NENNER"
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr "Wertaufteilungsdauern DAUER*ZÄHLER/NENNER erlauben"
 
-#: midi2ly.py:1092 lilypond-book.py:220 convert-ly.py:139 etf2ly.py:1210
+#: midi2ly.py:1092 lilypond-book.py:235 convert-ly.py:141 etf2ly.py:1212
 #: main.cc:176
 msgid "show warranty and copyright"
 msgstr "Informationen zu Gewährleistung und Copyright anzeigen"
@@ -1211,7 +1289,7 @@ msgstr "Beispiele"
 msgid "no files specified on command line."
 msgstr "Keine Dateien auf der Kommandozeile angegeben."
 
-#: abc2ly.py:1374
+#: abc2ly.py:1375
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
@@ -1220,11 +1298,11 @@ msgstr ""
 "abc2ly wandelt ABC-Musikdateien in LilyPond-Eingabe um\n"
 "(siehe auch %s).\n"
 
-#: abc2ly.py:1390
+#: abc2ly.py:1391
 msgid "be strict about success"
 msgstr "bzgl. Erfolg streng sein"
 
-#: abc2ly.py:1392
+#: abc2ly.py:1393
 msgid "preserve ABC's notion of beams"
 msgstr "ABCs Prinzip der Balken beibehalten"
 
@@ -1232,7 +1310,7 @@ msgstr "ABCs Prinzip der Balken beibehalten"
 msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
 msgstr "LilyPond-Schnipsel in Mischdatei (HTML, LaTeX, texinfo oder DocBook) verarbeiten"
 
-#: lilypond-book.py:82 convert-ly.py:46
+#: lilypond-book.py:82 convert-ly.py:48
 msgid "Examples:"
 msgstr "Beispiele:"
 
@@ -1245,88 +1323,92 @@ msgstr "BUCH"
 msgid "Exiting (%d)..."
 msgstr "Beenden (%d)..."
 
-#: lilypond-book.py:127
+#: lilypond-book.py:128
 msgid "FILTER"
 msgstr "FILTER"
 
-#: lilypond-book.py:130
+#: lilypond-book.py:131
 msgid "pipe snippets through FILTER [default: `convert-ly -n -']"
 msgstr "Auszüge durch FILTER [Standard: »convert-ly -n -«] leiten (Pipe)"
 
-#: lilypond-book.py:134
+#: lilypond-book.py:135
 msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
 msgstr "Ausgabeformat FORMAT (texi [Vorgabe], texi-html, latex, html, docbook) verwenden"
 
-#: lilypond-book.py:135
+#: lilypond-book.py:136
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: lilypond-book.py:142
+#: lilypond-book.py:143
 msgid "add DIR to include path"
 msgstr "VERZ zum Einfügepfad hinzufügen"
 
-#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163
-#: lilypond-book.py:173 lilypond-book.py:194 lilypond-book.py:200 main.cc:164
+#: lilypond-book.py:144 lilypond-book.py:151 lilypond-book.py:170
+#: lilypond-book.py:188 lilypond-book.py:209 lilypond-book.py:215 main.cc:158
 msgid "DIR"
 msgstr "VERZ"
 
-#: lilypond-book.py:148
+#: lilypond-book.py:149
 msgid "format Texinfo output so that Info will look for images of music in DIR"
 msgstr "Formatiere Texinfo-Ausgabe so, dass Info nach Bildern und Noten im VERZ suchen kann"
 
-#: lilypond-book.py:155
+#: lilypond-book.py:156
 msgid "PAD"
 msgstr "FÜLLUNG"
 
-#: lilypond-book.py:157
+#: lilypond-book.py:158
 msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
 msgstr "verschiebe linken Rand der Noten um an den Noten auszurichten, obwohl Taktnummer ungerade ist (in mm)"
 
-#: lilypond-book.py:162
+#: lilypond-book.py:163
+msgid "Print lilypond log messages according to LOGLEVEL"
+msgstr "lilypond-Logmeldungen entsprechend LOGLEVEL ausgeben"
+
+#: lilypond-book.py:169
 msgid "write lily-XXX files to DIR, link into --output dir"
 msgstr "schreibe lily-XXX-Dateien nach VERZ, verlinke nach --output dir"
 
-#: lilypond-book.py:167
+#: lilypond-book.py:174
 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)"
 msgstr "Zusätzliches python PACKAGE laden (enthält z. B. ein angepasstes Ausgabeformat)"
 
-#: lilypond-book.py:168
+#: lilypond-book.py:175
 msgid "PACKAGE"
 msgstr "PACKAGE"
 
-#: lilypond-book.py:172
+#: lilypond-book.py:187
 msgid "write output to DIR"
 msgstr "Ausgabe in DATEI schreiben"
 
-#: lilypond-book.py:177
+#: lilypond-book.py:192
 msgid "COMMAND"
 msgstr "BEFEHL"
 
-#: lilypond-book.py:178
+#: lilypond-book.py:193
 msgid "process ly_files using COMMAND FILE..."
 msgstr "ly_files mit BEFEHL DATEI... verarbeiten"
 
-#: lilypond-book.py:183
+#: lilypond-book.py:198
 msgid "Redirect the lilypond output"
 msgstr "Die Ausgabe von lilypond umleiten"
 
-#: lilypond-book.py:187
+#: lilypond-book.py:202
 msgid "Compile snippets in safe mode"
 msgstr "Schnipsel im sicheren Modus kompilieren"
 
-#: lilypond-book.py:193
+#: lilypond-book.py:208
 msgid "do not fail if no lilypond output is found"
 msgstr "nicht abbrechen wenn keine lilypond-Ausgabe gefunden wird"
 
-#: lilypond-book.py:199
+#: lilypond-book.py:214
 msgid "do not fail if no PNG images are found for EPS files"
 msgstr "nicht abbrechen wenn, keine PNG-Bilder für EPS-Dateien gefunden werden"
 
-#: lilypond-book.py:205
+#: lilypond-book.py:220
 msgid "write snippet output files with the same base name as their source file"
 msgstr "schreibe Schnipsel-Ausgabedatei mit der gleichen Basis-Bezeichnung wie die Quelldatei"
 
-#: lilypond-book.py:225
+#: lilypond-book.py:240
 msgid ""
 "run executable PROG instead of latex, or in\n"
 "case --pdf option is set instead of pdflatex"
@@ -1334,70 +1416,88 @@ msgstr ""
 "Führe die Datei PROG anstelle von latex aus, oder\n"
 "im Falle dass die Option --pdf gesetzt ist, anstelle von pdflatex"
 
-#: lilypond-book.py:227
+#: lilypond-book.py:242 lilypond-book.py:247
 msgid "PROG"
 msgstr "PROG"
 
-#: lilypond-book.py:233
+#: lilypond-book.py:246
+msgid "run executable PROG instead of texi2pdf"
+msgstr "benutze ausführbare Datei PROG anstelle von texi2pdf"
+
+#: lilypond-book.py:253
 msgid "create PDF files for use with PDFTeX"
 msgstr "PDF-Dateien für Verwendung mit PDFTeX erzeugen"
 
-#: lilypond-book.py:428
+#: lilypond-book.py:456
 msgid "Writing snippets..."
 msgstr "Auszüge werden geschrieben..."
 
-#: lilypond-book.py:434
+#: lilypond-book.py:461
 msgid "Processing..."
 msgstr "Verarbeiten..."
 
-#: lilypond-book.py:440
+#: lilypond-book.py:466
 msgid "All snippets are up to date..."
 msgstr "Alle Auszüge sind auf dem neuesten Stand..."
 
-#: lilypond-book.py:461
+#: lilypond-book.py:485
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr "Format für %s kann nicht ermittelt werden"
 
-#: lilypond-book.py:470
+#: lilypond-book.py:494
 #, python-format
 msgid "%s is up to date."
 msgstr "%s ist aktuell."
 
-#: lilypond-book.py:484
+#: lilypond-book.py:507
 #, python-format
 msgid "Writing `%s'..."
 msgstr "»%s« wird geschrieben..."
 
-#: lilypond-book.py:546
+#: lilypond-book.py:568
 msgid "Output would overwrite input file; use --output."
 msgstr "Ausgabe würde Eingabedatei überschreiben; verwenden Sie --output."
 
-#: lilypond-book.py:550
+#: lilypond-book.py:572
 #, python-format
 msgid "Reading %s..."
 msgstr "%s lesen..."
 
-#: lilypond-book.py:558
+#: lilypond-book.py:579
 msgid "Dissecting..."
 msgstr "Zerlegen..."
 
-#: lilypond-book.py:570
+#: lilypond-book.py:590
 #, python-format
 msgid "Compiling %s..."
 msgstr "%s kompilieren..."
 
-#: lilypond-book.py:579
+#: lilypond-book.py:598
 #, python-format
 msgid "Processing include: %s"
 msgstr "Einfügung wird verarbeitet: %s"
 
-#: lilypond-book.py:591
+#: lilypond-book.py:609
 #, python-format
 msgid "Removing `%s'"
 msgstr "»%s« wird gelöscht"
 
-#: convert-ly.py:44
+#: lilypond-book.py:676
+#, python-format
+msgid "Setting LilyPond's loglevel to %s"
+msgstr "Logstufe von LilyPond wird auf %s gesetzt"
+
+#: lilypond-book.py:680
+#, python-format
+msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)"
+msgstr "Logstufe von LilyPond wird auf %s gesetzt (aus Umgebungsvariable LILYPOND_LOGLEVEL)"
+
+#: lilypond-book.py:683
+msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting"
+msgstr "LilyPond-Ausgabe auf --verbose setzen, entsprechend der Einstellungen von lilypond-book"
+
+#: convert-ly.py:46
 msgid ""
 "Update LilyPond input to newer version.  By default, update from the\n"
 "version taken from the \\version command, to the current LilyPond version."
@@ -1405,69 +1505,69 @@ msgstr ""
 "LilyPond-Eingabe auf neuere Version bringen. Standardmäßig wird von der\n"
 "Version vom Kommando \\version zur aktuellen LilyPond-Version gegangen."
 
-#: convert-ly.py:102 convert-ly.py:135
+#: convert-ly.py:96 convert-ly.py:137
 msgid "VERSION"
 msgstr "VERSION"
 
-#: convert-ly.py:104
+#: convert-ly.py:98
 msgid "start from VERSION [default: \\version found in file]"
 msgstr "bei VERSION anfangen [Standard: \\version in Datei gefunden]"
 
-#: convert-ly.py:107
+#: convert-ly.py:101
 msgid "edit in place"
 msgstr "vor Ort ändern"
 
-#: convert-ly.py:111
+#: convert-ly.py:113
 msgid "do not add \\version command if missing"
 msgstr "keinen \\version-Befehl hinzufügen, falls es fehlt"
 
-#: convert-ly.py:117
+#: convert-ly.py:119
 #, python-format
 msgid "force updating \\version number to %s"
 msgstr "erzwinge Aktualisierung von \\version nach %s"
 
-#: convert-ly.py:123
+#: convert-ly.py:125
 msgid "only update \\version number if file is modified"
 msgstr "Aktualisierung von \\version nur, wenn die Datei verändert wurde"
 
-#: convert-ly.py:129
+#: convert-ly.py:131
 #, python-format
 msgid "show rules [default: -f 0, -t %s]"
 msgstr "Regeln anzeigen [Standard: -f 0, -t %s]"
 
-#: convert-ly.py:134
+#: convert-ly.py:136
 #, python-format
 msgid "convert to VERSION [default: %s]"
 msgstr "zu VERSION konvertieren [Standard: %s]"
 
-#: convert-ly.py:184
+#: convert-ly.py:186
 msgid "Applying conversion: "
 msgstr "Anwenden der Umwandlung: "
 
-#: convert-ly.py:197
+#: convert-ly.py:202
 msgid "Error while converting"
 msgstr "Fehler beim Umwandeln"
 
-#: convert-ly.py:199
+#: convert-ly.py:204
 msgid "Stopping at last successful rule"
 msgstr "Abbruch bei letzter erfolgreicher Regel"
 
-#: convert-ly.py:224
+#: convert-ly.py:231
 #, python-format
 msgid "Processing `%s'... "
 msgstr "»%s« wird verarbeitet..."
 
-#: convert-ly.py:332
+#: convert-ly.py:338
 #, python-format
 msgid "%s: Unable to open file"
 msgstr "%s: Konnte Datei nicht öffnen"
 
-#: convert-ly.py:339
+#: convert-ly.py:345
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr "Version für »%s« kann nicht erkannt werden.  Wird übersprungen"
 
-#: convert-ly.py:344
+#: convert-ly.py:350
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
@@ -1476,12 +1576,12 @@ msgstr ""
 "%s: Ungültige Versionsangabe `%s' \n"
 "Gültige Versionsangaben bestehen aus drei Zahlen, durch Punkte getrennt; etwa `2.8.12'"
 
-#: etf2ly.py:1195
+#: etf2ly.py:1197
 #, python-format
 msgid "%s [OPTION]... ETF-FILE"
 msgstr "%s [OPTIONEN]... ETF-DATEI"
 
-#: etf2ly.py:1196
+#: etf2ly.py:1198
 msgid ""
 "Enigma Transport Format is a format used by Coda Music Technology's\n"
 "Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n"
@@ -1498,20 +1598,51 @@ msgstr "Englisch"
 msgid "Other languages"
 msgstr "Andere Sprachen"
 
-#: warn.cc:59
+#: warn.cc:56
+#, c-format
+msgid "Log level set to %d\n"
+msgstr "Logstufe auf %d gesetzt\n"
+
+#: warn.cc:89
+#, c-format
+msgid "unknown log level `%s', using default (INFO)"
+msgstr "unbekannte Logstufe »%s«, setzte Standard ein (INFO)"
+
+#. Some expected warning was not triggered, so print out a warning.
+#: warn.cc:112
+#, c-format
+msgid "%d expected warning(s) not encountered: "
+msgstr "%d erwartete Warnung(en) nicht gefunden: "
+
+#: warn.cc:183
 #, c-format
-msgid "success: %s"
-msgstr "Erfolg: %s"
+msgid "fatal error: %s"
+msgstr "schwerer Fehler: %s"
 
-#: warn.cc:86 grob.cc:613 input.cc:97
+#: warn.cc:192
+#, c-format
+msgid "suppressed programming error: %s"
+msgstr "unterdrückter Programmierfehler: %s"
+
+#: warn.cc:197
 #, c-format
 msgid "programming error: %s"
 msgstr "Programmierfehler: %s"
 
-#: warn.cc:87 input.cc:98
+#: warn.cc:198
 msgid "continuing, cross fingers"
 msgstr "Fortsetzung, die Daumen drücken"
 
+#: warn.cc:207
+#, c-format
+msgid "suppressed error: %s"
+msgstr "unterdrückter Fehler: %s"
+
+#: warn.cc:219
+#, c-format
+msgid "suppressed warning: %s"
+msgstr "unterdrückte Warnung: %s"
+
 #: getopt-long.cc:153
 #, c-format
 msgid "option `%s' requires an argument"
@@ -1532,35 +1663,43 @@ msgstr "unerkannte Option: »%s«"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "ungültiges Argument »%s« für Option »%s«"
 
-#: grob.cc:286
-msgid "Infinity or NaN encountered"
-msgstr "Unendlichkeit oder NaN angetroffen"
-
-#: vaticana-ligature.cc:95
-msgid "flexa-height undefined; assuming 0"
-msgstr "flexa-Höhe nicht definiert: 0 angenommen"
-
-#: vaticana-ligature.cc:100
-msgid "ascending vaticana style flexa"
-msgstr "aufsteigender Vaticana-Stil flexa"
+#: flag.cc:110
+#, c-format
+msgid "flag `%s' not found"
+msgstr "Fähnchen »%s« nicht gefunden"
 
-#: vaticana-ligature.cc:188
-msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr "Vaticana_ligature: nichts zusammengefügt (delta_pitch == 0)"
+#: flag.cc:130
+#, c-format
+msgid "flag stroke `%s' not found"
+msgstr "Fähnchenstrich »%s« nicht gefunden"
 
-#: parse-scm.cc:100
+#: parse-scm.cc:112
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck"
 
-#: rest-collision-engraver.cc:70
-msgid "rhythmic head is not part of a rhythmic column"
-msgstr "der rhythmische Kopf gehört nicht zu einer rhythmischen Kolumne"
+#: lily-lexer.cc:255
+msgid "include files are not allowed in safe mode"
+msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt"
+
+#: lily-lexer.cc:282
+#, c-format
+msgid "identifier name is a keyword: `%s'"
+msgstr "Bezeichnername ist ein Schlüsselwort: »%s«"
+
+#: lily-lexer.cc:303 lily-lexer.cc:316
+#, c-format
+msgid "%s:EOF"
+msgstr "%s:EOF"
 
 #. if we get to here, just put everything on one line
 #: constrained-breaking.cc:187 constrained-breaking.cc:205
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "es kann kein Zeilenumbruch gefunden werden, der die Bedingungen erfüllen"
 
+#: context-property.cc:43
+msgid "need symbol arguments for \\override and \\revert"
+msgstr "Symbol-Argumente für \\override und \\revert benötigt"
+
 #: horizontal-bracket-engraver.cc:62
 msgid "do not have that many brackets"
 msgstr "so viele Klammern gibt es nicht"
@@ -1569,79 +1708,104 @@ msgstr "so viele Klammern gibt es nicht"
 msgid "conflicting note group events"
 msgstr "in Konflikt stehende Notengruppenereignisse"
 
-#: hyphen-engraver.cc:104
-msgid "removing unterminated hyphen"
-msgstr "unbegrenzter Bindestrich wird entfernt"
-
-#: hyphen-engraver.cc:118
-msgid "unterminated hyphen; removing"
-msgstr "unbegrenzter Bindestrich; entfernt"
+#: new-fingering-engraver.cc:113
+msgid "cannot add text scripts to individual note heads"
+msgstr "es kann kein Text zu einzelnen Notenköpfen hinzugefügt werden"
 
-#: pango-font.cc:189 open-type-font.cc:318
-#, c-format
-msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "FT_Get_Glyph_Name() Fehler: %s"
+#: new-fingering-engraver.cc:265
+msgid "no placement found for fingerings"
+msgstr "Keine Platzierung für Fingersatz gefunden"
 
-#: pango-font.cc:205
-#, c-format
-msgid ""
-"Glyph has no name, but font supports glyph naming.\n"
-"Skipping glyph U+%0X, file %s"
-msgstr ""
-"Glyph hat keinen Namen, aber Zeichensatz unterstützt Glyphnamen.\n"
-"Glyph U+%0X wird übersprungen, Datei %s"
+#: new-fingering-engraver.cc:266
+msgid "placing below"
+msgstr "Platzierung darunter"
 
-#: pango-font.cc:242
+#: translator-group.cc:188
 #, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "Kein PostScript-Schriftartname für Schriftart: »%s«"
+msgid "cannot find: `%s'"
+msgstr "»%s« kann nicht gefunden werden"
 
-#: pango-font.cc:291
-msgid "FreeType face has no PostScript font name"
-msgstr "FreeType-Schriftart hat keinen PostScript-Schriftartnamen"
+#: glissando-engraver.cc:158
+msgid "unterminated glissando"
+msgstr "unbegrenztes Glissando."
 
 #: midi-item.cc:89
 #, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "kein MIDI-Instrument: `%s'"
 
+#: open-type-font.cc:44
+#, c-format
+msgid "cannot allocate %lu bytes"
+msgstr "es können keine %lu Bytes angefordert werden"
+
+#: open-type-font.cc:48
+#, c-format
+msgid "cannot load font table: %s"
+msgstr "Schriftarttabelle kann nicht geladen werden: %s"
+
+#: open-type-font.cc:53
+#, c-format
+msgid "FreeType error: %s"
+msgstr "FreeType-Fehler: %s"
+
+#: open-type-font.cc:110
+#, c-format
+msgid "unsupported font format: %s"
+msgstr "nicht unterstütztes Schriftartformat: %s"
+
+#: open-type-font.cc:112
+#, c-format
+msgid "error reading font file %s: %s"
+msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s"
+
+#: open-type-font.cc:187
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s"
+
+#: open-type-font.cc:318 pango-font.cc:189
+#, c-format
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "FT_Get_Glyph_Name() Fehler: %s"
+
 #: note-heads-engraver.cc:76
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent ohne Tonhöhe"
 
-#: rest.cc:160
-#, c-format
-msgid "rest `%s' not found"
-msgstr "Pause »%s« nicht gefunden"
+#: skyline-pair.cc:131
+msgid "direction must not be CENTER in ly:skyline-pair::skyline"
+msgstr "Richtung darf nicht CENTER sein in ly:skyline-pair::skyline"
 
-#: spaceable-grob.cc:94
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger"
+#: hyphen-engraver.cc:104
+msgid "removing unterminated hyphen"
+msgstr "unbegrenzter Bindestrich wird entfernt"
 
-#: beam-engraver.cc:147
-msgid "already have a beam"
-msgstr "Balken bereits vorhanden"
+#: hyphen-engraver.cc:118
+msgid "unterminated hyphen; removing"
+msgstr "unbegrenzter Bindestrich; entfernt"
 
-#: beam-engraver.cc:230
-msgid "unterminated beam"
-msgstr "unbegrenzter Balken"
+#: output-def.cc:235
+msgid "margins do not fit with line-width, setting default values"
+msgstr "Ränder passen nicht zur Zeilenbreite, setze Standardwerte"
 
-#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
-msgid "stem must have Rhythmic structure"
-msgstr "Notenhals muss rhythmische Struktur aufweisen"
+#: output-def.cc:242
+msgid "systems run off the page due to improper paper settings, setting default values"
+msgstr "Systeme befinden sich außerhalb der Seite wegen falschen paper-Einstellungen, setze Standardwerte ein"
 
-#: beam-engraver.cc:274
-msgid "stem does not fit in beam"
-msgstr "Notenhals passt nicht in Balken"
+#: accidental.cc:200
+#, c-format
+msgid "Could not find glyph-name for alteration %s"
+msgstr "Glyph-Name für Versetzungszeichen %s konnte nicht gefunden werden"
 
-#: beam-engraver.cc:275
-msgid "beam was started here"
-msgstr "Balken wurde hier begonnen"
+#: accidental.cc:215
+msgid "natural alteration glyph not found"
+msgstr "Auflösungszeichen konnte nicht gefunden werden"
 
-#: music-iterator.cc:181
-msgid "Sending non-event to context"
-msgstr "Nicht-Ereignis wird an Kontext gesendet"
+#: lyric-combine-music-iterator.cc:337
+#, c-format
+msgid "cannot find Voice `%s'"
+msgstr "Stimme kann nicht gefunden werden: »%s«"
 
 #: context.cc:148
 #, c-format
@@ -1653,11 +1817,6 @@ msgstr "ein neues »%s« kann weder gefunden noch erzeugt werden"
 msgid "cannot find or create `%s' called `%s'"
 msgstr "»%s« (»%s« genannt) kann weder gefunden noch erzeugt werden"
 
-#: context.cc:268
-#, c-format
-msgid "Invalid CreateContext event: Cannot create %s context"
-msgstr "Ungültiges CreateContext-Ereignis: Kontext %s kann nicht erzeugt werden"
-
 #: context.cc:399
 #, c-format
 msgid "cannot find or create: `%s'"
@@ -1672,9 +1831,15 @@ msgstr "Ereignisklasse sollte ein Symbol sein"
 msgid "Unknown event class %s"
 msgstr "Unbekannte Ereignisklasse »%s«"
 
-#: paper-column-engraver.cc:245
-msgid "forced break was overridden by some other event, should you be using bar checks?"
-msgstr "erzwungener Umbruch war durch anderes Ereignis aufgehoben, sollten Taktüberprüfungen vorgenommen werden?"
+#: dispatcher.cc:171
+#, c-format
+msgid "Junking event: %s"
+msgstr "Ereignis wird verworfen: »%s«"
+
+#: auto-change-iterator.cc:74 change-iterator.cc:72
+#, c-format
+msgid "cannot change, already in translator: %s"
+msgstr "kann nicht geändert werden, bereits im Übersetzer: %s"
 
 #: tie-engraver.cc:117
 msgid "unterminated tie"
@@ -1684,23 +1849,23 @@ msgstr "unbegrenzter Bindebogen"
 msgid "lonely tie"
 msgstr "einsamer Bindebogen"
 
-#: dynamic-engraver.cc:197
+#: dynamic-engraver.cc:193
 msgid "cannot find start of (de)crescendo"
 msgstr "Anfang des (De-) Crescendos kann nicht gefunden werden"
 
-#: dynamic-engraver.cc:206
+#: dynamic-engraver.cc:200
 msgid "already have a decrescendo"
 msgstr "Decrescendo bereits vorhanden"
 
-#: dynamic-engraver.cc:208
+#: dynamic-engraver.cc:202
 msgid "already have a crescendo"
 msgstr "Crescendo bereits vorhanden"
 
-#: dynamic-engraver.cc:211
+#: dynamic-engraver.cc:205
 msgid "cresc starts here"
 msgstr "Crescendo beginnt hier"
 
-#: dynamic-engraver.cc:339
+#: dynamic-engraver.cc:333
 msgid "unterminated (de)crescendo"
 msgstr "unbegrenztes (De-) Crescendo"
 
@@ -1708,16 +1873,16 @@ msgstr "unbegrenztes (De-) Crescendo"
 msgid "Calculating line breaks..."
 msgstr "Zeilenumbrüche werden berechnet..."
 
-#: paper-score.cc:135
+#: paper-score.cc:134
 #, c-format
 msgid "Element count %d (spanners %d) "
 msgstr "Elementanzahl: %d (Klammern: %d)"
 
-#: paper-score.cc:139
+#: paper-score.cc:138
 msgid "Preprocessing graphical objects..."
 msgstr "Vorverarbeitung der grafischen Elemente..."
 
-#: paper-score.cc:163 optimal-page-breaking.cc:208
+#: paper-score.cc:162 optimal-page-breaking.cc:208
 #: page-turn-page-breaking.cc:248
 msgid "Drawing systems..."
 msgstr "Systeme erstellen..."
@@ -1770,77 +1935,38 @@ msgstr ""
 msgid "unexpected case fall-through"
 msgstr "unerwarteter case-Ausgang"
 
-#: piano-pedal-engraver.cc:296
+#: piano-pedal-engraver.cc:279
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
 msgstr "3 Textketten für Piano-Pedal erwartet, %ld gefunden"
 
-#: piano-pedal-engraver.cc:311 piano-pedal-engraver.cc:322
+#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305
 #: piano-pedal-performer.cc:104
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
 msgstr "es kann kein Anfang für Piano-Pedal gefunden werden: »%s«"
 
-#: piano-pedal-engraver.cc:357
+#: piano-pedal-engraver.cc:340
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
 msgstr "es kann kein Anfang für Piano-Pedal-Klammer gefunden werden: »%s«"
 
-#: input.cc:130 source-file.cc:178 source-file.cc:193
+#: input.cc:138 source-file.cc:178 source-file.cc:193
 msgid "position unknown"
 msgstr "Position unbekannt"
 
-#: paper-outputter-scheme.cc:41
-#, c-format
-msgid "Layout output to `%s'..."
-msgstr "Layout nach »%s« ausgeben..."
-
-#: general-scheme.cc:305
-msgid "infinity or NaN encountered while converting Real number"
-msgstr "Unendlichkeit oder NaN bei Umwandlung einer Realen Zahl gefunden"
-
-#: general-scheme.cc:306
-msgid "setting to zero"
-msgstr "auf Null gesetzt"
+#: stem.cc:128
+msgid "weird stem size, check for narrow beams"
+msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen"
 
-#: general-scheme.cc:540
-msgid "Found infinity or nan in output. Substituting 0.0"
-msgstr "Unendlich oder NaN in Ausgabe gefunden. Wird durch 0.0 ersetzt"
+#: relative-octave-check.cc:49
+msgid "Failed octave check, got: "
+msgstr "Oktavprüfung gescheitert, Rückgabe: "
 
-#: music.cc:150
+#: translator-ctors.cc:65
 #, c-format
-msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden"
-
-#: music.cc:218
-msgid "(normalized pitch)"
-msgstr "(normalisierte Tonhöhe)"
-
-#: music.cc:222
-#, c-format
-msgid "Transposing %s by %s makes alteration larger than double"
-msgstr "Transponieren von %s um %s erzeugt mehr als ein Doppel-Vorzeichen"
-
-#: translator-ctors.cc:65
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "unbekannter Übersetzer: »%s«"
-
-#: partial-iterator.cc:45
-msgid "trying to use \\partial after the start of a piece"
-msgstr "versuche, \\partial nach dem Beginn eines Stückes einzusetzen"
-
-#: new-fingering-engraver.cc:105
-msgid "cannot add text scripts to individual note heads"
-msgstr "es kann kein Text zu einzelnen Notenköpfen hinzugefügt werden"
-
-#: new-fingering-engraver.cc:249
-msgid "no placement found for fingerings"
-msgstr "Keine Platzierung für Fingersatz gefunden"
-
-#: new-fingering-engraver.cc:250
-msgid "placing below"
-msgstr "Platzierung darunter"
+msgid "unknown translator: `%s'"
+msgstr "unbekannter Übersetzer: »%s«"
 
 #: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72
 msgid "cannot find start of ligature"
@@ -1870,34 +1996,26 @@ msgstr "Pause wird ignoriert: Ligatur darf keine Pause enthalten"
 msgid "ligature was started here"
 msgstr "Ligatur wurde hier begonnen"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "kann nicht geändert werden, bereits im Übersetzer: %s"
-
-#: accidental-engraver.cc:179
-#, c-format
-msgid "accidental typesetting list must begin with context-name: %s"
-msgstr "Versetzungszeichensatzliste muss mit Kontextnamen beginnen: %s"
-
-#: accidental-engraver.cc:209
-#, c-format
-msgid "procedure or context-name expected for accidental rule, found %s"
-msgstr "Prozedur oder Kontextname für Versetzungszeichenregel erwartet, %s gefunden"
+#: tuplet-engraver.cc:110
+msgid "No tuplet to end"
+msgstr "Keine rhythmische Gruppe zu beenden"
 
-#: ttf.cc:480 ttf.cc:529
+#: ttf.cc:480 ttf.cc:528
 #, c-format
 msgid "font index %d too large for font `%s', using index 0"
 msgstr "Font-Intex %d zu groß für Font »%s«, benutze Index 0"
 
-#: ttf.cc:512 ttf.cc:564
+#: ttf.cc:512 ttf.cc:562
 msgid "font index must be non-negative, using index 0"
 msgstr "font-index muss nicht-negativ sein, benutze Index 0"
 
-#: break-alignment-interface.cc:199
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Kein Abstandeintrag von %s nach »%s«"
+#: multi-measure-rest.cc:140
+msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
+msgstr "usable-duration-logs muss eine nicht-leere Liste sein.  Falle auf ganze Pausen zurück."
+
+#: partial-iterator.cc:45
+msgid "trying to use \\partial after the start of a piece"
+msgstr "versuche, \\partial nach dem Beginn eines Stückes einzusetzen"
 
 #: minimal-page-breaking.cc:44
 msgid "Calculating page breaks..."
@@ -1923,13 +2041,17 @@ msgstr "Programmoption -dprint-pages nicht von Backend »%s« unterstützt"
 msgid "program option -dpreview not supported by backend `%s'"
 msgstr "Programmoption -dpreview nicht von »%s« unterstützt"
 
-#: output-def.cc:235
-msgid "margins do not fit with line-width, setting default values"
-msgstr "Ränder passen nicht zur Zeilenbreite, setze Standardwerte"
+#: episema-engraver.cc:75
+msgid "already have an episema"
+msgstr "Episema bereits vorhanden"
 
-#: output-def.cc:242
-msgid "systems run off the page due to improper paper settings, setting default values"
-msgstr "Systeme befinden sich außerhalb der Seite wegen falschen paper-Einstellungen, setze Standardwerte ein"
+#: episema-engraver.cc:88
+msgid "cannot find start of episema"
+msgstr "Anfang des Episema kann nicht gefunden werden"
+
+#: episema-engraver.cc:137
+msgid "unterminated episema"
+msgstr "unbegrenztes Episema"
 
 #: score-engraver.cc:78
 #, c-format
@@ -1949,7 +2071,16 @@ msgstr "Suchpfad »%s«"
 msgid "Aborting"
 msgstr "Abbruch"
 
-#: note-collision.cc:494
+#: performance.cc:54
+msgid "Track..."
+msgstr "Spur..."
+
+#: performance.cc:82
+#, c-format
+msgid "MIDI output to `%s'..."
+msgstr "MIDI-Ausgabe nach »%s«..."
+
+#: note-collision.cc:504
 msgid "ignoring too many clashing note columns"
 msgstr "zu viele kollidierende Notenspalten werden ignoriert"
 
@@ -1970,20 +2101,20 @@ msgstr "endende Textklammer auch bereits vorhanden"
 msgid "giving up"
 msgstr "aufgeben"
 
-#: page-layout-problem.cc:603
+#: page-layout-problem.cc:709
 msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed"
 msgstr "Noten passen nicht auf die Seite: ragged-spacing wurde verlangt, aber die Seite wurde komprimiert"
 
-#: page-layout-problem.cc:606
+#: page-layout-problem.cc:712
 #, c-format
 msgid "cannot fit music on page: overflow is %f"
 msgstr "Noten passen nicht auf die Seite: Überhang ist %f"
 
-#: page-layout-problem.cc:608
+#: page-layout-problem.cc:714
 msgid "compressing music to fit"
 msgstr "Noten werden komprimiert um zu passen"
 
-#: page-layout-problem.cc:1047
+#: page-layout-problem.cc:1176
 msgid "staff-affinities should only decrease"
 msgstr "staff-affinities sollten nur abnehmen"
 
@@ -2000,61 +2131,104 @@ msgstr "rehearsalMark muss Ganzzahlwert haben"
 msgid "mark label must be a markup object"
 msgstr "Marke muss ein Textbeschriftungsobjekt sein"
 
-#: new-dynamic-engraver.cc:168
-#, c-format
-msgid ""
-"unknown crescendo style: %s\n"
-"defaulting to hairpin."
-msgstr ""
-"unbekannter crescendo-Stil: %s\n"
-"wird als spitze Klammer gesetzt."
-
-#: new-dynamic-engraver.cc:233
-#, c-format
-msgid "unterminated %s"
-msgstr "unbegrenzt: »%s«"
-
-#: stem-engraver.cc:102
+#: stem-engraver.cc:105
 msgid "tremolo duration is too long"
 msgstr "Tremolodauer ist zu lang"
 
-#: stem-engraver.cc:154
+#: stem-engraver.cc:157
 #, c-format
 msgid "adding note head to incompatible stem (type = %d/%d)"
 msgstr "Notenkopf wird zu inkompatiblem Hals (Typ = %d/%d) hinzugefügt"
 
-#: stem-engraver.cc:157
+#: stem-engraver.cc:160
 msgid "maybe input should specify polyphonic voices"
 msgstr "vielleicht sollte die Eingabe mehrere Stimmen erstellen"
 
-#: lily-lexer.cc:265
-msgid "include files are not allowed in safe mode"
-msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt"
+#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#, c-format
+msgid "cannot find file: `%s'"
+msgstr "Datei »%s« kann nicht gefunden werden"
 
-#: lily-lexer.cc:292
+#: includable-lexer.cc:73 lily-parser-scheme.cc:100
 #, c-format
-msgid "identifier name is a keyword: `%s'"
-msgstr "Bezeichnername ist ein Schlüsselwort: »%s«"
+msgid "(search path: `%s')"
+msgstr "(Suchpfad: »%s«)"
 
-#: lily-lexer.cc:313
+#: relocate.cc:52
 #, c-format
-msgid "error at EOF: %s"
-msgstr "Fehler am Dateiende (EOF): %s"
+msgid "Setting %s to %s"
+msgstr "%s wird auf %s gesetzt"
 
-#: lyric-combine-music-iterator.cc:337
+#. this warning should only be printed in debug mode!
+#: relocate.cc:73
 #, c-format
-msgid "cannot find Voice `%s'"
-msgstr "Stimme kann nicht gefunden werden: »%s«"
+msgid "no such file: %s for %s"
+msgstr "keine solche Datei: %s für %s"
 
-#: includable-lexer.cc:71 lily-guile.cc:86 lily-parser-scheme.cc:109
+#. this warning should only be printed in debug mode!
+#. this warning should only be printed in debug mode
+#: relocate.cc:84 relocate.cc:102
 #, c-format
-msgid "cannot find file: `%s'"
-msgstr "Datei »%s« kann nicht gefunden werden"
+msgid "no such directory: %s for %s"
+msgstr "kein solches Verzeichnis: %s für %s"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:101
+#: relocate.cc:93
 #, c-format
-msgid "(search path: `%s')"
-msgstr "(Suchpfad: »%s«)"
+msgid "%s=%s (prepend)\n"
+msgstr "%s=%s (voranstellen)\n"
+
+#: relocate.cc:124
+#, c-format
+msgid "not relocating, no %s/ or current/ found under %s"
+msgstr "keine Verlagerung, kein %s/ oder current/ unter %s gefunden"
+
+#: relocate.cc:134
+#, c-format
+msgid "Relocation: compile datadir=%s, new datadir=%s"
+msgstr "Verlagerung: Kompilier-Datenverzeichnis=%s, neues Datenverzeichnis=%s"
+
+#: relocate.cc:146
+#, c-format
+msgid "Relocation: framework_prefix=%s"
+msgstr "Verlagerung: framework_prefix=%s"
+
+#: relocate.cc:186
+#, c-format
+msgid "Relocation: is absolute: argv0=%s\n"
+msgstr "Verlagerung: ist absolut: argv0=%s\n"
+
+#: relocate.cc:192
+#, c-format
+msgid "Relocation: from cwd: argv0=%s\n"
+msgstr "Verlagerung: von cwd: argv0=%s\n"
+
+#: relocate.cc:208
+#, c-format
+msgid ""
+"Relocation: from PATH=%s\n"
+"argv0=%s"
+msgstr ""
+"Verlagerung: von PATH=%s\n"
+"argv0=%s"
+
+#: relocate.cc:235
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden"
+
+#: relocate.cc:360
+#, c-format
+msgid "Relocation file: %s"
+msgstr "Verlagerungsdatei: %s"
+
+#: relocate.cc:364 source-file.cc:65
+#, c-format
+msgid "cannot open file: `%s'"
+msgstr "Datei kann nicht geöffnet werden: »%s«"
+
+#: relocate.cc:394
+#, c-format
+msgid "Unknown relocation command %s"
+msgstr "Unbekannter Verlagerungsbefehl %s"
 
 #: note-column.cc:135
 msgid "cannot have note heads and rests together on a stem"
@@ -2064,11 +2238,6 @@ msgstr "Notenköpfe und Pausen können nicht zusammen an einem Hals auftreten"
 msgid "removing beam with no stems"
 msgstr "Balken ohne Notenhälse wird entfernt"
 
-#. We are completely screwed.
-#: beam.cc:1350
-msgid "no viable initial configuration found: may not find good beam slope"
-msgstr "Keine funktionsfähige Anfangskonfiguration gefunden: Es kann evtl. keine optimale Balkenneigung gefunden werden"
-
 #: staff-performer.cc:257
 msgid "MIDI channel wrapped around"
 msgstr "MIDI-Kanal zurückgesprungen"
@@ -2077,43 +2246,64 @@ msgstr "MIDI-Kanal zurückgesprungen"
 msgid "remapping modulo 16"
 msgstr "modulo 16 neu zuordnen"
 
-#: slur-engraver.cc:90 phrasing-slur-engraver.cc:89
+#: dots.cc:48
 #, c-format
-msgid "direction of %s invalid: %d"
-msgstr "Richtung von %s ungültig: %d"
-
-#: slur-engraver.cc:158
-msgid "unterminated slur"
-msgstr "unbegrenzter Legatobogen"
-
-#: slur-engraver.cc:183
-msgid "cannot end slur"
-msgstr "Legatobogen kann nicht beendet werden"
-
-#. We already have a slur, so give a warning and completely ignore
-#. the new slur.
-#: slur-engraver.cc:200
-msgid "already have slur"
-msgstr "habe bereits einen Bogen"
+msgid "dot `%s' not found"
+msgstr "Punkt »%s« nicht gefunden"
 
-#: font-config.cc:39
+#: font-config.cc:38
 msgid "Initializing FontConfig..."
 msgstr "FontConfig wird initialisiert..."
 
-#: font-config.cc:54 font-config-scheme.cc:151
+#: font-config.cc:53 font-config-scheme.cc:151
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "Schriftartverzeichnis konnte nicht hinzugefügt werden: %s"
 
-#: font-config.cc:56 font-config-scheme.cc:153
+#: font-config.cc:55 font-config-scheme.cc:153
 #, c-format
-msgid "adding font directory: %s"
+msgid "Adding font directory: %s"
 msgstr "Schriftartverzeichnis wird hinzugefügt: %s"
 
-#: font-config.cc:60
+#: font-config.cc:58
 msgid "Building font database..."
 msgstr "Schriftartendatenbank erstellen..."
 
+#: change-iterator.cc:34
+#, c-format
+msgid "cannot change `%s' to `%s'"
+msgstr "»%s« kann nicht in »%s« geändert werden"
+
+#. FIXME: constant error message.
+#: change-iterator.cc:93
+msgid "cannot find context to switch to"
+msgstr "es kann kein Kontext zum Umschalten gefunden werden"
+
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#: change-iterator.cc:102
+#, c-format
+msgid "not changing to same context type: %s"
+msgstr "kein Umschalten zum gleichen Kontexttypen: %s"
+
+#. FIXME: uncomprehensable message
+#: change-iterator.cc:106
+msgid "none of these in my family"
+msgstr "keiner davon befindet sich in meiner Familie"
+
+#: slur.cc:438
+#, c-format
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr "Grob für Legatobogen wird ignoriert: %s. avoid-slur nicht gesetzt?"
+
+#: source-file.cc:85
+#, c-format
+msgid "expected to read %d characters, got %d"
+msgstr "%d Zeichen erwartet, %d erhalten"
+
 #. find out the ideal number of pages
 #: optimal-page-breaking.cc:62
 msgid "Finding the ideal number of pages..."
@@ -2147,41 +2337,21 @@ msgstr "versuche %d Systeme"
 msgid "best score for this sys-count: %f"
 msgstr "bester Score für dieses sys-count: %f"
 
-#: accidental.cc:200
-#, c-format
-msgid "Could not find glyph-name for alteration %s"
-msgstr "Glyph-Name für Versetzungszeichen %s konnte nicht gefunden werden"
-
-#: accidental.cc:215
-msgid "natural alteration glyph not found"
-msgstr "Auflösungszeichen konnte nicht gefunden werden"
-
-#: system.cc:201
-#, c-format
-msgid "Element count %d"
-msgstr "Elementanzahl %d."
-
-#: system.cc:402
-#, c-format
-msgid "Grob count %d"
-msgstr "Anzahl der grafischen Objekte (grob): %d"
-
-#: slur.cc:359
-#, c-format
-msgid "Ignoring grob for slur: %s. avoid-slur not set?"
-msgstr "Grob für Legatobogen wird ignoriert: %s. avoid-slur nicht gesetzt?"
-
-#: font-config-scheme.cc:167
+#: new-dynamic-engraver.cc:168
 #, c-format
-msgid "failed adding font file: %s"
-msgstr "Schriftartdatei konnte nicht hinzugefügt werden: %s"
+msgid ""
+"unknown crescendo style: %s\n"
+"defaulting to hairpin."
+msgstr ""
+"unbekannter crescendo-Stil: %s\n"
+"wird als spitze Klammer gesetzt."
 
-#: font-config-scheme.cc:169
+#: new-dynamic-engraver.cc:233
 #, c-format
-msgid "adding font file: %s"
-msgstr "Schriftartdatei wird hinzugefügt: %s"
+msgid "unterminated %s"
+msgstr "unbegrenzt: »%s«"
 
-#: hairpin.cc:186
+#: hairpin.cc:263
 msgid "decrescendo too small"
 msgstr "Decrescendo zu kurz"
 
@@ -2189,30 +2359,7 @@ msgstr "Decrescendo zu kurz"
 msgid "unterminated extender"
 msgstr "unbegrenzter Textunterstrich"
 
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(Lade-Pfad: `%s')"
-
-#: lily-guile.cc:431
-#, c-format
-msgid "cannot find property type-check for `%s' (%s)."
-msgstr "Eigenschafts-Typprüfung für »%s« (%s) kann nicht gefunden werden."
-
-#: lily-guile.cc:434
-msgid "perhaps a typing error?"
-msgstr "vielleicht ein Tippfehler?"
-
-#: lily-guile.cc:441
-msgid "doing assignment anyway"
-msgstr "Zuweisung wird trotzdem durchgeführt"
-
-#: lily-guile.cc:453
-#, c-format
-msgid "type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "Typprüfung für »%s« gescheitert; Wert »%s« muss vom Typ »%s« sein"
-
-#: main.cc:107
+#: main.cc:101
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2225,7 +2372,7 @@ msgstr ""
 "Bedingungen weitergeben. Rufen Sie »%s --warranty« für weitere\n"
 "Informationen auf.\n"
 
-#: main.cc:113
+#: main.cc:107
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License as \n"
@@ -2257,11 +2404,11 @@ msgstr ""
 "Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:147
+#: main.cc:141
 msgid "SYM[=VAL]"
 msgstr "SYM[=WERT]"
 
-#: main.cc:148
+#: main.cc:142
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
@@ -2269,59 +2416,59 @@ msgstr ""
 "Scheme-Option SYM auf WERT setzen (Vorgabe: #t).\n"
 "-dhelp für Hilfe verwenden."
 
-#: main.cc:152
+#: main.cc:146
 msgid "EXPR"
 msgstr "AUSD"
 
-#: main.cc:152
+#: main.cc:146
 msgid "evaluate scheme code"
 msgstr "Scheme-Code auswerten"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:155
+#: main.cc:149
 msgid "FORMATs"
 msgstr "FORMATe"
 
-#: main.cc:155
+#: main.cc:149
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "dump FORMAT,... Auch als separate Optionen:"
 
-#: main.cc:156
+#: main.cc:150
 msgid "generate PDF (default)"
 msgstr "PDF erzeugen (Standard)"
 
-#: main.cc:157
+#: main.cc:151
 msgid "generate PNG"
 msgstr "PNG erzeugen"
 
-#: main.cc:158
+#: main.cc:152
 msgid "generate PostScript"
 msgstr "PostScript erzeugen"
 
-#: main.cc:161
+#: main.cc:155
 msgid "FIELD"
 msgstr "FELD"
 
-#: main.cc:161
+#: main.cc:155
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
 msgstr "Header-Feld FELD in Datei BASISNAME.FELD schreiben"
 
-#: main.cc:164
+#: main.cc:158
 msgid "add DIR to search path"
 msgstr "VERZ zum Suchpfad hinzufügen"
 
-#: main.cc:165
+#: main.cc:159
 msgid "use FILE as init file"
 msgstr "DATEI als Anfangsdatei verwenden"
 
-#: main.cc:168
+#: main.cc:162
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "BENUTZER,GRUPPE,KERKER,VERZ"
 
-#: main.cc:168
+#: main.cc:162
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2329,14 +2476,30 @@ msgstr ""
 "chroot in KERKER, wird BENUTZER:GRUPPE\n"
 "und cd in VERZ"
 
-#: main.cc:172
+#: main.cc:167
+msgid ""
+"print log messages according to LOGLEVEL.  Possible values are:\n"
+"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
+msgstr ""
+"Logmeldungen nach LOGLEVEL-Einstellung ausgeben.  Mögliche Werte:\n"
+"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (Standard) und DEBUG."
+
+#: main.cc:171
 msgid "write output to FILE (suffix will be added)"
 msgstr "Ausgabe in DATEI schreiben (Endung wird hinzugefügt)"
 
-#: main.cc:173
+#: main.cc:172
 msgid "relocate using directory of lilypond program"
 msgstr "wiederfinden mit Hilfe des Lilypond-Programmverzeichnisses"
 
+#: main.cc:173
+msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
+msgstr "kein Forschritt, nur Fehlermeldungen (entspricht LOGLEVEL=ERROR)"
+
+#: main.cc:175
+msgid "be verbose (equivalent to loglevel=DEBUG)"
+msgstr "ausführlich sein (entspricht LOGLEVEL=DEBUG)"
+
 #. Do not update the copyright years here, run `make grand-replace'
 #: main.cc:242
 #, c-format
@@ -2415,11 +2578,50 @@ msgstr "Benutzer-ID kann nicht geändert werden in: %d: %s"
 msgid "cannot change working directory to: %s: %s"
 msgstr "aktuelles Verzeichnis kann nicht geändert werden in: %s: %s"
 
-#: main.cc:631
+#: main.cc:639
 #, c-format
 msgid "exception caught: %s"
 msgstr "Ausnahme gefangen: %s"
 
+#: page-turn-page-breaking.cc:168
+#, c-format
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr "Seitenwechsel-Seitenumbruch: Umbruch von %d zu %d"
+
+#: page-turn-page-breaking.cc:217
+msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
+msgstr "Erster Seitenwechsel kann nicht auf einzelne Seite gelegt werden. In Betracht zu ziehen wäre das Setzen von first-page-number auf gerade Zahl."
+
+#: page-turn-page-breaking.cc:230
+#, c-format
+msgid "Calculating page and line breaks (%d possible page breaks)..."
+msgstr "Seiten- und Zeilenumbrüche werden berechnet (%d mögliche Seitenumbrüche)..."
+
+#: page-turn-page-breaking.cc:300
+#, c-format
+msgid "break starting at page %d"
+msgstr "Umbruch beginnt auf Seite %d"
+
+#: page-turn-page-breaking.cc:301
+#, c-format
+msgid "\tdemerits: %f"
+msgstr "Optimale Bewertung: %f"
+
+#: page-turn-page-breaking.cc:302
+#, c-format
+msgid "\tsystem count: %d"
+msgstr "\tSystemanzahl: %d"
+
+#: page-turn-page-breaking.cc:303
+#, c-format
+msgid "\tpage count: %d"
+msgstr "\tSeitenanzahl: %d"
+
+#: page-turn-page-breaking.cc:304
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "\tvorheriger Umbruch: %d"
+
 #: key-signature-interface.cc:77
 #, c-format
 msgid "No glyph found for alteration: %s"
@@ -2429,10 +2631,27 @@ msgstr "Kein Glyph für Vorzeichen gefunden: %s"
 msgid "alteration not found"
 msgstr "Alterierung nicht gefunden"
 
-#: dots.cc:48
+#: music.cc:150
 #, c-format
-msgid "dot `%s' not found"
-msgstr "Punkt »%s« nicht gefunden"
+msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden"
+
+#: music.cc:219
+msgid "(normalized pitch)"
+msgstr "(normalisierte Tonhöhe)"
+
+#: music.cc:223
+#, c-format
+msgid "Transposing %s by %s makes alteration larger than double"
+msgstr "Transponieren von %s um %s erzeugt mehr als ein Doppel-Vorzeichen"
+
+#: vaticana-ligature.cc:95
+msgid "flexa-height undefined; assuming 0"
+msgstr "flexa-Höhe nicht definiert: 0 angenommen"
+
+#: vaticana-ligature.cc:100
+msgid "ascending vaticana style flexa"
+msgstr "aufsteigender Vaticana-Stil flexa"
 
 #: translator.cc:356
 #, c-format
@@ -2444,9 +2663,28 @@ msgstr "Zwei gleichzeitige %s-Ereignisse, dieses wird verworfen"
 msgid "Previous %s event here"
 msgstr "Vorheriges %s-Ereignis hier"
 
-#: glissando-engraver.cc:156
-msgid "unterminated glissando"
-msgstr "unbegrenztes Glissando."
+#: lily-guile.cc:93
+#, c-format
+msgid "(load path: `%s')"
+msgstr "(Lade-Pfad: `%s')"
+
+#: lily-guile.cc:416
+#, c-format
+msgid "cannot find property type-check for `%s' (%s)."
+msgstr "Eigenschafts-Typprüfung für »%s« (%s) kann nicht gefunden werden."
+
+#: lily-guile.cc:419
+msgid "perhaps a typing error?"
+msgstr "vielleicht ein Tippfehler?"
+
+#: lily-guile.cc:426
+msgid "doing assignment anyway"
+msgstr "Zuweisung wird trotzdem durchgeführt"
+
+#: lily-guile.cc:438
+#, c-format
+msgid "type check for `%s' failed; value `%s' must be of type `%s'"
+msgstr "Typprüfung für »%s« gescheitert; Wert »%s« muss vom Typ »%s« sein"
 
 #: text-spanner-engraver.cc:72
 msgid "cannot find start of text spanner"
@@ -2465,6 +2703,26 @@ msgstr "unbegrenzte Textklammer"
 msgid "clef `%s' not found"
 msgstr "Schlüssel »%s« nicht gefunden"
 
+#: beam-engraver.cc:147
+msgid "already have a beam"
+msgstr "Balken bereits vorhanden"
+
+#: beam-engraver.cc:230
+msgid "unterminated beam"
+msgstr "unbegrenzter Balken"
+
+#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
+msgid "stem must have Rhythmic structure"
+msgstr "Notenhals muss rhythmische Struktur aufweisen"
+
+#: beam-engraver.cc:277
+msgid "stem does not fit in beam"
+msgstr "Notenhals passt nicht in Balken"
+
+#: beam-engraver.cc:278
+msgid "beam was started here"
+msgstr "Balken wurde hier begonnen"
+
 #.
 #. Todo: should make typecheck?
 #.
@@ -2475,142 +2733,105 @@ msgstr "Schlüssel »%s« nicht gefunden"
 msgid "strange time signature found: %d/%d"
 msgstr "seltsame Taktart gefunden: %d/%d"
 
-#: lily-parser-scheme.cc:83
+#: paper-column-engraver.cc:261
+msgid "forced break was overridden by some other event, should you be using bar checks?"
+msgstr "erzwungener Umbruch war durch anderes Ereignis aufgehoben, sollten Taktüberprüfungen vorgenommen werden?"
+
+#: lily-parser-scheme.cc:80
 #, c-format
 msgid "Changing working directory to: `%s'"
 msgstr "Aktuelles Verzeichnis wird zu »%s« geändert"
 
-#: lily-parser-scheme.cc:100
+#: lily-parser-scheme.cc:84
+#, c-format
+msgid "unable to change directory to: `%s'"
+msgstr "kann Verzeichnis nicht in »%s« ändern"
+
+#: lily-parser-scheme.cc:99
 #, c-format
 msgid "cannot find init file: `%s'"
 msgstr "Init-Datei kann nicht gefunden werden: »%s«"
 
-#: lily-parser-scheme.cc:118
+#: lily-parser-scheme.cc:117
 #, c-format
 msgid "Processing `%s'"
 msgstr "»%s« wird verarbeitet"
 
-#: lily-parser-scheme.cc:203
+#: lily-parser-scheme.cc:208
 msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr "ly:parser-parse-string ist nur mit einem neuen Parser gültig.  Anstelle dessen ly:parser-include-string benutzen."
 
+#: lily-parser-scheme.cc:239
+msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
+msgstr "ly:parse-string-expression ist nur mit einem neuen Parser gültig.  Anstelle dessen ly:parser-include-string benutzen."
+
+#: font-config-scheme.cc:167
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "Schriftartdatei konnte nicht hinzugefügt werden: %s"
+
+#: font-config-scheme.cc:169
+#, c-format
+msgid "Adding font file: %s"
+msgstr "Schriftartdatei wird hinzugefügt: %s"
+
 #: custos.cc:88
 #, c-format
 msgid "custos `%s' not found"
 msgstr "Custos »%s« nicht gefunden"
 
-#: program-option-scheme.cc:232
+#: accidental-engraver.cc:179
 #, c-format
-msgid "no such internal option: %s"
-msgstr "keine solche interne Option: %s"
+msgid "accidental typesetting list must begin with context-name: %s"
+msgstr "Versetzungszeichensatzliste muss mit Kontextnamen beginnen: %s"
+
+#: accidental-engraver.cc:209
+#, c-format
+msgid "procedure or context-name expected for accidental rule, found %s"
+msgstr "Prozedur oder Kontextname für Versetzungszeichenregel erwartet, %s gefunden"
 
 #: rest-collision.cc:146
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr "Zusammenstoß von Pausen kann nicht aufgelöst werden: Richtung von Pausen nicht gesetzt"
 
-#: rest-collision.cc:160 rest-collision.cc:275
+#: rest-collision.cc:160 rest-collision.cc:276
 msgid "too many colliding rests"
 msgstr "zu viele kollidierende Pausen"
 
-#: pdf-scheme.cc:50
-#, c-format
-msgid "Conversion of string `%s' to UTF-16be failed: %s"
-msgstr "Konversion der Zeichenkette »%s« nach UTF16be fehlgeschlagen: %s"
-
-#: episema-engraver.cc:75
-msgid "already have an episema"
-msgstr "Episema bereits vorhanden"
-
-#: episema-engraver.cc:88
-msgid "cannot find start of episema"
-msgstr "Anfang des Episema kann nicht gefunden werden"
-
-#: episema-engraver.cc:137
-msgid "unterminated episema"
-msgstr "unbegrenztes Episema"
-
-#: grob-property.cc:34
-#, c-format
-msgid "%d: %s"
-msgstr "%d: %s"
-
-#: grob-property.cc:169
-#, c-format
-msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
-msgstr "Zyklische Abhängigkeit: Laufende Verarbeitung für #'%s (%s) gefunden"
-
-#: relocate.cc:53
-#, c-format
-msgid "Setting %s to %s"
-msgstr "%s wird auf %s gesetzt"
-
-#: relocate.cc:73
-#, c-format
-msgid "no such file: %s for %s"
-msgstr "keine solche Datei: %s für %s"
-
-#: relocate.cc:83 relocate.cc:101
-#, c-format
-msgid "no such directory: %s for %s"
-msgstr "kein solches Verzeichnis: %s für %s"
-
-#: relocate.cc:93
-#, c-format
-msgid "%s=%s (prepend)\n"
-msgstr "%s=%s (voranstellen)\n"
-
-#: relocate.cc:123
-#, c-format
-msgid "not relocating, no %s/ or current/ found under %s"
-msgstr "keine Verlagerung, kein %s/ oder current/ unter %s gefunden"
-
-#: relocate.cc:134
-#, c-format
-msgid "Relocation: compile datadir=%s, new datadir=%s"
-msgstr "Verlagerung: Kompilier-Datenverzeichnis=%s, neues Datenverzeichnis=%s"
-
-#: relocate.cc:147
-#, c-format
-msgid "Relocation: framework_prefix=%s"
-msgstr "Verlagerung: framework_prefix=%s"
-
-#: relocate.cc:188
+#: pango-font.cc:205
 #, c-format
-msgid "Relocation: is absolute: argv0=%s"
-msgstr "Verlagerung: ist absolut: argv0=%s"
+msgid ""
+"Glyph has no name, but font supports glyph naming.\n"
+"Skipping glyph U+%0X, file %s"
+msgstr ""
+"Glyph hat keinen Namen, aber Zeichensatz unterstützt Glyphnamen.\n"
+"Glyph U+%0X wird übersprungen, Datei %s"
 
-#: relocate.cc:195
+#: pango-font.cc:242
 #, c-format
-msgid "Relocation: from cwd: argv0=%s"
-msgstr "Verlagerung: von cwd: argv0=%s"
+msgid "no PostScript font name for font `%s'"
+msgstr "Kein PostScript-Schriftartname für Schriftart: »%s«"
 
-#: relocate.cc:212
-#, c-format
-msgid ""
-"Relocation: from PATH=%s\n"
-"argv0=%s"
-msgstr ""
-"Verlagerung: von PATH=%s\n"
-"argv0=%s"
+#: pango-font.cc:291
+msgid "FreeType face has no PostScript font name"
+msgstr "FreeType-Schriftart hat keinen PostScript-Schriftartnamen"
 
-#: relocate.cc:239
-msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
-msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden"
+#: lyric-engraver.cc:186
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr "Textsilbe hat keine Note. \\lyricsto oder associatedVoice verwenden."
 
-#: relocate.cc:365
-#, c-format
-msgid "Relocation file: %s"
-msgstr "Verlagerungsdatei: %s"
+#: page-breaking.cc:277
+msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
+msgstr "ignoriere min-systems-per-page und max-systems-per-page weil systems-per-page definiert wurde"
 
-#: relocate.cc:371 source-file.cc:65
-#, c-format
-msgid "cannot open file: `%s'"
-msgstr "Datei kann nicht geöffnet werden: »%s«"
+#: page-breaking.cc:282
+msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
+msgstr "min-systems-per-page ist größer als max-systems-per-page, beide Werte werden ignoriert"
 
-#: relocate.cc:401
+#: paper-outputter-scheme.cc:41
 #, c-format
-msgid "Unknown relocation command %s"
-msgstr "Unbekannter Verlagerungsbefehl %s"
+msgid "Layout output to `%s'..."
+msgstr "Layout nach »%s« ausgeben..."
 
 #: gregorian-ligature-engraver.cc:70
 #, c-format
@@ -2632,48 +2853,6 @@ msgstr "»\\~« kann nicht auf erste Note der Ligatur angewendet werden"
 msgid "cannot apply `\\~' on heads with identical pitch"
 msgstr "»\\~« kann nicht auf Noten mit gleicher Tonhöhe angewendet werden"
 
-#: translator-group.cc:188
-#, c-format
-msgid "cannot find: `%s'"
-msgstr "»%s« kann nicht gefunden werden"
-
-#: phrasing-slur-engraver.cc:157
-msgid "unterminated phrasing slur"
-msgstr "nicht beendeter Phrasierungsbogen"
-
-#: phrasing-slur-engraver.cc:182
-msgid "cannot end phrasing slur"
-msgstr "Phrasierungsbogen kann nicht beendet werden"
-
-#: phrasing-slur-engraver.cc:196
-msgid "already have phrasing slur"
-msgstr "habe bereits einen Phrasierungsbogen"
-
-#: lyric-engraver.cc:186
-msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr "Textsilbe hat keine Note. \\lyricsto oder associatedVoice verwenden."
-
-#: page-breaking.cc:274
-msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
-msgstr "ignoriere min-systems-per-page und max-systems-per-page weil systems-per-page definiert wurde"
-
-#: page-breaking.cc:279
-msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
-msgstr "min-systems-per-page ist größer als max-systems-per-page, beide Werte werden ignoriert"
-
-#: performance.cc:55
-msgid "Track..."
-msgstr "Spur..."
-
-#: performance.cc:85
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "MIDI-Ausgabe nach »%s«..."
-
-#: tuplet-engraver.cc:107
-msgid "No tuplet to end"
-msgstr "Keine rhythmische Gruppe zu beenden"
-
 #: chord-tremolo-engraver.cc:88
 msgid "No tremolo to end"
 msgstr "Kein Tremolo zu beenden"
@@ -2682,6 +2861,25 @@ msgstr "Kein Tremolo zu beenden"
 msgid "unterminated chord tremolo"
 msgstr "unbegrenztes Akkord-Tremolo"
 
+#: general-scheme.cc:390
+#, c-format
+msgid "failed redirecting stderr to `%s'"
+msgstr "Konnte stderr nicht nach %s umleiten"
+
+#: general-scheme.cc:469
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr "Unendlich oder NaN in Ausgabe gefunden. Wird durch 0.0 ersetzt"
+
+#: system.cc:200
+#, c-format
+msgid "Element count %d"
+msgstr "Elementanzahl %d."
+
+#: system.cc:466
+#, c-format
+msgid "Grob count %d"
+msgstr "Anzahl der grafischen Objekte (grob): %d"
+
 #: axis-group-engraver.cc:94
 msgid "Axis_group_engraver: vertical group already has a parent"
 msgstr "Axis_group_engraver: vertikale Gruppe hat bereits einen Vater"
@@ -2703,16 +2901,16 @@ msgstr "unbekannter Clusterstil: »%s«"
 msgid "junking empty cluster"
 msgstr "Leeres Cluster wird verworfen"
 
-#: context-property.cc:42
-msgid "need symbol arguments for \\override and \\revert"
-msgstr "Symbol-Argumente für \\override und \\revert benötigt"
-
-#: source-file.cc:85
+#: grob-property.cc:35
 #, c-format
-msgid "expected to read %d characters, got %d"
-msgstr "%d Zeichen erwartet, %d erhalten"
+msgid "%d: %s"
+msgstr "%d: %s"
+
+#: rest-collision-engraver.cc:70
+msgid "rhythmic head is not part of a rhythmic column"
+msgstr "der rhythmische Kopf gehört nicht zu einer rhythmischen Kolumne"
 
-#: axis-group-interface.cc:627
+#: axis-group-interface.cc:670
 msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr "Ein Objekt außerhalb der Notenzeile sollte eine Richtung haben, Vorgabe ist »nach oben«"
 
@@ -2721,19 +2919,20 @@ msgstr "Ein Objekt außerhalb der Notenzeile sollte eine Richtung haben, Vorgabe
 msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr "Coherent_ligature_engraver: setze »spacing-increment=0.01«: ptr=%ul"
 
+#. We are completely screwed.
+#: beam-quanting.cc:853
+msgid "no viable initial configuration found: may not find good beam slope"
+msgstr "Keine funktionsfähige Anfangskonfiguration gefunden: Es kann evtl. keine optimale Balkenneigung gefunden werden"
+
 #: percent-repeat-engraver.cc:147
 msgid "unterminated percent repeat"
 msgstr "unbegrenzte Prozentwiederholung"
 
-#: note-head.cc:75
+#: note-head.cc:85
 #, c-format
 msgid "none of note heads `%s' or `%s' found"
 msgstr "Keinen der Notenköpfe »%s« und »%s« gefunden"
 
-#: relative-octave-check.cc:49
-msgid "Failed octave check, got: "
-msgstr "Oktavprüfung gescheitert, Rückgabe: "
-
 #. FIXME:
 #: script-engraver.cc:113
 msgid "do not know how to interpret articulation:"
@@ -2743,34 +2942,54 @@ msgstr "Interpretation für Artikulation unbekannt:"
 msgid " scheme encoding: "
 msgstr " Scheme-Kodierung: "
 
-#: all-font-metrics.cc:153
+#: program-option-scheme.cc:235
 #, c-format
-msgid "cannot find font: `%s'"
-msgstr "Schriftart kann nicht gefunden werden: »%s«"
+msgid "no such internal option: %s"
+msgstr "keine solche interne Option: %s"
 
 #: property-iterator.cc:93
 #, c-format
 msgid "not a grob name, `%s'"
 msgstr "Kein Name für grafische Objekte (grob): »%s«"
 
+#: all-font-metrics.cc:149
+#, c-format
+msgid "cannot find font: `%s'"
+msgstr "Schriftart kann nicht gefunden werden: »%s«"
+
+#: pdf-scheme.cc:50
+#, c-format
+msgid "Conversion of string `%s' to UTF-16be failed: %s"
+msgstr "Konversion der Zeichenkette »%s« nach UTF16be fehlgeschlagen: %s"
+
+#: rest.cc:171
+#, c-format
+msgid "rest `%s' not found"
+msgstr "Pause »%s« nicht gefunden"
+
 #: bar-check-iterator.cc:84
 #, c-format
 msgid "barcheck failed at: %s"
 msgstr "Taktüberprüfung gescheitert bei: %s"
 
-#: stem.cc:114
-msgid "weird stem size, check for narrow beams"
-msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen"
-
-#: stem.cc:652
+#: slur-engraver.cc:92 phrasing-slur-engraver.cc:91
 #, c-format
-msgid "flag `%s' not found"
-msgstr "Fähnchen »%s« nicht gefunden"
+msgid "direction of %s invalid: %d"
+msgstr "Richtung von %s ungültig: %d"
 
-#: stem.cc:668
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "Fähnchenstrich »%s« nicht gefunden"
+#: slur-engraver.cc:166
+msgid "unterminated slur"
+msgstr "unbegrenzter Legatobogen"
+
+#: slur-engraver.cc:191
+msgid "cannot end slur"
+msgstr "Legatobogen kann nicht beendet werden"
+
+#. We already have a slur, so give a warning and completely ignore
+#. the new slur.
+#: slur-engraver.cc:208
+msgid "already have slur"
+msgstr "habe bereits einen Bogen"
 
 #: global-context-scheme.cc:96 global-context-scheme.cc:114
 msgid "no music found in score"
@@ -2780,7 +2999,7 @@ msgstr "keine Musik in der Partitur gefunden"
 msgid "Interpreting music... "
 msgstr "Interpretation der Musik..."
 
-#: global-context-scheme.cc:127
+#: global-context-scheme.cc:126
 #, c-format
 msgid "elapsed time: %.2f seconds"
 msgstr "verstrichene Zeit: %.2f Sekunden"
@@ -2790,61 +3009,22 @@ msgstr "verstrichene Zeit: %.2f Sekunden"
 msgid "fatal error. Couldn't find type: %s"
 msgstr "schwerwiegender Fehler. Typ konnte nicht gefunden werden: %s"
 
-#: mensural-ligature.cc:171
-msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature: unerwarteter case-Ausgang"
-
-#: mensural-ligature.cc:233
-msgid "Mensural_ligature: (join_right == 0)"
-msgstr "Mensural_ligature: (join_right == 0)"
-
-#: page-turn-page-breaking.cc:168
-#, c-format
-msgid "page-turn-page-breaking: breaking from %d to %d"
-msgstr "Seitenwechsel-Seitenumbruch: Umbruch von %d zu %d"
-
-#: page-turn-page-breaking.cc:217
-msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
-msgstr "Erster Seitenwechsel kann nicht auf einzelne Seite gelegt werden. In Betracht zu ziehen wäre das Setzen von first-page-number auf gerade Zahl."
-
-#: page-turn-page-breaking.cc:230
-#, c-format
-msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr "Seiten- und Zeilenumbrüche werden berechnet (%d mögliche Seitenumbrüche)..."
-
-#: page-turn-page-breaking.cc:300
-#, c-format
-msgid "break starting at page %d"
-msgstr "Umbruch beginnt auf Seite %d"
-
-#: page-turn-page-breaking.cc:301
-#, c-format
-msgid "\tdemerits: %f"
-msgstr "Optimale Bewertung: %f"
-
-#: page-turn-page-breaking.cc:302
-#, c-format
-msgid "\tsystem count: %d"
-msgstr "\tSystemanzahl: %d"
+#: phrasing-slur-engraver.cc:165
+msgid "unterminated phrasing slur"
+msgstr "nicht beendeter Phrasierungsbogen"
 
-#: page-turn-page-breaking.cc:303
-#, c-format
-msgid "\tpage count: %d"
-msgstr "\tSeitenanzahl: %d"
+#: phrasing-slur-engraver.cc:190
+msgid "cannot end phrasing slur"
+msgstr "Phrasierungsbogen kann nicht beendet werden"
 
-#: page-turn-page-breaking.cc:304
-#, c-format
-msgid "\tprevious break: %d"
-msgstr "\tvorheriger Umbruch: %d"
+#: phrasing-slur-engraver.cc:204
+msgid "already have phrasing slur"
+msgstr "habe bereits einen Phrasierungsbogen"
 
-#: lily-parser.cc:105
+#: lily-parser.cc:109
 msgid "Parsing..."
 msgstr "Analysieren..."
 
-#: lily-parser.cc:133
-msgid "braces do not match"
-msgstr "Klammern passen nicht zueinander"
-
 #: score.cc:176
 msgid "already have music in score"
 msgstr "es sind bereits Noten in der Partitur"
@@ -2857,31 +3037,6 @@ msgstr "Dies sind die vorhergehenden Noten"
 msgid "errors found, ignoring music expression"
 msgstr "Fehler gefunden, musikalischer Ausdruck wird ignoriert"
 
-#: change-iterator.cc:34
-#, c-format
-msgid "cannot change `%s' to `%s'"
-msgstr "»%s« kann nicht in »%s« geändert werden"
-
-#. FIXME: constant error message.
-#: change-iterator.cc:93
-msgid "cannot find context to switch to"
-msgstr "es kann kein Kontext zum Umschalten gefunden werden"
-
-#. We could change the current translator's id, but that would make
-#. errors hard to catch.
-#.
-#. last->translator_id_string () = get_change
-#. ()->change_to_id_string ();
-#: change-iterator.cc:102
-#, c-format
-msgid "not changing to same context type: %s"
-msgstr "kein Umschalten zum gleichen Kontexttypen: %s"
-
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
-msgid "none of these in my family"
-msgstr "keiner davon befindet sich in meiner Familie"
-
 #. If there is no such symbol, we default to the numbered style.
 #. (Here really with a warning!)
 #: time-signature.cc:94
@@ -2899,36 +3054,6 @@ msgstr "Unbekannte Schnittstelle »%s«"
 msgid "Grob `%s' has no interface for property `%s'"
 msgstr "Grob »%s« hat keine Schnittstelle für Eigenschaft »%s«"
 
-#: open-type-font.cc:44
-#, c-format
-msgid "cannot allocate %lu bytes"
-msgstr "es können keine %lu Bytes angefordert werden"
-
-#: open-type-font.cc:48
-#, c-format
-msgid "cannot load font table: %s"
-msgstr "Schriftarttabelle kann nicht geladen werden: %s"
-
-#: open-type-font.cc:53
-#, c-format
-msgid "FreeType error: %s"
-msgstr "FreeType-Fehler: %s"
-
-#: open-type-font.cc:110
-#, c-format
-msgid "unsupported font format: %s"
-msgstr "nicht unterstütztes Schriftartformat: %s"
-
-#: open-type-font.cc:112
-#, c-format
-msgid "error reading font file %s: %s"
-msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s"
-
-#: open-type-font.cc:187
-#, c-format
-msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s"
-
 #: midi-stream.cc:39
 #, c-format
 msgid "cannot open for write: %s: %s"
@@ -2939,142 +3064,154 @@ msgstr "Es kann nicht zum Schreiben geöffnet werden: %s: %s"
 msgid "cannot write to file: `%s'"
 msgstr "Es kann nicht in Datei geschrieben werden: »%s«"
 
-#: parser.yy:825
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:129
+#, c-format
+msgid "Cyclic markup detected: %s"
+msgstr "Zyklische Beschriftung gefunden: %s"
+
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:142
+#, c-format
+msgid "Markup depth exceeds maximal value of %d; Markup: %s"
+msgstr "Tiefe der Beschriftung geht über maximalen Wert %d, Beschriftung: %s"
+
+#: parser.yy:162 parser.yy:176
+msgid "Too much lookahead"
+msgstr "Zu viel Vorgriff"
+
+#: parser.yy:827 parser.yy:1193 parser.yy:1226
+msgid "not a context mod"
+msgstr "kein solcher Kontextmodus"
+
+#: parser.yy:995
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "\\paper kann nicht in \\source verwendet werden; stattdessen \\layout verwenden"
 
-#: parser.yy:849
+#: parser.yy:1019
 msgid "need \\paper for paper block"
 msgstr "Für Papier-Block wird \\paper benötigt"
 
-#: parser.yy:1369
+#: parser.yy:1943
 msgid "only \\consists takes non-string argument."
 msgstr "nur \\consists versteht ein Nicht-Zeichenketten-Argument"
 
-#: parser.yy:1382
+#: parser.yy:1956
 msgid "Grob name should be alphanumeric"
 msgstr "Grob-Name sollte alphanumerisch sein"
 
-#: parser.yy:1697
-msgid "second argument must be pitch list"
-msgstr "zweites Argument muss eine Tonhöhenliste sein"
+#: parser.yy:2150
+msgid "not a rhythmic event"
+msgstr "kein rhytmisches Ereignis"
 
-#: parser.yy:1728 parser.yy:1733 parser.yy:2206
+#: parser.yy:2246 parser.yy:2251
 msgid "have to be in Lyric mode for lyrics"
 msgstr "muss in Liedtextmodus sein um Liedtext setzen zu können"
 
-#: parser.yy:1830
+#: parser.yy:2366
 msgid "expecting string as script definition"
 msgstr "Zeichenkette als Skriptdefinition erwartet"
 
-#: parser.yy:1985 parser.yy:2036
+#: parser.yy:2518 parser.yy:2569
 #, c-format
 msgid "not a duration: %d"
 msgstr "keine gültige Dauer: %d"
 
-#: parser.yy:2160
+#: parser.yy:2688
 msgid "have to be in Note mode for notes"
 msgstr "Muss im Notenmodus sein für Noten"
 
-#: parser.yy:2221
+#: parser.yy:2737
 msgid "have to be in Chord mode for chords"
 msgstr "Muss im Akkordmodus sein für Akkorde"
 
-#: lexer.ll:192
+#: parser.yy:2997
+msgid "not a markup"
+msgstr "Keine Textbeschriftung"
+
+#: lexer.ll:225
 msgid "stray UTF-8 BOM encountered"
 msgstr "verirrtes UTF-8 BOM gefunden"
 
-#: lexer.ll:196
+#: lexer.ll:228
 msgid "Skipping UTF-8 BOM"
 msgstr "UTF-8 BOM wird übersprungen"
 
-#: lexer.ll:251
+#: lexer.ll:286
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Eingabe in »%s« umbenannt"
 
-#: lexer.ll:268
+#: lexer.ll:303
 msgid "quoted string expected after \\version"
 msgstr "zitierte Zeichenkette hinter \\version erwartet"
 
-#: lexer.ll:272
+#: lexer.ll:307
 msgid "quoted string expected after \\sourcefilename"
 msgstr "zitierte Zeichenkette hinter \\sourcefilename erwartet"
 
-#: lexer.ll:276
+#: lexer.ll:311
 msgid "integer expected after \\sourcefileline"
 msgstr "Ganzzahl hinter \\sourcefilename erwartet"
 
-#: lexer.ll:289
-msgid "EOF found inside a comment"
-msgstr "EOF innerhalb eines Kommentares gefunden"
-
-#: lexer.ll:304
+#: lexer.ll:334
 msgid "\\maininput not allowed outside init files"
 msgstr "\\maininput ist außerhalb von Init-Dateien nicht erlaubt"
 
-#: lexer.ll:328
+#: lexer.ll:358
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "falscher oder ungültiger Bezeichner: »%s«"
 
+#: lexer.ll:384
+msgid "string expected after \\include"
+msgstr "Zeichenkette hinter \\include erwartet"
+
 #. backup rule
-#: lexer.ll:337
+#: lexer.ll:394
 msgid "end quote missing"
 msgstr "schließendes Anführungszeichen fehlt"
 
-#: lexer.ll:487
+#: lexer.ll:556
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr "Klammer am Ende von Liedtext gefunden. Haben Sie ein Leerzeichen vergessen?"
 
-#: lexer.ll:597
+#: lexer.ll:671
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr "Klammer am Ende des Auszugs gefunden. Haben Sie ein Leerzeichen vergessen?"
 
-#: lexer.ll:701
+#: lexer.ll:683
+msgid "EOF found inside a comment"
+msgstr "EOF innerhalb eines Kommentares gefunden"
+
+#: lexer.ll:775
 #, c-format
-msgid "invalid character: `%c'"
-msgstr "Ungültiges Zeichen: »%c«"
+msgid "invalid character: `%s'"
+msgstr "Ungültiges Zeichen: »%s«"
 
-#: lexer.ll:822 lexer.ll:823
+#: lexer.ll:868 lexer.ll:869
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "Ungültige Fluchtsequenz: »\\%s«"
 
-#: lexer.ll:932 lexer.ll:933
+#: lexer.ll:1117 lexer.ll:1118
+msgid "non-UTF-8 input"
+msgstr "nicht-UTF8-Eingabe"
+
+#: lexer.ll:1161 lexer.ll:1162
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "Datei zu alt: %s (älteste unterstützte: %s)"
 
-#: lexer.ll:933 lexer.ll:934
+#: lexer.ll:1162 lexer.ll:1163
 msgid "consider updating the input with the convert-ly script"
 msgstr "Erwägen Sie die Aktualisierung der Eingabe mit dem Skript convert-ly"
 
-#: lexer.ll:939 lexer.ll:940
+#: lexer.ll:1168 lexer.ll:1169
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "Programm zu alt: %s (Datei erfordert: %s)"
 
-#: documentation-lib.scm:59
-#, scheme-format
-msgid "Processing ~S..."
-msgstr "~S wird verarbeitet..."
-
-#: documentation-lib.scm:176
-#, scheme-format
-msgid "Writing ~S..."
-msgstr "~S wird geschrieben..."
-
-#: documentation-lib.scm:184
-#, scheme-format
-msgid "cannot find description for property `~S' (~S)"
-msgstr "Beschreibung für Eigenschaft ~S' (~S) kann nicht gefunden werden"
-
-#: documentation-lib.scm:205
-#, scheme-format
-msgid "cannot find description for property ~S (~S)"
-msgstr "Beschreibung für Eigenschaft ~S (~S) kann nicht gefunden werden"
-
 #: parser-clef.scm:141 parser-clef.scm:181
 #, scheme-format
 msgid "unknown clef type `~a'"
@@ -3100,111 +3237,109 @@ msgstr "Schnittstelle für Eigenschaft ~S kann nicht gefunden werden"
 msgid "unknown Grob interface: ~S"
 msgstr "Unbekannte Grob-Schnittstelle: ~S"
 
+#: graphviz.scm:64
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Graph »~a« wird geschrieben..."
+
+#: parser-ly-from-scheme.scm:71
+msgid "error in #{ ... #}"
+msgstr "Fehler in #{ ... #}"
+
 #: framework-eps.scm:108
 #, scheme-format
 msgid "Writing ~a..."
 msgstr "~a wird geschrieben..."
 
-#: define-music-properties.scm:21 define-grob-properties.scm:21
-#: define-context-properties.scm:31
+#: output-ps.scm:48
+msgid "Found infinity or nan in output.  Substituting 0.0"
+msgstr "Unendlich oder nan in Ausgabe gefunden. Wird durch 0.0 ersetzt"
+
+#: output-ps.scm:313 output-svg.scm:556
 #, scheme-format
-msgid "symbol ~S redefined"
-msgstr "Symbol ~S redefiniert"
+msgid "unknown line-cap-style: ~S"
+msgstr "unbekannter line-cap-style: ~S"
+
+#: output-ps.scm:318 output-svg.scm:562
+#, scheme-format
+msgid "unknown line-join-style: ~S"
+msgstr "unbekannter line-join-style: ~S"
 
-#: paper.scm:117
+#: paper.scm:120
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size: Nicht auf höchster Ebene im Gültigkeitsbereich"
 
-#: paper.scm:301
+#: paper.scm:304
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Dies ist kein \\layout {} Objekt, ~S"
 
-#: paper.scm:313
+#: paper.scm:316
 #, scheme-format
 msgid "Unknown paper size: ~a"
 msgstr "Unbekannte Papiergröße: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:328
+#: paper.scm:331
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "#(set-paper-size ..) muss innerhalb von \\paper { ... } verwendet werden"
 
-#: lily.scm:225
-msgid "Using (ice-9 curried-definitions) module\n"
-msgstr "Benutze Modul (ice-9 curried-definitions)\n"
-
-#: lily.scm:230
-msgid "Guile 1.8\n"
-msgstr "Guile 1.8\n"
-
-#: lily.scm:290
+#: backend-library.scm:27
 #, scheme-format
-msgid "cannot find: ~A"
-msgstr "~A kann nicht gefunden werden"
+msgid "Invoking `~a'..."
+msgstr "»~s« wird aufgerufen..."
 
-#: lily.scm:350
+#: backend-library.scm:31
 #, scheme-format
-msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr "falscher Typ für Argument ~a; ~a erwartet, ~s gefunden"
-
-#: lily.scm:710
-msgid "Compilation successfully completed"
-msgstr "Kompilation erfolgreich beendet"
-
-#: lily.scm:711
-msgid "Compilation completed with warnings or errors"
-msgstr "Kompilation mit Warnungen bzw. Fehlermeldungen beendet"
+msgid "`~a' failed (~a)\n"
+msgstr "»~a« gescheitert (~a)\n"
 
-#: lily.scm:773
+#: backend-library.scm:90
 #, scheme-format
-msgid "job ~a terminated with signal: ~a"
-msgstr "Auftrag ~a mit Signal ~a beendet"
+msgid "Converting to `~a'...\n"
+msgstr "Konvertierung nach »~a«...\n"
 
-#: lily.scm:776
+#. Do not try to guess the name of the png file,
+#. GS produces PNG files like BASE-page%d.png.
+#: backend-library.scm:99
 #, scheme-format
-msgid ""
-"logfile ~a (exit ~a):\n"
-"~a"
-msgstr ""
-"Logdatei ~a (Ende ~a):\n"
-"~a"
+msgid "Converting to ~a..."
+msgstr "Konvertierung nach ~a..."
 
-#: lily.scm:798 lily.scm:876
+#: backend-library.scm:137
 #, scheme-format
-msgid "failed files: ~S"
-msgstr "gescheiterte Dateien: ~S"
+msgid "Writing header field `~a' to `~a'..."
+msgstr "Kopfzeile »~a« wird nach »~a« geschrieben"
 
-#: lily.scm:867
+#: backend-library.scm:187
 #, scheme-format
-msgid "Redirecting output to ~a..."
-msgstr "Ausgabeumleitung nach ~a..."
+msgid "missing stencil expression `~S'"
+msgstr "fehlender Stencil-Ausdruck »~S«"
 
-#: lily.scm:886
+#: output-svg.scm:47
 #, scheme-format
-msgid "Invoking `~a'...\n"
-msgstr "»~a« wird aufgerufen...\n"
+msgid "undefined: ~S"
+msgstr "nicht definiert: ~S"
 
-#: graphviz.scm:64
+#: output-svg.scm:157
 #, scheme-format
-msgid "Writing graph `~a'..."
-msgstr "Graph »~a« wird geschrieben..."
+msgid "cannot decypher Pango description: ~a"
+msgstr "Pango-Beschreibung kann nicht entschlüsselt werden: ~a"
 
-#: framework-svg.scm:84
-#, scheme-format
-msgid "Updating font into: ~a"
-msgstr "Schriftart wird nach ~a aktualisiert"
+#: output-svg.scm:237
+msgid "Glyph must have a unicode value"
+msgstr "Das Zeichen muss einen Unicode-Wert haben"
 
-#: layout-beam.scm:40
+#: output-svg.scm:289 output-svg.scm:299
 #, scheme-format
-msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr "Fehler bei Balkenzuschnitt. (~S,~S) erwartet, ~S gefunden."
+msgid "cannot find SVG font ~S"
+msgstr "SVG-Schriftart ~S kann nicht gefunden werden"
 
-#: layout-beam.scm:54
+#: flag-styles.scm:151
 #, scheme-format
-msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr "Fehler bei Balkenzuschnitt. ~S 0 erwartet, ~S gefunden."
+msgid "flag stroke `~a' or `~a' not found"
+msgstr "Fähnchenstrich »~a«·or·»~a« nicht gefunden"
 
 #: modal-transforms.scm:38
 msgid "'from' pitch not in scale; ignoring"
@@ -3226,53 +3361,77 @@ msgstr "Tonhöhe \"in der Nähe\" nicht in Skala, wird ignoriert"
 msgid "pitch to be inverted not in scale; ignoring"
 msgstr "Tonhöhe, die umgekehrt wird, nicht in Skala, wird ignoriert"
 
-#: modal-transforms.scm:95
-msgid "negative replication count; ignoring"
-msgstr "negativer Replikationszähler, wird ignoriert"
+#: modal-transforms.scm:95
+msgid "negative replication count; ignoring"
+msgstr "negativer Replikationszähler, wird ignoriert"
+
+#: to-xml.scm:191
+#, scheme-format
+msgid "assertion failed: ~S"
+msgstr "Behauptung gescheitert: ~S"
+
+#: define-grob-properties.scm:21 define-context-properties.scm:31
+#: define-music-properties.scm:21
+#, scheme-format
+msgid "symbol ~S redefined"
+msgstr "Symbol ~S redefiniert"
+
+#: chord-entry.scm:52
+#, scheme-format
+msgid "Spurious garbage following chord: ~A"
+msgstr "Anscheinend sinnloser Text nach Akkord: ~A"
+
+#: lily.scm:234
+msgid "Using (ice-9 curried-definitions) module\n"
+msgstr "Benutze Modul (ice-9 curried-definitions)\n"
+
+#: lily.scm:237
+msgid "Guile 1.8\n"
+msgstr "Guile 1.8\n"
 
-#: backend-library.scm:29 ps-to-png.scm:68
+#: lily.scm:297
 #, scheme-format
-msgid "Invoking `~a'..."
-msgstr "»~s« wird aufgerufen..."
+msgid "cannot find: ~A"
+msgstr "~A kann nicht gefunden werden"
 
-#: backend-library.scm:34
-#, scheme-format
-msgid "`~a' failed (~a)"
-msgstr "»~a« gescheitert (~a)"
+#: lily.scm:701
+msgid "Success: compilation successfully completed"
+msgstr "Kompilation erfolgreich beendet"
 
-#: backend-library.scm:94
-#, scheme-format
-msgid "Converting to `~a'..."
-msgstr "Konvertierung nach »~a«..."
+#: lily.scm:702
+msgid "Compilation completed with warnings or errors"
+msgstr "Kompilation mit Warnungen bzw. Fehlermeldungen beendet"
 
-#. Do not try to guess the name of the png file,
-#. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:104
+#: lily.scm:764
 #, scheme-format
-msgid "Converting to ~a..."
-msgstr "Konvertierung nach ~a..."
+msgid "job ~a terminated with signal: ~a"
+msgstr "Auftrag ~a mit Signal ~a beendet"
 
-#: backend-library.scm:142
+#: lily.scm:767
 #, scheme-format
-msgid "Writing header field `~a' to `~a'..."
-msgstr "Kopfzeile »~a« wird nach »~a« geschrieben"
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"Logdatei ~a (Ende ~a):\n"
+"~a"
 
-#: backend-library.scm:192
+#: lily.scm:789 lily.scm:869
 #, scheme-format
-msgid "missing stencil expression `~S'"
-msgstr "fehlender Stencil-Ausdruck »~S«"
+msgid "failed files: ~S"
+msgstr "gescheiterte Dateien: ~S"
 
-#: to-xml.scm:191
+#: lily.scm:860
 #, scheme-format
-msgid "assertion failed: ~S"
-msgstr "Behauptung gescheitert: ~S"
+msgid "Redirecting output to ~a..."
+msgstr "Ausgabeumleitung nach ~a..."
 
-#: chord-entry.scm:49
+#: lily.scm:879 ps-to-png.scm:66
 #, scheme-format
-msgid "Spurious garbage following chord: ~A"
-msgstr "Anscheinend sinnloser Text nach Akkord: ~A"
+msgid "Invoking `~a'...\n"
+msgstr "»~a« wird aufgerufen...\n"
 
-#: lily-library.scm:758
+#: lily-library.scm:761
 msgid ""
 "Find the index between @var{start} and @var{end} (an integer)\n"
 "which produces the closest match to @var{target-val} if\n"
@@ -3282,131 +3441,118 @@ msgstr ""
 "die den nächstmöglichen Treffer für @var{target-val} findet,\n"
 "wenn auf die Funktion @var{getter} angewandt."
 
-#: lily-library.scm:832
+#: lily-library.scm:835
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "unbekannte Einheit: ~S"
 
-#: lily-library.scm:858 lily-library.scm:867
-msgid "warning:"
-msgstr "Warnung:"
-
 #: lily-library.scm:860
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr "keine \\version-Anweisung gefunden, ~a für zukünftige Kompatibilität hinzufügen"
 
-#: lily-library.scm:868
+#: lily-library.scm:866
 msgid "old relative compatibility not used"
 msgstr "alte relative Kompatibilität nicht verwendet"
 
-#: output-ps.scm:48
-msgid "Found infinity or nan in output.  Substituting 0.0"
-msgstr "Unendlich oder nan in Ausgabe gefunden. Wird durch 0.0 ersetzt"
-
-#: output-ps.scm:299 output-svg.scm:550
+#: framework-svg.scm:84
 #, scheme-format
-msgid "unknown line-cap-style: ~S"
-msgstr "unbekannter line-cap-style: ~S"
+msgid "Updating font into: ~a"
+msgstr "Schriftart wird nach ~a aktualisiert"
 
-#: output-ps.scm:304 output-svg.scm:556
+#: part-combiner.scm:598
 #, scheme-format
-msgid "unknown line-join-style: ~S"
-msgstr "unbekannter line-join-style: ~S"
+msgid "quoted music `~a' is empty"
+msgstr "Zitierte Noten »~a« sind leer"
 
-#: output-svg.scm:47
-#, scheme-format
-msgid "undefined: ~S"
-msgstr "nicht definiert: ~S"
+#: music-functions.scm:273
+msgid "More alternatives than repeats.  Junking excess alternatives"
+msgstr "mehr Alternativen als Wiederholungen. Überschüssige Alternativen werden verworfen"
 
-#: output-svg.scm:151
+#: music-functions.scm:302
 #, scheme-format
-msgid "cannot decypher Pango description: ~a"
-msgstr "Pango-Beschreibung kann nicht entschlüsselt werden: ~a"
+msgid "invalid tremolo repeat count: ~a"
+msgstr "ungültige Tremolo-Wiederholung: ~a"
 
-#: output-svg.scm:231
-msgid "Glyph must have a unicode value"
-msgstr "Das Zeichen muss einen Unicode-Wert haben"
+#: music-functions.scm:634
+msgid "Bad chord repetition"
+msgstr "Falsche Akkordwiederholung"
 
-#: output-svg.scm:283 output-svg.scm:293
+#: music-functions.scm:669
 #, scheme-format
-msgid "cannot find SVG font ~S"
-msgstr "SVG-Schriftart ~S kann nicht gefunden werden"
+msgid "music expected: ~S"
+msgstr "Musik erwartet: ~S"
 
-#: flag-styles.scm:148
+#: music-functions.scm:985
 #, scheme-format
-msgid "flag stroke `~a' or `~a' not found"
-msgstr "Fähnchenstrich »~a«·or·»~a« nicht gefunden"
+msgid "cannot find quoted music: `~S'"
+msgstr "zitierte Musik »~S« kann nicht gefunden werden"
 
-#: define-note-names.scm:962
-msgid "Select note names language."
-msgstr "Wählen Sie die Sprache der Notenbezeichnungen."
+#: music-functions.scm:1123
+msgid "Add @var{octave-shift} to the octave of @var{pitch}."
+msgstr "Füge @var{octave-shift} zur Oktave von @var{pitch} hinzu."
 
-#: define-note-names.scm:969
+#: music-functions.scm:1183
 #, scheme-format
-msgid "Using `~a' note names..."
-msgstr "Benutze Notenbezeichnung »~a«..."
+msgid "Unknown octaveness type: ~S "
+msgstr "Unbekannter Oktaven-Typ: »~S«"
 
-#: define-note-names.scm:972
-#, scheme-format
-msgid "Could not find language `~a'.  Ignoring."
-msgstr "Konnte Sprache »~a« nicht finden.  Wird ignoriert."
+#: music-functions.scm:1184
+msgid "Defaulting to 'any-octave."
+msgstr "Setze Standard 'any-octave"
 
-#: define-music-types.scm:747
+#: music-functions.scm:1521
 #, scheme-format
-msgid "symbol expected: ~S"
-msgstr "Symbol erwartet: ~S"
+msgid "unknown accidental style: ~S"
+msgstr "unbekannter Versetzungszeichenstil: ~S"
 
-#: define-music-types.scm:750
-#, scheme-format
-msgid "cannot find music object: ~S"
-msgstr "Musikobjekt kann nicht gefunden werden: ~S"
+#: define-event-classes.scm:80
+msgid "All classes must be the last in their matrilineal line."
+msgstr "Alle Klassen müssen die letzten in ihrer matrilinearen Linie sein"
 
-#: define-music-types.scm:769
-#, scheme-format
-msgid "unknown repeat type `~S'"
-msgstr "unbekannter Wiederholungstyp »~S«"
+#: define-event-classes.scm:84
+msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
+msgstr "Alle Klassen müssen gut-definierte Abstammungen in der existierenden Klassenhierarchie haben."
 
-#: define-music-types.scm:770
-msgid "See define-music-types.scm for supported repeats"
-msgstr "Siehe define-music-types.scm für unterstützte Wiederholungen"
+#: define-event-classes.scm:151
+#, scheme-format
+msgid "event class ~A seems to be unused"
+msgstr "Ereignisklasse ~A scheint ungenutzt zu sein"
 
-#: translation-functions.scm:350
+#. should be programming-error
+#: define-event-classes.scm:157
 #, scheme-format
-msgid "Negative fret for pitch ~a on string ~a"
-msgstr "Negativer Bund für Tonhöhe ~a auf Saite ~a"
+msgid "translator listens to nonexisting event class ~A"
+msgstr "Übersetzer hört auf fehlende Ereignisklasse ~A"
 
-#: translation-functions.scm:401
+#: markup-macros.scm:331
 #, scheme-format
-msgid "No open string for pitch ~a"
-msgstr "Keine leere Saite für Tonhöhe ~a"
+msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgstr "Falsche Anzahl an Argumenten: ~A erwartet, ~A gefunden: ~S"
 
-#: translation-functions.scm:416 translation-functions.scm:428
+#: markup-macros.scm:337
 #, scheme-format
-msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
-msgstr "Geforderte Saite für Tonhöhe erfordert negativen Bund: Saite ~a Tonhöhe ~a"
+msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
+msgstr "Ungültiges Argument an Position ~A. ~A erwartet, ~S gefunden."
 
-#: translation-functions.scm:419
-msgid "Ignoring string request and recalculating."
-msgstr "Saiten-Anforderung wird ignoriert und neu berechnet"
+#: markup-macros.scm:373
+#, scheme-format
+msgid "Not a markup command: ~A"
+msgstr "Kein Textbeschriftungsbefehl: ~A"
 
-#: translation-functions.scm:431
-msgid "Ignoring note in tablature."
-msgstr "Note in der Tabulatur wird ignoriert."
+#: define-note-names.scm:962
+msgid "Select note names language."
+msgstr "Wählen Sie die Sprache der Notenbezeichnungen."
 
-#: translation-functions.scm:454
+#: define-note-names.scm:968
 #, scheme-format
-msgid "No string for pitch ~a (given frets ~a)"
-msgstr "Keine Saite für Tonhöhe ~a (Bund ~a angegeben)"
+msgid "Using `~a' note names..."
+msgstr "Benutze Notenbezeichnung »~a«..."
 
-#: translation-functions.scm:559
+#: define-note-names.scm:971
 #, scheme-format
-msgid ""
-"No label for fret ~a (on string ~a);\n"
-"only ~a fret labels provided"
-msgstr ""
-"Keine Beschriftung für Bund ~a (auf Saite ~a);\n"
-"nur ~a Bundbeschriftung zur Verfügung"
+msgid "Could not find language `~a'.  Ignoring."
+msgstr "Konnte Sprache »~a« nicht finden.  Wird ignoriert."
 
 #: framework-ps.scm:250
 #, scheme-format
@@ -3457,121 +3603,193 @@ msgstr ""
 "\n"
 "entfernt werden\n"
 
-#: music-functions.scm:268
-msgid "More alternatives than repeats.  Junking excess alternatives"
-msgstr "mehr Alternativen als Wiederholungen. Überschüssige Alternativen werden verworfen"
-
-#: music-functions.scm:297
+#: layout-beam.scm:40
 #, scheme-format
-msgid "invalid tremolo repeat count: ~a"
-msgstr "ungültige Tremolo-Wiederholung: ~a"
+msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
+msgstr "Fehler bei Balkenzuschnitt. (~S,~S) erwartet, ~S gefunden."
 
-#: music-functions.scm:619
+#: layout-beam.scm:54
 #, scheme-format
-msgid "music expected: ~S"
-msgstr "Musik erwartet: ~S"
+msgid "Error in beam quanting.  Expected ~S 0, found ~S."
+msgstr "Fehler bei Balkenzuschnitt. ~S 0 erwartet, ~S gefunden."
 
-#. FIXME: uncomprehensable message
-#: music-functions.scm:662
+#: define-music-types.scm:752
 #, scheme-format
-msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
-msgstr "Taktüberprüfung gescheitert. bei ~a erwartet, stattdessen bei ~a"
+msgid "symbol expected: ~S"
+msgstr "Symbol erwartet: ~S"
 
-#: music-functions.scm:845
+#: define-music-types.scm:755
 #, scheme-format
-msgid "cannot find quoted music: `~S'"
-msgstr "zitierte Musik »~S« kann nicht gefunden werden"
-
-#: music-functions.scm:979
-msgid "Add @var{octave-shift} to the octave of @var{pitch}."
-msgstr "Füge @var{octave-shift} zur Oktave von @var{pitch} hinzu."
+msgid "cannot find music object: ~S"
+msgstr "Musikobjekt kann nicht gefunden werden: ~S"
 
-#: music-functions.scm:1039
+#: define-music-types.scm:774
 #, scheme-format
-msgid "Unknown octaveness type: ~S "
-msgstr "Unbekannter Oktaven-Typ: »~S«"
+msgid "unknown repeat type `~S'"
+msgstr "unbekannter Wiederholungstyp »~S«"
 
-#: music-functions.scm:1040
-msgid "Defaulting to 'any-octave."
-msgstr "Setze Standard 'any-octave"
+#: define-music-types.scm:775
+msgid "See define-music-types.scm for supported repeats"
+msgstr "Siehe define-music-types.scm für unterstützte Wiederholungen"
 
-#: music-functions.scm:1378
+#: translation-functions.scm:351
 #, scheme-format
-msgid "unknown accidental style: ~S"
-msgstr "unbekannter Versetzungszeichenstil: ~S"
-
-#: define-event-classes.scm:79
-msgid "All classes must be the last in their matrilineal line."
-msgstr "Alle Klassen müssen die letzten in ihrer matrilinearen Linie sein"
-
-#: define-event-classes.scm:83
-msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
-msgstr "Alle Klassen müssen gut-definierte Abstammungen in der existierenden Klassenhierarchie haben."
+msgid "Negative fret for pitch ~a on string ~a"
+msgstr "Negativer Bund für Tonhöhe ~a auf Saite ~a"
 
-#: define-event-classes.scm:149
+#: translation-functions.scm:402
 #, scheme-format
-msgid "event class ~A seems to be unused"
-msgstr "Ereignisklasse ~A scheint ungenutzt zu sein"
+msgid "No open string for pitch ~a"
+msgstr "Keine leere Saite für Tonhöhe ~a"
 
-#. should be programming-error
-#: define-event-classes.scm:155
+#: translation-functions.scm:417 translation-functions.scm:429
 #, scheme-format
-msgid "translator listens to nonexisting event class ~A"
-msgstr "Übersetzer hört auf fehlende Ereignisklasse ~A"
+msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
+msgstr "Geforderte Saite für Tonhöhe erfordert negativen Bund: Saite ~a Tonhöhe ~a"
 
-#: markup.scm:223
-#, scheme-format
-msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
-msgstr "Falsche Anzahl an Argumenten: ~A erwartet, ~A gefunden: ~S"
+#: translation-functions.scm:420
+msgid "Ignoring string request and recalculating."
+msgstr "Saiten-Anforderung wird ignoriert und neu berechnet"
 
-#: markup.scm:229
+#: translation-functions.scm:432
+msgid "Ignoring note in tablature."
+msgstr "Note in der Tabulatur wird ignoriert."
+
+#: translation-functions.scm:455
 #, scheme-format
-msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
-msgstr "Ungültiges Argument an Position ~A. ~A erwartet, ~S gefunden."
+msgid "No string for pitch ~a (given frets ~a)"
+msgstr "Keine Saite für Tonhöhe ~a (Bund ~a angegeben)"
 
-#: markup.scm:292
+#: translation-functions.scm:560
 #, scheme-format
-msgid "Not a markup command: ~A"
-msgstr "Kein Textbeschriftungsbefehl: ~A"
+msgid ""
+"No label for fret ~a (on string ~a);\n"
+"only ~a fret labels provided"
+msgstr ""
+"Keine Beschriftung für Bund ~a (auf Saite ~a);\n"
+"nur ~a Bundbeschriftung zur Verfügung"
 
-#: ps-to-png.scm:74
+#: ps-to-png.scm:70
 #, scheme-format
 msgid "~a exited with status: ~S"
 msgstr "~a mit Rückgabewert ~S beendet"
 
-#: define-markup-commands.scm:883
+#: define-markup-commands.scm:887
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr "keine Systeme in \\score-Markup gefunden, hat es einen \\layout-Block?"
 
-#: define-markup-commands.scm:2561
+#: define-markup-commands.scm:2614
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "Kann kein Zeichen ~a finden"
 
-#: define-markup-commands.scm:2987
+#: define-markup-commands.scm:3040
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "Keine Klammer in Größe ~S pt gefunden"
 
-#: define-markup-commands.scm:2988
+#: define-markup-commands.scm:3041
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr "Setze Standard ~S pt"
 
-#: define-markup-commands.scm:3141
+#: define-markup-commands.scm:3194
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "keine gültige Dauer: ~a"
 
-#: ly-syntax-constructors.scm:51
-msgid "Music head function must return Music object"
-msgstr "Musikkopf-Funktion muss Musikobjekt zurückliefern."
+#: documentation-lib.scm:59
+#, scheme-format
+msgid "Processing ~S..."
+msgstr "~S wird verarbeitet..."
+
+#: documentation-lib.scm:176
+#, scheme-format
+msgid "Writing ~S..."
+msgstr "~S wird geschrieben..."
+
+#: documentation-lib.scm:188
+#, scheme-format
+msgid "cannot find description for property `~S' (~S)"
+msgstr "Beschreibung für Eigenschaft ~S' (~S) kann nicht gefunden werden"
+
+#: documentation-lib.scm:209
+#, scheme-format
+msgid "cannot find description for property ~S (~S)"
+msgstr "Beschreibung für Eigenschaft ~S (~S) kann nicht gefunden werden"
+
+#: ly-syntax-constructors.scm:65
+#, scheme-format
+msgid "~a function cannot return ~a"
+msgstr "~a-Funktion kann nicht ~a ausgeben"
+
+#: ly-syntax-constructors.scm:74
+#, scheme-format
+msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
+msgstr "falscher Typ für Argument ~a; ~a erwartet, ~s gefunden"
 
-#: ly-syntax-constructors.scm:177
+#: ly-syntax-constructors.scm:187
 #, scheme-format
 msgid "Invalid property operation ~a"
 msgstr "Ungültige Eigenschaftsoperation ~a"
 
+#~ msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
+#~ msgstr "setbeatGrouping. Benutze baseMoment und beatStructure.\n"
+
+#~ msgid "success: %s"
+#~ msgstr "Erfolg: %s"
+
+#~ msgid "Infinity or NaN encountered"
+#~ msgstr "Unendlichkeit oder NaN angetroffen"
+
+#~ msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
+#~ msgstr "Vaticana_ligature: nichts zusammengefügt (delta_pitch == 0)"
+
+#~ msgid "No spring between column %d and next one"
+#~ msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger"
+
+#~ msgid "Sending non-event to context"
+#~ msgstr "Nicht-Ereignis wird an Kontext gesendet"
+
+#~ msgid "Invalid CreateContext event: Cannot create %s context"
+#~ msgstr "Ungültiges CreateContext-Ereignis: Kontext %s kann nicht erzeugt werden"
+
+#~ msgid "infinity or NaN encountered while converting Real number"
+#~ msgstr "Unendlichkeit oder NaN bei Umwandlung einer Realen Zahl gefunden"
+
+#~ msgid "setting to zero"
+#~ msgstr "auf Null gesetzt"
+
+#~ msgid "No spacing entry from %s to `%s'"
+#~ msgstr "Kein Abstandeintrag von %s nach »%s«"
+
+#~ msgid "error at EOF: %s"
+#~ msgstr "Fehler am Dateiende (EOF): %s"
+
+#~ msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
+#~ msgstr "Zyklische Abhängigkeit: Laufende Verarbeitung für #'%s (%s) gefunden"
+
+#~ msgid "Mensural_ligature: unexpected case fall-through"
+#~ msgstr "Mensural_ligature: unerwarteter case-Ausgang"
+
+#~ msgid "Mensural_ligature: (join_right == 0)"
+#~ msgstr "Mensural_ligature: (join_right == 0)"
+
+#~ msgid "braces do not match"
+#~ msgstr "Klammern passen nicht zueinander"
+
+#~ msgid "second argument must be pitch list"
+#~ msgstr "zweites Argument muss eine Tonhöhenliste sein"
+
+#~ msgid "warning:"
+#~ msgstr "Warnung:"
+
+#~ msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
+#~ msgstr "Taktüberprüfung gescheitert. bei ~a erwartet, stattdessen bei ~a"
+
+#~ msgid "Music head function must return Music object"
+#~ msgstr "Musikkopf-Funktion muss Musikobjekt zurückliefern."
+
 #~ msgid "vertical spacing has been changed; minimum-Y-extent is obsolete.\n"
 #~ msgstr "vertikale Abstände wurden geändert; minimum-Y-extent ist obsolet.\n"
 
@@ -3584,9 +3802,6 @@ msgstr "Ungültige Eigenschaftsoperation ~a"
 #~ msgid "Tuplet brackets displaying both note durations are not implemented, using default"
 #~ msgstr "N-tolen-Klammern, die beide Notendauern darstellen, sind nicht implementiert, benutze Standard"
 
-#~ msgid "run executable PROG instead of latex"
-#~ msgstr "benutze ausführbare Datei PROG anstelle von latex"
-
 #~ msgid "Encountered file created by Noteworthy Composer's nwc2xml, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
 #~ msgstr "Die Datei wurde von Noteworthy·Composer's·nwc2xml erstellt und enthält falsche Balkeninformation. Alle Balkeninformation in der MusicXML-Datei wird ignoriert"
 
@@ -3761,9 +3976,6 @@ msgstr "Ungültige Eigenschaftsoperation ~a"
 #~ msgid "can't find: `%s'"
 #~ msgstr "»%s« kann nicht gefunden werden"
 
-#~ msgid "junking event: `%s'"
-#~ msgstr "Ereignis wird ignoriert: »%s«"
-
 #~ msgid "no one to print a repeat brace"
 #~ msgstr "niemand zur Erzeugung einer Wiederholung"
 
@@ -3937,9 +4149,6 @@ msgstr "Ungültige Eigenschaftsoperation ~a"
 #~ msgid "only pre-process"
 #~ msgstr "nur vorverarbeiten"
 
-#~ msgid "no such context: %s"
-#~ msgstr "kein solcher Kontext: %s"
-
 #~ msgid "Processing `%s'..."
 #~ msgstr "Verarbeite `%s'..."
 
index 3b691a4eaa3af8e58ee3b7fb5f0510b7daa3a71b..90a981abbd2d1529fdaf5054427b7830a8e9a289 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -1,19 +1,19 @@
-# translation of lilypond-2.15.9.po to Español
+# translation of lilypond-2.15.29.po to Español
 # Spanish translation of GNU Lilypond - http://lilypond.org
-# Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 #
 # This file is distributed under the same license as the lilypond package.
 #
 # Quique <quique@sindominio.net>, 2002, 2004.
 # Daniel Tonda <daniel dot tonda (at) gmail dot com>, 2006.
-# Francisco Vila <francisco.vila@hispalinux.es>, 2007, 2008, 2009, 2010, 2011.
+# Francisco Vila <francisco.vila@hispalinux.es>, 2007, 2008, 2009, 2010, 2011, 2012.
 # This file is distributed under the same license as the lilypond package.
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond-2.15.9\n"
+"Project-Id-Version: lilypond-2.15.29\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2011-08-02 19:43+0200\n"
-"PO-Revision-Date: 2011-08-11 17:38+0200\n"
+"POT-Creation-Date: 2012-02-04 15:42+0100\n"
+"PO-Revision-Date: 2012-02-09 17:29+0100\n"
 "Last-Translator: Francisco Vila <francisco.vila@hispalinux.es>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "Language: es\n"
@@ -38,49 +38,72 @@ msgstr "Se ha extraído %s"
 msgid "Writing fonts to %s"
 msgstr "Escribiendo las tipografías en %s"
 
-#: book_snippets.py:519
+#: book_snippets.py:409
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "se ha usado una ly-option obsoleta: %s=%s"
 
-#: book_snippets.py:521
+#: book_snippets.py:411
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "traducción en modo de compatibilidad: %s=%s"
 
-#: book_snippets.py:524
+#: book_snippets.py:414
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "se usó una ly-option obsoleta: %s"
 
-#: book_snippets.py:526
+#: book_snippets.py:416
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "traducción en modo compatible: %s"
 
-#: book_snippets.py:544
+#: book_snippets.py:533
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "opción ly desconocida e ignorada: %s"
 
-#: book_snippets.py:736
+#: book_snippets.py:741
 #, python-format
-msgid "Opening filter `%s'\n"
-msgstr "Abriendo el filtro «%s»\n"
+msgid "Running through filter `%s'"
+msgstr "Ejecutando a través del filtro «%s»"
 
-#: book_snippets.py:756
+#: book_snippets.py:761
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "«%s» ha fallado (%d)"
 
-#: book_snippets.py:757
+#: book_snippets.py:762
 msgid "The error log is as follows:"
 msgstr "El registro de errores es como sigue:"
 
+#: book_snippets.py:882
+#, python-format
+msgid "Converting MusicXML file `%s'...\n"
+msgstr "Conviertiendo archivo MusicXML «%s»...\n"
+
+#: book_snippets.py:909
+#, python-format
+msgid ""
+"%s: duplicate filename but different contents of original file,\n"
+"printing diff against existing file."
+msgstr ""
+"%s: nombre duplicado pero contenido diferente del archivo original,\n"
+"se imprime la diferencia respecto al archivo existente."
+
+#: book_snippets.py:922
+#, python-format
+msgid ""
+"%s: duplicate filename but different contents of converted lilypond file,\n"
+"printing diff against existing file."
+msgstr ""
+"%s: nombre duplicado pero contenido diferente del archivo convertido de lilypond,\n"
+"se imprime la diferencia respecto al archivo existente."
+
 #: convertrules.py:12
 #, python-format
-msgid "Not smart enough to convert %s"
-msgstr "No soy tan listo como para convertir %s"
+msgid "Not smart enough to convert %s."
+msgstr "No soy tan listo como para convertir %s."
 
 #: convertrules.py:13
 msgid "Please refer to the manual for details, and update manually."
@@ -91,112 +114,115 @@ msgstr "Consulte el manual para ver los detalles, y efectúe una actualización
 msgid "%s has been replaced by %s"
 msgstr "%s se ha sustituido por %s"
 
-#: convertrules.py:24 lilylib.py:85 musicexp.py:17 convert-ly.py:64 warn.cc:66
-#: input.cc:108
+#: convertrules.py:24 lilylib.py:131 warn.cc:223
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "advertencia: %s"
 
-#: convertrules.py:49 convertrules.py:99
+#: convertrules.py:49 convertrules.py:94
 msgid "\\header { key = concat + with + operator }"
 msgstr "\\header { clave = concatenar + con + este + operador}"
 
-#: convertrules.py:58
+#: convertrules.py:56
 #, python-format
 msgid "deprecated %s"
 msgstr "%s en desuso"
 
-#: convertrules.py:70
+#: convertrules.py:65
 msgid "deprecated \\textstyle, new \\key syntax"
 msgstr "\\textstyle en desuso, sintaxis nueva para \\key"
 
-#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084
-#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862
-#: convertrules.py:3206
+#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031
+#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800
+#: convertrules.py:3150
 msgid "bump version for release"
 msgstr "actualizar la versión para el lanzamiento"
 
-#: convertrules.py:103
+#: convertrules.py:97
 msgid "new \\header format"
 msgstr "formato nuevo de \\header"
 
-#: convertrules.py:132
+#: convertrules.py:124
 msgid "\\translator syntax"
 msgstr "sintaxis de \\translator"
 
-#: convertrules.py:184
+#: convertrules.py:175
 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
 msgstr "\\repeat NÚMERO Alternativa de Música -> \\repeat FOLDSTR Alternativa de Música"
 
-#: convertrules.py:216 convertrules.py:699 convertrules.py:1383
-#: convertrules.py:2378
+#: convertrules.py:205 convertrules.py:678 convertrules.py:1350
+#: convertrules.py:2317
 #, python-format
 msgid "deprecate %s"
 msgstr "%s en desuso"
 
-#: convertrules.py:290
+#: convertrules.py:279
 #, python-format
 msgid "deprecate %s "
 msgstr "%s en desuso "
 
-#: convertrules.py:319
+#: convertrules.py:305
 msgid "new \\notenames format"
 msgstr "formato nuevo de \\notenames"
 
-#: convertrules.py:337
+#: convertrules.py:321
 msgid "new tremolo format"
 msgstr "formato nuevo de tremolo"
 
-#: convertrules.py:342
+#: convertrules.py:325
 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
 msgstr "Staff_margin_engraver en desuso, utilice Instrument_name_engraver"
 
-#: convertrules.py:395
-msgid "change property definiton case (eg. onevoice -> oneVoice)"
+#: convertrules.py:376
+msgid "change property definition case (eg. onevoice -> oneVoice)"
 msgstr "cambiar las mayúsculas de la definición de propiedad (p.ej. onevoice -> oneVoice)"
 
-#: convertrules.py:457
+#: convertrules.py:437
 msgid "new \\textscript markup text"
 msgstr "nuevo texto de marcado \\textscript"
 
-#: convertrules.py:530
+#: convertrules.py:509
 #, python-format
 msgid "identifier names: %s"
 msgstr "nombres de identificador: %s"
 
-#: convertrules.py:569
+#: convertrules.py:548
 msgid "point-and-click argument changed to procedure."
 msgstr "argumento de apuntar-y-pulsar cambiado a procedimiento."
 
-#: convertrules.py:611
+#: convertrules.py:590
 msgid "semicolons removed"
 msgstr "retirado el punto y coma"
 
 #. 40 ?
-#: convertrules.py:654
+#: convertrules.py:633
 #, python-format
 msgid "%s property names"
 msgstr "nombres de propiedad %s"
 
-#: convertrules.py:724
+#: convertrules.py:703
 msgid "automaticMelismata turned on by default"
 msgstr "automaticMelismata activado por omisión"
 
-#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942
-#: convertrules.py:2189
+#: convertrules.py:708
+msgid "automaticMelismata is turned on by default since 1.5.67."
+msgstr "automaticMelismata activado por omisión desde 1.5.67."
+
+#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889
+#: convertrules.py:2134
 #, python-format
 msgid "remove %s"
 msgstr "suprimir %s"
 
-#: convertrules.py:1001 convertrules.py:1005
+#: convertrules.py:977 convertrules.py:980
 msgid "cluster syntax"
 msgstr "sintaxis de los racimos (clusters)"
 
-#: convertrules.py:1014
+#: convertrules.py:987
 msgid "new Pedal style syntax"
 msgstr "sintaxis nueva de estilo de Pedal"
 
-#: convertrules.py:1273
+#: convertrules.py:1246
 msgid ""
 "New relative mode,\n"
 "Postfix articulations, new text markup syntax, new chord syntax."
@@ -204,28 +230,28 @@ msgstr ""
 "Nuevo modo relativo,\n"
 "articulaciones posfijas, sintaxis de marcado de texto nueva, sintaxis de acordes nueva."
 
-#: convertrules.py:1286
+#: convertrules.py:1259
 msgid "Remove - before articulation"
 msgstr "Quitar el guión antes de la articulación"
 
-#: convertrules.py:1324
+#: convertrules.py:1294
 #, python-format
 msgid "%s misspelling"
 msgstr "fallo de escritura en %s"
 
-#: convertrules.py:1346
+#: convertrules.py:1313
 msgid "Swap < > and << >>"
 msgstr "Intercambiar < > y << >>"
 
-#: convertrules.py:1349
+#: convertrules.py:1316
 msgid "attempting automatic \\figures conversion.  Check results!"
 msgstr "intento de conversión automática de \\figures. ¡Compruebe el resultado!"
 
-#: convertrules.py:1400
+#: convertrules.py:1362
 msgid "Use Scheme code to construct arbitrary note events."
 msgstr "Usar código de Scheme para construir eventos arbitrarios de nota."
 
-#: convertrules.py:1407
+#: convertrules.py:1369
 msgid ""
 "use symbolic constants for alterations,\n"
 "remove \\outputproperty, move ly:verbose into ly:get-option"
@@ -233,7 +259,7 @@ msgstr ""
 "usar constantes simbólicas para las alteraciones,\n"
 "eliminar \\outputproperty, cambiar ly:verbose por ly:get-option"
 
-#: convertrules.py:1432
+#: convertrules.py:1394
 #, python-format
 msgid ""
 "\\outputproperty found,\n"
@@ -250,7 +276,7 @@ msgstr ""
 "\n"
 "como texto de sustitución."
 
-#: convertrules.py:1446
+#: convertrules.py:1406
 msgid ""
 "The alteration field of Scheme pitches was multiplied by 2\n"
 "to support quarter tone accidentals.  You must update the following constructs manually:\n"
@@ -264,15 +290,15 @@ msgstr ""
 "* llamadas a ly:make-pitch y a ly:pitch-alteration\n"
 "* ajustes de keySignature hechos con \\property\n"
 
-#: convertrules.py:1493
+#: convertrules.py:1449
 msgid "removal of automaticMelismata; use melismaBusyProperties instead."
 msgstr "eliminación de automaticMelismata; utilice en su lugar melismaBusyProperties."
 
-#: convertrules.py:1600
+#: convertrules.py:1556
 msgid "\\partcombine syntax change to \\newpartcombine"
 msgstr "cambio en la sintaxis de \\partcombine a \\newpartcombine"
 
-#: convertrules.py:1628
+#: convertrules.py:1581
 msgid ""
 "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
 "Harmonic notes. Thread context removed. Lyrics context removed."
@@ -280,11 +306,11 @@ msgstr ""
 "Cambios en la notación de percusión, eliminación de \\chordmodifiers y \\notenames.\n"
 "Notas armónicas. Eliminado el contexto Thread. Eliminado el contexto Lyrics."
 
-#: convertrules.py:1632
+#: convertrules.py:1585
 msgid "Drums found. Enclose drum notes in \\drummode"
 msgstr "Se han encontrado percusiones. Encierre las notas de percusión dentro de \\drummode"
 
-#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661
+#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614
 #, python-format
 msgid ""
 "\n"
@@ -293,32 +319,33 @@ msgstr ""
 "\n"
 "se han encontrado %s. ¡Compruebe el archivo a mano!\n"
 
-#: convertrules.py:1643
+#: convertrules.py:1596
 msgid "Drum notation"
 msgstr "Notación de percusión"
 
-#: convertrules.py:1702
+#: convertrules.py:1655
 msgid "new syntax for property settings:"
 msgstr "sintaxis nueva para los ajustes de propiedades:"
 
-#: convertrules.py:1728
+#: convertrules.py:1681
 msgid "Property setting syntax in \\translator{ }"
 msgstr "sintaxis para el establecimiento de propiedades en \\translator{ }"
 
-#: convertrules.py:1767
+#: convertrules.py:1720
 msgid "Scheme grob function renaming"
 msgstr "renombrado de la función de grob de Scheme"
 
-#: convertrules.py:1780
+#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142
+#: convertrules.py:2708
 #, python-format
-msgid "use %s"
-msgstr "utilice %s"
+msgid "Use %s\n"
+msgstr "Utilice %s\n"
 
-#: convertrules.py:1797
+#: convertrules.py:1747
 msgid "More Scheme function renaming"
 msgstr "Más renombrado de funciones de Scheme"
 
-#: convertrules.py:1924
+#: convertrules.py:1871
 msgid ""
 "Page layout has been changed, using paper size and margins.\n"
 "textheight is no longer used.\n"
@@ -326,7 +353,7 @@ msgstr ""
 "La disposición de la página se ha cambiado, utilizando tamaño de página y márgenes.\n"
 "textheight ya no se utiliza.\n"
 
-#: convertrules.py:2010
+#: convertrules.py:1957
 msgid ""
 "\\foo -> \\foomode (for chords, notes, etc.)\n"
 "fold \\new FooContext \\foomode into \\foo."
@@ -334,7 +361,7 @@ msgstr ""
 "\\loquesea -> \\loqueseamode (para acordes, notas, etc.)\n"
 "plegar \\new LoqueseaContext \\loqueseamode en \\loquesea."
 
-#: convertrules.py:2048
+#: convertrules.py:1995
 msgid ""
 "staff size should be changed at top-level\n"
 "with\n"
@@ -348,40 +375,40 @@ msgstr ""
 "  #(set-global-staff-size <ALTURA-DEL-PENTAGRAMA-EN-PUNTOS>)\n"
 "\n"
 
-#: convertrules.py:2068
+#: convertrules.py:2015
 msgid "regularize other identifiers"
 msgstr "regularizar otros identificadores"
 
-#: convertrules.py:2136
+#: convertrules.py:2083
 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
 msgstr "\\encoding: recodificación inteligente de latin1 a utf-8. Eliminación de ly:point-and-click"
 
-#: convertrules.py:2149
+#: convertrules.py:2094
 msgid "LilyPond source must be UTF-8"
 msgstr "El código de entrada de LilyPond debe ser UTF-8"
 
-#: convertrules.py:2152
+#: convertrules.py:2097
 msgid "Try the texstrings backend"
 msgstr "Pruebe con el 'backend' texstrings"
 
-#: convertrules.py:2155
+#: convertrules.py:2100
 #, python-format
 msgid "Do something like: %s"
 msgstr "Haga algo parecido a %s"
 
-#: convertrules.py:2158
+#: convertrules.py:2103
 msgid "Or save as UTF-8 in your editor"
 msgstr "O guarde como UTF-8 en su editor"
 
-#: convertrules.py:2212
+#: convertrules.py:2153
 msgid "warn about auto beam settings"
 msgstr "advertir acerca de los ajustes de barrado automático"
 
-#: convertrules.py:2217
+#: convertrules.py:2157
 msgid "auto beam settings"
 msgstr "ajustes de barrado automático"
 
-#: convertrules.py:2219
+#: convertrules.py:2158
 msgid ""
 "\n"
 "Auto beam settings must now specify each interesting moment in a measure\n"
@@ -392,39 +419,39 @@ msgstr ""
 "momentos interesantes de un compás explícitamente; 1/4 ya no se multiplica \n"
 "para que cubra también los momentos 1/2 y 3/4.\n"
 
-#: convertrules.py:2333
+#: convertrules.py:2271
 msgid "verticalAlignmentChildCallback has been deprecated"
 msgstr "verticalAlignmentChildCallback ha caído en desuso"
 
-#: convertrules.py:2337
+#: convertrules.py:2276
 msgid "Remove callbacks property, deprecate XY-extent-callback."
 msgstr "Eliminar la propiedad de «callbacks», despreciar XY-extent-callback."
 
-#: convertrules.py:2358
+#: convertrules.py:2297
 msgid "Use grob closures iso. XY-offset-callbacks."
 msgstr "Utilizar cerraduras de grob en lugar de XY-offset-callbacks."
 
-#: convertrules.py:2420
+#: convertrules.py:2359
 msgid "foobar -> foo-bar for \\paper, \\layout"
 msgstr "fulanomengano -> fulano-mengano para \\paper, \\layout"
 
-#: convertrules.py:2530
+#: convertrules.py:2469
 msgid "deprecate \\tempo in \\midi"
 msgstr "despreciar \\tempo dentro de \\midi"
 
-#: convertrules.py:2583
+#: convertrules.py:2522
 msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
 msgstr "despreciar cautionary-style. Utilizar las propiedades AccidentalCautionary"
 
-#: convertrules.py:2596
+#: convertrules.py:2535
 msgid "Rename accidental glyphs, use glyph-name-alist."
 msgstr "Renombrar los glifos de las alteraciones accidentales, usar glyph-name-alist."
 
-#: convertrules.py:2651
-msgid "edge-text settings for TextSpanner."
-msgstr "ajustes de edge-text para TextSpanner."
+#: convertrules.py:2590
+msgid "edge-text settings for TextSpanner"
+msgstr "ajustes de edge-text para TextSpanner"
 
-#: convertrules.py:2652
+#: convertrules.py:2591
 #, python-format
 msgid ""
 "Use\n"
@@ -435,35 +462,35 @@ msgstr ""
 "\n"
 "%s"
 
-#: convertrules.py:2685
+#: convertrules.py:2624
 msgid "Use the `alignment-offsets' sub-property of\n"
 msgstr "Utilice la sub-propiedad «alignment-offsets» de\n"
 
-#: convertrules.py:2686
+#: convertrules.py:2625
 msgid "NonMusicalPaperColumn #'line-break-system-details\n"
 msgstr "NonMusicalPaperColumn #'line-break-system-details\n"
 
-#: convertrules.py:2687
+#: convertrules.py:2626
 msgid "to set fixed distances between staves.\n"
 msgstr "para establecer distancias fijas entre pautas.\n"
 
-#: convertrules.py:2699
+#: convertrules.py:2638
 msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
 msgstr "Usar #'style en lugar de #'dash-fraction para elegir entre líneas continuas e intermitentes."
 
-#: convertrules.py:2705
-msgid "all settings related to dashed lines.\n"
-msgstr "todos los ajustes relacionados con líneas intermitentes.\n"
+#: convertrules.py:2644
+msgid "all settings related to dashed lines"
+msgstr "todos los ajustes relacionados con líneas intermitentes"
 
-#: convertrules.py:2706
+#: convertrules.py:2645
 msgid "Use \\override ... #'style = #'line for solid lines and\n"
 msgstr "Usar \\override ... #'style = #'line para las líneas continuas y\n"
 
-#: convertrules.py:2707
+#: convertrules.py:2646
 msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
 msgstr "\t\\override ... #'style = #'dashed-line para líneas intermintentes."
 
-#: convertrules.py:2743
+#: convertrules.py:2682
 msgid ""
 "metronomeMarkFormatter uses text markup as second argument,\n"
 "fret diagram properties moved to fret-diagram-details."
@@ -471,11 +498,11 @@ msgstr ""
 "metronomeMarkFormatter utiliza marcas de texto como segundo argumento,\n"
 "propiedades de diagramas de trastes trasladadas a fret-diagram-details."
 
-#: convertrules.py:2748
+#: convertrules.py:2688
 msgid "metronomeMarkFormatter got an additional text argument.\n"
 msgstr "metronomeMarkFormatter ha tomado un argumento adicional de texto.\n"
 
-#: convertrules.py:2749
+#: convertrules.py:2689
 #, python-format
 msgid ""
 "The function assigned to Score.metronomeMarkFunction now uses the signature\n"
@@ -484,43 +511,48 @@ msgstr ""
 "La función asignada a Score.metronomeMarkFunction usa ahora la indicación\n"
 "%s"
 
-#: convertrules.py:2812
-msgid "\\put-adjacent argument order.\n"
-msgstr "orden de argumentos de \\put-adjacent.\n"
+#: convertrules.py:2707
+#, python-format
+msgid "%s in fret-diagram properties"
+msgstr "%s en las propiedades de fret-diagram"
+
+#: convertrules.py:2751
+msgid "\\put-adjacent argument order"
+msgstr "orden de argumentos de \\put-adjacent"
 
-#: convertrules.py:2813
+#: convertrules.py:2752
 msgid "Axis and direction now come before markups:\n"
 msgstr "El eje y la dirección ahora van antes de los marcados:\n"
 
-#: convertrules.py:2814
+#: convertrules.py:2753
 msgid "\\put-adjacent axis dir markup markup."
 msgstr "\\put-adjacent eje dirección marcado marcado."
 
-#: convertrules.py:2845
-msgid "re-definition of InnerStaffGroup.\n"
-msgstr "redefinición de InnerStaffGroup.\n"
+#: convertrules.py:2784
+msgid "re-definition of InnerStaffGroup"
+msgstr "redefinición de InnerStaffGroup"
 
-#: convertrules.py:2851
-msgid "re-definition of InnerChoirStaff.\n"
-msgstr "redefinición de InnerChoirStaff.\n"
+#: convertrules.py:2789
+msgid "re-definition of InnerChoirStaff"
+msgstr "redefinición de InnerChoirStaff"
 
-#: convertrules.py:2861
+#: convertrules.py:2799
 msgid "Syntax changes for \\addChordShape and \\chord-shape"
 msgstr "Cambios sintácticos para \\addChordShape y \\chord-shape"
 
-#: convertrules.py:2866
+#: convertrules.py:2804
 msgid "stringTuning must be added to addChordShape call.\n"
 msgstr "stringTuning se debe añadir a la llamada a addChordShape.\n"
 
-#: convertrules.py:2872
+#: convertrules.py:2809
 msgid "stringTuning must be added to chord-shape call.\n"
 msgstr "stringTuning se debe añadir a la llamada a chord-shape.\n"
 
-#: convertrules.py:2879
+#: convertrules.py:2815
 msgid "Remove oldaddlyrics"
 msgstr "Eliminar oldaddlyrics"
 
-#: convertrules.py:2883
+#: convertrules.py:2819
 msgid ""
 "oldaddlyrics is no longer supported. \n"
 "         Use addlyrics or lyrsicsto instead.\n"
@@ -528,7 +560,7 @@ msgstr ""
 "oldaddlyrics ya no está contemplado. \n"
 "         Utilice en su lugar addlyrics o lyrsicsto.\n"
 
-#: convertrules.py:2889
+#: convertrules.py:2825
 msgid ""
 "keySignature property not reversed any more\n"
 "MIDI 47: orchestral strings -> orchestral harp"
@@ -536,11 +568,11 @@ msgstr ""
 "la propiedad keySignature ya no se revierte\n"
 "MIDI 47: orchestral strings -> orchestral harp"
 
-#: convertrules.py:2894
+#: convertrules.py:2830
 msgid "The alist for Staff.keySignature is no longer in reversed order.\n"
 msgstr "La lista-A de Staff.keySignature ya no está en orden inverso.\n"
 
-#: convertrules.py:2900
+#: convertrules.py:2836
 msgid ""
 "\\bar \".\" now produces a thick barline\n"
 "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
@@ -551,17 +583,17 @@ msgstr ""
 "Los parámetros de discontinuidad para las ligaduras\n"
 "de expresión y de unión ahora están en dash-definition"
 
-#: convertrules.py:2906
+#: convertrules.py:2842
 msgid "\\bar \".\" now produces a thick barline.\n"
 msgstr "\\bar \".\" ahora produce una línea divisoria gruesa.\n"
 
-#: convertrules.py:2912
+#: convertrules.py:2848
 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n"
 msgstr ""
 "Los parámetros de discontinuidad para las ligaduras\n"
 "de expresión y de unión ahora están en 'dash-details.\n"
 
-#: convertrules.py:2917
+#: convertrules.py:2853
 msgid ""
 "Autobeaming rules have changed.  override-auto-beam-setting and\n"
 "revert-auto-beam-setting have been eliminated.\n"
@@ -588,40 +620,30 @@ msgstr ""
 "`Piano centered dynamics'\n"
 "por el nuevo contexto `Dynamics'."
 
-#: convertrules.py:2931
-msgid ""
-"override-auto-beam-setting.\n"
-"   Autobeam settings are now overriden with \\overrideBeamSettings.\n"
-msgstr ""
-"override-auto-beam-setting.\n"
-"   Los ajustes de barrado automático se sobreescriben ahora con \\overrideBeamSettings.\n"
+#: convertrules.py:2867
+msgid "    Autobeam settings are now overriden with \\overrideBeamSettings.\n"
+msgstr "   Los ajustes de barrado automático se sobreescriben ahora con \\overrideBeamSettings.\n"
 
-#: convertrules.py:2936
-msgid ""
-"override-auto-beam-setting.\n"
-"   Autobeam settings are now reverted with \\revertBeamSettings.\n"
-msgstr ""
-"override-auto-beam-setting.\n"
-"   Los ajustes de barrado automático se revierten ahora con \\revertBeamSettings.\n"
+#: convertrules.py:2872
+msgid "    Autobeam settings are now reverted with \\revertBeamSettings.\n"
+msgstr "   Los ajustes de barrado automático se revierten ahora con \\revertBeamSettings.\n"
 
-#: convertrules.py:2941
+#: convertrules.py:2878
 msgid ""
-"beatGrouping. \n"
-"   beatGrouping with a specified context must now be accomplished with\n"
+"    beatGrouping with a specified context must now be accomplished with\n"
 "   \\overrideBeamSettings.\n"
 msgstr ""
-"beatGrouping. \n"
 "   beatGrouping con un contexto especificado se hace ahora con\n"
 "   \\overrideBeamSettings.\n"
 
-#: convertrules.py:2947
+#: convertrules.py:2884
 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n"
 msgstr ""
 "alignment-offsets ha cambiado a alignment-distances:\n"
 "  ahora se deben especificar las distancias entre pautas\n"
 "  en lugar del desplazamiento de cada pauta.\n"
 
-#: convertrules.py:2958
+#: convertrules.py:2895
 msgid ""
 "Remove obsolete engravers/translators: Note_swallow_translator,\n"
 "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n"
@@ -633,23 +655,23 @@ msgstr ""
 "Swallow_performer and String_number_engraver.\n"
 "Nuevas variables de espaciado vertical."
 
-#: convertrules.py:2989
-msgid "minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
-msgstr "minimum-Y-extent; el espaciado vertical ya no depende de la dimensión Y-extent de un VerticalAxisGroup.\n"
+#: convertrules.py:2926
+msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
+msgstr "El espaciado vertical ya no depende de la dimensión Y-extent de un VerticalAxisGroup.\n"
 
-#: convertrules.py:2995
+#: convertrules.py:2932
 msgid "Unify fetaNumber and fetaDynamic encodings"
 msgstr "Unificar las codificaciones fetaNumber y fetaDynamic"
 
-#: convertrules.py:3000
+#: convertrules.py:2937
 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 
-#: convertrules.py:3011
+#: convertrules.py:2948
 msgid "\\cresc etc. are now postfix operators"
 msgstr "\\cresc etc. ahora son operadores posfijos"
 
-#: convertrules.py:3017
+#: convertrules.py:2960
 msgid ""
 "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
@@ -657,27 +679,23 @@ msgstr ""
 "Eliminar beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings y \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 
-#: convertrules.py:3035
-msgid "\\overrideBeamSettings.  Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
-msgstr "\\overrideBeamSettings.  Use \\set beamExceptions o \\overrideTimeSignatureSettings.\n"
-
-#: convertrules.py:3039
-msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
-msgstr "\\revertBeamSettings. Use \\set beamExceptions o \\revertTimeSignatureSettings.\n"
+#: convertrules.py:2978
+msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
+msgstr "Use \\set beamExceptions u \\overrideTimeSignatureSettings.\n"
 
-#: convertrules.py:3043
-msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"
-msgstr "beamSettings. Use baseMoment, beatStructure y beamExceptions.\n"
+#: convertrules.py:2982
+msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
+msgstr "Use \\set beamExceptions o \\revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3047
-msgid "beatLength. Use baseMoment and beatStructure.\n"
-msgstr "beatLength. Use baseMoment y beatStructure.\n"
+#: convertrules.py:2986
+msgid "Use baseMoment, beatStructure, and beamExceptions.\n"
+msgstr "Use baseMoment, beatStructure y beamExceptions.\n"
 
-#: convertrules.py:3051
-msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
-msgstr "setbeatGrouping. Use baseMoment y beatStructure.\n"
+#: convertrules.py:2990 convertrules.py:2994
+msgid "Use baseMoment and beatStructure.\n"
+msgstr "Use baseMoment y beatStructure.\n"
 
-#: convertrules.py:3056
+#: convertrules.py:2999
 msgid ""
 "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n"
 "Deprecate negative dash-period for hidden lines: use #'style = #'none instead."
@@ -686,13 +704,11 @@ msgstr ""
 "Mover el tamaño, grosor y forma gráfica de la lista de argumentos a propiedades.\n"
 "Se desprecia el período de discontinuidad negativo para líneas ocultas: use #'style = #'none en su lugar."
 
-#: convertrules.py:3061
-msgid "woodwind-diagrams.  Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
-msgstr ""
-"woodwind-diagrams.  Mover el tamaño, grosor y forma gráfica de la lista de argumentos a propiedades.\n"
-"  El único argumento debe ser la lista de claves.\n"
+#: convertrules.py:3004
+msgid "Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
+msgstr "Mover el tamaño, grosor y forma gráfica a propiedades.  El único argumento debe ser la lista de claves.\n"
 
-#: convertrules.py:3069
+#: convertrules.py:3012
 msgid ""
 "Rename vertical spacing variables.\n"
 "Add fretboard-table argument to savePredefinedFretboard."
@@ -700,23 +716,23 @@ msgstr ""
 "Renombrado de las variables de espaciado vertical.\n"
 "Añadir argumento de tabla de diagramas de posiciones a savePredefinedFretboard."
 
-#: convertrules.py:3087
+#: convertrules.py:3030
 msgid "Rename vertical spacing grob properties."
 msgstr "Renombrado de las propiedades de grob del espaciado vertical."
 
-#: convertrules.py:3103
+#: convertrules.py:3046
 msgid "Remove \\paper variables head-separation and foot-separation."
 msgstr "Eliminación de las variables de \\paper head-separation y foot-separation."
 
-#: convertrules.py:3108
+#: convertrules.py:3050
 msgid "Adjust settings for top-system-spacing instead.\n"
 msgstr "Ajuste los valores para top-system-spacing en su lugar.\n"
 
-#: convertrules.py:3113
+#: convertrules.py:3054
 msgid "Adjust settings for last-bottom-spacing instead.\n"
 msgstr "Ajuste los valores para last-bottom-spacing en su lugar.\n"
 
-#: convertrules.py:3119
+#: convertrules.py:3060
 msgid ""
 "Rename space to basic-distance in various spacing alists.\n"
 "Remove HarmonicParenthesesItem grob."
@@ -724,19 +740,19 @@ msgstr ""
 "Renombrar space a basic-distance en varias listas-A de espaciado.\n"
 "Eliminar el grob HarmonicParenthesesItem."
 
-#: convertrules.py:3127
+#: convertrules.py:3067
 msgid "HarmonicParenthesesItem has been eliminated.\n"
 msgstr "HarmonicParenthesesItem se ha eliminado.\n"
 
-#: convertrules.py:3128
+#: convertrules.py:3068
 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n"
 msgstr "Los paréntesis en los armónicos forman parte del grob TabNoteHead.\n"
 
-#: convertrules.py:3133
+#: convertrules.py:3073
 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n"
 msgstr "Eliminar el contexto de overrideTimeSignatureSettings y revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3140
+#: convertrules.py:3080
 msgid ""
 "Change stringTunings from a list of semitones to a list of pitches.\n"
 "Change tenor and baritone ukulele names in string tunings.\n"
@@ -746,241 +762,288 @@ msgstr ""
 "Cambiar los nombres tenor y baritone en las afinaciones de cuerdas del ukelele.\n"
 "Generar mensajes para la conversión manual del espaciado vertical si es necesario."
 
-#: convertrules.py:3180
-msgid "Vertical spacing changes might affect user-defined contexts.  "
+#: convertrules.py:3123
+msgid "Vertical spacing changes might affect user-defined contexts."
 msgstr "Los cambios en el espaciado vertical pueden afectar a los contextos definidos por el usuario."
 
-#: convertrules.py:3185
+#: convertrules.py:3129
 msgid "Replace bar-size with bar-extent."
 msgstr "Sustituir bar-size con bar-extent."
 
-#: convertrules.py:3197
+#: convertrules.py:3141
 msgid "Woodwind diagrams: Changes to the clarinet diagram."
 msgstr "Diagramas de viento madera: cambios en el diagrama de clarinete."
 
-#: convertrules.py:3201
-msgid "woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"
-msgstr "Diagramas de viento madera: se cambia la digitación del clarinete para que refleje la anatomía real del instrumento.\n"
-
-#: convertrules.py:3211
-msgid "Change in internal property for MultiMeasureRest"
-msgstr "Cambio en propiedad interna de MultiMeasureRest"
-
-#: convertrules.py:3214
-msgid "use-breve-rest.  This internal property has been replaced by round-to-longer-rest and usable-duration-logs.\n"
-msgstr "use-breve-rest.  Esta propiedad interna se ha sustituido por round-to-longer-rest y usable-duration-logs.\n"
+#: convertrules.py:3145
+msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n"
+msgstr "Se cambia la digitación del clarinete para que refleje la anatomía real del instrumento.\n"
 
-#: convertrules.py:3219
+#: convertrules.py:3155
 msgid "Handling of non-automatic footnotes."
 msgstr "Manejo de notas al pie no automáticas."
 
-#: convertrules.py:3223
+#: convertrules.py:3159
 msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n"
 msgstr "Si está utilizando notas al pie no automáticas, asegúrese de establecer footnote-auto-numbering = ##f en el bloque paper.\n"
 
-#: book_base.py:24
+#: convertrules.py:3164
+msgid "Change in internal property for MultiMeasureRest"
+msgstr "Cambio en propiedad interna de MultiMeasureRest"
+
+#: convertrules.py:3168
+msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n"
+msgstr "Esta propiedad interna se ha sustituido por round-to-longer-rest,round-up-exceptions y usable-duration-logs.\n"
+
+#: convertrules.py:3173
+msgid "Creation of a Flag grob and moving of certain Stem properties to this grob"
+msgstr "Creación de un grob de Flag y mover ciertas propiedades de Stem a este grob"
+
+#: convertrules.py:3209
+msgid "consistent-broken-slope is now handled through the positions callback.\n"
+msgstr "consistent-broken-slope se maneja ahora a través del callback «positions».\n"
+
+#: convertrules.py:3210
+msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
+msgstr "input/regression/beam-broken-classic.ly muestra cómo se manejan ahora las barras divididas.\n"
+
+#: book_base.py:26
 #, python-format
 msgid "file not found: %s"
 msgstr "archivo no encontrado: %s"
 
-#: book_base.py:161
+#: book_base.py:164
 msgid "Output function not implemented"
 msgstr "Función de salida sin implementar"
 
-#: lilylib.py:88 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:114
-#: input.cc:122
+#: lilylib.py:96
+#, python-format
+msgid "Setting loglevel to %s"
+msgstr "Se establece el nivel de registro a %s"
+
+#: lilylib.py:99
+#, python-format
+msgid "Unknown or invalid loglevel '%s'"
+msgstr "Nivel de registro «%s» desconocido o no válido"
+
+#: lilylib.py:128 warn.cc:211
 #, c-format, python-format
 msgid "error: %s"
 msgstr "error: %s"
 
-#: lilylib.py:131
+#: lilylib.py:185
 #, python-format
 msgid "Processing %s.ly"
 msgstr "Procesando «%s.ly»"
 
-#: lilylib.py:135 lilylib.py:198
+#: lilylib.py:189 lilylib.py:250
 #, python-format
 msgid "Invoking `%s'"
 msgstr "Invocando «%s»"
 
-#: lilylib.py:137 lilylib.py:200
+#: lilylib.py:191 lilylib.py:252
 #, python-format
 msgid "Running %s..."
 msgstr "Ejecutando %s..."
 
-#: lilylib.py:276
+#: lilylib.py:328
 #, python-format
 msgid "Usage: %s"
 msgstr "uso: %s"
 
-#: musicexp.py:216 musicexp.py:221
+#: musicexp.py:224 musicexp.py:229
 msgid "Language does not support microtones contained in the piece"
 msgstr "El lenguaje no contempla los microtonos de la pieza"
 
-#: musicexp.py:483
+#: musicexp.py:491
 msgid "Tuplet brackets of curved shape are not correctly implemented"
 msgstr "Los corchetes curvos de grupo especial no están implementados correctamente"
 
-#: musicexp.py:669
+#: musicexp.py:677
 #, python-format
 msgid "unable to set the music %(music)s for the repeat %(repeat)s"
 msgstr "no se ha podido establecer el fragmento de música %(music)s para la repetición %(repeat)s"
 
-#: musicexp.py:678
+#: musicexp.py:686
 msgid "encountered repeat without body"
 msgstr "se ha encontrado una repetición sin cuerpo"
 
 #. no self.elements!
-#: musicexp.py:848
+#: musicexp.py:856
 #, python-format
 msgid "Grace note with no following music: %s"
 msgstr "Nota de adorno sin música que le siga: %s"
 
-#: musicexp.py:1010
+#: musicexp.py:1018
 #, python-format
 msgid "Invalid octave shift size found: %s. Using no shift."
 msgstr "Se ha encontrado un tamaño de desplazamiento de octava no válido: %s. No se usará ningún desplazamiento."
 
-#: musicexp.py:1468
+#: musicexp.py:1476
 #, python-format
 msgid "Unable to convert alteration %s to a lilypond expression"
 msgstr "No se pudo convertir la alteración %s a una expresión de lilypond"
 
 #. TODO: Handle pieces without a time signature!
-#: musicxml.py:358
+#: musicxml.py:361
 msgid "Senza-misura time signatures are not yet supported!"
 msgstr "¡Los compases senza-misura no están contemplados aún!"
 
-#: musicxml.py:376
+#: musicxml.py:379
 msgid "Unable to interpret time signature! Falling back to 4/4."
 msgstr "¡Ha sido imposible interpretar la indicación de compás! Se va a usar 4/4 como opción de retroceso."
 
-#: musicxml.py:432
+#: musicxml.py:435
 #, python-format
 msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!"
 msgstr "¡Se ha proporcionado una octava de alteración de tonalidad para un número de alteraciones inexistente %s, números disponibles: %s!"
 
-#: musicxml.py:520
+#: musicxml.py:523
 #, python-format
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "No se ha podido encontrar el instrumento con el ID=%s\n"
 
-#: book_latex.py:156
+#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is
+#. used to detect relative/absolute paths, so the absolute path is not
+#. detected as such and this command fails:
+#: book_texinfo.py:206
+#, python-format
+msgid "Running texi2pdf on file %s to detect default page settings.\n"
+msgstr "Ejecutando texi2pdf sobre el archivo %s para detectar los ajustes predeterminados de página.\n"
+
+#: book_texinfo.py:228 book_latex.py:209
+msgid "Unable to auto-detect default settings:\n"
+msgstr "No se pudieron detectar automáticamente los ajustes predeterminados:\n"
+
+#: book_texinfo.py:240 book_latex.py:221
+#, python-format
+msgid ""
+"Unable to auto-detect default settings:\n"
+"%s"
+msgstr ""
+"No se pudieron detectar automáticamente los ajustes predeterminados:\n"
+"%s"
+
+#: book_latex.py:170
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr "no se encuentra \\begin{document} en el documento de LaTeX"
 
-#: musicxml2ly.py:224
+#: book_latex.py:188
+#, python-format
+msgid "Running `%s' on file `%s' to detect default page settings.\n"
+msgstr "Ejecutando «%s» sobre el archivo «%s» para detectar los ajustes de página predeterminados.\n"
+
+#: musicxml2ly.py:228
 #, python-format
 msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
 msgstr "Se encontró un archivo creado por %s, que contiene información de barrado errónea. Toda la información de barrado del archivo MusicXML se ignorará"
 
-#: musicxml2ly.py:240 musicxml2ly.py:242
+#: musicxml2ly.py:247 musicxml2ly.py:249
 #, python-format
 msgid "Unprocessed PartGroupInfo %s encountered"
 msgstr "Se ha encontrado el PartGroupInfo sin procesar %s"
 
-#: musicxml2ly.py:495
+#: musicxml2ly.py:502
 #, python-format
 msgid "Encountered note at %s without type and duration (=%s)"
 msgstr "Se ha encontrado una nota en %s sin typo y duración (=%s)"
 
-#: musicxml2ly.py:515
+#: musicxml2ly.py:522
 #, python-format
 msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
 msgstr "Se ha encontrado una duración racional con denominador %s, no se puede convertir a duracion de lilypond"
 
-#: musicxml2ly.py:762
+#: musicxml2ly.py:769
 msgid "Unable to extract key signature!"
 msgstr "¡No se ha podido extraer la armadura de la tonalidad!"
 
-#: musicxml2ly.py:789
+#: musicxml2ly.py:796
 #, python-format
 msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
 msgstr "¡Modo %s desconocido, se esperaba «major», «minor» o un modo eclesiástico!"
 
-#: musicxml2ly.py:927
+#: musicxml2ly.py:934
 #, python-format
 msgid "Encountered unprocessed marker %s\n"
 msgstr "Se ha encontrado el marcador sin procesar %s\n"
 
-#: musicxml2ly.py:1021
+#: musicxml2ly.py:1028
 #, python-format
 msgid "unknown span event %s"
 msgstr "evento de extensión %s desconocido"
 
-#: musicxml2ly.py:1031
+#: musicxml2ly.py:1038
 #, python-format
 msgid "unknown span type %s for %s"
 msgstr "tipo de extensión %s deconocido para %s"
 
-#: musicxml2ly.py:1451
+#: musicxml2ly.py:1458
 msgid "Unknown metronome mark, ignoring"
 msgstr "Marca de metrónomo desconocida, se ignora"
 
 #. TODO: Implement the other (more complex) way for tempo marks!
-#: musicxml2ly.py:1456
+#: musicxml2ly.py:1463
 msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
 msgstr "Las marcas metronómicas con relaciones complejas (<metronome-note> en MusicXML) no se encuentran implementadas aún."
 
-#: musicxml2ly.py:1658
+#: musicxml2ly.py:1665
 #, python-format
 msgid "Unable to convert chord type %s to lilypond."
 msgstr "No se pudo convertir el acorde de tipo %s a lilypond."
 
-#: musicxml2ly.py:1807
+#: musicxml2ly.py:1814
 #, python-format
 msgid "drum %s type unknown, please add to instrument_drumtype_dict"
 msgstr "tipo de percusión %s desconocido, añádalo al diccionario instrument_drumtype_dict"
 
-#: musicxml2ly.py:1811
+#: musicxml2ly.py:1818
 msgid "cannot find suitable event"
 msgstr "no se encuentra un evento adecuado"
 
-#: musicxml2ly.py:1959
+#: musicxml2ly.py:1966
 #, python-format
 msgid "Negative skip %s (from position %s to %s)"
 msgstr "Desplazamiento negativo %s (desde la posición %s hasta la %s)"
 
-#: musicxml2ly.py:2100
+#: musicxml2ly.py:2107
 #, python-format
 msgid "Negative skip found: from %s to %s, difference is %s"
 msgstr "Se ha encontrado un desplazamiento negativo: desde %s hasta %s, la diferencia es %s"
 
-#: musicxml2ly.py:2181
+#: musicxml2ly.py:2188
 #, python-format
 msgid "unexpected %s; expected %s or %s or %s"
 msgstr "%s inesperado; se esperaba %s o %s o %s"
 
-#: musicxml2ly.py:2287
+#: musicxml2ly.py:2294
 msgid "Encountered closing slur, but no slur is open"
 msgstr "Se ha encontrado el cierre de una ligadura de expresión, pero no hay ninguna abierta"
 
-#: musicxml2ly.py:2290
+#: musicxml2ly.py:2297
 msgid "Cannot have two simultaneous (closing) slurs"
 msgstr "No puede haber dos ligaduras de expresión (cerrándose) simultáneas"
 
-#: musicxml2ly.py:2299
+#: musicxml2ly.py:2306
 msgid "Cannot have a slur inside another slur"
 msgstr "No puede haber una ligadura de expresión dentro de otra"
 
-#: musicxml2ly.py:2302
+#: musicxml2ly.py:2309
 msgid "Cannot have two simultaneous slurs"
 msgstr "No puede haber dos ligaduras de expresión simultáneas"
 
-#: musicxml2ly.py:2436
+#: musicxml2ly.py:2443
 #, python-format
 msgid "cannot simultaneously have more than one mode: %s"
 msgstr "no puede haber más de un modo al mismo tiempo: %s"
 
-#: musicxml2ly.py:2544
+#: musicxml2ly.py:2551
 msgid "Converting to LilyPond expressions..."
 msgstr "Conversión a expresiones de LilyPond..."
 
-#: musicxml2ly.py:2555
+#: musicxml2ly.py:2562
 msgid "musicxml2ly [OPTION]... FILE.xml"
 msgstr "musicxml2ly [OPCIÓN]... ARCHIVO.xml"
 
-#: musicxml2ly.py:2557
+#: musicxml2ly.py:2564
 msgid ""
 "Convert MusicXML from FILE.xml to LilyPond input.\n"
 "If the given filename is -, musicxml2ly reads from the command line.\n"
@@ -988,12 +1051,12 @@ msgstr ""
 "Convertir MusicXML desde ARCHIVO.xml a entrada de LilyPond.\n"
 "SI el nombre de archivo aportado es -, musicxml2ly lee de la línea de órdenes.\n"
 
-#: musicxml2ly.py:2563 midi2ly.py:1060 abc2ly.py:1386 lilypond-book.py:140
-#: convert-ly.py:98 etf2ly.py:1202 main.cc:159
+#: musicxml2ly.py:2570 midi2ly.py:1060 abc2ly.py:1387 lilypond-book.py:141
+#: convert-ly.py:92 etf2ly.py:1204 main.cc:153
 msgid "show this help and exit"
 msgstr "mostrar esta ayuda y salir"
 
-#: musicxml2ly.py:2567
+#: musicxml2ly.py:2574
 msgid ""
 "Copyright (c) 2005--2012 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
@@ -1005,119 +1068,132 @@ msgstr ""
 "    Jan Nieuwenhuizen <janneke@gnu.org> y\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 
-#: musicxml2ly.py:2581 midi2ly.py:1091 abc2ly.py:1382 lilypond-book.py:217
-#: convert-ly.py:94 etf2ly.py:1206 main.cc:174
+#: musicxml2ly.py:2588 midi2ly.py:1091 abc2ly.py:1383 lilypond-book.py:232
+#: convert-ly.py:88 etf2ly.py:1208 main.cc:174
 msgid "show version number and exit"
 msgstr "mostrar el número de versión y salir"
 
-#: musicxml2ly.py:2586 midi2ly.py:1085 lilypond-book.py:209 main.cc:175
+#: musicxml2ly.py:2594 midi2ly.py:1085 lilypond-book.py:224
 msgid "be verbose"
 msgstr "ser prolijo"
 
-#: musicxml2ly.py:2592
+#: musicxml2ly.py:2600
 msgid "use lxml.etree; uses less memory and cpu time"
 msgstr "usar lxml.etree; utiliza menos memoria y tiempo de procesador"
 
-#: musicxml2ly.py:2598
+#: musicxml2ly.py:2606
 msgid "input file is a zip-compressed MusicXML file"
 msgstr "el archivo de entrada es un archivo MusicXML comprimido en zip"
 
-#: musicxml2ly.py:2604
+#: musicxml2ly.py:2612
 msgid "convert pitches in relative mode (default)"
 msgstr "convertir las notas al modo relativo (por omisión)"
 
-#: musicxml2ly.py:2609
+#: musicxml2ly.py:2617
 msgid "convert pitches in absolute mode"
 msgstr "convertir las notas al modo absoluto"
 
-#: musicxml2ly.py:2612
+#: musicxml2ly.py:2620
 msgid "LANG"
 msgstr "IDIOMA"
 
-#: musicxml2ly.py:2614
+#: musicxml2ly.py:2622
 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
 msgstr "usar IDIOMA para los nombres de las notas, p.ej. 'espanol' para los nombres de las notas en español"
 
-#: musicxml2ly.py:2620
+#: musicxml2ly.py:2625 lilypond-book.py:180 convert-ly.py:105
+msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"
+msgstr "Imprimir los mensajes de registro según NIVEL_DE_REGISTRO (NONE (ninguno), ERROR (error), WARNING (advertencias), PROGRESS (avance; predeterminado), DEBUG (depuración))"
+
+#: musicxml2ly.py:2627 lilypond-book.py:164 lilypond-book.py:182
+#: convert-ly.py:107 main.cc:167
+msgid "LOGLEVEL"
+msgstr "NIVEL_DE_REGISTRO"
+
+#: musicxml2ly.py:2636
 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
 msgstr "no convertir las direcciones (^, _ o -) para las articulaciones, expresiones de dinámica, etc."
 
-#: musicxml2ly.py:2626
+#: musicxml2ly.py:2642
 msgid "do not convert exact vertical positions of rests"
 msgstr "no convertir las posiciones verticales exactas de los silencios"
 
-#: musicxml2ly.py:2632
+#: musicxml2ly.py:2648
 msgid "do not convert the exact page layout and breaks"
 msgstr "no convertir la disposición y saltos de página exactos"
 
-#: musicxml2ly.py:2638
+#: musicxml2ly.py:2654
 msgid "do not convert beaming information, use lilypond's automatic beaming instead"
 msgstr "no convertir la información de barrado, en vez de ello utilizar el barrado automático de lilypond"
 
-#: musicxml2ly.py:2641 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1208
-#: main.cc:165 main.cc:172
+#: musicxml2ly.py:2657 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1210
+#: main.cc:159 main.cc:171
 msgid "FILE"
 msgstr "ARCHIVO"
 
-#: musicxml2ly.py:2646
+#: musicxml2ly.py:2662
 msgid "set output filename to FILE, stdout if -"
 msgstr "establecer el nombre del archivo de salida a ARCHIVO, y a la salida estándar si es -"
 
+#: musicxml2ly.py:2668
+msgid "add midi-block to .ly file"
+msgstr "añadir bloque midi al archivo .ly"
+
 #. Translators, please translate this string as
 #. "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"
-#: musicxml2ly.py:2649 midi2ly.py:1104 abc2ly.py:1395 lilypond-book.py:239
-#: convert-ly.py:144 etf2ly.py:1216 main.cc:285
+#: musicxml2ly.py:2672 midi2ly.py:1104 abc2ly.py:1396 lilypond-book.py:259
+#: convert-ly.py:146 etf2ly.py:1218 main.cc:285
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr ""
 "Informe de los fallos en español a http://lists.gnu.org/mailman/listinfo/lilypond-es\n"
 "o en inglés a %s"
 
-#: musicxml2ly.py:2729
+#: musicxml2ly.py:2752
 #, python-format
 msgid "unknown part in part-list: %s"
 msgstr "parte desconocida en la lista part-list: %s"
 
-#: musicxml2ly.py:2791
+#: musicxml2ly.py:2814
 msgid "Input is compressed, extracting raw MusicXML data from stdin"
 msgstr "El archivo de entrada está comprimido, extrayendo los datos de MusicXML en bruto a partir de la entrada estándar"
 
-#: musicxml2ly.py:2804
+#: musicxml2ly.py:2827
 #, python-format
 msgid "Input file %s is compressed, extracting raw MusicXML data"
 msgstr "El archivo de entrada %s está comprimido, extrayendo los datos de MusicXML en bruto"
 
-#: musicxml2ly.py:2834
+#: musicxml2ly.py:2857
 msgid "Reading MusicXML from Standard input ..."
 msgstr "Leyendo MusicXML desde la entrada estándar..."
 
-#: musicxml2ly.py:2836
+#: musicxml2ly.py:2859
 #, python-format
 msgid "Reading MusicXML from %s ..."
 msgstr "Leyendo MusicXML desde %s ..."
 
-#: musicxml2ly.py:2869
+#: musicxml2ly.py:2892
 #, python-format
 msgid "Output to `%s'"
 msgstr "La salida se dirige hacia `%s'"
 
-#: musicxml2ly.py:2936
+#: musicxml2ly.py:2962
 #, python-format
 msgid "Unable to find input file %s"
 msgstr "No se encuentra el archivo de entrada %s"
 
-#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:75 etf2ly.py:1191
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s por"
 
-#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:77 etf2ly.py:1193
 msgid "Distributed under terms of the GNU General Public License."
 msgstr "Distribuido bajo los términos de la Licencia Pública General de GNU."
 
-#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:78 etf2ly.py:1194
 msgid "It comes with NO WARRANTY."
 msgstr "Se distribuye SIN NINGUNA GARANTÍA."
 
@@ -1142,7 +1218,7 @@ msgstr "se han encontrado más de 5 voces en una sola pauta, es de esperar un re
 msgid "%s output to `%s'..."
 msgstr "salida de %s hacia «%s»..."
 
-#: midi2ly.py:1042 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#: midi2ly.py:1042 abc2ly.py:1374 lilypond-book.py:123 convert-ly.py:81
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [OPCIÓN]... ARCHIVO"
@@ -1184,7 +1260,7 @@ msgstr "establecer la tonalidad: ALT=+sostenidos|-bemoles; MENOR=1"
 msgid "ALT[:MINOR]"
 msgstr "ALT[:MENOR]"
 
-#: midi2ly.py:1069 abc2ly.py:1388 etf2ly.py:1207
+#: midi2ly.py:1069 abc2ly.py:1389 etf2ly.py:1209
 msgid "write output to FILE"
 msgstr "escribir la salida en el ARCHIVO"
 
@@ -1208,7 +1284,7 @@ msgstr "DURACIÓN*NUMERADOR/DENOMINADOR"
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr "permitir duraciones de grupos irregulares DURACIÓN*NUMERADOR/DENOMINADOR"
 
-#: midi2ly.py:1092 lilypond-book.py:220 convert-ly.py:139 etf2ly.py:1210
+#: midi2ly.py:1092 lilypond-book.py:235 convert-ly.py:141 etf2ly.py:1212
 #: main.cc:176
 msgid "show warranty and copyright"
 msgstr "mostrar los avisos de garantía y de copyright"
@@ -1225,7 +1301,7 @@ msgstr "Ejemplos"
 msgid "no files specified on command line."
 msgstr "no se ha especificado ningún archivo en la línea de órdenes."
 
-#: abc2ly.py:1374
+#: abc2ly.py:1375
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
@@ -1234,11 +1310,11 @@ msgstr ""
 "abc2ly convierte archivos de música de ABC\n"
 "(véase %s) en código de entrada de LilyPond.\n"
 
-#: abc2ly.py:1390
+#: abc2ly.py:1391
 msgid "be strict about success"
 msgstr "ser estricto respecto al éxito"
 
-#: abc2ly.py:1392
+#: abc2ly.py:1393
 msgid "preserve ABC's notion of beams"
 msgstr "preservar la noción de las barras de ABC"
 
@@ -1246,7 +1322,7 @@ msgstr "preservar la noción de las barras de ABC"
 msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
 msgstr "Procesar los fragmentos de LylyPond en un documento de HTML híbrido, LaTeX, texinfo o DocBook."
 
-#: lilypond-book.py:82 convert-ly.py:46
+#: lilypond-book.py:82 convert-ly.py:48
 msgid "Examples:"
 msgstr "Ejemplos:"
 
@@ -1259,88 +1335,92 @@ msgstr "LIBRO"
 msgid "Exiting (%d)..."
 msgstr "Saliendo (%d)..."
 
-#: lilypond-book.py:127
+#: lilypond-book.py:128
 msgid "FILTER"
 msgstr "FILTRO"
 
-#: lilypond-book.py:130
+#: lilypond-book.py:131
 msgid "pipe snippets through FILTER [default: `convert-ly -n -']"
 msgstr "redirigir fragmentos a través de FILTRO [predeterminado: `convert-ly -n -']"
 
-#: lilypond-book.py:134
+#: lilypond-book.py:135
 msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
 msgstr "usar el formato de salida FORMATO (texi [predeterminado], texi-html, latex, html, docbook)"
 
-#: lilypond-book.py:135
+#: lilypond-book.py:136
 msgid "FORMAT"
 msgstr "FORMATO"
 
-#: lilypond-book.py:142
+#: lilypond-book.py:143
 msgid "add DIR to include path"
 msgstr "añadir DIRECTORIO a la ruta de inclusión"
 
-#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163
-#: lilypond-book.py:173 lilypond-book.py:194 lilypond-book.py:200 main.cc:164
+#: lilypond-book.py:144 lilypond-book.py:151 lilypond-book.py:170
+#: lilypond-book.py:188 lilypond-book.py:209 lilypond-book.py:215 main.cc:158
 msgid "DIR"
 msgstr "DIRECTORIO"
 
-#: lilypond-book.py:148
+#: lilypond-book.py:149
 msgid "format Texinfo output so that Info will look for images of music in DIR"
 msgstr "formatear la salida de Texinfo de manera que Info busque las imágenes de música en DIRECTORIO"
 
-#: lilypond-book.py:155
+#: lilypond-book.py:156
 msgid "PAD"
 msgstr "RELLENAR"
 
-#: lilypond-book.py:157
+#: lilypond-book.py:158
 msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
 msgstr "rellenar el lado izquierdo de la música para alinear la música aunque haya un número desigual de compases (en mm)"
 
-#: lilypond-book.py:162
+#: lilypond-book.py:163
+msgid "Print lilypond log messages according to LOGLEVEL"
+msgstr "Imprimir los mensajes de registro de lilypond según NIVEL_DE_REGISTRO"
+
+#: lilypond-book.py:169
 msgid "write lily-XXX files to DIR, link into --output dir"
 msgstr "escribir archivos lily-XXX en DIR, enlazar al directorio de --output"
 
-#: lilypond-book.py:167
+#: lilypond-book.py:174
 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)"
 msgstr "Cargar el PAQUETE adicional de python (que contiene p.ej. un formato de salida personalizado)"
 
-#: lilypond-book.py:168
+#: lilypond-book.py:175
 msgid "PACKAGE"
 msgstr "PAQUETE"
 
-#: lilypond-book.py:172
+#: lilypond-book.py:187
 msgid "write output to DIR"
 msgstr "escribir la salida en el DIRECTORIO"
 
-#: lilypond-book.py:177
+#: lilypond-book.py:192
 msgid "COMMAND"
 msgstr "INSTRUCCIÓN"
 
-#: lilypond-book.py:178
+#: lilypond-book.py:193
 msgid "process ly_files using COMMAND FILE..."
 msgstr "procesar ly_files utilizando INSTRUCCIÓN ARCHIVO..."
 
-#: lilypond-book.py:183
+#: lilypond-book.py:198
 msgid "Redirect the lilypond output"
 msgstr "Redirigir la salida de lilypond"
 
-#: lilypond-book.py:187
+#: lilypond-book.py:202
 msgid "Compile snippets in safe mode"
 msgstr "Compilar los fragmentos de código en modo seguro"
 
-#: lilypond-book.py:193
+#: lilypond-book.py:208
 msgid "do not fail if no lilypond output is found"
 msgstr "no fracasar si no se encuentra ninguna salida de lilypond"
 
-#: lilypond-book.py:199
+#: lilypond-book.py:214
 msgid "do not fail if no PNG images are found for EPS files"
 msgstr "no fracasar si no se encuentra ninguna imagen PNG para los archivos EPS"
 
-#: lilypond-book.py:205
+#: lilypond-book.py:220
 msgid "write snippet output files with the same base name as their source file"
 msgstr "escribir los archivos de salida de los fragmentos de código con el mismo nombra de base que su archivo fuente"
 
-#: lilypond-book.py:225
+#: lilypond-book.py:240
 msgid ""
 "run executable PROG instead of latex, or in\n"
 "case --pdf option is set instead of pdflatex"
@@ -1348,70 +1428,88 @@ msgstr ""
 "ejecutar PROG en lugar de latex, o en caso de que\n"
 "esté seleccionada la opción --pdf, en lugar de pdflatex"
 
-#: lilypond-book.py:227
+#: lilypond-book.py:242 lilypond-book.py:247
 msgid "PROG"
 msgstr "PROGRAMA"
 
-#: lilypond-book.py:233
+#: lilypond-book.py:246
+msgid "run executable PROG instead of texi2pdf"
+msgstr "ejecutar PROG en lugar de texi2pdf"
+
+#: lilypond-book.py:253
 msgid "create PDF files for use with PDFTeX"
 msgstr "crear archivos PDF para su utilización con PDFTeX"
 
-#: lilypond-book.py:428
+#: lilypond-book.py:456
 msgid "Writing snippets..."
 msgstr "Escribiendo fragmentos..."
 
-#: lilypond-book.py:434
+#: lilypond-book.py:461
 msgid "Processing..."
 msgstr "Procesando..."
 
-#: lilypond-book.py:440
+#: lilypond-book.py:466
 msgid "All snippets are up to date..."
 msgstr "Todos los fragmentos están actualizados..."
 
-#: lilypond-book.py:461
+#: lilypond-book.py:485
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr "no se puede determinar el formato de: %s"
 
-#: lilypond-book.py:470
+#: lilypond-book.py:494
 #, python-format
 msgid "%s is up to date."
 msgstr "%s está actualizado."
 
-#: lilypond-book.py:484
+#: lilypond-book.py:507
 #, python-format
 msgid "Writing `%s'..."
 msgstr "Escribiendo «%s»..."
 
-#: lilypond-book.py:546
+#: lilypond-book.py:568
 msgid "Output would overwrite input file; use --output."
 msgstr "La salida sobreescribiría el archivo de entrada; utilice --output."
 
-#: lilypond-book.py:550
+#: lilypond-book.py:572
 #, python-format
 msgid "Reading %s..."
 msgstr "Leyendo %s..."
 
-#: lilypond-book.py:558
+#: lilypond-book.py:579
 msgid "Dissecting..."
 msgstr "Diseccionando..."
 
-#: lilypond-book.py:570
+#: lilypond-book.py:590
 #, python-format
 msgid "Compiling %s..."
 msgstr "Compilando %s..."
 
-#: lilypond-book.py:579
+#: lilypond-book.py:598
 #, python-format
 msgid "Processing include: %s"
 msgstr "Procesando el archivo de inclusión: %s"
 
-#: lilypond-book.py:591
+#: lilypond-book.py:609
 #, python-format
 msgid "Removing `%s'"
 msgstr "Suprimiendo «%s»"
 
-#: convert-ly.py:44
+#: lilypond-book.py:676
+#, python-format
+msgid "Setting LilyPond's loglevel to %s"
+msgstr "Se establece el nivel de registro de LilyPond a %s"
+
+#: lilypond-book.py:680
+#, python-format
+msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)"
+msgstr "Se establece el nivel de registro de LilyPond a %s (a partir de la variable de entorno LILYPOND_LOGLEVEL)"
+
+#: lilypond-book.py:683
+msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting"
+msgstr "Se establece la salida de LilyPond a --verbose (prolija), implícita por el ajuste de lilypond-book"
+
+#: convert-ly.py:46
 msgid ""
 "Update LilyPond input to newer version.  By default, update from the\n"
 "version taken from the \\version command, to the current LilyPond version."
@@ -1420,69 +1518,69 @@ msgstr ""
 "De manera predeterminada, actualizarlo desde la versión sacada de\n"
 "la instrucción \\version, a la versión actual de LilyPond."
 
-#: convert-ly.py:102 convert-ly.py:135
+#: convert-ly.py:96 convert-ly.py:137
 msgid "VERSION"
 msgstr "VERSIÓN"
 
-#: convert-ly.py:104
+#: convert-ly.py:98
 msgid "start from VERSION [default: \\version found in file]"
 msgstr "comenzar a partir de VERSIÓN [predeterminado: \\version del archivo]"
 
-#: convert-ly.py:107
+#: convert-ly.py:101
 msgid "edit in place"
 msgstr "editar in situ"
 
-#: convert-ly.py:111
+#: convert-ly.py:113
 msgid "do not add \\version command if missing"
 msgstr "no añadir la instrucción \\version si no está presente"
 
-#: convert-ly.py:117
+#: convert-ly.py:119
 #, python-format
 msgid "force updating \\version number to %s"
 msgstr "forzar la actualización del número de  \\version a %s"
 
-#: convert-ly.py:123
+#: convert-ly.py:125
 msgid "only update \\version number if file is modified"
 msgstr "actualizar solo el número de \\version si el archivo ha sido modificado"
 
-#: convert-ly.py:129
+#: convert-ly.py:131
 #, python-format
 msgid "show rules [default: -f 0, -t %s]"
 msgstr "mostrar las reglas [predeterminado: -f 0, -t %s]"
 
-#: convert-ly.py:134
+#: convert-ly.py:136
 #, python-format
 msgid "convert to VERSION [default: %s]"
 msgstr "convertir a VERSIÓN [predeterminado: %s]"
 
-#: convert-ly.py:184
+#: convert-ly.py:186
 msgid "Applying conversion: "
 msgstr "Aplicando la conversión: "
 
-#: convert-ly.py:197
+#: convert-ly.py:202
 msgid "Error while converting"
 msgstr "Error al convertir"
 
-#: convert-ly.py:199
+#: convert-ly.py:204
 msgid "Stopping at last successful rule"
 msgstr "Detención en la última regla satisfactoria"
 
-#: convert-ly.py:224
+#: convert-ly.py:231
 #, python-format
 msgid "Processing `%s'... "
 msgstr "Procesando «%s»... "
 
-#: convert-ly.py:332
+#: convert-ly.py:338
 #, python-format
 msgid "%s: Unable to open file"
 msgstr "%s: No se pudo abrir el archivo"
 
-#: convert-ly.py:339
+#: convert-ly.py:345
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr "%s: no se puede determinar la versión.  Se salta"
 
-#: convert-ly.py:344
+#: convert-ly.py:350
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
@@ -1491,12 +1589,12 @@ msgstr ""
 "%s: Cadena de versión no válida `%s' \n"
 "Las cadenas de versión válidas se componen de tres números separados por puntos, p.ej. `2.8.12'"
 
-#: etf2ly.py:1195
+#: etf2ly.py:1197
 #, python-format
 msgid "%s [OPTION]... ETF-FILE"
 msgstr "%s [OPCIÓN]... ARCHIVO_ETF"
 
-#: etf2ly.py:1196
+#: etf2ly.py:1198
 msgid ""
 "Enigma Transport Format is a format used by Coda Music Technology's\n"
 "Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n"
@@ -1513,20 +1611,51 @@ msgstr "Inglés"
 msgid "Other languages"
 msgstr "Otros idiomas"
 
-#: warn.cc:59
+#: warn.cc:56
+#, c-format
+msgid "Log level set to %d\n"
+msgstr "Nivel de registro establecido a %d\n"
+
+#: warn.cc:89
+#, c-format
+msgid "unknown log level `%s', using default (INFO)"
+msgstr "nivel de registro desconocido «%s», se usa el valor por omisión (INFO)"
+
+#. Some expected warning was not triggered, so print out a warning.
+#: warn.cc:112
+#, c-format
+msgid "%d expected warning(s) not encountered: "
+msgstr "se esperaban %d advertencias pero no se encontraron: "
+
+#: warn.cc:183
+#, c-format
+msgid "fatal error: %s"
+msgstr "error fatal: %s"
+
+#: warn.cc:192
 #, c-format
-msgid "success: %s"
-msgstr "finalizado correctamente: %s"
+msgid "suppressed programming error: %s"
+msgstr "error de programación suprimido: %s"
 
-#: warn.cc:86 grob.cc:613 input.cc:97
+#: warn.cc:197
 #, c-format
 msgid "programming error: %s"
 msgstr "error de programación: %s"
 
-#: warn.cc:87 input.cc:98
+#: warn.cc:198
 msgid "continuing, cross fingers"
 msgstr "continuamos; cruce los dedos"
 
+#: warn.cc:207
+#, c-format
+msgid "suppressed error: %s"
+msgstr "error suprimido: %s"
+
+#: warn.cc:219
+#, c-format
+msgid "suppressed warning: %s"
+msgstr "advertencia suprimida: %s"
+
 #: getopt-long.cc:153
 #, c-format
 msgid "option `%s' requires an argument"
@@ -1547,35 +1676,43 @@ msgstr "opción no reconocida: «%s»"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "argumento no válido «%s» para la opción «%s»"
 
-#: grob.cc:286
-msgid "Infinity or NaN encountered"
-msgstr "se ha encontrado Infinito o NaN"
-
-#: vaticana-ligature.cc:95
-msgid "flexa-height undefined; assuming 0"
-msgstr "la altura flexa-height no está definida; se supone que es 0"
-
-#: vaticana-ligature.cc:100
-msgid "ascending vaticana style flexa"
-msgstr "flexa ascendente de estilo vaticana"
+#: flag.cc:110
+#, c-format
+msgid "flag `%s' not found"
+msgstr "no se encuentra el indicador «%s»"
 
-#: vaticana-ligature.cc:188
-msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr "Vaticana_ligature: unión nula (delta_pitch == 0)"
+#: flag.cc:130
+#, c-format
+msgid "flag stroke `%s' not found"
+msgstr "no se encuentra la forma del glifo del corchete «%s»"
 
-#: parse-scm.cc:100
+#: parse-scm.cc:112
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE ha señalado un error para la expresión que comienza aquí"
 
-#: rest-collision-engraver.cc:70
-msgid "rhythmic head is not part of a rhythmic column"
-msgstr "la cabeza rítmica no es parte de una columna rítmica"
+#: lily-lexer.cc:255
+msgid "include files are not allowed in safe mode"
+msgstr "no se permiten los archivos de inclusión en el modo seguro"
+
+#: lily-lexer.cc:282
+#, c-format
+msgid "identifier name is a keyword: `%s'"
+msgstr "el nombre del identificativo es una palabra clave: «%s»"
+
+#: lily-lexer.cc:303 lily-lexer.cc:316
+#, c-format
+msgid "%s:EOF"
+msgstr "%s:EOF"
 
 #. if we get to here, just put everything on one line
 #: constrained-breaking.cc:187 constrained-breaking.cc:205
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "no se ecnuentra un salto de línea que cumpla las restricciones"
 
+#: context-property.cc:43
+msgid "need symbol arguments for \\override and \\revert"
+msgstr "se necesitan argumentos de símbolo para \\override y \\revert"
+
 #: horizontal-bracket-engraver.cc:62
 msgid "do not have that many brackets"
 msgstr "no tiene tantos corchetes"
@@ -1584,79 +1721,104 @@ msgstr "no tiene tantos corchetes"
 msgid "conflicting note group events"
 msgstr "eventos de grupo de notas en conflicto"
 
-#: hyphen-engraver.cc:104
-msgid "removing unterminated hyphen"
-msgstr "se suprime el guión separador sin terminación"
-
-#: hyphen-engraver.cc:118
-msgid "unterminated hyphen; removing"
-msgstr "guión separador sin terminar; se suprime"
+#: new-fingering-engraver.cc:113
+msgid "cannot add text scripts to individual note heads"
+msgstr "no se pueden añadir guiones de texto a cabezas de nota individuales"
 
-#: pango-font.cc:189 open-type-font.cc:318
-#, c-format
-msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "error en FT_Get_Glyph_Name (): %s"
+#: new-fingering-engraver.cc:265
+msgid "no placement found for fingerings"
+msgstr "no se ha encontrado ninguna ubicación válida para las digitaciones"
 
-#: pango-font.cc:205
-#, c-format
-msgid ""
-"Glyph has no name, but font supports glyph naming.\n"
-"Skipping glyph U+%0X, file %s"
-msgstr ""
-"El glifo no tiene nombre, pero la tipografía soporta nombres de glifo.\n"
-"Se salta el glifo U+%0X, archivo %s"
+#: new-fingering-engraver.cc:266
+msgid "placing below"
+msgstr "se coloca debajo"
 
-#: pango-font.cc:242
+#: translator-group.cc:188
 #, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "no hay un nombre de tipografía PostScript para «%s»"
+msgid "cannot find: `%s'"
+msgstr "no se encuentra «%s»"
 
-#: pango-font.cc:291
-msgid "FreeType face has no PostScript font name"
-msgstr "El tipo FreeType no tiene un nombre de tipografía PostScript"
+#: glissando-engraver.cc:158
+msgid "unterminated glissando"
+msgstr "glissando sin terminar"
 
 #: midi-item.cc:89
 #, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "no existe este instrumento MIDI: «%s»"
 
+#: open-type-font.cc:44
+#, c-format
+msgid "cannot allocate %lu bytes"
+msgstr "no se peuden reservar %lu bytes"
+
+#: open-type-font.cc:48
+#, c-format
+msgid "cannot load font table: %s"
+msgstr "no se puede cargar la tabla de tipografías: %s"
+
+#: open-type-font.cc:53
+#, c-format
+msgid "FreeType error: %s"
+msgstr "error de FreeType: %s"
+
+#: open-type-font.cc:110
+#, c-format
+msgid "unsupported font format: %s"
+msgstr "formato de tipografía %s no soportado"
+
+#: open-type-font.cc:112
+#, c-format
+msgid "error reading font file %s: %s"
+msgstr "error al leer la tipografía %s: %s"
+
+#: open-type-font.cc:187
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "error de Freetype en FT_Get_Glyph_Name (): %s"
+
+#: open-type-font.cc:318 pango-font.cc:189
+#, c-format
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "error en FT_Get_Glyph_Name (): %s"
+
 #: note-heads-engraver.cc:76
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent sin altura"
 
-#: rest.cc:160
-#, c-format
-msgid "rest `%s' not found"
-msgstr "no se ha encontrado el silencio «%s»"
+#: skyline-pair.cc:131
+msgid "direction must not be CENTER in ly:skyline-pair::skyline"
+msgstr "la dirección no puede ser CENTER en ly:skyline-pair::skyline"
 
-#: spaceable-grob.cc:94
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "No hay separación entre la columna %d y la siguiente"
+#: hyphen-engraver.cc:104
+msgid "removing unterminated hyphen"
+msgstr "se suprime el guión separador sin terminación"
 
-#: beam-engraver.cc:147
-msgid "already have a beam"
-msgstr "ya tiene una barra"
+#: hyphen-engraver.cc:118
+msgid "unterminated hyphen; removing"
+msgstr "guión separador sin terminar; se suprime"
 
-#: beam-engraver.cc:230
-msgid "unterminated beam"
-msgstr "barra sin terminar"
+#: output-def.cc:235
+msgid "margins do not fit with line-width, setting default values"
+msgstr "los márgenes no caben en este ancho de línea, fijando valores predeterminados"
 
-#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
-msgid "stem must have Rhythmic structure"
-msgstr "la plica debe tener estructura rítmica"
+#: output-def.cc:242
+msgid "systems run off the page due to improper paper settings, setting default values"
+msgstr "los sistemas se salen de la página a causa de unos ajustes del papel inadecuados, fijando valores predeterminados"
 
-#: beam-engraver.cc:274
-msgid "stem does not fit in beam"
-msgstr "la plica no cabe dentro de la barra"
+#: accidental.cc:200
+#, c-format
+msgid "Could not find glyph-name for alteration %s"
+msgstr "No se ha encontrado el nombre de glifo para la alteración %s"
 
-#: beam-engraver.cc:275
-msgid "beam was started here"
-msgstr "la barra comenzó aquí"
+#: accidental.cc:215
+msgid "natural alteration glyph not found"
+msgstr "no se encuentra el glifo del símbolo de becuadro"
 
-#: music-iterator.cc:181
-msgid "Sending non-event to context"
-msgstr "Enviando elemento que no es un evento a un contexto"
+#: lyric-combine-music-iterator.cc:337
+#, c-format
+msgid "cannot find Voice `%s'"
+msgstr "no se encuentra la Voz «%s»"
 
 #: context.cc:148
 #, c-format
@@ -1668,11 +1830,6 @@ msgstr "no se encuentra o no se puede crear un «%s» nuevo"
 msgid "cannot find or create `%s' called `%s'"
 msgstr "no se encuentra o no se puede crear «%s» llamado «%s»"
 
-#: context.cc:268
-#, c-format
-msgid "Invalid CreateContext event: Cannot create %s context"
-msgstr "evento CreateContext inválido: No se puede crear el contexto %s"
-
 #: context.cc:399
 #, c-format
 msgid "cannot find or create: `%s'"
@@ -1687,9 +1844,15 @@ msgstr "La clase del evento debe ser un símbolo"
 msgid "Unknown event class %s"
 msgstr "Clase de evento %s desconocida"
 
-#: paper-column-engraver.cc:245
-msgid "forced break was overridden by some other event, should you be using bar checks?"
-msgstr "el salto forzado ha sido sobreestablecido por algún otro evento, ¿quizá deba usar comprobaciones de compás?"
+#: dispatcher.cc:171
+#, c-format
+msgid "Junking event: %s"
+msgstr "se elimina el evento: %s"
+
+#: auto-change-iterator.cc:74 change-iterator.cc:72
+#, c-format
+msgid "cannot change, already in translator: %s"
+msgstr "no se puede cambiar, ya está dentro del traductor: %s"
 
 #: tie-engraver.cc:117
 msgid "unterminated tie"
@@ -1699,23 +1862,23 @@ msgstr "ligadura de unión sin terminar"
 msgid "lonely tie"
 msgstr "ligadura de unión solitaria"
 
-#: dynamic-engraver.cc:197
+#: dynamic-engraver.cc:193
 msgid "cannot find start of (de)crescendo"
 msgstr "no se encuentra el comienzo del (de)crescendo"
 
-#: dynamic-engraver.cc:206
+#: dynamic-engraver.cc:200
 msgid "already have a decrescendo"
 msgstr "ya tiene un decrescendo"
 
-#: dynamic-engraver.cc:208
+#: dynamic-engraver.cc:202
 msgid "already have a crescendo"
 msgstr "ya tiene un crescendo"
 
-#: dynamic-engraver.cc:211
+#: dynamic-engraver.cc:205
 msgid "cresc starts here"
 msgstr "el cresc comenzó aquí"
 
-#: dynamic-engraver.cc:339
+#: dynamic-engraver.cc:333
 msgid "unterminated (de)crescendo"
 msgstr "(de)crescendo sin terminar"
 
@@ -1723,16 +1886,16 @@ msgstr "(de)crescendo sin terminar"
 msgid "Calculating line breaks..."
 msgstr "Calculando los saltos de línea..."
 
-#: paper-score.cc:135
+#: paper-score.cc:134
 #, c-format
 msgid "Element count %d (spanners %d) "
 msgstr "Cantidad de elementos: %d (trazadores: %d)"
 
-#: paper-score.cc:139
+#: paper-score.cc:138
 msgid "Preprocessing graphical objects..."
 msgstr "Preprocesando los objetos gráficos..."
 
-#: paper-score.cc:163 optimal-page-breaking.cc:208
+#: paper-score.cc:162 optimal-page-breaking.cc:208
 #: page-turn-page-breaking.cc:248
 msgid "Drawing systems..."
 msgstr "Dibujando los sistemas..."
@@ -1785,77 +1948,38 @@ msgstr ""
 msgid "unexpected case fall-through"
 msgstr "opción de caso por defecto inesperada"
 
-#: piano-pedal-engraver.cc:296
+#: piano-pedal-engraver.cc:279
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
 msgstr "se eseperaban 3 cadenas para los pedales de piano, se han encontrado: %ld"
 
-#: piano-pedal-engraver.cc:311 piano-pedal-engraver.cc:322
+#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305
 #: piano-pedal-performer.cc:104
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
 msgstr "no se encuentra el comienzo del pedal de piano «%s»"
 
-#: piano-pedal-engraver.cc:357
+#: piano-pedal-engraver.cc:340
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
 msgstr "no se encuentra el comienzo del corchete de pedal de piano «%s»"
 
-#: input.cc:130 source-file.cc:178 source-file.cc:193
+#: input.cc:138 source-file.cc:178 source-file.cc:193
 msgid "position unknown"
 msgstr "posición desconocida"
 
-#: paper-outputter-scheme.cc:41
-#, c-format
-msgid "Layout output to `%s'..."
-msgstr "Salida de la página hacia «%s»..."
-
-#: general-scheme.cc:305
-msgid "infinity or NaN encountered while converting Real number"
-msgstr "se ha encontrado infinito o NaN durante la conversión de un número Real"
-
-#: general-scheme.cc:306
-msgid "setting to zero"
-msgstr "estableciendo al valor cero"
+#: stem.cc:128
+msgid "weird stem size, check for narrow beams"
+msgstr "tamaño de plica extraño, compruebe que no haya barras estrechas"
 
-#: general-scheme.cc:540
-msgid "Found infinity or nan in output. Substituting 0.0"
-msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0"
+#: relative-octave-check.cc:49
+msgid "Failed octave check, got: "
+msgstr "La comprobación de octaba ha fallado, se ha obtenido: "
 
-#: music.cc:150
+#: translator-ctors.cc:65
 #, c-format
-msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr "fallo en la comprobación de octava; se esperaba \"%s\", se ha encontrado: \"%s\""
-
-#: music.cc:218
-msgid "(normalized pitch)"
-msgstr "(altura normalizada)"
-
-#: music.cc:222
-#, c-format
-msgid "Transposing %s by %s makes alteration larger than double"
-msgstr "La transposición de %s en %s produce una alteración más que doble"
-
-#: translator-ctors.cc:65
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "traductor desconocido: «%s»"
-
-#: partial-iterator.cc:45
-msgid "trying to use \\partial after the start of a piece"
-msgstr "intento de utilizar \\partial después del inicio de la pieza"
-
-#: new-fingering-engraver.cc:105
-msgid "cannot add text scripts to individual note heads"
-msgstr "no se pueden añadir guiones de texto a cabezas de nota individuales"
-
-#: new-fingering-engraver.cc:249
-msgid "no placement found for fingerings"
-msgstr "no se ha encontrado ninguna ubicación válida para las digitaciones"
-
-#: new-fingering-engraver.cc:250
-msgid "placing below"
-msgstr "se coloca debajo"
+msgid "unknown translator: `%s'"
+msgstr "traductor desconocido: «%s»"
 
 #: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72
 msgid "cannot find start of ligature"
@@ -1886,34 +2010,26 @@ msgstr "se ignora el silencio: la ligadura no puede contener silencios"
 msgid "ligature was started here"
 msgstr "la ligadura comenzó aquí"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "no se puede cambiar, ya está dentro del traductor: %s"
-
-#: accidental-engraver.cc:179
-#, c-format
-msgid "accidental typesetting list must begin with context-name: %s"
-msgstr "la lista de tippografiado de alteraciones accidentales debe comenzar con context-name: %s"
-
-#: accidental-engraver.cc:209
-#, c-format
-msgid "procedure or context-name expected for accidental rule, found %s"
-msgstr "se esperaba un procedimiento o un nombre de contexto para la regla de alteración accidental, se ha encontrado %s"
+#: tuplet-engraver.cc:110
+msgid "No tuplet to end"
+msgstr "no hay ningún grupo especial que terminar"
 
-#: ttf.cc:480 ttf.cc:529
+#: ttf.cc:480 ttf.cc:528
 #, c-format
 msgid "font index %d too large for font `%s', using index 0"
 msgstr "índice de fuente tipográfica %d demasiado grande para la tipografía `%s', se usa el índice 0"
 
-#: ttf.cc:512 ttf.cc:564
+#: ttf.cc:512 ttf.cc:562
 msgid "font index must be non-negative, using index 0"
 msgstr "el índice de la fuente tipográfica debe ser no negativo, se usa el índice 0"
 
-#: break-alignment-interface.cc:199
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "no hay un elemento de espaciado desde %s hasta «%s»"
+#: multi-measure-rest.cc:140
+msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
+msgstr "usable-duration-logs debe ser una lista no vacía.  Se usan por defecto silencios de redonda."
+
+#: partial-iterator.cc:45
+msgid "trying to use \\partial after the start of a piece"
+msgstr "intento de utilizar \\partial después del inicio de la pieza"
 
 #: minimal-page-breaking.cc:44
 msgid "Calculating page breaks..."
@@ -1939,13 +2055,17 @@ msgstr "la opción de programa -dprint-pages no está contemplada por el backend
 msgid "program option -dpreview not supported by backend `%s'"
 msgstr "la opción de programa -dpreview no está contemplada por el backend `%s'"
 
-#: output-def.cc:235
-msgid "margins do not fit with line-width, setting default values"
-msgstr "los márgenes no caben en este ancho de línea, fijando valores predeterminados"
+#: episema-engraver.cc:75
+msgid "already have an episema"
+msgstr "ya tiene un episema"
 
-#: output-def.cc:242
-msgid "systems run off the page due to improper paper settings, setting default values"
-msgstr "los sistemas se salen de la página a causa de unos ajustes del papel inadecuados, fijando valores predeterminados"
+#: episema-engraver.cc:88
+msgid "cannot find start of episema"
+msgstr "no se encuentra el comienzo del episema"
+
+#: episema-engraver.cc:137
+msgid "unterminated episema"
+msgstr "episema sin terminar"
 
 #: score-engraver.cc:78
 #, c-format
@@ -1965,7 +2085,16 @@ msgstr "Ruta de búsqueda «%s»"
 msgid "Aborting"
 msgstr "Se detiene la ejecución"
 
-#: note-collision.cc:494
+#: performance.cc:54
+msgid "Track..."
+msgstr "Pista..."
+
+#: performance.cc:82
+#, c-format
+msgid "MIDI output to `%s'..."
+msgstr "Salida MIDI hacia «%s»..."
+
+#: note-collision.cc:504
 msgid "ignoring too many clashing note columns"
 msgstr "demasiadas columnas de notas que chocan entre sí; se ignoran"
 
@@ -1987,20 +2116,20 @@ msgstr "ya hay un trazador finalizado"
 msgid "giving up"
 msgstr "abandonando"
 
-#: page-layout-problem.cc:603
+#: page-layout-problem.cc:709
 msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed"
 msgstr "la música no cabe en la página: se ha solicitado la no justificación del espaciado, pero la página ha resultado comprimida"
 
-#: page-layout-problem.cc:606
+#: page-layout-problem.cc:712
 #, c-format
 msgid "cannot fit music on page: overflow is %f"
 msgstr "la música no cabe en la página: el exceso es %f"
 
-#: page-layout-problem.cc:608
+#: page-layout-problem.cc:714
 msgid "compressing music to fit"
 msgstr "comprimiendo la música para que quepa"
 
-#: page-layout-problem.cc:1047
+#: page-layout-problem.cc:1176
 msgid "staff-affinities should only decrease"
 msgstr "staff-affinities solo debe disminuir"
 
@@ -2017,61 +2146,104 @@ msgstr "rehearsalMark debe tener un valor entero"
 msgid "mark label must be a markup object"
 msgstr "la etiqueta de marcado debe ser un objeto de marcado"
 
-#: new-dynamic-engraver.cc:168
-#, c-format
-msgid ""
-"unknown crescendo style: %s\n"
-"defaulting to hairpin."
-msgstr ""
-"estilo de crescendo desconocido: %s\n"
-"se toma regulador como predeterminado."
-
-#: new-dynamic-engraver.cc:233
-#, c-format
-msgid "unterminated %s"
-msgstr "%s sin terminar"
-
-#: stem-engraver.cc:102
+#: stem-engraver.cc:105
 msgid "tremolo duration is too long"
 msgstr "la duración del trémolo es demasiado larga"
 
-#: stem-engraver.cc:154
+#: stem-engraver.cc:157
 #, c-format
 msgid "adding note head to incompatible stem (type = %d/%d)"
 msgstr "añadiendo cabeza de nota a una plica incompatible (tipo = %d/%d)"
 
-#: stem-engraver.cc:157
+#: stem-engraver.cc:160
 msgid "maybe input should specify polyphonic voices"
 msgstr "quizá la entrada debiera especificar voces polifónicas"
 
-#: lily-lexer.cc:265
-msgid "include files are not allowed in safe mode"
-msgstr "no se permiten los archivos de inclusión en el modo seguro"
+#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#, c-format
+msgid "cannot find file: `%s'"
+msgstr "no se encuentra el archivo: «%s»"
 
-#: lily-lexer.cc:292
+#: includable-lexer.cc:73 lily-parser-scheme.cc:100
 #, c-format
-msgid "identifier name is a keyword: `%s'"
-msgstr "el nombre del identificativo es una palabra clave: «%s»"
+msgid "(search path: `%s')"
+msgstr "(ruta de búsqueda: «%s»)"
 
-#: lily-lexer.cc:313
+#: relocate.cc:52
 #, c-format
-msgid "error at EOF: %s"
-msgstr "error al final del archivo (EOF): %s"
+msgid "Setting %s to %s"
+msgstr "Se establece %s a %s"
 
-#: lyric-combine-music-iterator.cc:337
+#. this warning should only be printed in debug mode!
+#: relocate.cc:73
 #, c-format
-msgid "cannot find Voice `%s'"
-msgstr "no se encuentra la Voz «%s»"
+msgid "no such file: %s for %s"
+msgstr "no existe el archivo: %s para %s"
 
-#: includable-lexer.cc:71 lily-guile.cc:86 lily-parser-scheme.cc:109
+#. this warning should only be printed in debug mode!
+#. this warning should only be printed in debug mode
+#: relocate.cc:84 relocate.cc:102
 #, c-format
-msgid "cannot find file: `%s'"
-msgstr "no se encuentra el archivo: «%s»"
+msgid "no such directory: %s for %s"
+msgstr "no existe este directorio: %s para %s"
+
+#: relocate.cc:93
+#, c-format
+msgid "%s=%s (prepend)\n"
+msgstr "%s=%s (prefijar)\n"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:101
+#: relocate.cc:124
 #, c-format
-msgid "(search path: `%s')"
-msgstr "(ruta de búsqueda: «%s»)"
+msgid "not relocating, no %s/ or current/ found under %s"
+msgstr "no se relocaliza, no se ha encontrado %s/ ni current/ bajo %s"
+
+#: relocate.cc:134
+#, c-format
+msgid "Relocation: compile datadir=%s, new datadir=%s"
+msgstr "Relocalización: en la compilación datadir=%s, el nuevo datadir=%s"
+
+#: relocate.cc:146
+#, c-format
+msgid "Relocation: framework_prefix=%s"
+msgstr "Relocalización: framework_prefix=%s"
+
+#: relocate.cc:186
+#, c-format
+msgid "Relocation: is absolute: argv0=%s\n"
+msgstr "Relocalización: es absoluto: argv0=%s\n"
+
+#: relocate.cc:192
+#, c-format
+msgid "Relocation: from cwd: argv0=%s\n"
+msgstr "Relocalización: desde cwd: argv0=%s\n"
+
+#: relocate.cc:208
+#, c-format
+msgid ""
+"Relocation: from PATH=%s\n"
+"argv0=%s"
+msgstr ""
+"Relocalización: desde PATH=%s\n"
+"argv0=%s"
+
+#: relocate.cc:235
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr "LILYPONDPREFIX está obsoleto, utilice LILYPOND_DATADIR"
+
+#: relocate.cc:360
+#, c-format
+msgid "Relocation file: %s"
+msgstr "Archivo de relocalización: %s"
+
+#: relocate.cc:364 source-file.cc:65
+#, c-format
+msgid "cannot open file: `%s'"
+msgstr "no se puede abrir el archivo: «%s»"
+
+#: relocate.cc:394
+#, c-format
+msgid "Unknown relocation command %s"
+msgstr "instrucción de relocalización %s desconocida"
 
 #: note-column.cc:135
 msgid "cannot have note heads and rests together on a stem"
@@ -2081,11 +2253,6 @@ msgstr "no se pueden tener cabezas de nota y silencios en la misma plica"
 msgid "removing beam with no stems"
 msgstr "se suprime la barra sin plicas"
 
-#. We are completely screwed.
-#: beam.cc:1350
-msgid "no viable initial configuration found: may not find good beam slope"
-msgstr "no se ha encontrado ninguna configuración inicial viable; puede que no se encuentre una buena inclinación de las barras"
-
 #: staff-performer.cc:257
 msgid "MIDI channel wrapped around"
 msgstr "ha dado la vuelta el número de canal MIDI"
@@ -2094,43 +2261,64 @@ msgstr "ha dado la vuelta el número de canal MIDI"
 msgid "remapping modulo 16"
 msgstr "se reasigna módulo 16"
 
-#: slur-engraver.cc:90 phrasing-slur-engraver.cc:89
+#: dots.cc:48
 #, c-format
-msgid "direction of %s invalid: %d"
-msgstr "dirección inválida de %s: %d"
-
-#: slur-engraver.cc:158
-msgid "unterminated slur"
-msgstr "ligadura de expresión sin terminar"
-
-#: slur-engraver.cc:183
-msgid "cannot end slur"
-msgstr "no se puede terminar la ligadura de expresión"
-
-#. We already have a slur, so give a warning and completely ignore
-#. the new slur.
-#: slur-engraver.cc:200
-msgid "already have slur"
-msgstr "ya tiene una ligadura de expresión"
+msgid "dot `%s' not found"
+msgstr "no se encuentra el puntillo «%s»"
 
-#: font-config.cc:39
+#: font-config.cc:38
 msgid "Initializing FontConfig..."
 msgstr "Inicializando FontConfig..."
 
-#: font-config.cc:54 font-config-scheme.cc:151
+#: font-config.cc:53 font-config-scheme.cc:151
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "fallo al añadir la carpeta de tipografías: %s"
 
-#: font-config.cc:56 font-config-scheme.cc:153
+#: font-config.cc:55 font-config-scheme.cc:153
 #, c-format
-msgid "adding font directory: %s"
-msgstr "añadiendo carpeta de tipografías: %s"
+msgid "Adding font directory: %s"
+msgstr "Añadiendo carpeta de tipografías: %s"
 
-#: font-config.cc:60
+#: font-config.cc:58
 msgid "Building font database..."
 msgstr "Construyendo la base de datos de fuentes tipográficas..."
 
+#: change-iterator.cc:34
+#, c-format
+msgid "cannot change `%s' to `%s'"
+msgstr "no se puede cambiar de «%s» a «%s»"
+
+#. FIXME: constant error message.
+#: change-iterator.cc:93
+msgid "cannot find context to switch to"
+msgstr "no se encuentra el contexto al que cambiar"
+
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#: change-iterator.cc:102
+#, c-format
+msgid "not changing to same context type: %s"
+msgstr "no se cambia al mismo tipo de contexto: %s"
+
+#. FIXME: uncomprehensable message
+#: change-iterator.cc:106
+msgid "none of these in my family"
+msgstr "no hay ninguno de estos en mi familia"
+
+#: slur.cc:438
+#, c-format
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr "Se ignora el objeto gráfico para la ligadura: %s. ¿No está establecido avoid-slur?"
+
+#: source-file.cc:85
+#, c-format
+msgid "expected to read %d characters, got %d"
+msgstr "se esperaba leer %d caracteres, se han obtenido %d"
+
 #. find out the ideal number of pages
 #: optimal-page-breaking.cc:62
 msgid "Finding the ideal number of pages..."
@@ -2164,41 +2352,21 @@ msgstr "probando %d sistemas"
 msgid "best score for this sys-count: %f"
 msgstr "mejor puntuación para este número de sistemas: %f"
 
-#: accidental.cc:200
-#, c-format
-msgid "Could not find glyph-name for alteration %s"
-msgstr "No se ha encontrado el nombre de glifo para la alteración %s"
-
-#: accidental.cc:215
-msgid "natural alteration glyph not found"
-msgstr "no se encuentra el glifo del símbolo de becuadro"
-
-#: system.cc:201
-#, c-format
-msgid "Element count %d"
-msgstr "Número total de elementos %d"
-
-#: system.cc:402
-#, c-format
-msgid "Grob count %d"
-msgstr "Número de objetos gráficos: %d"
-
-#: slur.cc:359
-#, c-format
-msgid "Ignoring grob for slur: %s. avoid-slur not set?"
-msgstr "Se ignora el objeto gráfico para la ligadura: %s. ¿No está establecido avoid-slur?"
-
-#: font-config-scheme.cc:167
+#: new-dynamic-engraver.cc:168
 #, c-format
-msgid "failed adding font file: %s"
-msgstr "fallo al añadir el archivo de fuente tipográfica: %s"
+msgid ""
+"unknown crescendo style: %s\n"
+"defaulting to hairpin."
+msgstr ""
+"estilo de crescendo desconocido: %s\n"
+"se toma regulador como predeterminado."
 
-#: font-config-scheme.cc:169
+#: new-dynamic-engraver.cc:233
 #, c-format
-msgid "adding font file: %s"
-msgstr "añadiendo archivo de fuente tipográfica: %s"
+msgid "unterminated %s"
+msgstr "%s sin terminar"
 
-#: hairpin.cc:186
+#: hairpin.cc:263
 msgid "decrescendo too small"
 msgstr "decrescendo demasiado pequeño"
 
@@ -2206,30 +2374,7 @@ msgstr "decrescendo demasiado pequeño"
 msgid "unterminated extender"
 msgstr "prolongación sin terminar"
 
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(ruta de carga: «%s»)"
-
-#: lily-guile.cc:431
-#, c-format
-msgid "cannot find property type-check for `%s' (%s)."
-msgstr "no se encuentra la comprobación de tipo de propiedad para «%s» (%s)."
-
-#: lily-guile.cc:434
-msgid "perhaps a typing error?"
-msgstr "¿quizá es un error de tecleo?"
-
-#: lily-guile.cc:441
-msgid "doing assignment anyway"
-msgstr "se hace la asignación de todas formas"
-
-#: lily-guile.cc:453
-#, c-format
-msgid "type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "ha fallado la comprobación de tipo para «%s»; el valor «%s» debe ser del tipo «%s»"
-
-#: main.cc:107
+#: main.cc:101
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2242,7 +2387,7 @@ msgstr ""
 "él bajo ciertas condiciones. Invóquelo como `%s --warranty' para obtener\n"
 "más información.\n"
 
-#: main.cc:113
+#: main.cc:107
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License as \n"
@@ -2290,11 +2435,11 @@ msgstr ""
 "escriba a la Free Software Foundation, Inc.,\n"
 "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:147
+#: main.cc:141
 msgid "SYM[=VAL]"
 msgstr "SÍMBOLO[=VALOR]"
 
-#: main.cc:148
+#: main.cc:142
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
@@ -2302,41 +2447,41 @@ msgstr ""
 "establecer la opción de Scheme SÍMBOLO a VALOR (por omisión: #t).\n"
 "Use -dhelp para obtener ayuda."
 
-#: main.cc:152
+#: main.cc:146
 msgid "EXPR"
 msgstr "EXPRESIÓN"
 
-#: main.cc:152
+#: main.cc:146
 msgid "evaluate scheme code"
 msgstr "evaluar código de Scheme"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:155
+#: main.cc:149
 msgid "FORMATs"
 msgstr "FORMATOs"
 
-#: main.cc:155
+#: main.cc:149
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "volcar FORMATO,...  También como opciones separadas:"
 
-#: main.cc:156
+#: main.cc:150
 msgid "generate PDF (default)"
 msgstr "generar un PDF (predeterminado)"
 
-#: main.cc:157
+#: main.cc:151
 msgid "generate PNG"
 msgstr "generar un PNG"
 
-#: main.cc:158
+#: main.cc:152
 msgid "generate PostScript"
 msgstr "generar un PostScript"
 
-#: main.cc:161
+#: main.cc:155
 msgid "FIELD"
 msgstr "CAMPO"
 
-#: main.cc:161
+#: main.cc:155
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
@@ -2344,19 +2489,19 @@ msgstr ""
 "volcar el campo de cabecera CAMPO a un archivo\n"
 "llamado NOMBRE_BASE.CAMPO"
 
-#: main.cc:164
+#: main.cc:158
 msgid "add DIR to search path"
 msgstr "añadir DIRECTORIO a la ruta de búsqueda"
 
-#: main.cc:165
+#: main.cc:159
 msgid "use FILE as init file"
 msgstr "usar ARCHIVO como archivo de inicialización"
 
-#: main.cc:168
+#: main.cc:162
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "USUARIO, GRUPO, JAULA, DIRECTORIO"
 
-#: main.cc:168
+#: main.cc:162
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2364,14 +2509,32 @@ msgstr ""
 "chroot a JAULA, convertirse en USUARIO:GRUPO\n"
 "y cd al DIRECTORIO"
 
-#: main.cc:172
+#: main.cc:167
+msgid ""
+"print log messages according to LOGLEVEL.  Possible values are:\n"
+"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
+msgstr ""
+"mostrar mensajes de registro según NIVEL_DE_REGISTRO.  Los valores posibles son:\n"
+"NONE (ninguno), ERROR (errores), WARNING (advertencias), BASIC (básico),\n"
+"PROGRESS (mostrar avance), INFO (información; predeterminado)\n"
+"y DEBUG (depuración)."
+
+#: main.cc:171
 msgid "write output to FILE (suffix will be added)"
 msgstr "escribir la salida en el ARCHIVO (se añadirá el sufijo)"
 
-#: main.cc:173
+#: main.cc:172
 msgid "relocate using directory of lilypond program"
 msgstr "relocalizar utilizando el directorio del programa lilypond"
 
+#: main.cc:173
+msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
+msgstr "sin información del avance; sólo mensajes de error (equivale a loglevel=ERROR)"
+
+#: main.cc:175
+msgid "be verbose (equivalent to loglevel=DEBUG)"
+msgstr "ser prolijo (equivale a loglevel=DEBUG)"
+
 #. Do not update the copyright years here, run `make grand-replace'
 #: main.cc:242
 #, c-format
@@ -2379,7 +2542,7 @@ msgid ""
 "Copyright (c) %s by\n"
 "%s  and others."
 msgstr ""
-"Copyright (c) %s by\n"
+"Copyright (c) %s por\n"
 "%s y otros."
 
 #. No version number or newline here.  It confuses help2man.
@@ -2450,11 +2613,50 @@ msgstr "no se puede cambiar el identificador de usuario a %d: %s"
 msgid "cannot change working directory to: %s: %s"
 msgstr "no se puede cambiar el directorio de trabajo a: %s: %s"
 
-#: main.cc:631
+#: main.cc:639
 #, c-format
 msgid "exception caught: %s"
 msgstr "se ha capturado una excepción: %s"
 
+#: page-turn-page-breaking.cc:168
+#, c-format
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr "page-turn-page-breaking: saltando desde %d hasta %d"
+
+#: page-turn-page-breaking.cc:217
+msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
+msgstr "no se puede ajustar la primera vuelta de página en una página única. Considere la posibilidad de establecer first-page-number a un número par."
+
+#: page-turn-page-breaking.cc:230
+#, c-format
+msgid "Calculating page and line breaks (%d possible page breaks)..."
+msgstr "Calculando los saltos de página y de línea (%d saltos de página posibles)..."
+
+#: page-turn-page-breaking.cc:300
+#, c-format
+msgid "break starting at page %d"
+msgstr "el salto comienza en la página %d"
+
+#: page-turn-page-breaking.cc:301
+#, c-format
+msgid "\tdemerits: %f"
+msgstr "\tpuntuación: %f"
+
+#: page-turn-page-breaking.cc:302
+#, c-format
+msgid "\tsystem count: %d"
+msgstr "número total de \tsistemas: %d"
+
+#: page-turn-page-breaking.cc:303
+#, c-format
+msgid "\tpage count: %d"
+msgstr "número total de \tpáginas: %d"
+
+#: page-turn-page-breaking.cc:304
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "\tsalto anterior: %d"
+
 #: key-signature-interface.cc:77
 #, c-format
 msgid "No glyph found for alteration: %s"
@@ -2464,10 +2666,27 @@ msgstr "No se ha encontrado ningún glifo para la alteración: %s"
 msgid "alteration not found"
 msgstr "no se encuentra la alteración"
 
-#: dots.cc:48
+#: music.cc:150
 #, c-format
-msgid "dot `%s' not found"
-msgstr "no se encuentra el puntillo «%s»"
+msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgstr "fallo en la comprobación de octava; se esperaba \"%s\", se ha encontrado: \"%s\""
+
+#: music.cc:219
+msgid "(normalized pitch)"
+msgstr "(altura normalizada)"
+
+#: music.cc:223
+#, c-format
+msgid "Transposing %s by %s makes alteration larger than double"
+msgstr "La transposición de %s en %s produce una alteración más que doble"
+
+#: vaticana-ligature.cc:95
+msgid "flexa-height undefined; assuming 0"
+msgstr "la altura flexa-height no está definida; se supone que es 0"
+
+#: vaticana-ligature.cc:100
+msgid "ascending vaticana style flexa"
+msgstr "flexa ascendente de estilo vaticana"
 
 #: translator.cc:356
 #, c-format
@@ -2479,9 +2698,28 @@ msgstr "Dos eventos %s simultáneos, se recorta éste"
 msgid "Previous %s event here"
 msgstr "El evento %s previo está aquí"
 
-#: glissando-engraver.cc:156
-msgid "unterminated glissando"
-msgstr "glissando sin terminar"
+#: lily-guile.cc:93
+#, c-format
+msgid "(load path: `%s')"
+msgstr "(ruta de carga: «%s»)"
+
+#: lily-guile.cc:416
+#, c-format
+msgid "cannot find property type-check for `%s' (%s)."
+msgstr "no se encuentra la comprobación de tipo de propiedad para «%s» (%s)."
+
+#: lily-guile.cc:419
+msgid "perhaps a typing error?"
+msgstr "¿quizá es un error de tecleo?"
+
+#: lily-guile.cc:426
+msgid "doing assignment anyway"
+msgstr "se hace la asignación de todas formas"
+
+#: lily-guile.cc:438
+#, c-format
+msgid "type check for `%s' failed; value `%s' must be of type `%s'"
+msgstr "ha fallado la comprobación de tipo para «%s»; el valor «%s» debe ser del tipo «%s»"
 
 #: text-spanner-engraver.cc:72
 msgid "cannot find start of text spanner"
@@ -2500,6 +2738,26 @@ msgstr "trazador de texto sin terminar"
 msgid "clef `%s' not found"
 msgstr "no se ha encontrado la clave  «%s»"
 
+#: beam-engraver.cc:147
+msgid "already have a beam"
+msgstr "ya tiene una barra"
+
+#: beam-engraver.cc:230
+msgid "unterminated beam"
+msgstr "barra sin terminar"
+
+#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
+msgid "stem must have Rhythmic structure"
+msgstr "la plica debe tener estructura rítmica"
+
+#: beam-engraver.cc:277
+msgid "stem does not fit in beam"
+msgstr "la plica no cabe dentro de la barra"
+
+#: beam-engraver.cc:278
+msgid "beam was started here"
+msgstr "la barra comenzó aquí"
+
 #.
 #. Todo: should make typecheck?
 #.
@@ -2510,142 +2768,105 @@ msgstr "no se ha encontrado la clave  «%s»"
 msgid "strange time signature found: %d/%d"
 msgstr "se ha encontrado una indicación extraña de compás: %d/%d"
 
-#: lily-parser-scheme.cc:83
+#: paper-column-engraver.cc:261
+msgid "forced break was overridden by some other event, should you be using bar checks?"
+msgstr "el salto forzado ha sido sobreestablecido por algún otro evento, ¿quizá deba usar comprobaciones de compás?"
+
+#: lily-parser-scheme.cc:80
 #, c-format
 msgid "Changing working directory to: `%s'"
 msgstr "Se cambia el directorio de trabajo a:  «%s»"
 
-#: lily-parser-scheme.cc:100
+#: lily-parser-scheme.cc:84
+#, c-format
+msgid "unable to change directory to: `%s'"
+msgstr "no se ha podido cambiar el directorio de trabajo a:  «%s»"
+
+#: lily-parser-scheme.cc:99
 #, c-format
 msgid "cannot find init file: `%s'"
 msgstr "no se encuentra el archivo de inicio: «%s»"
 
-#: lily-parser-scheme.cc:118
+#: lily-parser-scheme.cc:117
 #, c-format
 msgid "Processing `%s'"
 msgstr "Procesando «%s»"
 
-#: lily-parser-scheme.cc:203
+#: lily-parser-scheme.cc:208
 msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr "ly:parser-parse-string sólo es válido con un analizador nuevo.  Use en su lugar ly:parser-include-string."
 
+#: lily-parser-scheme.cc:239
+msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
+msgstr "ly:parse-string-expression sólo es válido con un analizador nuevo.  Use en su lugar ly:parser-include-string."
+
+#: font-config-scheme.cc:167
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "fallo al añadir el archivo de fuente tipográfica: %s"
+
+#: font-config-scheme.cc:169
+#, c-format
+msgid "Adding font file: %s"
+msgstr "Añadiendo archivo de fuente tipográfica: %s"
+
 #: custos.cc:88
 #, c-format
 msgid "custos `%s' not found"
 msgstr "no se encuentran los custos «%s»"
 
-#: program-option-scheme.cc:232
+#: accidental-engraver.cc:179
 #, c-format
-msgid "no such internal option: %s"
-msgstr "no existe la opción interna %s"
+msgid "accidental typesetting list must begin with context-name: %s"
+msgstr "la lista de tippografiado de alteraciones accidentales debe comenzar con context-name: %s"
+
+#: accidental-engraver.cc:209
+#, c-format
+msgid "procedure or context-name expected for accidental rule, found %s"
+msgstr "se esperaba un procedimiento o un nombre de contexto para la regla de alteración accidental, se ha encontrado %s"
 
 #: rest-collision.cc:146
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr "no se puede resolver la colisión de los silencios: la dirección de los silencios no se ha establecido"
 
-#: rest-collision.cc:160 rest-collision.cc:275
+#: rest-collision.cc:160 rest-collision.cc:276
 msgid "too many colliding rests"
 msgstr "demasiados silencios en colisión"
 
-#: pdf-scheme.cc:50
-#, c-format
-msgid "Conversion of string `%s' to UTF-16be failed: %s"
-msgstr "La conversión de la cadena `%s' a UTF-16be ha fallado: %s"
-
-#: episema-engraver.cc:75
-msgid "already have an episema"
-msgstr "ya tiene un episema"
-
-#: episema-engraver.cc:88
-msgid "cannot find start of episema"
-msgstr "no se encuentra el comienzo del episema"
-
-#: episema-engraver.cc:137
-msgid "unterminated episema"
-msgstr "episema sin terminar"
-
-#: grob-property.cc:34
-#, c-format
-msgid "%d: %s"
-msgstr "%d: %s"
-
-#: grob-property.cc:169
-#, c-format
-msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
-msgstr "dependencia cíclica: se ha encontrado calculation-in-progress para #'%s (%s)"
-
-#: relocate.cc:53
-#, c-format
-msgid "Setting %s to %s"
-msgstr "Se establece %s a %s"
-
-#: relocate.cc:73
-#, c-format
-msgid "no such file: %s for %s"
-msgstr "no existe el archivo: %s para %s"
-
-#: relocate.cc:83 relocate.cc:101
-#, c-format
-msgid "no such directory: %s for %s"
-msgstr "no existe este directorio: %s para %s"
-
-#: relocate.cc:93
-#, c-format
-msgid "%s=%s (prepend)\n"
-msgstr "%s=%s (prefijar)\n"
-
-#: relocate.cc:123
-#, c-format
-msgid "not relocating, no %s/ or current/ found under %s"
-msgstr "no se relocaliza, no se ha encontrado %s/ ni current/ bajo %s"
-
-#: relocate.cc:134
-#, c-format
-msgid "Relocation: compile datadir=%s, new datadir=%s"
-msgstr "Relocalización: en la compilación datadir=%s, el nuevo datadir=%s"
-
-#: relocate.cc:147
-#, c-format
-msgid "Relocation: framework_prefix=%s"
-msgstr "Relocalización: framework_prefix=%s"
-
-#: relocate.cc:188
+#: pango-font.cc:205
 #, c-format
-msgid "Relocation: is absolute: argv0=%s"
-msgstr "Relocalización: es absoluto: argv0=%s"
+msgid ""
+"Glyph has no name, but font supports glyph naming.\n"
+"Skipping glyph U+%0X, file %s"
+msgstr ""
+"El glifo no tiene nombre, pero la tipografía soporta nombres de glifo.\n"
+"Se salta el glifo U+%0X, archivo %s"
 
-#: relocate.cc:195
+#: pango-font.cc:242
 #, c-format
-msgid "Relocation: from cwd: argv0=%s"
-msgstr "Relocalización: desde cwd: argv0=%s"
+msgid "no PostScript font name for font `%s'"
+msgstr "no hay un nombre de tipografía PostScript para «%s»"
 
-#: relocate.cc:212
-#, c-format
-msgid ""
-"Relocation: from PATH=%s\n"
-"argv0=%s"
-msgstr ""
-"Relocalización: desde PATH=%s\n"
-"argv0=%s"
+#: pango-font.cc:291
+msgid "FreeType face has no PostScript font name"
+msgstr "El tipo FreeType no tiene un nombre de tipografía PostScript"
 
-#: relocate.cc:239
-msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
-msgstr "LILYPONDPREFIX está obsoleto, utilice LILYPOND_DATADIR"
+#: lyric-engraver.cc:186
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr "La sílaba de la letra no tiene nota. Utilice \\lyricsto o associatedVoice."
 
-#: relocate.cc:365
-#, c-format
-msgid "Relocation file: %s"
-msgstr "Archivo de relocalización: %s"
+#: page-breaking.cc:277
+msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
+msgstr "se ignoran min-systems-per-page y max-systems-per-page debido a que se fijó systems-per-page"
 
-#: relocate.cc:371 source-file.cc:65
-#, c-format
-msgid "cannot open file: `%s'"
-msgstr "no se puede abrir el archivo: «%s»"
+#: page-breaking.cc:282
+msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
+msgstr "min-systems-per-page es mayor que max-systems-per-page, se ignoran los dos valores"
 
-#: relocate.cc:401
+#: paper-outputter-scheme.cc:41
 #, c-format
-msgid "Unknown relocation command %s"
-msgstr "instrucción de relocalización %s desconocida"
+msgid "Layout output to `%s'..."
+msgstr "Salida de la página hacia «%s»..."
 
 #: gregorian-ligature-engraver.cc:70
 #, c-format
@@ -2667,55 +2888,32 @@ msgstr "no se puede aplicar `\\~' sobre la primera cabeza de una ligadura"
 msgid "cannot apply `\\~' on heads with identical pitch"
 msgstr "no se puede aplicar `\\~' sobre cabezas de idéntica altura"
 
-#: translator-group.cc:188
-#, c-format
-msgid "cannot find: `%s'"
-msgstr "no se encuentra «%s»"
+#: chord-tremolo-engraver.cc:88
+msgid "No tremolo to end"
+msgstr "No hay ningún tremolo hasta el final"
 
-#: phrasing-slur-engraver.cc:157
-msgid "unterminated phrasing slur"
-msgstr "ligadura de fraseo sin terminar"
+#: chord-tremolo-engraver.cc:109
+msgid "unterminated chord tremolo"
+msgstr "trémolo de acorde sin terminar"
 
-#: phrasing-slur-engraver.cc:182
-msgid "cannot end phrasing slur"
-msgstr "no se puede terminar la ligadura de fraseo"
+#: general-scheme.cc:390
+#, c-format
+msgid "failed redirecting stderr to `%s'"
+msgstr "fallo al redirigir la salida stderr a «%s»"
 
-#: phrasing-slur-engraver.cc:196
-msgid "already have phrasing slur"
-msgstr "ya tiene una ligadura de fraseo"
+#: general-scheme.cc:469
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0"
 
-#: lyric-engraver.cc:186
-msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr "La sílaba de la letra no tiene nota. Utilice \\lyricsto o associatedVoice."
-
-#: page-breaking.cc:274
-msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
-msgstr "se ignoran min-systems-per-page y max-systems-per-page debido a que se fijó systems-per-page"
-
-#: page-breaking.cc:279
-msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
-msgstr "min-systems-per-page es mayor que max-systems-per-page, se ignoran los dos valores"
-
-#: performance.cc:55
-msgid "Track..."
-msgstr "Pista..."
-
-#: performance.cc:85
+#: system.cc:200
 #, c-format
-msgid "MIDI output to `%s'..."
-msgstr "Salida MIDI hacia «%s»..."
-
-#: tuplet-engraver.cc:107
-msgid "No tuplet to end"
-msgstr "no hay ningún grupo especial que terminar"
-
-#: chord-tremolo-engraver.cc:88
-msgid "No tremolo to end"
-msgstr "No hay ningún tremolo hasta el final"
+msgid "Element count %d"
+msgstr "Número total de elementos %d"
 
-#: chord-tremolo-engraver.cc:109
-msgid "unterminated chord tremolo"
-msgstr "trémolo de acorde sin terminar"
+#: system.cc:466
+#, c-format
+msgid "Grob count %d"
+msgstr "Número de objetos gráficos: %d"
 
 #: axis-group-engraver.cc:94
 msgid "Axis_group_engraver: vertical group already has a parent"
@@ -2738,16 +2936,16 @@ msgstr "estilo de cluster (racimo) «%s» desconocido"
 msgid "junking empty cluster"
 msgstr "se recorta el racimo (cluster) vacío"
 
-#: context-property.cc:42
-msgid "need symbol arguments for \\override and \\revert"
-msgstr "se necesitan argumentos de símbolo para \\override y \\revert"
-
-#: source-file.cc:85
+#: grob-property.cc:35
 #, c-format
-msgid "expected to read %d characters, got %d"
-msgstr "se esperaba leer %d caracteres, se han obtenido %d"
+msgid "%d: %s"
+msgstr "%d: %s"
+
+#: rest-collision-engraver.cc:70
+msgid "rhythmic head is not part of a rhythmic column"
+msgstr "la cabeza rítmica no es parte de una columna rítmica"
 
-#: axis-group-interface.cc:627
+#: axis-group-interface.cc:670
 msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr "un objeto externo a la pauta debe tener una dirección, por omisión se establece hacia arriba"
 
@@ -2756,19 +2954,20 @@ msgstr "un objeto externo a la pauta debe tener una dirección, por omisión se
 msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr "Coherent_ligature_engraver: se establece `spacing-increment=0.01': ptr=%ul"
 
+#. We are completely screwed.
+#: beam-quanting.cc:853
+msgid "no viable initial configuration found: may not find good beam slope"
+msgstr "no se ha encontrado ninguna configuración inicial viable; puede que no se encuentre una buena inclinación de las barras"
+
 #: percent-repeat-engraver.cc:147
 msgid "unterminated percent repeat"
 msgstr "repetición de porcentaje sin terminar"
 
-#: note-head.cc:75
+#: note-head.cc:85
 #, c-format
 msgid "none of note heads `%s' or `%s' found"
 msgstr "no se encuentran las cabezas de nota «%s» ni «%s»"
 
-#: relative-octave-check.cc:49
-msgid "Failed octave check, got: "
-msgstr "La comprobación de octaba ha fallado, se ha obtenido: "
-
 #. FIXME:
 #: script-engraver.cc:113
 msgid "do not know how to interpret articulation:"
@@ -2778,34 +2977,54 @@ msgstr "no sabemos cómo interpretar la articulación:"
 msgid " scheme encoding: "
 msgstr " codificación de Scheme: "
 
-#: all-font-metrics.cc:153
+#: program-option-scheme.cc:235
 #, c-format
-msgid "cannot find font: `%s'"
-msgstr "no se encuentra la tipografía «%s»"
+msgid "no such internal option: %s"
+msgstr "no existe la opción interna %s"
 
 #: property-iterator.cc:93
 #, c-format
 msgid "not a grob name, `%s'"
 msgstr "no es un nombre de objeto gráfico: «%s»"
 
+#: all-font-metrics.cc:149
+#, c-format
+msgid "cannot find font: `%s'"
+msgstr "no se encuentra la tipografía «%s»"
+
+#: pdf-scheme.cc:50
+#, c-format
+msgid "Conversion of string `%s' to UTF-16be failed: %s"
+msgstr "La conversión de la cadena `%s' a UTF-16be ha fallado: %s"
+
+#: rest.cc:171
+#, c-format
+msgid "rest `%s' not found"
+msgstr "no se ha encontrado el silencio «%s»"
+
 #: bar-check-iterator.cc:84
 #, c-format
 msgid "barcheck failed at: %s"
 msgstr "la comprobación de compás ha fallado en: %s"
 
-#: stem.cc:114
-msgid "weird stem size, check for narrow beams"
-msgstr "tamaño de plica extraño, compruebe que no haya barras estrechas"
-
-#: stem.cc:652
+#: slur-engraver.cc:92 phrasing-slur-engraver.cc:91
 #, c-format
-msgid "flag `%s' not found"
-msgstr "no se encuentra el indicador «%s»"
+msgid "direction of %s invalid: %d"
+msgstr "dirección inválida de %s: %d"
 
-#: stem.cc:668
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "no se encuentra la forma del glifo del corchete «%s»"
+#: slur-engraver.cc:166
+msgid "unterminated slur"
+msgstr "ligadura de expresión sin terminar"
+
+#: slur-engraver.cc:191
+msgid "cannot end slur"
+msgstr "no se puede terminar la ligadura de expresión"
+
+#. We already have a slur, so give a warning and completely ignore
+#. the new slur.
+#: slur-engraver.cc:208
+msgid "already have slur"
+msgstr "ya tiene una ligadura de expresión"
 
 #: global-context-scheme.cc:96 global-context-scheme.cc:114
 msgid "no music found in score"
@@ -2815,7 +3034,7 @@ msgstr "no se ha encontrado música en la partitura"
 msgid "Interpreting music... "
 msgstr "Interpretando la música... "
 
-#: global-context-scheme.cc:127
+#: global-context-scheme.cc:126
 #, c-format
 msgid "elapsed time: %.2f seconds"
 msgstr "tiempo transcurrido: %.2f segundos"
@@ -2825,61 +3044,22 @@ msgstr "tiempo transcurrido: %.2f segundos"
 msgid "fatal error. Couldn't find type: %s"
 msgstr "error fatal. No se ha encontrado el tipo: %s"
 
-#: mensural-ligature.cc:171
-msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature (ligadura mensural): caso por defecto inesperado"
-
-#: mensural-ligature.cc:233
-msgid "Mensural_ligature: (join_right == 0)"
-msgstr "Mensural_ligature (ligadura mensural): (join_right == 0)"
-
-#: page-turn-page-breaking.cc:168
-#, c-format
-msgid "page-turn-page-breaking: breaking from %d to %d"
-msgstr "page-turn-page-breaking: saltando desde %d hasta %d"
-
-#: page-turn-page-breaking.cc:217
-msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
-msgstr "no se puede ajustar la primera vuelta de página en una página única. Considere la posibilidad de establecer first-page-number a un número par."
-
-#: page-turn-page-breaking.cc:230
-#, c-format
-msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr "Calculando los saltos de página y de línea (%d saltos de página posibles)..."
-
-#: page-turn-page-breaking.cc:300
-#, c-format
-msgid "break starting at page %d"
-msgstr "el salto comienza en la página %d"
-
-#: page-turn-page-breaking.cc:301
-#, c-format
-msgid "\tdemerits: %f"
-msgstr "\tpuntuación: %f"
-
-#: page-turn-page-breaking.cc:302
-#, c-format
-msgid "\tsystem count: %d"
-msgstr "número total de \tsistemas: %d"
+#: phrasing-slur-engraver.cc:165
+msgid "unterminated phrasing slur"
+msgstr "ligadura de fraseo sin terminar"
 
-#: page-turn-page-breaking.cc:303
-#, c-format
-msgid "\tpage count: %d"
-msgstr "número total de \tpáginas: %d"
+#: phrasing-slur-engraver.cc:190
+msgid "cannot end phrasing slur"
+msgstr "no se puede terminar la ligadura de fraseo"
 
-#: page-turn-page-breaking.cc:304
-#, c-format
-msgid "\tprevious break: %d"
-msgstr "\tsalto anterior: %d"
+#: phrasing-slur-engraver.cc:204
+msgid "already have phrasing slur"
+msgstr "ya tiene una ligadura de fraseo"
 
-#: lily-parser.cc:105
+#: lily-parser.cc:109
 msgid "Parsing..."
 msgstr "Analizando..."
 
-#: lily-parser.cc:133
-msgid "braces do not match"
-msgstr "las llaves no concuerdan"
-
 #: score.cc:176
 msgid "already have music in score"
 msgstr "ya tiene música en la partitura"
@@ -2892,31 +3072,6 @@ msgstr "esta es la música precedente"
 msgid "errors found, ignoring music expression"
 msgstr "se han encontrado errores, se ignora la expresión musical"
 
-#: change-iterator.cc:34
-#, c-format
-msgid "cannot change `%s' to `%s'"
-msgstr "no se puede cambiar de «%s» a «%s»"
-
-#. FIXME: constant error message.
-#: change-iterator.cc:93
-msgid "cannot find context to switch to"
-msgstr "no se encuentra el contexto al que cambiar"
-
-#. We could change the current translator's id, but that would make
-#. errors hard to catch.
-#.
-#. last->translator_id_string () = get_change
-#. ()->change_to_id_string ();
-#: change-iterator.cc:102
-#, c-format
-msgid "not changing to same context type: %s"
-msgstr "no se cambia al mismo tipo de contexto: %s"
-
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
-msgid "none of these in my family"
-msgstr "no hay ninguno de estos en mi familia"
-
 #. If there is no such symbol, we default to the numbered style.
 #. (Here really with a warning!)
 #: time-signature.cc:94
@@ -2934,36 +3089,6 @@ msgstr "interfaz desconocido «%s»"
 msgid "Grob `%s' has no interface for property `%s'"
 msgstr "El grob «%s» no tiene interfaz para la propiedad «%s»"
 
-#: open-type-font.cc:44
-#, c-format
-msgid "cannot allocate %lu bytes"
-msgstr "no se peuden reservar %lu bytes"
-
-#: open-type-font.cc:48
-#, c-format
-msgid "cannot load font table: %s"
-msgstr "no se puede cargar la tabla de tipografías: %s"
-
-#: open-type-font.cc:53
-#, c-format
-msgid "FreeType error: %s"
-msgstr "error de FreeType: %s"
-
-#: open-type-font.cc:110
-#, c-format
-msgid "unsupported font format: %s"
-msgstr "formato de tipografía %s no soportado"
-
-#: open-type-font.cc:112
-#, c-format
-msgid "error reading font file %s: %s"
-msgstr "error al leer la tipografía %s: %s"
-
-#: open-type-font.cc:187
-#, c-format
-msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr "error de Freetype en FT_Get_Glyph_Name (): %s"
-
 #: midi-stream.cc:39
 #, c-format
 msgid "cannot open for write: %s: %s"
@@ -2974,143 +3099,155 @@ msgstr "no se puede abrir el archivo en modo de escritura: %s: %s"
 msgid "cannot write to file: `%s'"
 msgstr "no se puede escribir el archivo: «%s»"
 
-#: parser.yy:825
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:129
+#, c-format
+msgid "Cyclic markup detected: %s"
+msgstr "Se ha detectado un elemento de marcado cílcico: %s"
+
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:142
+#, c-format
+msgid "Markup depth exceeds maximal value of %d; Markup: %s"
+msgstr "La profundidad del marcado supera el valor máximo de %d; Elemento de marcado: %s"
+
+#: parser.yy:162 parser.yy:176
+msgid "Too much lookahead"
+msgstr "Lectura previa por delante excesiva"
+
+#: parser.yy:827 parser.yy:1193 parser.yy:1226
+msgid "not a context mod"
+msgstr "no es un modificador de contexto"
+
+#: parser.yy:995
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "no se puede usar \\paper dentro de \\score, utilice \\layout en su lugar"
 
-#: parser.yy:849
+#: parser.yy:1019
 msgid "need \\paper for paper block"
 msgstr "es necesario \\paper para el bloque 'paper'"
 
-#: parser.yy:1369
+#: parser.yy:1943
 msgid "only \\consists takes non-string argument."
 msgstr "solo \\consists admite un argumento no de cadena."
 
-#: parser.yy:1382
+#: parser.yy:1956
 msgid "Grob name should be alphanumeric"
 msgstr "El nombre del objeto gráfico ha de ser alfanumérico"
 
-#: parser.yy:1697
-msgid "second argument must be pitch list"
-msgstr "el segundo argumento debe ser una lista de notas"
+#: parser.yy:2150
+msgid "not a rhythmic event"
+msgstr "no es un evento rítmico"
 
-#: parser.yy:1728 parser.yy:1733 parser.yy:2206
+#: parser.yy:2246 parser.yy:2251
 msgid "have to be in Lyric mode for lyrics"
 msgstr "para la letra se debe estar en el modo Lyric"
 
-#: parser.yy:1830
+#: parser.yy:2366
 msgid "expecting string as script definition"
 msgstr "se espera una cadena como definición del guión"
 
-#: parser.yy:1985 parser.yy:2036
+#: parser.yy:2518 parser.yy:2569
 #, c-format
 msgid "not a duration: %d"
 msgstr "no es una duración: %d"
 
-#: parser.yy:2160
+#: parser.yy:2688
 msgid "have to be in Note mode for notes"
 msgstr "para las notas se debe estar en el modo Note"
 
-#: parser.yy:2221
+#: parser.yy:2737
 msgid "have to be in Chord mode for chords"
 msgstr "para los acordes se debe estar en el modo Chord"
 
+#: parser.yy:2997
+msgid "not a markup"
+msgstr "no es una instrucción de marcado"
+
 # stray?
-#: lexer.ll:192
+#: lexer.ll:225
 msgid "stray UTF-8 BOM encountered"
 msgstr "se ha encontrado una marca BOM de UTF-8 extraña"
 
-#: lexer.ll:196
+#: lexer.ll:228
 msgid "Skipping UTF-8 BOM"
 msgstr "Se salta el BOM de UTF-8"
 
-#: lexer.ll:251
+#: lexer.ll:286
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Renombrando la entrada a: «%s»"
 
-#: lexer.ll:268
+#: lexer.ll:303
 msgid "quoted string expected after \\version"
 msgstr "se esperaba una cadena entre comillas después de \\version"
 
-#: lexer.ll:272
+#: lexer.ll:307
 msgid "quoted string expected after \\sourcefilename"
 msgstr "se esperaba una cadena entre comillas después de \\sourcefilename"
 
-#: lexer.ll:276
+#: lexer.ll:311
 msgid "integer expected after \\sourcefileline"
 msgstr "se esperaba un entero después de \\sourcefileline"
 
-#: lexer.ll:289
-msgid "EOF found inside a comment"
-msgstr "se ha encontrado EOF (fin de archivo) dentro de un comentario"
-
-#: lexer.ll:304
+#: lexer.ll:334
 msgid "\\maininput not allowed outside init files"
 msgstr "no se permite \\maininput fuera de los archivos de inicio"
 
-#: lexer.ll:328
+#: lexer.ll:358
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "identificativo equivocado o no definido: «%s»"
 
+#: lexer.ll:384
+msgid "string expected after \\include"
+msgstr "se esperaba una cadena después de \\include"
+
 #. backup rule
-#: lexer.ll:337
+#: lexer.ll:394
 msgid "end quote missing"
 msgstr "faltan las comillas de cierre"
 
-#: lexer.ll:487
+#: lexer.ll:556
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr "Se ha encontrado una llave al final de la letra. ¿Olvidó un espacio?"
 
-#: lexer.ll:597
+#: lexer.ll:671
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr "Se ha encontrado una llave al final del marcado, ¿Olvidó un espacio?"
 
-#: lexer.ll:701
+#: lexer.ll:683
+msgid "EOF found inside a comment"
+msgstr "se ha encontrado EOF (fin de archivo) dentro de un comentario"
+
+#: lexer.ll:775
 #, c-format
-msgid "invalid character: `%c'"
-msgstr "carácter no válido: «%c»"
+msgid "invalid character: `%s'"
+msgstr "carácter no válido: «%s»"
 
-#: lexer.ll:822 lexer.ll:823
+#: lexer.ll:868 lexer.ll:869
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "cadena de escape desconocida: `\\%s'"
 
-#: lexer.ll:932 lexer.ll:933
+#: lexer.ll:1117 lexer.ll:1118
+msgid "non-UTF-8 input"
+msgstr "la entrada no es UTF-8"
+
+#: lexer.ll:1161 lexer.ll:1162
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "archivo demasiado antiguo: %s (el más antiguo que se puede tratar es: %s)"
 
-#: lexer.ll:933 lexer.ll:934
+#: lexer.ll:1162 lexer.ll:1163
 msgid "consider updating the input with the convert-ly script"
 msgstr "considere la actualización de la entrada mediante el guión (script) convert-ly"
 
-#: lexer.ll:939 lexer.ll:940
+#: lexer.ll:1168 lexer.ll:1169
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "el programa es demasiado antiguo: %s (el archivo necesita: %s)"
 
-#: documentation-lib.scm:59
-#, scheme-format
-msgid "Processing ~S..."
-msgstr "Procesando ~S..."
-
-#: documentation-lib.scm:176
-#, scheme-format
-msgid "Writing ~S..."
-msgstr "Escribiendo ~S..."
-
-#: documentation-lib.scm:184
-#, scheme-format
-msgid "cannot find description for property `~S' (~S)"
-msgstr "no se encuentra la descripción de la propiedad `~S' (~S)"
-
-#: documentation-lib.scm:205
-#, scheme-format
-msgid "cannot find description for property ~S (~S)"
-msgstr "no se encuentra la descripción de la propiedad ~S (~S)"
-
 #: parser-clef.scm:141 parser-clef.scm:181
 #, scheme-format
 msgid "unknown clef type `~a'"
@@ -3136,111 +3273,109 @@ msgstr "no se encuentra un interface para la propiedad ~S"
 msgid "unknown Grob interface: ~S"
 msgstr "interfaz de Objeto gráfico desconocido: ~S"
 
+#: graphviz.scm:64
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Escribiendo el gráfico «~a»..."
+
+#: parser-ly-from-scheme.scm:71
+msgid "error in #{ ... #}"
+msgstr "error en #{ ... #}"
+
 #: framework-eps.scm:108
 #, scheme-format
 msgid "Writing ~a..."
 msgstr "Escribiendo «~a»..."
 
-#: define-music-properties.scm:21 define-grob-properties.scm:21
-#: define-context-properties.scm:31
+#: output-ps.scm:48
+msgid "Found infinity or nan in output.  Substituting 0.0"
+msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0"
+
+#: output-ps.scm:313 output-svg.scm:556
 #, scheme-format
-msgid "symbol ~S redefined"
-msgstr "redefinido el símbolo ~S"
+msgid "unknown line-cap-style: ~S"
+msgstr "estilo de extremo de línea line-cap-style desconocido: ~S"
 
-#: paper.scm:117
+#: output-ps.scm:318 output-svg.scm:562
+#, scheme-format
+msgid "unknown line-join-style: ~S"
+msgstr "estilo de unión de líneas line-join-style desconocido: ~S"
+
+#: paper.scm:120
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size: no está en el ámbito de nivel más alto"
 
-#: paper.scm:301
+#: paper.scm:304
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Esto no es un objeto de \\layout {} , ~S"
 
-#: paper.scm:313
+#: paper.scm:316
 #, scheme-format
 msgid "Unknown paper size: ~a"
 msgstr "Tamaño de papel desconocido: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:328
+#: paper.scm:331
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "Debe usar #(set-paper-size .. ) dentro de \\paper { ... }"
 
-#: lily.scm:225
-msgid "Using (ice-9 curried-definitions) module\n"
-msgstr "Utilizando el módulo (ice-9 curried-definitions)\n"
-
-#: lily.scm:230
-msgid "Guile 1.8\n"
-msgstr "Guile 1.8\n"
-
-#: lily.scm:290
+#: backend-library.scm:27
 #, scheme-format
-msgid "cannot find: ~A"
-msgstr "no se encuentra: ~A"
+msgid "Invoking `~a'..."
+msgstr "Invocando «~a»..."
 
-#: lily.scm:350
+#: backend-library.scm:31
 #, scheme-format
-msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr "tipo equivocado para el argumento ~a.  Se esperaba ~a, se encontró ~s"
+msgid "`~a' failed (~a)\n"
+msgstr "«~a» ha fallado (~a)\n"
 
-#: lily.scm:710
-msgid "Compilation successfully completed"
-msgstr "Compiación completada satisfactoriamente"
-
-#: lily.scm:711
-msgid "Compilation completed with warnings or errors"
-msgstr "Compilación completada con advertencias o errores"
-
-#: lily.scm:773
+#: backend-library.scm:90
 #, scheme-format
-msgid "job ~a terminated with signal: ~a"
-msgstr "la tarea ~a ha terminado con la señal: ~a"
+msgid "Converting to `~a'...\n"
+msgstr "Convirtiendo en «~a»...\n"
 
-#: lily.scm:776
+#. Do not try to guess the name of the png file,
+#. GS produces PNG files like BASE-page%d.png.
+#: backend-library.scm:99
 #, scheme-format
-msgid ""
-"logfile ~a (exit ~a):\n"
-"~a"
-msgstr ""
-"archivo de registro ~a (salida ~a):\n"
-"~a"
+msgid "Converting to ~a..."
+msgstr "Convirtiendo en ~a..."
 
-#: lily.scm:798 lily.scm:876
+#: backend-library.scm:137
 #, scheme-format
-msgid "failed files: ~S"
-msgstr "archivos que han fallado: ~S"
+msgid "Writing header field `~a' to `~a'..."
+msgstr "Escribiendo el campo de encabezamiento «~a» en «~a»..."
 
-#: lily.scm:867
+#: backend-library.scm:187
 #, scheme-format
-msgid "Redirecting output to ~a..."
-msgstr "Redirigiendo la salida hacia ~a..."
+msgid "missing stencil expression `~S'"
+msgstr "falta la expresión del sello `~S'"
 
-#: lily.scm:886
+#: output-svg.scm:47
 #, scheme-format
-msgid "Invoking `~a'...\n"
-msgstr "Invocando «~a»...\n"
+msgid "undefined: ~S"
+msgstr "no definido: ~S"
 
-#: graphviz.scm:64
+#: output-svg.scm:157
 #, scheme-format
-msgid "Writing graph `~a'..."
-msgstr "Escribiendo el gráfico «~a»..."
+msgid "cannot decypher Pango description: ~a"
+msgstr "no se puede descifrar la descripción de Pango: ~a"
 
-#: framework-svg.scm:84
-#, scheme-format
-msgid "Updating font into: ~a"
-msgstr "Actualizando la fuente tipográfica en: ~a"
+#: output-svg.scm:237
+msgid "Glyph must have a unicode value"
+msgstr "El glifo debe tener un valor de Unicode"
 
-#: layout-beam.scm:40
+#: output-svg.scm:289 output-svg.scm:299
 #, scheme-format
-msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr "Error en la cuantización de la barra.  Se esperaba (~S,~S), se ha encontrado ~S."
+msgid "cannot find SVG font ~S"
+msgstr "no se encuentra la fuente tipográfica de SVG ~S"
 
-#: layout-beam.scm:54
+#: flag-styles.scm:151
 #, scheme-format
-msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr "Error en la cuantización de la barra.  Se esperaba ~S 0, se ha encontrado ~S."
+msgid "flag stroke `~a' or `~a' not found"
+msgstr "no se encuentra el impacto `~a' o `~a' de indicador"
 
 #: modal-transforms.scm:38
 msgid "'from' pitch not in scale; ignoring"
@@ -3266,49 +3401,73 @@ msgstr "la nota a invertir no está en la escala; se ignora"
 msgid "negative replication count; ignoring"
 msgstr "número de replicaciones negativo; se ignora"
 
-#: backend-library.scm:29 ps-to-png.scm:68
+#: to-xml.scm:191
 #, scheme-format
-msgid "Invoking `~a'..."
-msgstr "Invocando «~a»..."
+msgid "assertion failed: ~S"
+msgstr "el aserto no se cumple: ~S"
 
-#: backend-library.scm:34
+#: define-grob-properties.scm:21 define-context-properties.scm:31
+#: define-music-properties.scm:21
 #, scheme-format
-msgid "`~a' failed (~a)"
-msgstr "«~a» ha fallado (~a)"
+msgid "symbol ~S redefined"
+msgstr "redefinido el símbolo ~S"
 
-#: backend-library.scm:94
+#: chord-entry.scm:52
 #, scheme-format
-msgid "Converting to `~a'..."
-msgstr "Convirtiendo en «~a»..."
+msgid "Spurious garbage following chord: ~A"
+msgstr "Basurilla espúrea después del acorde: ~A"
 
-#. Do not try to guess the name of the png file,
-#. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:104
+#: lily.scm:234
+msgid "Using (ice-9 curried-definitions) module\n"
+msgstr "Utilizando el módulo (ice-9 curried-definitions)\n"
+
+#: lily.scm:237
+msgid "Guile 1.8\n"
+msgstr "Guile 1.8\n"
+
+#: lily.scm:297
 #, scheme-format
-msgid "Converting to ~a..."
-msgstr "Convirtiendo en ~a..."
+msgid "cannot find: ~A"
+msgstr "no se encuentra: ~A"
 
-#: backend-library.scm:142
+#: lily.scm:701
+msgid "Success: compilation successfully completed"
+msgstr "Enhorabuena. La compilación se ha completado satisfactoriamente."
+
+#: lily.scm:702
+msgid "Compilation completed with warnings or errors"
+msgstr "Compilación completada con advertencias o errores"
+
+#: lily.scm:764
 #, scheme-format
-msgid "Writing header field `~a' to `~a'..."
-msgstr "Escribiendo el campo de encabezamiento «~a» en «~a»..."
+msgid "job ~a terminated with signal: ~a"
+msgstr "la tarea ~a ha terminado con la señal: ~a"
 
-#: backend-library.scm:192
+#: lily.scm:767
 #, scheme-format
-msgid "missing stencil expression `~S'"
-msgstr "falta la expresión del sello `~S'"
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"archivo de registro ~a (salida ~a):\n"
+"~a"
 
-#: to-xml.scm:191
+#: lily.scm:789 lily.scm:869
 #, scheme-format
-msgid "assertion failed: ~S"
-msgstr "el aserto no se cumple: ~S"
+msgid "failed files: ~S"
+msgstr "archivos que han fallado: ~S"
 
-#: chord-entry.scm:49
+#: lily.scm:860
 #, scheme-format
-msgid "Spurious garbage following chord: ~A"
-msgstr "Basurilla espúrea después del acorde: ~A"
+msgid "Redirecting output to ~a..."
+msgstr "Redirigiendo la salida hacia ~a..."
+
+#: lily.scm:879 ps-to-png.scm:66
+#, scheme-format
+msgid "Invoking `~a'...\n"
+msgstr "Invocando «~a»...\n"
 
-#: lily-library.scm:758
+#: lily-library.scm:761
 msgid ""
 "Find the index between @var{start} and @var{end} (an integer)\n"
 "which produces the closest match to @var{target-val} if\n"
@@ -3318,131 +3477,118 @@ msgstr ""
 "que produce la correspondencia más cercana a @var{target-val} cuando\n"
 "se aplica a la función @var{getter}."
 
-#: lily-library.scm:832
+#: lily-library.scm:835
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "unidad desconocida: ~S "
 
-#: lily-library.scm:858 lily-library.scm:867
-msgid "warning:"
-msgstr "advertencia:"
-
 #: lily-library.scm:860
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr "no se ha encontrado ninguna instrucción \\version, escriba~apara disponer de compatibilidad en el futuro"
 
-#: lily-library.scm:868
+#: lily-library.scm:866
 msgid "old relative compatibility not used"
 msgstr "no se ha usado la compatibilidad con el modo relativo antiguo"
 
-#: output-ps.scm:48
-msgid "Found infinity or nan in output.  Substituting 0.0"
-msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0"
-
-#: output-ps.scm:299 output-svg.scm:550
+#: framework-svg.scm:84
 #, scheme-format
-msgid "unknown line-cap-style: ~S"
-msgstr "estilo de extremo de línea line-cap-style desconocido: ~S"
+msgid "Updating font into: ~a"
+msgstr "Actualizando la fuente tipográfica en: ~a"
 
-#: output-ps.scm:304 output-svg.scm:556
+#: part-combiner.scm:598
 #, scheme-format
-msgid "unknown line-join-style: ~S"
-msgstr "estilo de unión de líneas line-join-style desconocido: ~S"
+msgid "quoted music `~a' is empty"
+msgstr "la cita musical «~a» está vacía"
 
-#: output-svg.scm:47
-#, scheme-format
-msgid "undefined: ~S"
-msgstr "no definido: ~S"
+#: music-functions.scm:273
+msgid "More alternatives than repeats.  Junking excess alternatives"
+msgstr "Hay más alternativas que repeticiones.  Se recortan las alternativas excedentes"
 
-#: output-svg.scm:151
+#: music-functions.scm:302
 #, scheme-format
-msgid "cannot decypher Pango description: ~a"
-msgstr "no se puede descifrar la descripción de Pango: ~a"
+msgid "invalid tremolo repeat count: ~a"
+msgstr "número de repeticiones no válido para el trémolo: ~a"
 
-#: output-svg.scm:231
-msgid "Glyph must have a unicode value"
-msgstr "El glifo debe tener un valor de Unicode"
+#: music-functions.scm:634
+msgid "Bad chord repetition"
+msgstr "repetición de acorde errónea"
 
-#: output-svg.scm:283 output-svg.scm:293
+#: music-functions.scm:669
 #, scheme-format
-msgid "cannot find SVG font ~S"
-msgstr "no se encuentra la fuente tipográfica de SVG ~S"
+msgid "music expected: ~S"
+msgstr "se esperaba algo de música: ~S"
 
-#: flag-styles.scm:148
+#: music-functions.scm:985
 #, scheme-format
-msgid "flag stroke `~a' or `~a' not found"
-msgstr "no se encuentra el impacto `~a' o `~a' de indicador"
+msgid "cannot find quoted music: `~S'"
+msgstr "no se encuentra la música citada: «~S»"
 
-#: define-note-names.scm:962
-msgid "Select note names language."
-msgstr "Seleccione el idioma para los nombres de las notas."
+#: music-functions.scm:1123
+msgid "Add @var{octave-shift} to the octave of @var{pitch}."
+msgstr "Añadir @var{octave-shift} a la octava de @var{pitch}."
 
-#: define-note-names.scm:969
+#: music-functions.scm:1183
 #, scheme-format
-msgid "Using `~a' note names..."
-msgstr "Usando los nombres de notas de `~a' ..."
+msgid "Unknown octaveness type: ~S "
+msgstr "Tipo de octavación desconocido: ~S "
 
-#: define-note-names.scm:972
-#, scheme-format
-msgid "Could not find language `~a'.  Ignoring."
-msgstr "No se encuentra el idioma `~a'.  Se ignora."
+#: music-functions.scm:1184
+msgid "Defaulting to 'any-octave."
+msgstr "Fijando al valor predeterminado 'any-octave."
 
-#: define-music-types.scm:747
+#: music-functions.scm:1521
 #, scheme-format
-msgid "symbol expected: ~S"
-msgstr "se esperaba un símbolo: ~S"
+msgid "unknown accidental style: ~S"
+msgstr "estilo de alteración ~S desconocido"
 
-#: define-music-types.scm:750
-#, scheme-format
-msgid "cannot find music object: ~S"
-msgstr "no se encuentra el objeto musical ~S"
+#: define-event-classes.scm:80
+msgid "All classes must be the last in their matrilineal line."
+msgstr "Todas las clases deben ir al final de su línea de descendencia."
 
-#: define-music-types.scm:769
-#, scheme-format
-msgid "unknown repeat type `~S'"
-msgstr "tipo de repetición «~S» desconocido"
+#: define-event-classes.scm:84
+msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
+msgstr "Todas las clases deben tener un pedigree bien definido en la jerarquía de clases existente."
 
-#: define-music-types.scm:770
-msgid "See define-music-types.scm for supported repeats"
-msgstr "Consulte el archivo define-music-types.scm para ver los tipos de repetición soportados"
+#: define-event-classes.scm:151
+#, scheme-format
+msgid "event class ~A seems to be unused"
+msgstr "parece que la clase de evento ~A está sin usar"
 
-#: translation-functions.scm:350
+#. should be programming-error
+#: define-event-classes.scm:157
 #, scheme-format
-msgid "Negative fret for pitch ~a on string ~a"
-msgstr "Traste negativo para la nota ~a de la cuerda ~a"
+msgid "translator listens to nonexisting event class ~A"
+msgstr "el traductor está escuchando a una clase de evento ~A que no existe"
 
-#: translation-functions.scm:401
+#: markup-macros.scm:331
 #, scheme-format
-msgid "No open string for pitch ~a"
-msgstr "No hay cuerda al aire para la nota ~a"
+msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgstr "Número de agumentos equivocado.  Se esperaban: ~A, se han encontrado ~A: ~S"
 
-#: translation-functions.scm:416 translation-functions.scm:428
+#: markup-macros.scm:337
 #, scheme-format
-msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
-msgstr "La cuerda solicitada para la nota requiere un traste negativo: cuerda ~a nota ~a"
+msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
+msgstr "Argumento inválido en la posición ~A.  Se esperaba: ~A, se ha encontrado: ~S."
 
-#: translation-functions.scm:419
-msgid "Ignoring string request and recalculating."
-msgstr "Se ignora la solicitud de cuerda; volviendo a calcular."
+#: markup-macros.scm:373
+#, scheme-format
+msgid "Not a markup command: ~A"
+msgstr "No es una instrucción de marcado: ~A"
 
-#: translation-functions.scm:431
-msgid "Ignoring note in tablature."
-msgstr "Se ignora la nota en la tablatura."
+#: define-note-names.scm:962
+msgid "Select note names language."
+msgstr "Seleccione el idioma para los nombres de las notas."
 
-#: translation-functions.scm:454
+#: define-note-names.scm:968
 #, scheme-format
-msgid "No string for pitch ~a (given frets ~a)"
-msgstr "No hay ninguna cuerda para la nota ~a (dados los trastes ~a)"
+msgid "Using `~a' note names..."
+msgstr "Usando los nombres de notas de `~a' ..."
 
-#: translation-functions.scm:559
+#: define-note-names.scm:971
 #, scheme-format
-msgid ""
-"No label for fret ~a (on string ~a);\n"
-"only ~a fret labels provided"
-msgstr ""
-"No hay ninguna etiqueta para el traste ~a (sobre la cuerda ~a);\n"
-"sólo se proporcionan etiquetas para los trastes ~a"
+msgid "Could not find language `~a'.  Ignoring."
+msgstr "No se encuentra el idioma `~a'.  Se ignora."
 
 #: framework-ps.scm:250
 #, scheme-format
@@ -3492,117 +3638,132 @@ msgstr ""
 "  %% Start cut-&-pastable-section\n"
 "  %% ****************************************************************\n"
 
-#: music-functions.scm:268
-msgid "More alternatives than repeats.  Junking excess alternatives"
-msgstr "Hay más alternativas que repeticiones.  Se recortan las alternativas excedentes"
-
-#: music-functions.scm:297
+#: layout-beam.scm:40
 #, scheme-format
-msgid "invalid tremolo repeat count: ~a"
-msgstr "número de repeticiones no válido para el trémolo: ~a"
+msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
+msgstr "Error en la cuantización de la barra.  Se esperaba (~S,~S), se ha encontrado ~S."
 
-#: music-functions.scm:619
+#: layout-beam.scm:54
 #, scheme-format
-msgid "music expected: ~S"
-msgstr "se esperaba algo de música: ~S"
+msgid "Error in beam quanting.  Expected ~S 0, found ~S."
+msgstr "Error en la cuantización de la barra.  Se esperaba ~S 0, se ha encontrado ~S."
 
-#. FIXME: uncomprehensable message
-#: music-functions.scm:662
+#: define-music-types.scm:752
 #, scheme-format
-msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
-msgstr "Ha fallado la comprobación de compás.  Se esperaba que estuviera en ~a, en lugar de en ~a"
+msgid "symbol expected: ~S"
+msgstr "se esperaba un símbolo: ~S"
 
-#: music-functions.scm:845
+#: define-music-types.scm:755
 #, scheme-format
-msgid "cannot find quoted music: `~S'"
-msgstr "no se encuentra la música citada: «~S»"
-
-#: music-functions.scm:979
-msgid "Add @var{octave-shift} to the octave of @var{pitch}."
-msgstr "Añadir @var{octave-shift} a la octava de @var{pitch}."
+msgid "cannot find music object: ~S"
+msgstr "no se encuentra el objeto musical ~S"
 
-#: music-functions.scm:1039
+#: define-music-types.scm:774
 #, scheme-format
-msgid "Unknown octaveness type: ~S "
-msgstr "Tipo de octavación desconocido: ~S "
+msgid "unknown repeat type `~S'"
+msgstr "tipo de repetición «~S» desconocido"
 
-#: music-functions.scm:1040
-msgid "Defaulting to 'any-octave."
-msgstr "Fijando al valor predeterminado 'any-octave."
+#: define-music-types.scm:775
+msgid "See define-music-types.scm for supported repeats"
+msgstr "Consulte el archivo define-music-types.scm para ver los tipos de repetición soportados"
 
-#: music-functions.scm:1378
+#: translation-functions.scm:351
 #, scheme-format
-msgid "unknown accidental style: ~S"
-msgstr "estilo de alteración ~S desconocido"
-
-#: define-event-classes.scm:79
-msgid "All classes must be the last in their matrilineal line."
-msgstr "Todas las clases deben ir al final de su línea de descendencia."
-
-#: define-event-classes.scm:83
-msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
-msgstr "Todas las clases deben tener un pedigree bien definido en la jerarquía de clases existente."
+msgid "Negative fret for pitch ~a on string ~a"
+msgstr "Traste negativo para la nota ~a de la cuerda ~a"
 
-#: define-event-classes.scm:149
+#: translation-functions.scm:402
 #, scheme-format
-msgid "event class ~A seems to be unused"
-msgstr "parece que la clase de evento ~A está sin usar"
+msgid "No open string for pitch ~a"
+msgstr "No hay cuerda al aire para la nota ~a"
 
-#. should be programming-error
-#: define-event-classes.scm:155
+#: translation-functions.scm:417 translation-functions.scm:429
 #, scheme-format
-msgid "translator listens to nonexisting event class ~A"
-msgstr "el traductor está escuchando a una clase de evento ~A que no existe"
+msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
+msgstr "La cuerda solicitada para la nota requiere un traste negativo: cuerda ~a nota ~a"
 
-#: markup.scm:223
-#, scheme-format
-msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
-msgstr "Número de agumentos equivocado.  Se esperaban: ~A, se han encontrado ~A: ~S"
+#: translation-functions.scm:420
+msgid "Ignoring string request and recalculating."
+msgstr "Se ignora la solicitud de cuerda; volviendo a calcular."
+
+#: translation-functions.scm:432
+msgid "Ignoring note in tablature."
+msgstr "Se ignora la nota en la tablatura."
 
-#: markup.scm:229
+#: translation-functions.scm:455
 #, scheme-format
-msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
-msgstr "Argumento inválido en la posición ~A.  Se esperaba: ~A, se ha encontrado: ~S."
+msgid "No string for pitch ~a (given frets ~a)"
+msgstr "No hay ninguna cuerda para la nota ~a (dados los trastes ~a)"
 
-#: markup.scm:292
+#: translation-functions.scm:560
 #, scheme-format
-msgid "Not a markup command: ~A"
-msgstr "No es una instrucción de marcado: ~A"
+msgid ""
+"No label for fret ~a (on string ~a);\n"
+"only ~a fret labels provided"
+msgstr ""
+"No hay ninguna etiqueta para el traste ~a (sobre la cuerda ~a);\n"
+"sólo se proporcionan etiquetas para los trastes ~a"
 
-#: ps-to-png.scm:74
+#: ps-to-png.scm:70
 #, scheme-format
 msgid "~a exited with status: ~S"
 msgstr "~a salió con el estado: ~S"
 
-#: define-markup-commands.scm:883
+#: define-markup-commands.scm:887
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr "no se ha encontrado ningún sistema en el marcado \\score, ¿tiene un bloque \\layout?"
 
-#: define-markup-commands.scm:2561
+#: define-markup-commands.scm:2614
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "No se encuentra el glifo ~a"
 
-#: define-markup-commands.scm:2987
+#: define-markup-commands.scm:3040
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "no se ha encontrado ninguna llave para el tamaño en puntos ~S "
 
-#: define-markup-commands.scm:2988
+#: define-markup-commands.scm:3041
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr "fijando al valor predeterminado ~S pt"
 
-#: define-markup-commands.scm:3141
+#: define-markup-commands.scm:3194
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "no es una cadena válida de duración: ~a"
 
-#: ly-syntax-constructors.scm:51
-msgid "Music head function must return Music object"
-msgstr "La función principal de música debe devolver un objeto musical"
+#: documentation-lib.scm:59
+#, scheme-format
+msgid "Processing ~S..."
+msgstr "Procesando ~S..."
+
+#: documentation-lib.scm:176
+#, scheme-format
+msgid "Writing ~S..."
+msgstr "Escribiendo ~S..."
+
+#: documentation-lib.scm:188
+#, scheme-format
+msgid "cannot find description for property `~S' (~S)"
+msgstr "no se encuentra la descripción de la propiedad `~S' (~S)"
+
+#: documentation-lib.scm:209
+#, scheme-format
+msgid "cannot find description for property ~S (~S)"
+msgstr "no se encuentra la descripción de la propiedad ~S (~S)"
+
+#: ly-syntax-constructors.scm:65
+#, scheme-format
+msgid "~a function cannot return ~a"
+msgstr "la función ~a no puede devolver ~a"
+
+#: ly-syntax-constructors.scm:74
+#, scheme-format
+msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
+msgstr "tipo equivocado para el argumento ~a.  Se esperaba ~a, se encontró ~s"
 
-#: ly-syntax-constructors.scm:177
+#: ly-syntax-constructors.scm:187
 #, scheme-format
 msgid "Invalid property operation ~a"
 msgstr "Operación de propiedad ~a inválida"
index a043af6c3a42c73ce31fb6564bb951f4ec7d2e23..3a2eb2f12004ae5164c8e14bcfd81f17adab2276 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -3,14 +3,14 @@
 # French translation of GNU/lilypond - http//lilypond.org
 # Copyright © 2004 Free Software Foundation, Inc.
 # Michel Robitaille <robitail@IRO.UMontreal.CA>, 1996-2007.
-# Jean-Charles Malahieude <lilyfan@orange.fr>, 2007-2011
+# Jean-Charles Malahieude <lilyfan@orange.fr>, 2007-2012
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.15.9\n"
+"Project-Id-Version: lilypond 2.15.29\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2011-08-02 19:43+0200\n"
-"PO-Revision-Date: 2011-08-03 23:06+0200\n"
+"POT-Creation-Date: 2012-02-04 15:42+0100\n"
+"PO-Revision-Date: 2012-02-07 20:31+0100\n"
 "Last-Translator: Jean-Charles Malahieude <lilyfan@orange.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "Language: fr\n"
@@ -34,49 +34,72 @@ msgstr "Extraction de %s"
 msgid "Writing fonts to %s"
 msgstr "Écriture des fontes vers %s"
 
-#: book_snippets.py:519
+#: book_snippets.py:409
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "option ly-option obsolète : %s=%s"
 
-#: book_snippets.py:521
+#: book_snippets.py:411
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "bascule en mode de compatibilité : %s=%s"
 
-#: book_snippets.py:524
+#: book_snippets.py:414
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "option ly-option obsolète : %s"
 
-#: book_snippets.py:526
+#: book_snippets.py:416
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "bascule en mode de compatibilité : %s"
 
-#: book_snippets.py:544
+#: book_snippets.py:533
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "option ly inconnue et ignorée : %s"
 
-#: book_snippets.py:736
+#: book_snippets.py:741
 #, python-format
-msgid "Opening filter `%s'\n"
-msgstr "Ouverture du filtre « %s »\n"
+msgid "Running through filter `%s'"
+msgstr "Passage par le filtre « %s »"
 
-#: book_snippets.py:756
+#: book_snippets.py:761
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "« %s » a échoué (%d)"
 
-#: book_snippets.py:757
+#: book_snippets.py:762
 msgid "The error log is as follows:"
 msgstr "Voici le journal d'erreurs :"
 
+#: book_snippets.py:882
+#, python-format
+msgid "Converting MusicXML file `%s'...\n"
+msgstr "Lecture du fichier MusicXML %s...\n"
+
+#: book_snippets.py:909
+#, python-format
+msgid ""
+"%s: duplicate filename but different contents of original file,\n"
+"printing diff against existing file."
+msgstr ""
+"%s : fichier en doublon mais contenu différent de l'original,\n"
+"impression d'un différentiel entre les deux fichiers."
+
+#: book_snippets.py:922
+#, python-format
+msgid ""
+"%s: duplicate filename but different contents of converted lilypond file,\n"
+"printing diff against existing file."
+msgstr ""
+"%s : fichier en doublon mais contenu différent du fichier lilypond\n"
+"converti, impression d'un différentiel entre les deux fichiers."
+
 #: convertrules.py:12
 #, python-format
-msgid "Not smart enough to convert %s"
-msgstr "Pas assez d'intelligence pour convertir %s"
+msgid "Not smart enough to convert %s."
+msgstr "Pas assez intelligent pour convertir « %s »."
 
 #: convertrules.py:13
 msgid "Please refer to the manual for details, and update manually."
@@ -89,112 +112,115 @@ msgstr ""
 msgid "%s has been replaced by %s"
 msgstr "%s a été remplacé par %s"
 
-#: convertrules.py:24 lilylib.py:85 musicexp.py:17 convert-ly.py:64 warn.cc:66
-#: input.cc:108
+#: convertrules.py:24 lilylib.py:131 warn.cc:223
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "Avertissement : %s"
 
-#: convertrules.py:49 convertrules.py:99
+#: convertrules.py:49 convertrules.py:94
 msgid "\\header { key = concat + with + operator }"
 msgstr "\\header { clé = concat + avec + opérateur }"
 
-#: convertrules.py:58
+#: convertrules.py:56
 #, python-format
 msgid "deprecated %s"
 msgstr "%s est obsolète"
 
-#: convertrules.py:70
+#: convertrules.py:65
 msgid "deprecated \\textstyle, new \\key syntax"
 msgstr "\\textstyle est obsolète ; utiliser désormais la syntaxe \\key"
 
-#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084
-#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862
-#: convertrules.py:3206
+#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031
+#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800
+#: convertrules.py:3150
 msgid "bump version for release"
 msgstr "sauter de version pour mise à jour"
 
-#: convertrules.py:103
+#: convertrules.py:97
 msgid "new \\header format"
 msgstr "nouveau format de \\header"
 
-#: convertrules.py:132
+#: convertrules.py:124
 msgid "\\translator syntax"
 msgstr "syntaxe de \\translator"
 
-#: convertrules.py:184
+#: convertrules.py:175
 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
 msgstr "\\repeat NUM Musique Alternative -> \\repeat FOLDSTR Musique Alternative"
 
-#: convertrules.py:216 convertrules.py:699 convertrules.py:1383
-#: convertrules.py:2378
+#: convertrules.py:205 convertrules.py:678 convertrules.py:1350
+#: convertrules.py:2317
 #, python-format
 msgid "deprecate %s"
 msgstr "%s obsolète"
 
-#: convertrules.py:290
+#: convertrules.py:279
 #, python-format
 msgid "deprecate %s "
 msgstr "%s obsolète"
 
-#: convertrules.py:319
+#: convertrules.py:305
 msgid "new \\notenames format"
 msgstr "nouveau format de \\notenames"
 
-#: convertrules.py:337
+#: convertrules.py:321
 msgid "new tremolo format"
 msgstr "nouveau format de tremolo"
 
-#: convertrules.py:342
+#: convertrules.py:325
 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
 msgstr "Staff_margin_engraver est obsolète ; utiliser Instrument_name_engraver"
 
-#: convertrules.py:395
-msgid "change property definiton case (eg. onevoice -> oneVoice)"
-msgstr "modifier la casse pour définir une propriété (p.ex. onevoice -> oneVoice)"
+#: convertrules.py:376
+msgid "change property definition case (eg. onevoice -> oneVoice)"
+msgstr "modifier la casse pour définir une propriété (par ex. onevoice -> oneVoice)"
 
-#: convertrules.py:457
+#: convertrules.py:437
 msgid "new \\textscript markup text"
 msgstr "nouvelle étiquette de texte \\textscript"
 
-#: convertrules.py:530
+#: convertrules.py:509
 #, python-format
 msgid "identifier names: %s"
 msgstr "Nom des identificateurs : %s"
 
-#: convertrules.py:569
+#: convertrules.py:548
 msgid "point-and-click argument changed to procedure."
 msgstr "L'argument de point-and-click a été changé en procédure."
 
-#: convertrules.py:611
+#: convertrules.py:590
 msgid "semicolons removed"
 msgstr "Suppression des points-virgules"
 
 #. 40 ?
-#: convertrules.py:654
+#: convertrules.py:633
 #, python-format
 msgid "%s property names"
 msgstr "%s noms de propriété"
 
-#: convertrules.py:724
+#: convertrules.py:703
 msgid "automaticMelismata turned on by default"
 msgstr "automaticMelismata est activé par défaut."
 
-#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942
-#: convertrules.py:2189
+#: convertrules.py:708
+msgid "automaticMelismata is turned on by default since 1.5.67."
+msgstr "automaticMelismata est activé par défaut depuis la version 1.5.67."
+
+#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889
+#: convertrules.py:2134
 #, python-format
 msgid "remove %s"
 msgstr "Retrait de %s"
 
-#: convertrules.py:1001 convertrules.py:1005
+#: convertrules.py:977 convertrules.py:980
 msgid "cluster syntax"
 msgstr "Syntaxe de cluster"
 
-#: convertrules.py:1014
+#: convertrules.py:987
 msgid "new Pedal style syntax"
 msgstr "Nouvelle syntaxe du style de Pedal"
 
-#: convertrules.py:1273
+#: convertrules.py:1246
 msgid ""
 "New relative mode,\n"
 "Postfix articulations, new text markup syntax, new chord syntax."
@@ -202,30 +228,30 @@ msgstr ""
 "Nouveau mode relatif, articulations Postfix,\n"
 "nouvelle syntaxe des étiquettes de texte, nouvelle syntaxe d'accord."
 
-#: convertrules.py:1286
+#: convertrules.py:1259
 msgid "Remove - before articulation"
 msgstr "Retrait du - précédant l'articulation"
 
-#: convertrules.py:1324
+#: convertrules.py:1294
 #, python-format
 msgid "%s misspelling"
 msgstr "%s mal orthographié"
 
-#: convertrules.py:1346
+#: convertrules.py:1313
 msgid "Swap < > and << >>"
 msgstr "Interchanger < > et << >>"
 
-#: convertrules.py:1349
+#: convertrules.py:1316
 msgid "attempting automatic \\figures conversion.  Check results!"
 msgstr ""
-"tentative de conversion automatique des \\figures. \n"
+"tentative de conversion automatique des \\figures.\n"
 "Résultats à vérifier !"
 
-#: convertrules.py:1400
+#: convertrules.py:1362
 msgid "Use Scheme code to construct arbitrary note events."
 msgstr "Utilisation de code Scheme pour construire des événements note arbitraires."
 
-#: convertrules.py:1407
+#: convertrules.py:1369
 msgid ""
 "use symbolic constants for alterations,\n"
 "remove \\outputproperty, move ly:verbose into ly:get-option"
@@ -233,7 +259,7 @@ msgstr ""
 "Utilisation de constantes symboliques pour les altérations,\n"
 "suppression de \\outputproperty, ly:verbose devient ly:get-option"
 
-#: convertrules.py:1432
+#: convertrules.py:1394
 #, python-format
 msgid ""
 "\\outputproperty found,\n"
@@ -250,7 +276,7 @@ msgstr ""
 "\n"
 "comme texte de substitution."
 
-#: convertrules.py:1446
+#: convertrules.py:1406
 msgid ""
 "The alteration field of Scheme pitches was multiplied by 2\n"
 "to support quarter tone accidentals.  You must update the following constructs manually:\n"
@@ -258,22 +284,22 @@ msgid ""
 "* calls of ly:make-pitch and ly:pitch-alteration\n"
 "* keySignature settings made with \\property\n"
 msgstr ""
-"Pour pouvoir tenir compte des quarts de ton en codage Scheme, \n"
+"Pour pouvoir tenir compte des quarts de ton en codage Scheme,\n"
 "le nombre d'arguments d'une altération a été doublé.\n"
 "Les constructions suivantes doivent être adaptées manuellement :\n"
 "\n"
 "* appels à ly:make-pitch et ly:pitch-alteration\n"
 "* recours à \\property pour définir keySignature\n"
 
-#: convertrules.py:1493
+#: convertrules.py:1449
 msgid "removal of automaticMelismata; use melismaBusyProperties instead."
 msgstr "Suppression de automaticMelismata au profit de melismaBusyProperties."
 
-#: convertrules.py:1600
+#: convertrules.py:1556
 msgid "\\partcombine syntax change to \\newpartcombine"
 msgstr "La syntaxe de \\partcombine évolue avec \\newpartcombine"
 
-#: convertrules.py:1628
+#: convertrules.py:1581
 msgid ""
 "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
 "Harmonic notes. Thread context removed. Lyrics context removed."
@@ -281,11 +307,11 @@ msgstr ""
 "Changements de notation pour percussions. Suppression de \\chordmodifiers\n"
 "et \\notenames. Notes harmoniques. Contextes Thread et Lyrics supprimés."
 
-#: convertrules.py:1632
+#: convertrules.py:1585
 msgid "Drums found. Enclose drum notes in \\drummode"
 msgstr "Il y a des percussions. Encadrer leurs notes dans un \\drummode."
 
-#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661
+#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614
 #, python-format
 msgid ""
 "\n"
@@ -294,32 +320,33 @@ msgstr ""
 "\n"
 "Détection de %s. Vérifier le fichier manuellement !\n"
 
-#: convertrules.py:1643
+#: convertrules.py:1596
 msgid "Drum notation"
 msgstr "Notation de percussions"
 
-#: convertrules.py:1702
+#: convertrules.py:1655
 msgid "new syntax for property settings:"
 msgstr "nouvelle syntaxe des réglages de propriétés :"
 
-#: convertrules.py:1728
+#: convertrules.py:1681
 msgid "Property setting syntax in \\translator{ }"
 msgstr "Syntaxe pour régler une propriété dans \\translator{ }"
 
-#: convertrules.py:1767
+#: convertrules.py:1720
 msgid "Scheme grob function renaming"
 msgstr "Renommage de fonction grob Scheme"
 
-#: convertrules.py:1780
+#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142
+#: convertrules.py:2708
 #, python-format
-msgid "use %s"
-msgstr "Utilisation de %s"
+msgid "Use %s\n"
+msgstr "Utilisation de %s\n"
 
-#: convertrules.py:1797
+#: convertrules.py:1747
 msgid "More Scheme function renaming"
 msgstr "Renommage d'autres fonctions Scheme"
 
-#: convertrules.py:1924
+#: convertrules.py:1871
 msgid ""
 "Page layout has been changed, using paper size and margins.\n"
 "textheight is no longer used.\n"
@@ -327,7 +354,7 @@ msgstr ""
 "La mise en page a été modifiée, utilisant la taille du papier et les marges.\n"
 "« textheight » n'est plus utilisé.\n"
 
-#: convertrules.py:2010
+#: convertrules.py:1957
 msgid ""
 "\\foo -> \\foomode (for chords, notes, etc.)\n"
 "fold \\new FooContext \\foomode into \\foo."
@@ -335,7 +362,7 @@ msgstr ""
 "\\toto -> \\totomode (pour accords, notes, etc.)\n"
 "transforme « \\new TotoContext \\totomode » en \\toto."
 
-#: convertrules.py:2048
+#: convertrules.py:1995
 msgid ""
 "staff size should be changed at top-level\n"
 "with\n"
@@ -349,40 +376,40 @@ msgstr ""
 "  #(set-global-staff-size <HAUTEUR-DE-PORTÉE-EN-POINTS>)\n"
 "\n"
 
-#: convertrules.py:2068
+#: convertrules.py:2015
 msgid "regularize other identifiers"
 msgstr "Normalisation d'autres identifiants"
 
-#: convertrules.py:2136
+#: convertrules.py:2083
 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
 msgstr "\\encoding : recodage latin1..utf-8. Suppression de ly:point-and-click"
 
-#: convertrules.py:2149
+#: convertrules.py:2094
 msgid "LilyPond source must be UTF-8"
 msgstr "Le fichier source LilyPond doit être codé en UTF-8."
 
-#: convertrules.py:2152
+#: convertrules.py:2097
 msgid "Try the texstrings backend"
 msgstr "Essayer le moteur texstrings (texstrings backend)."
 
-#: convertrules.py:2155
+#: convertrules.py:2100
 #, python-format
 msgid "Do something like: %s"
 msgstr "Faites quelque chose comme : %s"
 
-#: convertrules.py:2158
+#: convertrules.py:2103
 msgid "Or save as UTF-8 in your editor"
-msgstr "ou sauvegardez en format UTF-8 à l'aide de votre éditeur"
+msgstr "ou sauvegardez au format UTF-8 à l'aide de votre éditeur"
 
-#: convertrules.py:2212
+#: convertrules.py:2153
 msgid "warn about auto beam settings"
 msgstr "Avertissement au sujet des ligatures automatiques"
 
-#: convertrules.py:2217
+#: convertrules.py:2157
 msgid "auto beam settings"
 msgstr "réglage des ligatures automatiques"
 
-#: convertrules.py:2219
+#: convertrules.py:2158
 msgid ""
 "\n"
 "Auto beam settings must now specify each interesting moment in a measure\n"
@@ -392,90 +419,90 @@ msgstr ""
 "Le réglage des ligatures automatiques doit explicitement spécifier chaque\n"
 "moment de la mesure. 1/4 ne prend désormais plus en charge 1/2 et 3/4.\n"
 
-#: convertrules.py:2333
+#: convertrules.py:2271
 msgid "verticalAlignmentChildCallback has been deprecated"
 msgstr "verticalAlignmentChildCallback est désuet"
 
-#: convertrules.py:2337
+#: convertrules.py:2276
 msgid "Remove callbacks property, deprecate XY-extent-callback."
 msgstr "Suppression des propriétés de rappel, les XY-extent-callback sont obsolètes."
 
-#: convertrules.py:2358
+#: convertrules.py:2297
 msgid "Use grob closures iso. XY-offset-callbacks."
 msgstr "Utilisation des clôtures de grob comme avec XY-offset-callbacks."
 
-#: convertrules.py:2420
+#: convertrules.py:2359
 msgid "foobar -> foo-bar for \\paper, \\layout"
 msgstr "taratata -> tara-tata pour \\paper et \\layout"
 
-#: convertrules.py:2530
+#: convertrules.py:2469
 msgid "deprecate \\tempo in \\midi"
 msgstr "\\tempo au sein d'une section \\midi est obsolète"
 
-#: convertrules.py:2583
+#: convertrules.py:2522
 msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
 msgstr "cautionary-style est désuet. Utilisation des propriétés AccidentalCautionary."
 
-#: convertrules.py:2596
+#: convertrules.py:2535
 msgid "Rename accidental glyphs, use glyph-name-alist."
 msgstr "Renommage des glyphes d'altération, utilisation de glyph-name-alist."
 
-#: convertrules.py:2651
-msgid "edge-text settings for TextSpanner."
-msgstr "réglages des limites de texte pour TextSpanner."
+#: convertrules.py:2590
+msgid "edge-text settings for TextSpanner"
+msgstr "réglages des limites de texte pour TextSpanner"
 
-#: convertrules.py:2652
+#: convertrules.py:2591
 #, python-format
 msgid ""
 "Use\n"
 "\n"
 "%s"
 msgstr ""
-"Utiliser dorénavant \n"
+"Utiliser dorénavant\n"
 "\n"
 "%s"
 
-#: convertrules.py:2685
+#: convertrules.py:2624
 msgid "Use the `alignment-offsets' sub-property of\n"
 msgstr "Utiliser la sous-propriété `alignment-offsets' de\n"
 
-#: convertrules.py:2686
+#: convertrules.py:2625
 msgid "NonMusicalPaperColumn #'line-break-system-details\n"
 msgstr "NonMusicalPaperColumn #'line-break-system-details\n"
 
-#: convertrules.py:2687
+#: convertrules.py:2626
 msgid "to set fixed distances between staves.\n"
 msgstr "pour définir un espacement fixe des systèmes.\n"
 
-#: convertrules.py:2699
+#: convertrules.py:2638
 msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
 msgstr "Pour des lignes continues ou pointillées, utilisez #'style, pas #'dash-fraction."
 
-#: convertrules.py:2705
-msgid "all settings related to dashed lines.\n"
-msgstr "tous les réglages concernant les lignes pointillées.\n"
+#: convertrules.py:2644
+msgid "all settings related to dashed lines"
+msgstr "tous les réglages concernant les lignes pointillées"
 
-#: convertrules.py:2706
+#: convertrules.py:2645
 msgid "Use \\override ... #'style = #'line for solid lines and\n"
 msgstr "Utiliser \\override ... #'style = #'line pour des lignes pleines, et\n"
 
-#: convertrules.py:2707
+#: convertrules.py:2646
 msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
 msgstr "\t\\override ... #'style = #'dashed-line pour des lignes pointillées."
 
-#: convertrules.py:2743
+#: convertrules.py:2682
 msgid ""
 "metronomeMarkFormatter uses text markup as second argument,\n"
 "fret diagram properties moved to fret-diagram-details."
 msgstr ""
 "metronomeMarkFormatter prend une étiquette en deuxième argument,\n"
-"les propriétés de tablature sont désormais dans fret-diagram-details."
+"les propriétés des diagrammes de fret sont désormais dans fret-diagram-details."
 
-#: convertrules.py:2748
+#: convertrules.py:2688
 msgid "metronomeMarkFormatter got an additional text argument.\n"
 msgstr "metronomeMarkFormatter prend un argument textuel suplémentaire.\n"
 
-#: convertrules.py:2749
+#: convertrules.py:2689
 #, python-format
 msgid ""
 "The function assigned to Score.metronomeMarkFunction now uses the signature\n"
@@ -484,43 +511,48 @@ msgstr ""
 "La fonction assignée à Score.metronomeMarkFunction utilise la signature\n"
 "%s"
 
-#: convertrules.py:2812
-msgid "\\put-adjacent argument order.\n"
-msgstr "ordre de l'argument \\put-adjacent\n"
+#: convertrules.py:2707
+#, python-format
+msgid "%s in fret-diagram properties"
+msgstr "%s va dans le propriétés de fret-diagram"
+
+#: convertrules.py:2751
+msgid "\\put-adjacent argument order"
+msgstr "ordre de l'argument \\put-adjacent"
 
-#: convertrules.py:2813
+#: convertrules.py:2752
 msgid "Axis and direction now come before markups:\n"
 msgstr "Axe et direction doivent précéder les étiquettes :\n"
 
-#: convertrules.py:2814
+#: convertrules.py:2753
 msgid "\\put-adjacent axis dir markup markup."
 msgstr "\\put-adjacent axe direction étiquette étiquette."
 
-#: convertrules.py:2845
-msgid "re-definition of InnerStaffGroup.\n"
-msgstr "Redéfinition de InnerStaffGroup.\n"
+#: convertrules.py:2784
+msgid "re-definition of InnerStaffGroup"
+msgstr "Redéfinition de InnerStaffGroup"
 
-#: convertrules.py:2851
-msgid "re-definition of InnerChoirStaff.\n"
-msgstr "Redéfinition de InnerChoirStaff.\n"
+#: convertrules.py:2789
+msgid "re-definition of InnerChoirStaff"
+msgstr "Redéfinition de InnerChoirStaff"
 
-#: convertrules.py:2861
+#: convertrules.py:2799
 msgid "Syntax changes for \\addChordShape and \\chord-shape"
 msgstr "Changement de syntaxe pour \\addChordShape et \\chord-shape"
 
-#: convertrules.py:2866
+#: convertrules.py:2804
 msgid "stringTuning must be added to addChordShape call.\n"
 msgstr "stringTuning est requis lors de l'appel à addChordShape.\n"
 
-#: convertrules.py:2872
+#: convertrules.py:2809
 msgid "stringTuning must be added to chord-shape call.\n"
 msgstr "stringTuning est requis lors de l'appel à chord-shape.\n"
 
-#: convertrules.py:2879
+#: convertrules.py:2815
 msgid "Remove oldaddlyrics"
 msgstr "Suppression de oldaddlyrics"
 
-#: convertrules.py:2883
+#: convertrules.py:2819
 msgid ""
 "oldaddlyrics is no longer supported. \n"
 "         Use addlyrics or lyrsicsto instead.\n"
@@ -528,7 +560,7 @@ msgstr ""
 "oldaddlyrics n'est désormais plus pris en charge.\n"
 "         Utilisez maintenant addlyrics ou lyricsto.\n"
 
-#: convertrules.py:2889
+#: convertrules.py:2825
 msgid ""
 "keySignature property not reversed any more\n"
 "MIDI 47: orchestral strings -> orchestral harp"
@@ -536,11 +568,11 @@ msgstr ""
 "Le propriété keySignature n'est plus inversée\n"
 "MIDI 47 : orchestral strings -> orchestral harp"
 
-#: convertrules.py:2894
+#: convertrules.py:2830
 msgid "The alist for Staff.keySignature is no longer in reversed order.\n"
 msgstr "La liste associative pour Staff.keySignature n'est plus en ordre inverse.\n"
 
-#: convertrules.py:2900
+#: convertrules.py:2836
 msgid ""
 "\\bar \".\" now produces a thick barline\n"
 "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
@@ -550,15 +582,15 @@ msgstr ""
 "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
 "Les paramètres du pointillé des liaisons sont gérés par dash-definition."
 
-#: convertrules.py:2906
+#: convertrules.py:2842
 msgid "\\bar \".\" now produces a thick barline.\n"
 msgstr "\\bar \".\" produit désormais une barre épaisse.\n"
 
-#: convertrules.py:2912
+#: convertrules.py:2848
 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n"
 msgstr "Les paramètres du pointillé des liaisons sont gérés par `dash-details.\n"
 
-#: convertrules.py:2917
+#: convertrules.py:2853
 msgid ""
 "Autobeaming rules have changed.  override-auto-beam-setting and\n"
 "revert-auto-beam-setting have been eliminated.\n"
@@ -585,41 +617,33 @@ msgstr ""
 "« Piano et nuances entre les portées » est remplacée par le nouveau\n"
 "contexte `Dynamics'."
 
-#: convertrules.py:2931
-msgid ""
-"override-auto-beam-setting.\n"
-"   Autobeam settings are now overriden with \\overrideBeamSettings.\n"
+#: convertrules.py:2867
+msgid "    Autobeam settings are now overriden with \\overrideBeamSettings.\n"
 msgstr ""
-"override-auto-beam-setting.\n"
 "   L'introduction d'une dérogation aux ligatures automatiques se fait\n"
 "désormais avec \\overrideBeamSettings.\n"
 
-#: convertrules.py:2936
-msgid ""
-"override-auto-beam-setting.\n"
-"   Autobeam settings are now reverted with \\revertBeamSettings.\n"
+#: convertrules.py:2872
+msgid "    Autobeam settings are now reverted with \\revertBeamSettings.\n"
 msgstr ""
-"override-auto-beam-setting.\n"
 "   La suppression d'une dérogation aux ligatures automatiques se fait\n"
 "   désormais avec \\revertBeamSettings.\n"
 
-#: convertrules.py:2941
+#: convertrules.py:2878
 msgid ""
-"beatGrouping. \n"
-"   beatGrouping with a specified context must now be accomplished with\n"
+"    beatGrouping with a specified context must now be accomplished with\n"
 "   \\overrideBeamSettings.\n"
 msgstr ""
-"beatGrouping.\n"
 "   beatGrouping dans un contexte spécifique s'accomplit désormais avec\n"
 "   \\overrideBeamSettings.\n"
 
-#: convertrules.py:2947
+#: convertrules.py:2884
 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n"
 msgstr ""
 "alignment-offsets est devenu alignment-distances : il faut désormais\n"
 "spécifier la distance entre les portées au lieu de leur offset.\n"
 
-#: convertrules.py:2958
+#: convertrules.py:2895
 msgid ""
 "Remove obsolete engravers/translators: Note_swallow_translator,\n"
 "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n"
@@ -631,78 +655,63 @@ msgstr ""
 "Swallow_performer et String_number_engraver.\n"
 "Apparition de nouvelles variables pour l'espacement vertical."
 
-#: convertrules.py:2989
-msgid "minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
-msgstr "minimum-Y-extent : l'espacement vertical ne dépend plus du Y-extent d'un VerticalAxisGroup.\n"
+#: convertrules.py:2926
+msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
+msgstr "L'espacement vertical ne dépend plus du Y-extent d'un VerticalAxisGroup.\n"
 
-#: convertrules.py:2995
+#: convertrules.py:2932
 msgid "Unify fetaNumber and fetaDynamic encodings"
 msgstr "Uniformisation des encodages de fetaNumber et fetaDynamic."
 
-#: convertrules.py:3000
+#: convertrules.py:2937
 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 
-#: convertrules.py:3011
+#: convertrules.py:2948
 msgid "\\cresc etc. are now postfix operators"
 msgstr "\\cresc etc. sont désormais des opérateurs postfix"
 
-#: convertrules.py:3017
+#: convertrules.py:2960
 msgid ""
 "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 msgstr ""
-"Élimination de beamSettings, beatLength, \\setBeatGrouping, \n"
+"Élimination de beamSettings, beatLength, \\setBeatGrouping,\n"
 "\\overrideBeamSettings et \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 
-#: convertrules.py:3035
-msgid "\\overrideBeamSettings.  Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
-msgstr ""
-"\\overrideBeamSettings.\n"
-"Utiliser \\set beamExceptions ou \\overrideTimeSignatureSettings.\n"
-
-#: convertrules.py:3039
-msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
-msgstr ""
-"\\revertBeamSettings.\n"
-"Utiliser \\set beamExceptions ou \\revertTimeSignatureSettings.\n"
+#: convertrules.py:2978
+msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
+msgstr "Utiliser \\set beamExceptions ou \\overrideTimeSignatureSettings.\n"
 
-#: convertrules.py:3043
-msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"
-msgstr ""
-"beamSettings.\n"
-"Utiliser baseMoment, beatStructure et beamExceptions.\n"
+#: convertrules.py:2982
+msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
+msgstr "Utiliser \\set beamExceptions ou \\revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3047
-msgid "beatLength. Use baseMoment and beatStructure.\n"
-msgstr ""
-"beatLength.\n"
-"Utiliser baseMoment et beatStructure.\n"
+#: convertrules.py:2986
+msgid "Use baseMoment, beatStructure, and beamExceptions.\n"
+msgstr "Utiliser baseMoment, beatStructure et beamExceptions.\n"
 
-#: convertrules.py:3051
-msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
-msgstr ""
-"setbeatGrouping.\n"
-"Utiliser baseMoment et beatStructure.\n"
+#: convertrules.py:2990 convertrules.py:2994
+msgid "Use baseMoment and beatStructure.\n"
+msgstr "Utiliser baseMoment et beatStructure.\n"
 
-#: convertrules.py:3056
+#: convertrules.py:2999
 msgid ""
 "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n"
 "Deprecate negative dash-period for hidden lines: use #'style = #'none instead."
 msgstr ""
-"Diagrammes pour vents : taille, épaisseur et graphique deviennent des \n"
-"propriétés.\n"
+"Diagramme pour vent : taille, épaisseur et graphique deviennent des propriétés.\n"
 "Dépréciation des longueurs de tiret négatives pour des lignes masquées ;\n"
 "utiliser désormais #'style = #'none"
 
-#: convertrules.py:3061
-msgid "woodwind-diagrams.  Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
+#: convertrules.py:3004
+msgid "Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
 msgstr ""
-"Diagrammes pour vents (woodwind-diagrams). Taille, épaisseur et graphique\n"
-"sont des propriétés. L'argument devrait ne contenir que la liste des clés.\n"
+"Taille, épaisseur et graphique sont des propriétés.\n"
+"L'argument devrait ne contenir que la liste des clés.\n"
 
-#: convertrules.py:3069
+#: convertrules.py:3012
 msgid ""
 "Rename vertical spacing variables.\n"
 "Add fretboard-table argument to savePredefinedFretboard."
@@ -710,23 +719,23 @@ msgstr ""
 "Renommage des variables d'espacement vertical.\n"
 "Ajout de l'argument fretboard-table à savePredefinedFretboard."
 
-#: convertrules.py:3087
+#: convertrules.py:3030
 msgid "Rename vertical spacing grob properties."
 msgstr "Renommage des propriétés d'objet en matière d'espacement vertical."
 
-#: convertrules.py:3103
+#: convertrules.py:3046
 msgid "Remove \\paper variables head-separation and foot-separation."
 msgstr "Suppression des variables de \\paper head-separation et foot-separation."
 
-#: convertrules.py:3108
+#: convertrules.py:3050
 msgid "Adjust settings for top-system-spacing instead.\n"
 msgstr "Ajustez plutôt le réglage de top-system-spacing.\n"
 
-#: convertrules.py:3113
+#: convertrules.py:3054
 msgid "Adjust settings for last-bottom-spacing instead.\n"
 msgstr "Ajustez plutôt le réglage de last-bottom-spacing.\n"
 
-#: convertrules.py:3119
+#: convertrules.py:3060
 msgid ""
 "Rename space to basic-distance in various spacing alists.\n"
 "Remove HarmonicParenthesesItem grob."
@@ -734,19 +743,19 @@ msgstr ""
 "space est renommé basic-distance dans diverses variables liées à l'espacement.\n"
 "Suppression du grob HarmonicParenthesesItem."
 
-#: convertrules.py:3127
+#: convertrules.py:3067
 msgid "HarmonicParenthesesItem has been eliminated.\n"
 msgstr "Élimination de HarmonicParenthesesItem.\n"
 
-#: convertrules.py:3128
+#: convertrules.py:3068
 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n"
 msgstr "Les parenthèses harmoniques sont attachées au grob TabNoteHead.\n"
 
-#: convertrules.py:3133
+#: convertrules.py:3073
 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n"
 msgstr "Suppression du contexte dans overrideTimeSignatureSettings et revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3140
+#: convertrules.py:3080
 msgid ""
 "Change stringTunings from a list of semitones to a list of pitches.\n"
 "Change tenor and baritone ukulele names in string tunings.\n"
@@ -756,138 +765,189 @@ msgstr ""
 "Les noms de ukulele tenor et baryton sont modifiés en accordage personnalisé.\n"
 "Génération d'un message au besoin pour les conversions liées à l'espacement vertical."
 
-#: convertrules.py:3180
-msgid "Vertical spacing changes might affect user-defined contexts.  "
+#: convertrules.py:3123
+msgid "Vertical spacing changes might affect user-defined contexts."
 msgstr ""
 "Les modifications apportées à l'espacement vertical peuvent mettre en\n"
-"péril les contextes personnalisés."
+"péril certains contextes personnalisés."
 
-#: convertrules.py:3185
+#: convertrules.py:3129
 msgid "Replace bar-size with bar-extent."
 msgstr "bar-size devient bar-extent."
 
-#: convertrules.py:3197
+#: convertrules.py:3141
 msgid "Woodwind diagrams: Changes to the clarinet diagram."
 msgstr "Diagrammes pour vents : modifications touchant la clarinette."
 
-#: convertrules.py:3201
-msgid "woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"
-msgstr "Diagrammes pour vents : doigtés plus adaptés à la clarinette actuelle.\n"
-
-#: convertrules.py:3211
-msgid "Change in internal property for MultiMeasureRest"
-msgstr "MultiMeasureRest : modification des propriétés internes."
-
-#: convertrules.py:3214
-msgid "use-breve-rest.  This internal property has been replaced by round-to-longer-rest and usable-duration-logs.\n"
-msgstr ""
-"use-breve-rest : cette propriété interne est remplacée par\n"
-"round-to-longer-rest et usable-duration-logs.\n"
+#: convertrules.py:3145
+msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n"
+msgstr "Les doigtés pour clarinette sont plus adaptés à l'instrument actuel.\n"
 
-#: convertrules.py:3219
+#: convertrules.py:3155
 msgid "Handling of non-automatic footnotes."
 msgstr "Gestion des notes de bas de page non automatisée."
 
-#: convertrules.py:3223
+#: convertrules.py:3159
 msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n"
 msgstr ""
 "Pour une gestion non automatisée des notes de bas de page, n'oubliez pas\n"
 "de mentionner footnote-auto-numbering = ##f dans le bloc \\paper.\n"
 
-#: book_base.py:24
+#: convertrules.py:3164
+msgid "Change in internal property for MultiMeasureRest"
+msgstr "MultiMeasureRest : modification des propriétés internes."
+
+#: convertrules.py:3168
+msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n"
+msgstr ""
+"Cette propriété interne est remplacée par round-to-longer-rest\n"
+"et usable-duration-logs.\n"
+
+#: convertrules.py:3173
+msgid "Creation of a Flag grob and moving of certain Stem properties to this grob"
+msgstr "Déplacement de certaine proriétés de Stem vers le nouvel objet Flag"
+
+#: convertrules.py:3209
+msgid "consistent-broken-slope is now handled through the positions callback.\n"
+msgstr "consistent-broken-slope est désormais géré par des rappels de position.\n"
+
+#: convertrules.py:3210
+msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
+msgstr ""
+"input/regression/beam-broken-classic.ly indique comment sont gérées les\n"
+"ligatures tronquées.\n"
+
+#: book_base.py:26
 #, python-format
 msgid "file not found: %s"
 msgstr "fichier non trouvé : %s"
 
-#: book_base.py:161
+#: book_base.py:164
 msgid "Output function not implemented"
 msgstr "Fonction de production non implémentée."
 
-#: lilylib.py:88 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:114
-#: input.cc:122
+#: lilylib.py:96
+#, python-format
+msgid "Setting loglevel to %s"
+msgstr "Niveau de journalisation fixé à %s"
+
+#: lilylib.py:99
+#, python-format
+msgid "Unknown or invalid loglevel '%s'"
+msgstr "« %s » n'est pas un niveau de journalisation reconnu."
+
+#: lilylib.py:128 warn.cc:211
 #, c-format, python-format
 msgid "error: %s"
 msgstr "Erreur : %s"
 
-#: lilylib.py:131
+#: lilylib.py:185
 #, python-format
 msgid "Processing %s.ly"
 msgstr "Traitement de « %s.ly »"
 
-#: lilylib.py:135 lilylib.py:198
+#: lilylib.py:189 lilylib.py:250
 #, python-format
 msgid "Invoking `%s'"
 msgstr "Appel de « %s »"
 
-#: lilylib.py:137 lilylib.py:200
+#: lilylib.py:191 lilylib.py:252
 #, python-format
 msgid "Running %s..."
 msgstr "Exécution de %s..."
 
-#: lilylib.py:276
+#: lilylib.py:328
 #, python-format
 msgid "Usage: %s"
 msgstr "Utilisation : %s"
 
-#: musicexp.py:216 musicexp.py:221
+#: musicexp.py:224 musicexp.py:229
 msgid "Language does not support microtones contained in the piece"
 msgstr "Le langage ne prend pas en charge les microintervalles de ce morceau"
 
-#: musicexp.py:483
+#: musicexp.py:491
 msgid "Tuplet brackets of curved shape are not correctly implemented"
 msgstr "La courbure des crochets de nolet n'est pas implémentée de manière optimale"
 
-#: musicexp.py:669
+#: musicexp.py:677
 #, python-format
 msgid "unable to set the music %(music)s for the repeat %(repeat)s"
 msgstr "impossible d'affecter le fragment %(music)s à la répétition %(repeat)s"
 
-#: musicexp.py:678
+#: musicexp.py:686
 msgid "encountered repeat without body"
 msgstr "reprise vide détectée"
 
 #. no self.elements!
-#: musicexp.py:848
+#: musicexp.py:856
 #, python-format
 msgid "Grace note with no following music: %s"
 msgstr "Apoggiature non suivie de musique : %s"
 
-#: musicexp.py:1010
+#: musicexp.py:1018
 #, python-format
 msgid "Invalid octave shift size found: %s. Using no shift."
 msgstr "Décalage d'octave invalide : %s. Décalage non appliqué."
 
-#: musicexp.py:1468
+#: musicexp.py:1476
 #, python-format
 msgid "Unable to convert alteration %s to a lilypond expression"
 msgstr "Impossible de convertir l'altération %s en expression LilyPond"
 
 #. TODO: Handle pieces without a time signature!
-#: musicxml.py:358
+#: musicxml.py:361
 msgid "Senza-misura time signatures are not yet supported!"
 msgstr "Les métriques « senza-misura » ne sont pas prises en charge."
 
-#: musicxml.py:376
+#: musicxml.py:379
 msgid "Unable to interpret time signature! Falling back to 4/4."
 msgstr "Métrique non interprétable ; retour au 4/4."
 
-#: musicxml.py:432
+#: musicxml.py:435
 #, python-format
 msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!"
 msgstr ""
 "Octave d'altération indiquée pour une altération numéro %s inexistante ;\n"
 "index d'altération disponibles : 1 à %s"
 
-#: musicxml.py:520
+#: musicxml.py:523
 #, python-format
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "Aucun instrument ne correspond à l'ID %s\n"
 
-#: book_latex.py:156
+#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is
+#. used to detect relative/absolute paths, so the absolute path is not
+#. detected as such and this command fails:
+#: book_texinfo.py:206
+#, python-format
+msgid "Running texi2pdf on file %s to detect default page settings.\n"
+msgstr "Traitement de %s par texi2pdf pour détecter la mise en page par défaut.\n"
+
+#: book_texinfo.py:228 book_latex.py:209
+msgid "Unable to auto-detect default settings:\n"
+msgstr "Impossible de détecter automatiquement les réglages par défaut :\n"
+
+#: book_texinfo.py:240 book_latex.py:221
+#, python-format
+msgid ""
+"Unable to auto-detect default settings:\n"
+"%s"
+msgstr ""
+"Impossible de détecter automatiquement les réglages par défaut :\n"
+"%s"
+
+#: book_latex.py:170
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr "Impossible de trouver \\begin{document} dans le document LaTeX."
 
-#: musicxml2ly.py:224
+#: book_latex.py:188
+#, python-format
+msgid "Running `%s' on file `%s' to detect default page settings.\n"
+msgstr ""
+"Traitement par %s du fichier « %s »\n"
+"pour déterminer la mise en page par défaut.\n"
+
+#: musicxml2ly.py:228
 #, python-format
 msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
 msgstr ""
@@ -895,121 +955,121 @@ msgstr ""
 "erronées. Toutes les informations de ligature du fichier MusicXML seront\n"
 "ignorées."
 
-#: musicxml2ly.py:240 musicxml2ly.py:242
+#: musicxml2ly.py:247 musicxml2ly.py:249
 #, python-format
 msgid "Unprocessed PartGroupInfo %s encountered"
 msgstr "PartGroupInfo %s détecté, mais non traité"
 
-#: musicxml2ly.py:495
+#: musicxml2ly.py:502
 #, python-format
 msgid "Encountered note at %s without type and duration (=%s)"
 msgstr "Une note se trouve en %s, sans type ni durée (=%s)"
 
-#: musicxml2ly.py:515
+#: musicxml2ly.py:522
 #, python-format
 msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
 msgstr ""
 "Durée rationnelle au dénominateur de %s détectée ;\n"
 "impossible de traduire en durée LilyPond"
 
-#: musicxml2ly.py:762
+#: musicxml2ly.py:769
 msgid "Unable to extract key signature!"
 msgstr "Impossible de déterminer l'armure."
 
-#: musicxml2ly.py:789
+#: musicxml2ly.py:796
 #, python-format
 msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
 msgstr ""
 "%s : mode inconnu.\n"
-"Devrait être « majeur », « mineur » ou « mode d'église »"
+"Devrait être « majeur », « mineur » ou « mode d'église »."
 
-#: musicxml2ly.py:927
+#: musicxml2ly.py:934
 #, python-format
 msgid "Encountered unprocessed marker %s\n"
 msgstr "Détection d'un marqueur non traité : %s\n"
 
-#: musicxml2ly.py:1021
+#: musicxml2ly.py:1028
 #, python-format
 msgid "unknown span event %s"
 msgstr "Événement de prolongation inconnu : « %s »"
 
-#: musicxml2ly.py:1031
+#: musicxml2ly.py:1038
 #, python-format
 msgid "unknown span type %s for %s"
 msgstr "%s n'est pas un type de prolongateur reconnu pour %s"
 
-#: musicxml2ly.py:1451
+#: musicxml2ly.py:1458
 msgid "Unknown metronome mark, ignoring"
 msgstr "Indication métronomique inconnue et ignorée."
 
 #. TODO: Implement the other (more complex) way for tempo marks!
-#: musicxml2ly.py:1456
+#: musicxml2ly.py:1463
 msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
 msgstr ""
-"Les indications métronomiques aux relations complexes (<metronome-note> pour \n"
+"Les indications métronomiques aux relations complexes (<metronome-note> pour\n"
 "MusicXML) n'ont pas encore été implémentées."
 
-#: musicxml2ly.py:1658
+#: musicxml2ly.py:1665
 #, python-format
 msgid "Unable to convert chord type %s to lilypond."
 msgstr "Impossible de convertir le type d'accord %s au format LilyPond"
 
-#: musicxml2ly.py:1807
+#: musicxml2ly.py:1814
 #, python-format
 msgid "drum %s type unknown, please add to instrument_drumtype_dict"
 msgstr ""
 "%s n'est pas un type de percussion connu.\n"
 "L'ajouter à instrument_drumtype_dict"
 
-#: musicxml2ly.py:1811
+#: musicxml2ly.py:1818
 msgid "cannot find suitable event"
 msgstr "Aucun événement correspondant"
 
-#: musicxml2ly.py:1959
+#: musicxml2ly.py:1966
 #, python-format
 msgid "Negative skip %s (from position %s to %s)"
 msgstr "Retour en arrière de %s (partant de %s et jusqu'à %s)"
 
-#: musicxml2ly.py:2100
+#: musicxml2ly.py:2107
 #, python-format
 msgid "Negative skip found: from %s to %s, difference is %s"
 msgstr "Retour en arrière, de %s à %s ; différence = %s"
 
-#: musicxml2ly.py:2181
+#: musicxml2ly.py:2188
 #, python-format
 msgid "unexpected %s; expected %s or %s or %s"
 msgstr "%s détecté, au lieu de %s, %s ou %s"
 
-#: musicxml2ly.py:2287
+#: musicxml2ly.py:2294
 msgid "Encountered closing slur, but no slur is open"
 msgstr "Terminaison d'une liaison qui n'a pas été débutée"
 
-#: musicxml2ly.py:2290
+#: musicxml2ly.py:2297
 msgid "Cannot have two simultaneous (closing) slurs"
 msgstr "deux liaisons ne peuvent se terminer simultanément"
 
-#: musicxml2ly.py:2299
+#: musicxml2ly.py:2306
 msgid "Cannot have a slur inside another slur"
 msgstr "des liaisons ne peuvent s'imbriquer"
 
-#: musicxml2ly.py:2302
+#: musicxml2ly.py:2309
 msgid "Cannot have two simultaneous slurs"
 msgstr "deux liaisons ne peuvent intervenir simultanément"
 
-#: musicxml2ly.py:2436
+#: musicxml2ly.py:2443
 #, python-format
 msgid "cannot simultaneously have more than one mode: %s"
 msgstr "SVP, un seul mode à la fois : %s"
 
-#: musicxml2ly.py:2544
+#: musicxml2ly.py:2551
 msgid "Converting to LilyPond expressions..."
 msgstr "Conversion en expressions LilyPond..."
 
-#: musicxml2ly.py:2555
+#: musicxml2ly.py:2562
 msgid "musicxml2ly [OPTION]... FILE.xml"
 msgstr "musicxml2ly [OPTION]... FICHIER.xml"
 
-#: musicxml2ly.py:2557
+#: musicxml2ly.py:2564
 msgid ""
 "Convert MusicXML from FILE.xml to LilyPond input.\n"
 "If the given filename is -, musicxml2ly reads from the command line.\n"
@@ -1017,95 +1077,110 @@ msgstr ""
 "Convertit FICHIER.xml (MusicXML) au format LilyPond.\n"
 "Si le nom du fichier est « - », musicxml2ly lira la ligne de commande.\n"
 
-#: musicxml2ly.py:2563 midi2ly.py:1060 abc2ly.py:1386 lilypond-book.py:140
-#: convert-ly.py:98 etf2ly.py:1202 main.cc:159
+#: musicxml2ly.py:2570 midi2ly.py:1060 abc2ly.py:1387 lilypond-book.py:141
+#: convert-ly.py:92 etf2ly.py:1204 main.cc:153
 msgid "show this help and exit"
 msgstr "visualiser cette aide et quitter"
 
-#: musicxml2ly.py:2567
+#: musicxml2ly.py:2574
 msgid ""
 "Copyright (c) 2005--2012 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2012 par\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 
-#: musicxml2ly.py:2581 midi2ly.py:1091 abc2ly.py:1382 lilypond-book.py:217
-#: convert-ly.py:94 etf2ly.py:1206 main.cc:174
+#: musicxml2ly.py:2588 midi2ly.py:1091 abc2ly.py:1383 lilypond-book.py:232
+#: convert-ly.py:88 etf2ly.py:1208 main.cc:174
 msgid "show version number and exit"
 msgstr "affiche le numéro de version et quitte"
 
-#: musicxml2ly.py:2586 midi2ly.py:1085 lilypond-book.py:209 main.cc:175
+#: musicxml2ly.py:2594 midi2ly.py:1085 lilypond-book.py:224
 msgid "be verbose"
 msgstr "passe en mode verbeux"
 
-#: musicxml2ly.py:2592
+#: musicxml2ly.py:2600
 msgid "use lxml.etree; uses less memory and cpu time"
 msgstr ""
 "utilise lxml.etree pour consommer moins de mémoire\n"
 "et de temps processeur."
 
-#: musicxml2ly.py:2598
+#: musicxml2ly.py:2606
 msgid "input file is a zip-compressed MusicXML file"
 msgstr "le fichier d'entrée est un fichier MusicXML compressé"
 
-#: musicxml2ly.py:2604
+#: musicxml2ly.py:2612
 msgid "convert pitches in relative mode (default)"
 msgstr "convertit les hauteurs en mode relatif (par défaut)"
 
-#: musicxml2ly.py:2609
+#: musicxml2ly.py:2617
 msgid "convert pitches in absolute mode"
 msgstr "convertit les hauteurs en mode absolu"
 
-#: musicxml2ly.py:2612
+#: musicxml2ly.py:2620
 msgid "LANG"
 msgstr "LANG"
 
-#: musicxml2ly.py:2614
+#: musicxml2ly.py:2622
 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
 msgstr ""
 "utilise une autre définition linguistique (LANG),\n"
 "p.ex. deutsch pour l'allemand"
 
-#: musicxml2ly.py:2620
+#: musicxml2ly.py:2625 lilypond-book.py:180 convert-ly.py:105
+msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"
+msgstr ""
+"Afficher les informations selon le niveau de LOGLEVEL\n"
+"(NONE, ERROR, WARNING, PROGRESS (par défaut), DEBUG)"
+
+#: musicxml2ly.py:2627 lilypond-book.py:164 lilypond-book.py:182
+#: convert-ly.py:107 main.cc:167
+msgid "LOGLEVEL"
+msgstr "LOGLEVEL"
+
+#: musicxml2ly.py:2636
 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
 msgstr ""
-"ne convertit pas les emplacements (^, _ ou -) des articulations, \n"
+"ne convertit pas les emplacements (^, _ ou -) des articulations,\n"
 "nuances, etc."
 
-#: musicxml2ly.py:2626
+#: musicxml2ly.py:2642
 msgid "do not convert exact vertical positions of rests"
 msgstr "ne convertit pas le positionnement absolu des silences"
 
-#: musicxml2ly.py:2632
+#: musicxml2ly.py:2648
 msgid "do not convert the exact page layout and breaks"
 msgstr "ne convertit pas les sauts et la mise en page"
 
-#: musicxml2ly.py:2638
+#: musicxml2ly.py:2654
 msgid "do not convert beaming information, use lilypond's automatic beaming instead"
 msgstr ""
 "ne convertit pas les informations de ligature ; \n"
 "laisse LilyPond gérer les ligatures automatiques"
 
-#: musicxml2ly.py:2641 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1208
-#: main.cc:165 main.cc:172
+#: musicxml2ly.py:2657 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1210
+#: main.cc:159 main.cc:171
 msgid "FILE"
 msgstr "FICHIER"
 
-#: musicxml2ly.py:2646
+#: musicxml2ly.py:2662
 msgid "set output filename to FILE, stdout if -"
 msgstr "produit la sortie dans FICHIER (stdout si -)"
 
+#: musicxml2ly.py:2668
+msgid "add midi-block to .ly file"
+msgstr "ajout d'une setcion midi au fichier .ly"
+
 #. Translators, please translate this string as
 #. "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"
-#: musicxml2ly.py:2649 midi2ly.py:1104 abc2ly.py:1395 lilypond-book.py:239
-#: convert-ly.py:144 etf2ly.py:1216 main.cc:285
+#: musicxml2ly.py:2672 midi2ly.py:1104 abc2ly.py:1396 lilypond-book.py:259
+#: convert-ly.py:146 etf2ly.py:1218 main.cc:285
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr ""
@@ -1114,53 +1189,53 @@ msgstr ""
 "ou en anglais à\n"
 "%s"
 
-#: musicxml2ly.py:2729
+#: musicxml2ly.py:2752
 #, python-format
 msgid "unknown part in part-list: %s"
 msgstr "la partie %s n'est pas mentionnée dans part-list"
 
-#: musicxml2ly.py:2791
+#: musicxml2ly.py:2814
 msgid "Input is compressed, extracting raw MusicXML data from stdin"
 msgstr ""
 "Le fichier d'entrée est compressé.\n"
 "Extraction des données MusicXML brutes à partir de stdin"
 
-#: musicxml2ly.py:2804
+#: musicxml2ly.py:2827
 #, python-format
 msgid "Input file %s is compressed, extracting raw MusicXML data"
 msgstr ""
 "Le fichier d'entrée (%s) est compressé.\n"
 "Extraction des données MusicXML brutes"
 
-#: musicxml2ly.py:2834
+#: musicxml2ly.py:2857
 msgid "Reading MusicXML from Standard input ..."
 msgstr "Lecture du fichier MusicXML à partir de l'entrée standard..."
 
-#: musicxml2ly.py:2836
+#: musicxml2ly.py:2859
 #, python-format
 msgid "Reading MusicXML from %s ..."
 msgstr "Lecture du fichier MusicXML %s..."
 
-#: musicxml2ly.py:2869
+#: musicxml2ly.py:2892
 #, python-format
 msgid "Output to `%s'"
 msgstr "Fichier de sortie : « %s »"
 
-#: musicxml2ly.py:2936
+#: musicxml2ly.py:2962
 #, python-format
 msgid "Unable to find input file %s"
 msgstr "Impossible de trouver le fichier d'entrée : « %s »"
 
-#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:75 etf2ly.py:1191
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s détenu par"
 
-#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:77 etf2ly.py:1193
 msgid "Distributed under terms of the GNU General Public License."
 msgstr "Distribué selon les termes de la GNU General Public License."
 
-#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:78 etf2ly.py:1194
 msgid "It comes with NO WARRANTY."
 msgstr "Le logiciel est distribué SANS GARANTIE."
 
@@ -1187,7 +1262,7 @@ msgstr ""
 msgid "%s output to `%s'..."
 msgstr "%s reproduit dans « %s »..."
 
-#: midi2ly.py:1042 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#: midi2ly.py:1042 abc2ly.py:1374 lilypond-book.py:123 convert-ly.py:81
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [OPTIONS]... FICHIER"
@@ -1229,7 +1304,7 @@ msgstr "définit l'armure : ALT=+dièse|-bémol; MINEUR=1"
 msgid "ALT[:MINOR]"
 msgstr "ALT[:MINEUR]"
 
-#: midi2ly.py:1069 abc2ly.py:1388 etf2ly.py:1207
+#: midi2ly.py:1069 abc2ly.py:1389 etf2ly.py:1209
 msgid "write output to FILE"
 msgstr "produit la sortie dans le FICHIER"
 
@@ -1253,7 +1328,7 @@ msgstr "DUR*NUM/DEN"
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr "permet des n-olets de durée DUR*NUM/DEN"
 
-#: midi2ly.py:1092 lilypond-book.py:220 convert-ly.py:139 etf2ly.py:1210
+#: midi2ly.py:1092 lilypond-book.py:235 convert-ly.py:141 etf2ly.py:1212
 #: main.cc:176
 msgid "show warranty and copyright"
 msgstr "affiche les notices de garantie et du droit d'auteur"
@@ -1270,7 +1345,7 @@ msgstr "Exemples"
 msgid "no files specified on command line."
 msgstr "aucun fichier spéficié sur la ligne de commande."
 
-#: abc2ly.py:1374
+#: abc2ly.py:1375
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
@@ -1279,11 +1354,11 @@ msgstr ""
 "abc2ly convertit les fichiers musicaux ABC (voir\n"
 "%s) au format LilyPond.\n"
 
-#: abc2ly.py:1390
+#: abc2ly.py:1391
 msgid "be strict about success"
 msgstr "être strict sur la réussite"
 
-#: abc2ly.py:1392
+#: abc2ly.py:1393
 msgid "preserve ABC's notion of beams"
 msgstr "préserver la notion de ligature propre à ABC"
 
@@ -1293,7 +1368,7 @@ msgstr ""
 "Traite les extraits LilyPond dans un document HTML hybride, LaTeX,\n"
 "texinfo ou Docbook."
 
-#: lilypond-book.py:82 convert-ly.py:46
+#: lilypond-book.py:82 convert-ly.py:48
 msgid "Examples:"
 msgstr "Exemples :"
 
@@ -1306,100 +1381,104 @@ msgstr "LIVRE"
 msgid "Exiting (%d)..."
 msgstr "Fin d'exécution (%d)..."
 
-#: lilypond-book.py:127
+#: lilypond-book.py:128
 msgid "FILTER"
 msgstr "FILTRE"
 
-#: lilypond-book.py:130
+#: lilypond-book.py:131
 msgid "pipe snippets through FILTER [default: `convert-ly -n -']"
 msgstr "passe les extraits à travers le FILTRE [par défaut : `convert-ly -n -']"
 
-#: lilypond-book.py:134
+#: lilypond-book.py:135
 msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
 msgstr ""
 "utilise le format de sortie FORMAT (texi par défaut, texi-html, latex,\n"
 "html ou docbook)"
 
-#: lilypond-book.py:135
+#: lilypond-book.py:136
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: lilypond-book.py:142
+#: lilypond-book.py:143
 msgid "add DIR to include path"
 msgstr "ajoute le RÉP au chemin de recherche des inclusions"
 
-#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163
-#: lilypond-book.py:173 lilypond-book.py:194 lilypond-book.py:200 main.cc:164
+#: lilypond-book.py:144 lilypond-book.py:151 lilypond-book.py:170
+#: lilypond-book.py:188 lilypond-book.py:209 lilypond-book.py:215 main.cc:158
 msgid "DIR"
 msgstr "RÉP"
 
-#: lilypond-book.py:148
+#: lilypond-book.py:149
 msgid "format Texinfo output so that Info will look for images of music in DIR"
 msgstr "formate la sortie Texinfo pour qu'Info cherche les images dans RÉP"
 
-#: lilypond-book.py:155
+#: lilypond-book.py:156
 msgid "PAD"
 msgstr "PAD"
 
-#: lilypond-book.py:157
+#: lilypond-book.py:158
 msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
 msgstr ""
 "tasse la musique par la gauche pour la répartir en dépit du nombre irrégulier\n"
 "de mesures (en mm)"
 
-#: lilypond-book.py:162
+#: lilypond-book.py:163
+msgid "Print lilypond log messages according to LOGLEVEL"
+msgstr "Affiche les messages du journal selon la vakeur de LOGLEVEL"
+
+#: lilypond-book.py:169
 msgid "write lily-XXX files to DIR, link into --output dir"
 msgstr ""
 "écrit les fichiers lily-XXX dans RÉP et crée un lien vers le répertoire\n"
 "spécifié par --output"
 
-#: lilypond-book.py:167
+#: lilypond-book.py:174
 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)"
 msgstr ""
 "charge le PAQUETAGE python supplémentaire (contenant p.ex. un format\n"
 "de sortie particulier)"
 
-#: lilypond-book.py:168
+#: lilypond-book.py:175
 msgid "PACKAGE"
 msgstr "PAQUETAGE"
 
-#: lilypond-book.py:172
+#: lilypond-book.py:187
 msgid "write output to DIR"
 msgstr "produit la sortie dans RÉP"
 
-#: lilypond-book.py:177
+#: lilypond-book.py:192
 msgid "COMMAND"
 msgstr "COMMANDE"
 
-#: lilypond-book.py:178
+#: lilypond-book.py:193
 msgid "process ly_files using COMMAND FILE..."
 msgstr "traîte ly_files en utilisant COMMANDE FICHIER..."
 
-#: lilypond-book.py:183
+#: lilypond-book.py:198
 msgid "Redirect the lilypond output"
 msgstr "redirige la sortie la sortie lilypond"
 
-#: lilypond-book.py:187
+#: lilypond-book.py:202
 msgid "Compile snippets in safe mode"
 msgstr "compile des extraits en mode protégé"
 
-#: lilypond-book.py:193
+#: lilypond-book.py:208
 msgid "do not fail if no lilypond output is found"
 msgstr "désactive la mise en échec en l’absence de sortie de lilypond"
 
-#: lilypond-book.py:199
+#: lilypond-book.py:214
 msgid "do not fail if no PNG images are found for EPS files"
 msgstr ""
 "désactive la mise en échec en l’absence d’images PNG\n"
 "correspondant aux fichiers EPS"
 
-#: lilypond-book.py:205
+#: lilypond-book.py:220
 msgid "write snippet output files with the same base name as their source file"
 msgstr ""
 "affecte au résultat des extraits la même racine\n"
 "que celle des fichiers source"
 
-#: lilypond-book.py:225
+#: lilypond-book.py:240
 msgid ""
 "run executable PROG instead of latex, or in\n"
 "case --pdf option is set instead of pdflatex"
@@ -1407,70 +1486,90 @@ msgstr ""
 "utilise l’exécutable PROG en lieu et place de latex,\n"
 "ou lorsque l'option --pdf remplace pdflatex"
 
-#: lilypond-book.py:227
+#: lilypond-book.py:242 lilypond-book.py:247
 msgid "PROG"
 msgstr "PROG"
 
-#: lilypond-book.py:233
+#: lilypond-book.py:246
+msgid "run executable PROG instead of texi2pdf"
+msgstr "utilise l'exécutable PROG au lieu de texi2pdf"
+
+#: lilypond-book.py:253
 msgid "create PDF files for use with PDFTeX"
 msgstr "crée des fichiers PDF pour utilisation par PDFTeX"
 
-#: lilypond-book.py:428
+#: lilypond-book.py:456
 msgid "Writing snippets..."
 msgstr "Écriture des extraits..."
 
-#: lilypond-book.py:434
+#: lilypond-book.py:461
 msgid "Processing..."
 msgstr "Traitement..."
 
-#: lilypond-book.py:440
+#: lilypond-book.py:466
 msgid "All snippets are up to date..."
 msgstr "Tous les extraits sont à jour..."
 
-#: lilypond-book.py:461
+#: lilypond-book.py:485
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr "format indéterminé pour %s"
 
-#: lilypond-book.py:470
+#: lilypond-book.py:494
 #, python-format
 msgid "%s is up to date."
 msgstr "%s est à jour."
 
-#: lilypond-book.py:484
+#: lilypond-book.py:507
 #, python-format
 msgid "Writing `%s'..."
 msgstr "Écriture de « %s »..."
 
-#: lilypond-book.py:546
+#: lilypond-book.py:568
 msgid "Output would overwrite input file; use --output."
 msgstr "La sortie va écraser le fichier d'entrée ; utiliser --output"
 
-#: lilypond-book.py:550
+#: lilypond-book.py:572
 #, python-format
 msgid "Reading %s..."
 msgstr "Lecture en cours de %s..."
 
-#: lilypond-book.py:558
+#: lilypond-book.py:579
 msgid "Dissecting..."
 msgstr "Dissection en cours..."
 
-#: lilypond-book.py:570
+#: lilypond-book.py:590
 #, python-format
 msgid "Compiling %s..."
 msgstr "Compilation de %s..."
 
-#: lilypond-book.py:579
+#: lilypond-book.py:598
 #, python-format
 msgid "Processing include: %s"
 msgstr "Traitement d'inclusion : %s"
 
-#: lilypond-book.py:591
+#: lilypond-book.py:609
 #, python-format
 msgid "Removing `%s'"
 msgstr "Suppression de « %s »"
 
-#: convert-ly.py:44
+#: lilypond-book.py:676
+#, python-format
+msgid "Setting LilyPond's loglevel to %s"
+msgstr "Niveau de journalisation de LilyPond fixé à %s"
+
+#: lilypond-book.py:680
+#, python-format
+msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)"
+msgstr ""
+"Détermination du niveau de journalisation de LilyPond à %s\n"
+"(à partir de la variable d'environnement LILYPOND_LOGLEVEL)"
+
+#: lilypond-book.py:683
+msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting"
+msgstr "Utilisation de l'option LilyPond --verbose (réglage implicite de lilypond-book)"
+
+#: convert-ly.py:46
 msgid ""
 "Update LilyPond input to newer version.  By default, update from the\n"
 "version taken from the \\version command, to the current LilyPond version."
@@ -1479,71 +1578,71 @@ msgstr ""
 "Par défaut, de la version indiquée par la commande \\version \n"
 "vers la version courante de LilyPond."
 
-#: convert-ly.py:102 convert-ly.py:135
+#: convert-ly.py:96 convert-ly.py:137
 msgid "VERSION"
 msgstr "VERSION"
 
-#: convert-ly.py:104
+#: convert-ly.py:98
 msgid "start from VERSION [default: \\version found in file]"
 msgstr "partir de la VERSION [par défaut : \\version trouvée dans le fichier]"
 
-#: convert-ly.py:107
+#: convert-ly.py:101
 msgid "edit in place"
 msgstr "éditer le fichier d'origine"
 
-#: convert-ly.py:111
+#: convert-ly.py:113
 msgid "do not add \\version command if missing"
 msgstr "ne pas ajouter la commande \\version si elle est absente"
 
-#: convert-ly.py:117
+#: convert-ly.py:119
 #, python-format
 msgid "force updating \\version number to %s"
 msgstr "forcer la mise à jour de \\version à %s"
 
-#: convert-ly.py:123
+#: convert-ly.py:125
 msgid "only update \\version number if file is modified"
 msgstr "ne changer le numéro de \\version que si le fichier est modifié"
 
-#: convert-ly.py:129
+#: convert-ly.py:131
 #, python-format
 msgid "show rules [default: -f 0, -t %s]"
 msgstr "afficher les règles [par défaut : -f 0, -t %s]"
 
-#: convert-ly.py:134
+#: convert-ly.py:136
 #, python-format
 msgid "convert to VERSION [default: %s]"
 msgstr "convertir jusqu'à la VERSION [par défaut : %s]"
 
-#: convert-ly.py:184
+#: convert-ly.py:186
 msgid "Applying conversion: "
 msgstr "Conversion en cours : "
 
-#: convert-ly.py:197
+#: convert-ly.py:202
 msgid "Error while converting"
 msgstr "Erreur lors de la conversion"
 
-#: convert-ly.py:199
+#: convert-ly.py:204
 msgid "Stopping at last successful rule"
 msgstr "Arrêt à la dernière règle appliquée avec succès"
 
-#: convert-ly.py:224
+#: convert-ly.py:231
 #, python-format
 msgid "Processing `%s'... "
 msgstr "Traitement de « %s »..."
 
-#: convert-ly.py:332
+#: convert-ly.py:338
 #, python-format
 msgid "%s: Unable to open file"
 msgstr "impossible d'ouvrir le fichier « %s »"
 
-#: convert-ly.py:339
+#: convert-ly.py:345
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr ""
 "impossible de déterminer la version  de « %s ».\n"
 " Au suivant !"
 
-#: convert-ly.py:344
+#: convert-ly.py:350
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
@@ -1553,12 +1652,12 @@ msgstr ""
 "Un numéro de version valide est formé de trois nombres séparés par un point,\n"
 "comme par exemple « 2.8.12 »"
 
-#: etf2ly.py:1195
+#: etf2ly.py:1197
 #, python-format
 msgid "%s [OPTION]... ETF-FILE"
 msgstr "%s [OPTIONS]... FICHIER-ETF"
 
-#: etf2ly.py:1196
+#: etf2ly.py:1198
 msgid ""
 "Enigma Transport Format is a format used by Coda Music Technology's\n"
 "Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n"
@@ -1575,20 +1674,51 @@ msgstr "Anglais"
 msgid "Other languages"
 msgstr "Autres langues"
 
-#: warn.cc:59
+#: warn.cc:56
+#, c-format
+msgid "Log level set to %d\n"
+msgstr "Niveau de journalisation fixé à %d\n"
+
+#: warn.cc:89
+#, c-format
+msgid "unknown log level `%s', using default (INFO)"
+msgstr "« %s » n'est pas un niveau de journalisation reconnu ; utilisation de INFO"
+
+#. Some expected warning was not triggered, so print out a warning.
+#: warn.cc:112
 #, c-format
-msgid "success: %s"
-msgstr "Résultat : %s"
+msgid "%d expected warning(s) not encountered: "
+msgstr "%d avertissement(s) étaient attendus sans avoir été déclenchés :"
 
-#: warn.cc:86 grob.cc:613 input.cc:97
+#: warn.cc:183
+#, c-format
+msgid "fatal error: %s"
+msgstr "erreur fatale : %s"
+
+#: warn.cc:192
+#, c-format
+msgid "suppressed programming error: %s"
+msgstr "erreur de programmation supprimée : %s"
+
+#: warn.cc:197
 #, c-format
 msgid "programming error: %s"
 msgstr "erreur de programmation : %s"
 
-#: warn.cc:87 input.cc:98
+#: warn.cc:198
 msgid "continuing, cross fingers"
 msgstr "poursuite ; croisons les doigts."
 
+#: warn.cc:207
+#, c-format
+msgid "suppressed error: %s"
+msgstr "erreur supprimée : %s"
+
+#: warn.cc:219
+#, c-format
+msgid "suppressed warning: %s"
+msgstr "avertissement supprimé : %s"
+
 #: getopt-long.cc:153
 #, c-format
 msgid "option `%s' requires an argument"
@@ -1609,35 +1739,43 @@ msgstr "option non reconnue : « %s »"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "argument « %s » invalide pour l'option « %s »"
 
-#: grob.cc:286
-msgid "Infinity or NaN encountered"
-msgstr "infini ou valeur non numérique rencontré lors de la conversion d'un nombre réel"
-
-#: vaticana-ligature.cc:95
-msgid "flexa-height undefined; assuming 0"
-msgstr "Vaticana_ligature : décalage en X indéfini ; ramené à 0"
-
-#: vaticana-ligature.cc:100
-msgid "ascending vaticana style flexa"
-msgstr "flexe de style vaticana ascendant"
+#: flag.cc:110
+#, c-format
+msgid "flag `%s' not found"
+msgstr "crochet inconnu : « %s »"
 
-#: vaticana-ligature.cc:188
-msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr "Vaticana_ligature: aucun joint (delta_pitch == 0)"
+#: flag.cc:130
+#, c-format
+msgid "flag stroke `%s' not found"
+msgstr "type de crochet inconnu : « %s »"
 
-#: parse-scm.cc:100
+#: parse-scm.cc:112
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE a signalé une erreur pour l'expression débutant ici"
 
-#: rest-collision-engraver.cc:70
-msgid "rhythmic head is not part of a rhythmic column"
-msgstr "tête rythmique non rattachée à un empilement rythmique"
+#: lily-lexer.cc:255
+msgid "include files are not allowed in safe mode"
+msgstr "l'inclusion de fichiers n'est pas permise en mode sans échec"
+
+#: lily-lexer.cc:282
+#, c-format
+msgid "identifier name is a keyword: `%s'"
+msgstr "Le nom de l'identificateur est un mot clé : « %s »"
+
+#: lily-lexer.cc:303 lily-lexer.cc:316
+#, c-format
+msgid "%s:EOF"
+msgstr "%s:EOF"
 
 #. if we get to here, just put everything on one line
 #: constrained-breaking.cc:187 constrained-breaking.cc:205
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "impossible de trouver un saut de ligne qui satisfasse aux contraintes"
 
+#: context-property.cc:43
+msgid "need symbol arguments for \\override and \\revert"
+msgstr "\\override et \\revert requièrent des arguments symboliques"
+
 #: horizontal-bracket-engraver.cc:62
 msgid "do not have that many brackets"
 msgstr "n'a pas autant de crochets"
@@ -1646,79 +1784,108 @@ msgstr "n'a pas autant de crochets"
 msgid "conflicting note group events"
 msgstr "événements de groupe de notes conflictuels"
 
-#: hyphen-engraver.cc:104
-msgid "removing unterminated hyphen"
-msgstr "retrait du trait d'union sans suite"
-
-#: hyphen-engraver.cc:118
-msgid "unterminated hyphen; removing"
-msgstr "trait d'union sans suite ; escamoté"
+#: new-fingering-engraver.cc:113
+msgid "cannot add text scripts to individual note heads"
+msgstr "impossible d'ajouter du texte à des têtes de note individuelles"
 
-#: pango-font.cc:189 open-type-font.cc:318
-#, c-format
-msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "Erreur FT_Get_Glyph_Name () : %s"
+#: new-fingering-engraver.cc:265
+msgid "no placement found for fingerings"
+msgstr "nulle part où positionner des doigtés"
 
-#: pango-font.cc:205
-#, c-format
-msgid ""
-"Glyph has no name, but font supports glyph naming.\n"
-"Skipping glyph U+%0X, file %s"
-msgstr ""
-"Le glyphe n'a pas de nom alors que la fonte prend en charge leur nommage.\n"
-"Glyphe U+%0X ignoré dans le fichier %s"
+#: new-fingering-engraver.cc:266
+msgid "placing below"
+msgstr "on les place en dessous"
 
-#: pango-font.cc:242
+#: translator-group.cc:188
 #, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "« %s » n'est pas un fichier de fonte PostScript"
+msgid "cannot find: `%s'"
+msgstr " « %s » inconnu(e)"
 
-#: pango-font.cc:291
-msgid "FreeType face has no PostScript font name"
-msgstr "Caractère FreeType sans nom de police PostScript"
+#: glissando-engraver.cc:158
+msgid "unterminated glissando"
+msgstr "glissando non terminé"
 
 #: midi-item.cc:89
 #, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "instrument MIDI non répertorié : « %s »"
 
+#: open-type-font.cc:44
+#, c-format
+msgid "cannot allocate %lu bytes"
+msgstr "impossible d'allouer %lu octets"
+
+#: open-type-font.cc:48
+#, c-format
+msgid "cannot load font table: %s"
+msgstr "impossible de charger la table des fontes : %s"
+
+#: open-type-font.cc:53
+#, c-format
+msgid "FreeType error: %s"
+msgstr "Erreur FreeType : %s"
+
+#: open-type-font.cc:110
+#, c-format
+msgid "unsupported font format: %s"
+msgstr "format de police non supporté : %s"
+
+#: open-type-font.cc:112
+#, c-format
+msgid "error reading font file %s: %s"
+msgstr "erreur de lecture du fichier de fontes %s : %s"
+
+#: open-type-font.cc:187
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "erreur Freetype FT_Get_Glyph_Name () : %s"
+
+#: open-type-font.cc:318 pango-font.cc:189
+#, c-format
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "Erreur FT_Get_Glyph_Name () : %s"
+
 #: note-heads-engraver.cc:76
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent sans hauteur"
 
-#: rest.cc:160
-#, c-format
-msgid "rest `%s' not found"
-msgstr "silence « %s » inconnu"
+#: skyline-pair.cc:131
+msgid "direction must not be CENTER in ly:skyline-pair::skyline"
+msgstr "direction ne saurait être CENTER pour ly:skyline-pair::skyline"
 
-#: spaceable-grob.cc:94
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Pas de tension entre la colonne %d et la suivante"
+#: hyphen-engraver.cc:104
+msgid "removing unterminated hyphen"
+msgstr "retrait du trait d'union sans suite"
 
-#: beam-engraver.cc:147
-msgid "already have a beam"
-msgstr "ligature déjà présente"
+#: hyphen-engraver.cc:118
+msgid "unterminated hyphen; removing"
+msgstr "trait d'union sans suite ; escamoté"
 
-#: beam-engraver.cc:230
-msgid "unterminated beam"
-msgstr "ligature non terminée"
+#: output-def.cc:235
+msgid "margins do not fit with line-width, setting default values"
+msgstr ""
+"les marges ne sont pas en cohérence avec la longueur de ligne ;\n"
+"retour aux valeurs par défaut"
 
-#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
-msgid "stem must have Rhythmic structure"
-msgstr "la hampe doit avoir une structure Rythmic"
+#: output-def.cc:242
+msgid "systems run off the page due to improper paper settings, setting default values"
+msgstr ""
+"les systèmes débordent de la page en raison de réglages de papier erronés ;\n"
+"retour aux valeurs par défaut"
 
-#: beam-engraver.cc:274
-msgid "stem does not fit in beam"
-msgstr "la hampe ne s'insère pas dans la ligature"
+#: accidental.cc:200
+#, c-format
+msgid "Could not find glyph-name for alteration %s"
+msgstr "Aucun nom de glyphe ne correspond à l'altération %s"
 
-#: beam-engraver.cc:275
-msgid "beam was started here"
-msgstr "la ligature a débuté ici"
+#: accidental.cc:215
+msgid "natural alteration glyph not found"
+msgstr "pas de glyphe correspondant au bécarre"
 
-#: music-iterator.cc:181
-msgid "Sending non-event to context"
-msgstr "Envoi d'un non-événement au contexte"
+#: lyric-combine-music-iterator.cc:337
+#, c-format
+msgid "cannot find Voice `%s'"
+msgstr "impossible de repérer la voix (Voice) « %s »"
 
 #: context.cc:148
 #, c-format
@@ -1728,14 +1895,7 @@ msgstr "impossible de trouver ou créer un nouveau « %s »"
 #: context.cc:206
 #, c-format
 msgid "cannot find or create `%s' called `%s'"
-msgstr "impossible de trouver ou créer « %s » appelé « %s »"
-
-#: context.cc:268
-#, c-format
-msgid "Invalid CreateContext event: Cannot create %s context"
-msgstr ""
-"Événement CreateContext invalide :\n"
-" impossible de créer le contexte %s"
+msgstr "impossible de trouver ou créer « %s » dénommé « %s »"
 
 #: context.cc:399
 #, c-format
@@ -1751,11 +1911,15 @@ msgstr "La classe Event devrait être un symbole"
 msgid "Unknown event class %s"
 msgstr "Classe d'événement inconnue : « %s »"
 
-#: paper-column-engraver.cc:245
-msgid "forced break was overridden by some other event, should you be using bar checks?"
-msgstr ""
-"Un saut explicite a été outrepassé par un autre événement.\n"
-"Positionnez quelques contrôles de mesure (bar check) pour vérifier."
+#: dispatcher.cc:171
+#, c-format
+msgid "Junking event: %s"
+msgstr "Événement escamoté : « %s »"
+
+#: auto-change-iterator.cc:74 change-iterator.cc:72
+#, c-format
+msgid "cannot change, already in translator: %s"
+msgstr "modification impossible, c'est déjà dans le translateur : %s"
 
 #: tie-engraver.cc:117
 msgid "unterminated tie"
@@ -1765,23 +1929,23 @@ msgstr "liaison de prolongation non terminée"
 msgid "lonely tie"
 msgstr "liaison de prolongation orpheline"
 
-#: dynamic-engraver.cc:197
+#: dynamic-engraver.cc:193
 msgid "cannot find start of (de)crescendo"
 msgstr "impossible de repérer le début du (de)crescendo"
 
-#: dynamic-engraver.cc:206
+#: dynamic-engraver.cc:200
 msgid "already have a decrescendo"
 msgstr "decrescendo déjà présent"
 
-#: dynamic-engraver.cc:208
+#: dynamic-engraver.cc:202
 msgid "already have a crescendo"
 msgstr "crescendo déjà présent"
 
-#: dynamic-engraver.cc:211
+#: dynamic-engraver.cc:205
 msgid "cresc starts here"
 msgstr "le crescendo débute ici"
 
-#: dynamic-engraver.cc:339
+#: dynamic-engraver.cc:333
 msgid "unterminated (de)crescendo"
 msgstr "(de)crescendo non terminé"
 
@@ -1789,16 +1953,16 @@ msgstr "(de)crescendo non terminé"
 msgid "Calculating line breaks..."
 msgstr "Calcul des sauts de ligne..."
 
-#: paper-score.cc:135
+#: paper-score.cc:134
 #, c-format
 msgid "Element count %d (spanners %d) "
 msgstr "%d éléments dénombrés (%d extensions)"
 
-#: paper-score.cc:139
+#: paper-score.cc:138
 msgid "Preprocessing graphical objects..."
 msgstr "Pré-traitement des éléments graphiques..."
 
-#: paper-score.cc:163 optimal-page-breaking.cc:208
+#: paper-score.cc:162 optimal-page-breaking.cc:208
 #: page-turn-page-breaking.cc:248
 msgid "Drawing systems..."
 msgstr "Dessin des systèmes..."
@@ -1851,82 +2015,39 @@ msgstr ""
 msgid "unexpected case fall-through"
 msgstr "cas inattendu et non interprétable"
 
-#: piano-pedal-engraver.cc:296
+#: piano-pedal-engraver.cc:279
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
 msgstr "Les pédales de piano nécessitent 3 cordes. Il y en a %ld"
 
-#: piano-pedal-engraver.cc:311 piano-pedal-engraver.cc:322
+#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305
 #: piano-pedal-performer.cc:104
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
 msgstr "début de la pédale de piano indéterminé : « %s »"
 
-#: piano-pedal-engraver.cc:357
+#: piano-pedal-engraver.cc:340
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
 msgstr "début du crochet de la pédale de piano indéterminé : « %s »"
 
-#: input.cc:130 source-file.cc:178 source-file.cc:193
+#: input.cc:138 source-file.cc:178 source-file.cc:193
 msgid "position unknown"
 msgstr "position inconnue"
 
-#: paper-outputter-scheme.cc:41
-#, c-format
-msgid "Layout output to `%s'..."
-msgstr "Sortie mise en page vers « %s »..."
-
-#: general-scheme.cc:305
-msgid "infinity or NaN encountered while converting Real number"
-msgstr "Infini ou valeur non numérique rencontré lors de la conversion d'un nombre réel"
+#: stem.cc:128
+msgid "weird stem size, check for narrow beams"
+msgstr "taille de hampe bizarre ; vérifier la présence de liens étroits"
 
-#: general-scheme.cc:306
-msgid "setting to zero"
-msgstr "initialisation à zéro"
-
-#: general-scheme.cc:540
-msgid "Found infinity or nan in output. Substituting 0.0"
-msgstr ""
-"La sortie contient l'infini ou une valeur non numérique.\n"
-"Substitution par 0.0"
-
-#: music.cc:150
-#, c-format
-msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr ""
-"Échec de vérification d'octave.\n"
-"Aurait dû être \"%s\", \"%s\" obtenu"
-
-#: music.cc:218
-msgid "(normalized pitch)"
-msgstr "(hauteur normalisée)"
-
-#: music.cc:222
-#, c-format
-msgid "Transposing %s by %s makes alteration larger than double"
-msgstr "La transposition de %s à %s crée des altérations supérieures aux doubles"
+#: relative-octave-check.cc:49
+msgid "Failed octave check, got: "
+msgstr "échec de la vérification d'octave, a obtenu : "
 
 #: translator-ctors.cc:65
 #, c-format
 msgid "unknown translator: `%s'"
 msgstr "translateur inconnu : « %s »"
 
-#: partial-iterator.cc:45
-msgid "trying to use \\partial after the start of a piece"
-msgstr "\\partial ne devrait intervenir qu'en début de morceau"
-
-#: new-fingering-engraver.cc:105
-msgid "cannot add text scripts to individual note heads"
-msgstr "impossible d'ajouter du texte à des têtes de notes individuelles"
-
-#: new-fingering-engraver.cc:249
-msgid "no placement found for fingerings"
-msgstr "nulle part où positionner des doigtés"
-
-#: new-fingering-engraver.cc:250
-msgid "placing below"
-msgstr "on les place en dessous"
-
 #: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72
 msgid "cannot find start of ligature"
 msgstr "impossible de trouver le début de la ligature"
@@ -1955,40 +2076,30 @@ msgstr "le silence est ignoré : une ligature ne peut contenir de silence"
 msgid "ligature was started here"
 msgstr "la ligature a débuté ici"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "modification impossible, c'est déjà dans le translateur : %s"
-
-#: accidental-engraver.cc:179
-#, c-format
-msgid "accidental typesetting list must begin with context-name: %s"
-msgstr ""
-"La saisie d'une liste d'altérations accidentelles doit débuter \n"
-"par un nom de contexte : %s"
-
-#: accidental-engraver.cc:209
-#, c-format
-msgid "procedure or context-name expected for accidental rule, found %s"
-msgstr ""
-"procédure ou nom de contexte requis pour la règle d'altération accidentelle,\n"
-"%s trouvé"
+#: tuplet-engraver.cc:110
+msgid "No tuplet to end"
+msgstr "Aucun n-olet à terminer"
 
-#: ttf.cc:480 ttf.cc:529
+#: ttf.cc:480 ttf.cc:528
 #, c-format
 msgid "font index %d too large for font `%s', using index 0"
 msgstr ""
 "index %d trop grand pour la fonte « %s » ;\n"
 "réindexé sur 0"
 
-#: ttf.cc:512 ttf.cc:564
+#: ttf.cc:512 ttf.cc:562
 msgid "font index must be non-negative, using index 0"
 msgstr "l'index de fonte ne peut être négatif ; réindexé sur 0"
 
-#: break-alignment-interface.cc:199
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Pas d'espacement entre %s et « %s »"
+#: multi-measure-rest.cc:140
+msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
+msgstr ""
+"usable-duration-logs ne peut être constitué d'une liste vide.\n"
+"Retour à des pauses."
+
+#: partial-iterator.cc:45
+msgid "trying to use \\partial after the start of a piece"
+msgstr "\\partial ne devrait intervenir qu'en début de morceau"
 
 #: minimal-page-breaking.cc:44
 msgid "Calculating page breaks..."
@@ -2016,17 +2127,17 @@ msgstr "l'option -dprint-pages n'est pas opérationnelle avec le moteur %s"
 msgid "program option -dpreview not supported by backend `%s'"
 msgstr "l'option -dpreview n'est pas opérationnelle avec le moteur %s"
 
-#: output-def.cc:235
-msgid "margins do not fit with line-width, setting default values"
-msgstr ""
-"les marges ne sont pas en cohérence avec la longueur de ligne ;\n"
-"retour aux valeurs par défaut"
+#: episema-engraver.cc:75
+msgid "already have an episema"
+msgstr "épisème déjà présent"
 
-#: output-def.cc:242
-msgid "systems run off the page due to improper paper settings, setting default values"
-msgstr ""
-"les systèmes débordent de la page en raison de réglages de papier erronés ;\n"
-"retour aux valeurs par défaut"
+#: episema-engraver.cc:88
+msgid "cannot find start of episema"
+msgstr "impossible de trouver le début de l'épisème"
+
+#: episema-engraver.cc:137
+msgid "unterminated episema"
+msgstr "épisème non terminé"
 
 #: score-engraver.cc:78
 #, c-format
@@ -2046,7 +2157,16 @@ msgstr "Chemin de recherche : « %s »"
 msgid "Aborting"
 msgstr "Abandon"
 
-#: note-collision.cc:494
+#: performance.cc:54
+msgid "Track..."
+msgstr "Piste..."
+
+#: performance.cc:82
+#, c-format
+msgid "MIDI output to `%s'..."
+msgstr "Sortie MIDI vers « %s »..."
+
+#: note-collision.cc:504
 msgid "ignoring too many clashing note columns"
 msgstr "trop d'empilements de notes se chevauchent. On fera au mieux."
 
@@ -2067,22 +2187,22 @@ msgstr "a déjà une extension terminée"
 msgid "giving up"
 msgstr "abandon"
 
-#: page-layout-problem.cc:603
+#: page-layout-problem.cc:709
 msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed"
 msgstr ""
 "impossible de faire tenir la musique sur la page :\n"
 "  justification demandée, mais page déjà compressée"
 
-#: page-layout-problem.cc:606
+#: page-layout-problem.cc:712
 #, c-format
 msgid "cannot fit music on page: overflow is %f"
 msgstr "impossible de faire tenir la musique sur la page.  Débordement de %f"
 
-#: page-layout-problem.cc:608
+#: page-layout-problem.cc:714
 msgid "compressing music to fit"
 msgstr "compression de la musique pour que cela tienne"
 
-#: page-layout-problem.cc:1047
+#: page-layout-problem.cc:1176
 msgid "staff-affinities should only decrease"
 msgstr "staff-affinities devraient aller en ordre décroissant"
 
@@ -2099,61 +2219,104 @@ msgstr "rehearsalMark doit être un entier"
 msgid "mark label must be a markup object"
 msgstr "les étiquettes de marque doivent être des objets de type \"markup\""
 
-#: new-dynamic-engraver.cc:168
-#, c-format
-msgid ""
-"unknown crescendo style: %s\n"
-"defaulting to hairpin."
-msgstr ""
-"style de crescendo inconnu : %s\n"
-"retour à la valeur par défaut (soufflet)."
-
-#: new-dynamic-engraver.cc:233
-#, c-format
-msgid "unterminated %s"
-msgstr "%s non terminé(e)"
-
-#: stem-engraver.cc:102
+#: stem-engraver.cc:105
 msgid "tremolo duration is too long"
 msgstr "durée du tremolo trop longue"
 
-#: stem-engraver.cc:154
+#: stem-engraver.cc:157
 #, c-format
 msgid "adding note head to incompatible stem (type = %d/%d)"
 msgstr "Ajout d'une tête de note à une hampe incompatible (type = %d/%d)"
 
-#: stem-engraver.cc:157
+#: stem-engraver.cc:160
 msgid "maybe input should specify polyphonic voices"
 msgstr "la source devrait spécifier des voix polyphoniques"
 
-#: lily-lexer.cc:265
-msgid "include files are not allowed in safe mode"
-msgstr "l'inclusion de fichiers n'est pas permise en mode sans échec"
+#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#, c-format
+msgid "cannot find file: `%s'"
+msgstr "fichier non trouvé : « %s »"
 
-#: lily-lexer.cc:292
+#: includable-lexer.cc:73 lily-parser-scheme.cc:100
 #, c-format
-msgid "identifier name is a keyword: `%s'"
-msgstr "Le nom de l'identificateur est un mot clé : « %s »"
+msgid "(search path: `%s')"
+msgstr "(chemin de recherche : « %s »)"
 
-#: lily-lexer.cc:313
+#: relocate.cc:52
 #, c-format
-msgid "error at EOF: %s"
-msgstr "erreur à la fin du fichier (EOF) : %s"
+msgid "Setting %s to %s"
+msgstr "%s fixé à %s"
 
-#: lyric-combine-music-iterator.cc:337
+#. this warning should only be printed in debug mode!
+#: relocate.cc:73
 #, c-format
-msgid "cannot find Voice `%s'"
-msgstr "impossible de repérer la voix (Voice) « %s »"
+msgid "no such file: %s for %s"
+msgstr "fichier inexistant : %s pour %s"
 
-#: includable-lexer.cc:71 lily-guile.cc:86 lily-parser-scheme.cc:109
+#. this warning should only be printed in debug mode!
+#. this warning should only be printed in debug mode
+#: relocate.cc:84 relocate.cc:102
 #, c-format
-msgid "cannot find file: `%s'"
-msgstr "fichier non trouvé : « %s »"
+msgid "no such directory: %s for %s"
+msgstr "répertoire inexistant : %s pour %s"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:101
+#: relocate.cc:93
 #, c-format
-msgid "(search path: `%s')"
-msgstr "(chemin de recherche : « %s »)"
+msgid "%s=%s (prepend)\n"
+msgstr "%s=%s (ajout)\n"
+
+#: relocate.cc:124
+#, c-format
+msgid "not relocating, no %s/ or current/ found under %s"
+msgstr "relocalisation non effectuée, ni %s/ ni courrant/ n'existent sous %s"
+
+#: relocate.cc:134
+#, c-format
+msgid "Relocation: compile datadir=%s, new datadir=%s"
+msgstr "Relocalisation : datadir de compilation = %s, nouveau datadir = %s"
+
+#: relocate.cc:146
+#, c-format
+msgid "Relocation: framework_prefix=%s"
+msgstr "Relocalisation : framework_prefix = %s"
+
+#: relocate.cc:186
+#, c-format
+msgid "Relocation: is absolute: argv0=%s\n"
+msgstr "Relocalisation absolue : argv0=%s\n"
+
+#: relocate.cc:192
+#, c-format
+msgid "Relocation: from cwd: argv0=%s\n"
+msgstr "Relocalisation à partir du répertoire courant : argv0=%s\n"
+
+#: relocate.cc:208
+#, c-format
+msgid ""
+"Relocation: from PATH=%s\n"
+"argv0=%s"
+msgstr ""
+"Relocalisation : à partir de PATH=%s\n"
+"argv0=%s"
+
+#: relocate.cc:235
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr "LILYPONDPREFIX est obsolète, utiliser LILYPOND_DATADIR"
+
+#: relocate.cc:360
+#, c-format
+msgid "Relocation file: %s"
+msgstr "Fichier de relocalisation : %s"
+
+#: relocate.cc:364 source-file.cc:65
+#, c-format
+msgid "cannot open file: `%s'"
+msgstr "Impossible d'ouvrir le fichier « %s »"
+
+#: relocate.cc:394
+#, c-format
+msgid "Unknown relocation command %s"
+msgstr "Commande de relocalisation inconnue : %s"
 
 #: note-column.cc:135
 msgid "cannot have note heads and rests together on a stem"
@@ -2163,13 +2326,6 @@ msgstr "impossible de superposer une note et un silence sur une même hampe"
 msgid "removing beam with no stems"
 msgstr "suppression d'une ligature ayant moins de deux hampes"
 
-#. We are completely screwed.
-#: beam.cc:1350
-msgid "no viable initial configuration found: may not find good beam slope"
-msgstr ""
-"pas de configuration initiale viable repérée : \n"
-"la pente de la ligature pourrait être inesthétique."
-
 #: staff-performer.cc:257
 msgid "MIDI channel wrapped around"
 msgstr "Bouclage du canal MIDI"
@@ -2178,43 +2334,66 @@ msgstr "Bouclage du canal MIDI"
 msgid "remapping modulo 16"
 msgstr "réaffectation modulo 16"
 
-#: slur-engraver.cc:90 phrasing-slur-engraver.cc:89
+#: dots.cc:48
 #, c-format
-msgid "direction of %s invalid: %d"
-msgstr "l'orientation de %s n'est pas valide : %d"
-
-#: slur-engraver.cc:158
-msgid "unterminated slur"
-msgstr "liaison non terminée"
-
-#: slur-engraver.cc:183
-msgid "cannot end slur"
-msgstr "impossible de terminer la liaison"
-
-#. We already have a slur, so give a warning and completely ignore
-#. the new slur.
-#: slur-engraver.cc:200
-msgid "already have slur"
-msgstr "a déjà une liaison"
+msgid "dot `%s' not found"
+msgstr "point « %s » introuvable"
 
-#: font-config.cc:39
+#: font-config.cc:38
 msgid "Initializing FontConfig..."
 msgstr "Initialisation de FontConfig..."
 
-#: font-config.cc:54 font-config-scheme.cc:151
+#: font-config.cc:53 font-config-scheme.cc:151
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "échec lors de l'ajout d'un répertoire de fontes : « %s »"
 
-#: font-config.cc:56 font-config-scheme.cc:153
+#: font-config.cc:55 font-config-scheme.cc:153
 #, c-format
-msgid "adding font directory: %s"
-msgstr "ajout d'un répertoire de fontes : « %s »"
+msgid "Adding font directory: %s"
+msgstr "Ajout d'un répertoire de fontes : « %s »"
 
-#: font-config.cc:60
+#: font-config.cc:58
 msgid "Building font database..."
 msgstr "Construction de la base de donnée des fontes..."
 
+#: change-iterator.cc:34
+#, c-format
+msgid "cannot change `%s' to `%s'"
+msgstr "impossible de changer « %s » en « %s »"
+
+#. FIXME: constant error message.
+#: change-iterator.cc:93
+msgid "cannot find context to switch to"
+msgstr "impossible de repérer le contexte vers lequel commuter"
+
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#: change-iterator.cc:102
+#, c-format
+msgid "not changing to same context type: %s"
+msgstr "pas de changement vers le même type de contexte : %s"
+
+#. FIXME: uncomprehensable message
+#: change-iterator.cc:106
+msgid "none of these in my family"
+msgstr "aucun de ceux-ci dans ma famille"
+
+#: slur.cc:438
+#, c-format
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr ""
+"objet graphique (grob) non concerné par la liaison : %s.\n"
+"avoid-slur non définie ?"
+
+#: source-file.cc:85
+#, c-format
+msgid "expected to read %d characters, got %d"
+msgstr "au lieu de %d caractères à lire, il y en a %d"
+
 #. find out the ideal number of pages
 #: optimal-page-breaking.cc:62
 msgid "Finding the ideal number of pages..."
@@ -2248,76 +2427,29 @@ msgstr "tentative pour %d systèmes"
 msgid "best score for this sys-count: %f"
 msgstr "meilleur résultat pour cette configuration « sys-count » : %f"
 
-#: accidental.cc:200
+#: new-dynamic-engraver.cc:168
 #, c-format
-msgid "Could not find glyph-name for alteration %s"
-msgstr "Aucun nom de glyphe ne correspond à l'altération %s"
-
-#: accidental.cc:215
-msgid "natural alteration glyph not found"
-msgstr "pas de glyphe correspondant au bécarre"
+msgid ""
+"unknown crescendo style: %s\n"
+"defaulting to hairpin."
+msgstr ""
+"style de crescendo inconnu : %s\n"
+"retour à la valeur par défaut (soufflet)."
 
-#: system.cc:201
+#: new-dynamic-engraver.cc:233
 #, c-format
-msgid "Element count %d"
-msgstr "%d éléments dénombrés."
+msgid "unterminated %s"
+msgstr "%s non terminé(e)"
 
-#: system.cc:402
-#, c-format
-msgid "Grob count %d"
-msgstr "%d objet graphiques (grob) dénombrés"
+#: hairpin.cc:263
+msgid "decrescendo too small"
+msgstr "decrescendo trop petit"
 
-#: slur.cc:359
-#, c-format
-msgid "Ignoring grob for slur: %s. avoid-slur not set?"
-msgstr ""
-"objet graphique (grob) non concerné par la liaison : %s.\n"
-"avoid-slur non définie ?"
+#: extender-engraver.cc:169 extender-engraver.cc:178
+msgid "unterminated extender"
+msgstr "prolongation ou extenseur non terminé"
 
-#: font-config-scheme.cc:167
-#, c-format
-msgid "failed adding font file: %s"
-msgstr "échec lors de l'ajout d'un fichier de fontes : « %s »"
-
-#: font-config-scheme.cc:169
-#, c-format
-msgid "adding font file: %s"
-msgstr "ajout d'un fichier de fontes : « %s »"
-
-#: hairpin.cc:186
-msgid "decrescendo too small"
-msgstr "decrescendo trop petit"
-
-#: extender-engraver.cc:169 extender-engraver.cc:178
-msgid "unterminated extender"
-msgstr "prolongation ou extenseur non terminé"
-
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(chemin de chargement : « %s »)"
-
-#: lily-guile.cc:431
-#, c-format
-msgid "cannot find property type-check for `%s' (%s)."
-msgstr "vérification du type de propriété pour « %s » (%s) non trouvée"
-
-#: lily-guile.cc:434
-msgid "perhaps a typing error?"
-msgstr "Probable faute de frappe"
-
-#: lily-guile.cc:441
-msgid "doing assignment anyway"
-msgstr "affectation faite malgré tout"
-
-#: lily-guile.cc:453
-#, c-format
-msgid "type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
-"la vérification du type de « %s » a échoué ; \n"
-"   la valeur « %s » doit être du type « %s »"
-
-#: main.cc:107
+#: main.cc:101
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2325,12 +2457,12 @@ msgid ""
 "under certain conditions.  Invoke as `%s --warranty' for more\n"
 "information.\n"
 msgstr ""
-"Ce logiciel est libre. Il est couvert par la licence GNU General Public \n"
+"Ce logiciel est libre. Il est couvert par la licence GNU General Public\n"
 "License, et vous êtes libre de le modifier et/ou d'en distribuer des copies\n"
 "sous certaines conditions.\n"
 "Invoquez « %s --warranty » pour plus d'informations.\n"
 
-#: main.cc:113
+#: main.cc:107
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License as \n"
@@ -2348,7 +2480,7 @@ msgid ""
 "Boston, MA 02111-1307, USA.\n"
 msgstr ""
 "    Ce logiciel est libre; vous pouvez le redistribuer et/ou le modifier\n"
-"selon les termes de la licence GNU General Public License version 2\n"
+"selon les termes de la licence GNU General Public License version 3\n"
 "tel que publiée par la Free Software Foundation.\n"
 "\n"
 "    Ce logiciel est distribué dans l'espoir qu'il soit utile\n"
@@ -2357,60 +2489,59 @@ msgstr ""
 "la license GNU General Public License pour plus de détails.\n"
 "\n"
 "    Vous devriez avoir reçu une copie (consulter le fichier COPYING) de la\n"
-"license GNU General Public License accompagnant ce logiciel; si absente, \n"
-" écrire à la Free Software Foundation, Inc., 59 Temple Place - Suite 330, \n"
+"license GNU General Public License accompagnant ce logiciel; si absente,\n"
+" écrire à la Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:147
+#: main.cc:141
 msgid "SYM[=VAL]"
 msgstr "SYM[=VAL]"
 
-#: main.cc:148
+#: main.cc:142
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
 msgstr ""
-"affecte VAL (par défaut #t)\n"
-"à l'option Scheme SYM.\n"
+"affecte VAL (par défaut #t) à l'option Scheme SYM.\n"
 "Utiliser -dhelp pour avoir de l'aide."
 
-#: main.cc:152
+#: main.cc:146
 msgid "EXPR"
 msgstr "EXPR"
 
-#: main.cc:152
+#: main.cc:146
 msgid "evaluate scheme code"
 msgstr "évaluation du code Scheme"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:155
+#: main.cc:149
 msgid "FORMATs"
 msgstr "FORMATs"
 
-#: main.cc:155
+#: main.cc:149
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr ""
 "produire FORMAT,...\n"
 "Aussi comme options séparées :"
 
-#: main.cc:156
+#: main.cc:150
 msgid "generate PDF (default)"
 msgstr "générer le PDF (par défaut)"
 
-#: main.cc:157
+#: main.cc:151
 msgid "generate PNG"
 msgstr "générer le PNG"
 
-#: main.cc:158
+#: main.cc:152
 msgid "generate PostScript"
 msgstr "générer le PostScript"
 
-#: main.cc:161
+#: main.cc:155
 msgid "FIELD"
 msgstr "CHAMP"
 
-#: main.cc:161
+#: main.cc:155
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
@@ -2418,21 +2549,21 @@ msgstr ""
 "écrire le champ d'entête CHAMP dans le\n"
 "fichier nommé BASENAME.CHAMP"
 
-#: main.cc:164
+#: main.cc:158
 msgid "add DIR to search path"
 msgstr "ajouter RÉPERTOIRE au chemin de recherche"
 
-#: main.cc:165
+#: main.cc:159
 msgid "use FILE as init file"
 msgstr ""
 "utiliser FICHIER comme\n"
 "fichier d'initialisation"
 
-#: main.cc:168
+#: main.cc:162
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "USER,GROUP,CAGE,RÉP"
 
-#: main.cc:168
+#: main.cc:162
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2440,18 +2571,36 @@ msgstr ""
 "chroot dans CAGE, devenir UTILISATEUR:GROUPE\n"
 "et cd dans RÉPERTOIRE"
 
-#: main.cc:172
+#: main.cc:167
+msgid ""
+"print log messages according to LOGLEVEL.  Possible values are:\n"
+"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
+msgstr ""
+"\"affiche les informations selon le niveau de LOGLEVEL :\n"
+"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (défaut) ou DEBUG."
+
+#: main.cc:171
 msgid "write output to FILE (suffix will be added)"
 msgstr ""
 "produire la sortie dans FICHIER \n"
 "(adjonction automatique du suffixe)"
 
-#: main.cc:173
+#: main.cc:172
 msgid "relocate using directory of lilypond program"
 msgstr ""
 "redétermine le chemin d'exécution\n"
 "des composants de LilyPond"
 
+#: main.cc:173
+msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
+msgstr ""
+"pas de progression, seulement les messages d'erreur\n"
+"(équivalent à loglevel=ERROR)"
+
+#: main.cc:175
+msgid "be verbose (equivalent to loglevel=DEBUG)"
+msgstr "état verbeux (équivalent to loglevel=DEBUG)"
+
 #. Do not update the copyright years here, run `make grand-replace'
 #: main.cc:242
 #, c-format
@@ -2534,11 +2683,54 @@ msgstr "impossible de changer l'identifiant utilisateur en %d : %s"
 msgid "cannot change working directory to: %s: %s"
 msgstr "impossible de changer le répertoire de travail en %s : %s"
 
-#: main.cc:631
+#: main.cc:639
 #, c-format
 msgid "exception caught: %s"
 msgstr "exception capturée : %s"
 
+#: page-turn-page-breaking.cc:168
+#, c-format
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr ""
+"Saut de page et tourne (page-turn-page-breaking) :\n"
+"coupure entre %d et %d"
+
+#: page-turn-page-breaking.cc:217
+msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
+msgstr ""
+"Impossible de cadrer sur une seule page ce qui précède la première tourne.\n"
+"Envisagez de définir un numéro pair pour first-page-number."
+
+#: page-turn-page-breaking.cc:230
+#, c-format
+msgid "Calculating page and line breaks (%d possible page breaks)..."
+msgstr "Calcul des sauts de page et de ligne (%d sauts de pages possibles)..."
+
+#: page-turn-page-breaking.cc:300
+#, c-format
+msgid "break starting at page %d"
+msgstr "saut intervenant à la page %d"
+
+#: page-turn-page-breaking.cc:301
+#, c-format
+msgid "\tdemerits: %f"
+msgstr "        démérites : %f"
+
+#: page-turn-page-breaking.cc:302
+#, c-format
+msgid "\tsystem count: %d"
+msgstr "        nombre de systèmes : %d"
+
+#: page-turn-page-breaking.cc:303
+#, c-format
+msgid "\tpage count: %d"
+msgstr "        nombre de pages : %d"
+
+#: page-turn-page-breaking.cc:304
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "        coupure précédente : %d"
+
 #: key-signature-interface.cc:77
 #, c-format
 msgid "No glyph found for alteration: %s"
@@ -2548,10 +2740,29 @@ msgstr "Pas de glyphe pour l'altération « %s »"
 msgid "alteration not found"
 msgstr "altération non trouvée"
 
-#: dots.cc:48
+#: music.cc:150
 #, c-format
-msgid "dot `%s' not found"
-msgstr "point « %s » introuvable"
+msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgstr ""
+"Échec de vérification d'octave.\n"
+"Aurait dû être \"%s\", \"%s\" obtenu"
+
+#: music.cc:219
+msgid "(normalized pitch)"
+msgstr "(hauteur normalisée)"
+
+#: music.cc:223
+#, c-format
+msgid "Transposing %s by %s makes alteration larger than double"
+msgstr "La transposition de %s à %s crée des altérations supérieures aux doubles"
+
+#: vaticana-ligature.cc:95
+msgid "flexa-height undefined; assuming 0"
+msgstr "Vaticana_ligature : décalage en X indéfini ; ramené à 0"
+
+#: vaticana-ligature.cc:100
+msgid "ascending vaticana style flexa"
+msgstr "flexe de style vaticana ascendant"
 
 #: translator.cc:356
 #, c-format
@@ -2563,9 +2774,30 @@ msgstr "Deux événements %s simultanés, rejet de celui-ci"
 msgid "Previous %s event here"
 msgstr "Événement %s précédent ici"
 
-#: glissando-engraver.cc:156
-msgid "unterminated glissando"
-msgstr "glissando non terminé"
+#: lily-guile.cc:93
+#, c-format
+msgid "(load path: `%s')"
+msgstr "(chemin de chargement : « %s »)"
+
+#: lily-guile.cc:416
+#, c-format
+msgid "cannot find property type-check for `%s' (%s)."
+msgstr "vérification du type de propriété pour « %s » (%s) non trouvée"
+
+#: lily-guile.cc:419
+msgid "perhaps a typing error?"
+msgstr "Probable faute de frappe"
+
+#: lily-guile.cc:426
+msgid "doing assignment anyway"
+msgstr "affectation faite malgré tout"
+
+#: lily-guile.cc:438
+#, c-format
+msgid "type check for `%s' failed; value `%s' must be of type `%s'"
+msgstr ""
+"la vérification du type de « %s » a échoué ; \n"
+"   la valeur « %s » doit être du type « %s »"
 
 #: text-spanner-engraver.cc:72
 msgid "cannot find start of text spanner"
@@ -2584,6 +2816,26 @@ msgstr "extension de texte non terminée"
 msgid "clef `%s' not found"
 msgstr "clé « %s » introuvable"
 
+#: beam-engraver.cc:147
+msgid "already have a beam"
+msgstr "ligature déjà présente"
+
+#: beam-engraver.cc:230
+msgid "unterminated beam"
+msgstr "ligature non terminée"
+
+#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
+msgid "stem must have Rhythmic structure"
+msgstr "la hampe doit avoir une structure Rythmic"
+
+#: beam-engraver.cc:277
+msgid "stem does not fit in beam"
+msgstr "la hampe ne s'insère pas dans la ligature"
+
+#: beam-engraver.cc:278
+msgid "beam was started here"
+msgstr "la ligature a débuté ici"
+
 #.
 #. Todo: should make typecheck?
 #.
@@ -2594,158 +2846,133 @@ msgstr "clé « %s » introuvable"
 msgid "strange time signature found: %d/%d"
 msgstr "Chiffrage de mesure inhabituel : %d/%d"
 
-#: lily-parser-scheme.cc:83
+#: paper-column-engraver.cc:261
+msgid "forced break was overridden by some other event, should you be using bar checks?"
+msgstr ""
+"Un saut explicite a été outrepassé par un autre événement.\n"
+"Positionnez quelques contrôles de mesure (bar check) pour vérifier."
+
+#: lily-parser-scheme.cc:80
 #, c-format
 msgid "Changing working directory to: `%s'"
 msgstr ""
 "Modification du répertoire de travail pour\n"
 " « %s »"
 
-#: lily-parser-scheme.cc:100
+#: lily-parser-scheme.cc:84
+#, c-format
+msgid "unable to change directory to: `%s'"
+msgstr ""
+"impossible d'accéder au répertoire\n"
+" « %s »"
+
+#: lily-parser-scheme.cc:99
 #, c-format
 msgid "cannot find init file: `%s'"
 msgstr "impossible de trouver le fichier d'initialisation « %s »"
 
-#: lily-parser-scheme.cc:118
+#: lily-parser-scheme.cc:117
 #, c-format
 msgid "Processing `%s'"
 msgstr "Traitement de « %s »"
 
-#: lily-parser-scheme.cc:203
+#: lily-parser-scheme.cc:208
 msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr ""
 "ly:parser-parse-string ne peut foncionner qu'avec un nouvel analyseur.\n"
 "Utilisez plutôt ly:parser-include-string"
 
+#: lily-parser-scheme.cc:239
+msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
+msgstr ""
+"ly:parse-string-expression ne peut foncionner qu'avec un nouvel analyseur.\n"
+"Utilisez plutôt ly:parser-include-string"
+
+#: font-config-scheme.cc:167
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "échec lors de l'ajout d'un fichier de fontes : « %s »"
+
+#: font-config-scheme.cc:169
+#, c-format
+msgid "Adding font file: %s"
+msgstr "Ajout d'un fichier de fontes : « %s »"
+
 #: custos.cc:88
 #, c-format
 msgid "custos `%s' not found"
 msgstr "custode « %s » introuvable"
 
-#: program-option-scheme.cc:232
+#: accidental-engraver.cc:179
 #, c-format
-msgid "no such internal option: %s"
-msgstr "option interne inconnue : %s"
+msgid "accidental typesetting list must begin with context-name: %s"
+msgstr ""
+"La saisie d'une liste d'altérations accidentelles doit débuter\n"
+"par un nom de contexte : %s"
+
+#: accidental-engraver.cc:209
+#, c-format
+msgid "procedure or context-name expected for accidental rule, found %s"
+msgstr ""
+"procédure ou nom de contexte requis pour la règle d'altération accidentelle,\n"
+"%s trouvé"
 
 #: rest-collision.cc:146
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr "collision de silences insoluble : positionnement du silence indéterminée"
 
-#: rest-collision.cc:160 rest-collision.cc:275
+#: rest-collision.cc:160 rest-collision.cc:276
 msgid "too many colliding rests"
 msgstr "trop de silences se chevauchent"
 
-#: pdf-scheme.cc:50
+#: pango-font.cc:205
 #, c-format
-msgid "Conversion of string `%s' to UTF-16be failed: %s"
+msgid ""
+"Glyph has no name, but font supports glyph naming.\n"
+"Skipping glyph U+%0X, file %s"
 msgstr ""
-"La conversion de la chaîne « %s » en UTF-16be a échoué :\n"
-" %s"
-
-#: episema-engraver.cc:75
-msgid "already have an episema"
-msgstr "épisème déjà présent"
+"Le glyphe n'a pas de nom alors que la fonte prend en charge leur nommage.\n"
+"Glyphe U+%0X ignoré dans le fichier %s"
 
-#: episema-engraver.cc:88
-msgid "cannot find start of episema"
-msgstr "impossible de trouver le début de l'épisème"
+#: pango-font.cc:242
+#, c-format
+msgid "no PostScript font name for font `%s'"
+msgstr "« %s » n'est pas un fichier de fonte PostScript"
 
-#: episema-engraver.cc:137
-msgid "unterminated episema"
-msgstr "épisème non terminé"
+#: pango-font.cc:291
+msgid "FreeType face has no PostScript font name"
+msgstr "Caractère FreeType sans nom de police PostScript"
 
-#: grob-property.cc:34
-#, c-format
-msgid "%d: %s"
-msgstr "%d : %s"
+#: lyric-engraver.cc:186
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr "Syllabe sans note de rattachement. Utiliser \\lyricsto ou associatedVoice."
 
-#: grob-property.cc:169
-#, c-format
-msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
-msgstr "dépendance circulaire : calculation-in-progress rencontrée pour #'%s (%s)"
+#: page-breaking.cc:277
+msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
+msgstr ""
+"systems-per-page non défini :\n"
+"  min-systems-per-page et max-systems-per-page ignorés"
 
-#: relocate.cc:53
-#, c-format
-msgid "Setting %s to %s"
-msgstr "%s fixé à %s"
+#: page-breaking.cc:282
+msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
+msgstr ""
+"min-systems-per-page supérieur à max-systems-per-page :\n"
+"  tous deux seront ignorés"
 
-#: relocate.cc:73
+#: paper-outputter-scheme.cc:41
 #, c-format
-msgid "no such file: %s for %s"
-msgstr "fichier inexistant : %s pour %s"
+msgid "Layout output to `%s'..."
+msgstr "Sortie mise en page vers « %s »..."
 
-#: relocate.cc:83 relocate.cc:101
+#: gregorian-ligature-engraver.cc:70
 #, c-format
-msgid "no such directory: %s for %s"
-msgstr "répertoire inexistant : %s pour %s"
+msgid "\\%s ignored"
+msgstr "\\%s ignoré(e)"
 
-#: relocate.cc:93
+#: gregorian-ligature-engraver.cc:75
 #, c-format
-msgid "%s=%s (prepend)\n"
-msgstr "%s=%s (ajout)\n"
-
-#: relocate.cc:123
-#, c-format
-msgid "not relocating, no %s/ or current/ found under %s"
-msgstr "relocalisation non effectuée, ni %s/ ni courrant/ n'existent sous %s"
-
-#: relocate.cc:134
-#, c-format
-msgid "Relocation: compile datadir=%s, new datadir=%s"
-msgstr "Relocalisation : datadir de compilation=%s, nouveau datadir=%s"
-
-#: relocate.cc:147
-#, c-format
-msgid "Relocation: framework_prefix=%s"
-msgstr "Relocalisation : framework_prefix=%s"
-
-#: relocate.cc:188
-#, c-format
-msgid "Relocation: is absolute: argv0=%s"
-msgstr "Relocalisation : argv0=%s est absolu"
-
-#: relocate.cc:195
-#, c-format
-msgid "Relocation: from cwd: argv0=%s"
-msgstr "Relocalisation : argv0=%s à partir du répertoire courant"
-
-#: relocate.cc:212
-#, c-format
-msgid ""
-"Relocation: from PATH=%s\n"
-"argv0=%s"
-msgstr ""
-"Relocalisation : à partir de PATH=%s\n"
-"argv0=%s"
-
-#: relocate.cc:239
-msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
-msgstr "LILYPONDPREFIX est obsolète, utiliser LILYPOND_DATADIR"
-
-#: relocate.cc:365
-#, c-format
-msgid "Relocation file: %s"
-msgstr "Fichier de relocalisation : %s"
-
-#: relocate.cc:371 source-file.cc:65
-#, c-format
-msgid "cannot open file: `%s'"
-msgstr "Impossible d'ouvrir le fichier « %s »"
-
-#: relocate.cc:401
-#, c-format
-msgid "Unknown relocation command %s"
-msgstr "Commande de relocalisation inconnue : %s"
-
-#: gregorian-ligature-engraver.cc:70
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignoré(e)"
-
-#: gregorian-ligature-engraver.cc:75
-#, c-format
-msgid "implied \\%s added"
-msgstr "\\%s implicite ajouté(e)"
+msgid "implied \\%s added"
+msgstr "\\%s implicite ajouté(e)"
 
 #. ligature may not start with 2nd head of pes or flexa
 #: gregorian-ligature-engraver.cc:224
@@ -2757,52 +2984,6 @@ msgstr "Impossible d'appliquer « \\~ » à la première tête de ligature"
 msgid "cannot apply `\\~' on heads with identical pitch"
 msgstr "Impossible d'appliquer « \\~ » à des têtes ayant la même hauteur"
 
-#: translator-group.cc:188
-#, c-format
-msgid "cannot find: `%s'"
-msgstr " « %s » inconnu(e)"
-
-#: phrasing-slur-engraver.cc:157
-msgid "unterminated phrasing slur"
-msgstr "liaison de phrasé non terminée"
-
-#: phrasing-slur-engraver.cc:182
-msgid "cannot end phrasing slur"
-msgstr "impossible de terminer la liaison de phrasé"
-
-#: phrasing-slur-engraver.cc:196
-msgid "already have phrasing slur"
-msgstr "il y a déjà une liaison de phrasé"
-
-#: lyric-engraver.cc:186
-msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr "Syllabe sans note de rattachement. Utiliser \\lyricsto ou associatedVoice."
-
-#: page-breaking.cc:274
-msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
-msgstr ""
-"systems-per-page non défini :\n"
-"  min-systems-per-page et max-systems-per-page ignorés"
-
-#: page-breaking.cc:279
-msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
-msgstr ""
-"min-systems-per-page supérieur à max-systems-per-page :\n"
-"  tous deux seront ignorés"
-
-#: performance.cc:55
-msgid "Track..."
-msgstr "Piste..."
-
-#: performance.cc:85
-#, c-format
-msgid "MIDI output to `%s'..."
-msgstr "Sortie MIDI vers « %s »..."
-
-#: tuplet-engraver.cc:107
-msgid "No tuplet to end"
-msgstr "Aucun n-olet à terminer"
-
 #: chord-tremolo-engraver.cc:88
 msgid "No tremolo to end"
 msgstr "Aucun trémolo à terminer"
@@ -2811,6 +2992,27 @@ msgstr "Aucun trémolo à terminer"
 msgid "unterminated chord tremolo"
 msgstr "accord en tremolo non terminé"
 
+#: general-scheme.cc:390
+#, c-format
+msgid "failed redirecting stderr to `%s'"
+msgstr "échec lors de la redirection de stderr vers « %s »"
+
+#: general-scheme.cc:469
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr ""
+"La sortie contient l'infini ou une valeur non numérique.\n"
+"Substitution par 0.0"
+
+#: system.cc:200
+#, c-format
+msgid "Element count %d"
+msgstr "%d éléments dénombrés."
+
+#: system.cc:466
+#, c-format
+msgid "Grob count %d"
+msgstr "%d objet graphiques (grob) dénombrés"
+
 #: axis-group-engraver.cc:94
 msgid "Axis_group_engraver: vertical group already has a parent"
 msgstr "Axis_group_engraver : le groupe vertical a déjà un parent"
@@ -2832,16 +3034,16 @@ msgstr "style de cluster inconnu : « %s »"
 msgid "junking empty cluster"
 msgstr "mise au rebut d'un cluster vide"
 
-#: context-property.cc:42
-msgid "need symbol arguments for \\override and \\revert"
-msgstr "\\override et \\revert requièrent des arguments symboliques"
-
-#: source-file.cc:85
+#: grob-property.cc:35
 #, c-format
-msgid "expected to read %d characters, got %d"
-msgstr "au lieu de %d caractères à lire, il y en a %d"
+msgid "%d: %s"
+msgstr "%d : %s"
 
-#: axis-group-interface.cc:627
+#: rest-collision-engraver.cc:70
+msgid "rhythmic head is not part of a rhythmic column"
+msgstr "tête rythmique non rattachée à un empilement rythmique"
+
+#: axis-group-interface.cc:670
 msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr ""
 "un objet externe à la portée devrait avoir un positionnement.\n"
@@ -2852,19 +3054,22 @@ msgstr ""
 msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr "Coherent_ligature_engraver : initialise `spacing-increment=0.01': ptr=%ul"
 
+#. We are completely screwed.
+#: beam-quanting.cc:853
+msgid "no viable initial configuration found: may not find good beam slope"
+msgstr ""
+"pas de configuration initiale viable repérée :\n"
+"la pente de la ligature pourrait être inesthétique."
+
 #: percent-repeat-engraver.cc:147
 msgid "unterminated percent repeat"
 msgstr "répétition en pourcent non terminée"
 
-#: note-head.cc:75
+#: note-head.cc:85
 #, c-format
 msgid "none of note heads `%s' or `%s' found"
 msgstr "tête de note « %s » ou « %s » non trouvée"
 
-#: relative-octave-check.cc:49
-msgid "Failed octave check, got: "
-msgstr "échec de la vérification d'octave, a obtenu : "
-
 #. FIXME:
 #: script-engraver.cc:113
 msgid "do not know how to interpret articulation:"
@@ -2874,34 +3079,56 @@ msgstr "ne sait comment interpréter l'articulation"
 msgid " scheme encoding: "
 msgstr "encodage Scheme : "
 
-#: all-font-metrics.cc:153
+#: program-option-scheme.cc:235
 #, c-format
-msgid "cannot find font: `%s'"
-msgstr "fonte « %s » introuvable"
+msgid "no such internal option: %s"
+msgstr "option interne inconnue : %s"
 
 #: property-iterator.cc:93
 #, c-format
 msgid "not a grob name, `%s'"
 msgstr " « %s » n'est pas un nom d'objet graphique (grob)"
 
+#: all-font-metrics.cc:149
+#, c-format
+msgid "cannot find font: `%s'"
+msgstr "fonte « %s » introuvable"
+
+#: pdf-scheme.cc:50
+#, c-format
+msgid "Conversion of string `%s' to UTF-16be failed: %s"
+msgstr ""
+"La conversion de la chaîne « %s » en UTF-16be a échoué :\n"
+" %s"
+
+#: rest.cc:171
+#, c-format
+msgid "rest `%s' not found"
+msgstr "silence « %s » inconnu"
+
 #: bar-check-iterator.cc:84
 #, c-format
 msgid "barcheck failed at: %s"
 msgstr "échec du contrôle de mesure (barcheck) à %s"
 
-#: stem.cc:114
-msgid "weird stem size, check for narrow beams"
-msgstr "taille de hampe bizarre ; vérifier la présence de liens étroits"
-
-#: stem.cc:652
+#: slur-engraver.cc:92 phrasing-slur-engraver.cc:91
 #, c-format
-msgid "flag `%s' not found"
-msgstr "crochet inconnu : « %s »"
+msgid "direction of %s invalid: %d"
+msgstr "l'orientation de %s n'est pas valide : %d"
 
-#: stem.cc:668
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "type de crochet inconnu : « %s »"
+#: slur-engraver.cc:166
+msgid "unterminated slur"
+msgstr "liaison non terminée"
+
+#: slur-engraver.cc:191
+msgid "cannot end slur"
+msgstr "impossible de terminer la liaison"
+
+#. We already have a slur, so give a warning and completely ignore
+#. the new slur.
+#: slur-engraver.cc:208
+msgid "already have slur"
+msgstr "a déjà une liaison"
 
 #: global-context-scheme.cc:96 global-context-scheme.cc:114
 msgid "no music found in score"
@@ -2911,7 +3138,7 @@ msgstr "Il n'y a pas de musique dans cette partition"
 msgid "Interpreting music... "
 msgstr "Interprétation en cours de la musique..."
 
-#: global-context-scheme.cc:127
+#: global-context-scheme.cc:126
 #, c-format
 msgid "elapsed time: %.2f seconds"
 msgstr "temps écoulé : %.2f secondes"
@@ -2921,65 +3148,22 @@ msgstr "temps écoulé : %.2f secondes"
 msgid "fatal error. Couldn't find type: %s"
 msgstr "Erreur fatale. Type inconnu : %s"
 
-#: mensural-ligature.cc:171
-msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature : cas inattendu et non interprétable"
-
-#: mensural-ligature.cc:233
-msgid "Mensural_ligature: (join_right == 0)"
-msgstr "Mensural_ligature : (joint_right == 0)"
-
-#: page-turn-page-breaking.cc:168
-#, c-format
-msgid "page-turn-page-breaking: breaking from %d to %d"
-msgstr ""
-"Saut de page et tourne (page-turn-page-breaking) :\n"
-"coupure entre %d et %d"
-
-#: page-turn-page-breaking.cc:217
-msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
-msgstr ""
-"Impossible de cadrer sur une seule page ce qui précède la première tourne.\n"
-"Envisagez de définir un numéro pair pour first-page-number."
-
-#: page-turn-page-breaking.cc:230
-#, c-format
-msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr "Calcul des sauts de page et de ligne (%d sauts de pages possibles)..."
-
-#: page-turn-page-breaking.cc:300
-#, c-format
-msgid "break starting at page %d"
-msgstr "saut intervenant à la page %d"
-
-#: page-turn-page-breaking.cc:301
-#, c-format
-msgid "\tdemerits: %f"
-msgstr "        démérites : %f"
-
-#: page-turn-page-breaking.cc:302
-#, c-format
-msgid "\tsystem count: %d"
-msgstr "        nombre de systèmes : %d"
+#: phrasing-slur-engraver.cc:165
+msgid "unterminated phrasing slur"
+msgstr "liaison de phrasé non terminée"
 
-#: page-turn-page-breaking.cc:303
-#, c-format
-msgid "\tpage count: %d"
-msgstr "        nombre de pages : %d"
+#: phrasing-slur-engraver.cc:190
+msgid "cannot end phrasing slur"
+msgstr "impossible de terminer la liaison de phrasé"
 
-#: page-turn-page-breaking.cc:304
-#, c-format
-msgid "\tprevious break: %d"
-msgstr "        coupure précédente : %d"
+#: phrasing-slur-engraver.cc:204
+msgid "already have phrasing slur"
+msgstr "il y a déjà une liaison de phrasé"
 
-#: lily-parser.cc:105
+#: lily-parser.cc:109
 msgid "Parsing..."
 msgstr "Analyse..."
 
-#: lily-parser.cc:133
-msgid "braces do not match"
-msgstr "accolades non pairées"
-
 #: score.cc:176
 msgid "already have music in score"
 msgstr "il y a déjà de la musique dans la partition"
@@ -2992,31 +3176,6 @@ msgstr "voici la musique précédente"
 msgid "errors found, ignoring music expression"
 msgstr "suite à des erreurs répétées, l'expression musicale sera ignorée"
 
-#: change-iterator.cc:34
-#, c-format
-msgid "cannot change `%s' to `%s'"
-msgstr "impossible de changer « %s » en « %s »"
-
-#. FIXME: constant error message.
-#: change-iterator.cc:93
-msgid "cannot find context to switch to"
-msgstr "impossible de repérer le contexte vers lequel commuter"
-
-#. We could change the current translator's id, but that would make
-#. errors hard to catch.
-#.
-#. last->translator_id_string () = get_change
-#. ()->change_to_id_string ();
-#: change-iterator.cc:102
-#, c-format
-msgid "not changing to same context type: %s"
-msgstr "pas de changement vers le même type de contexte : %s"
-
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
-msgid "none of these in my family"
-msgstr "aucun de ceux-ci dans ma famille"
-
 #. If there is no such symbol, we default to the numbered style.
 #. (Here really with a warning!)
 #: time-signature.cc:94
@@ -3038,36 +3197,6 @@ msgstr ""
 "L'objet graphique (Grob) « %s »\n"
 " n'a pas d'interface pour la propriété « %s »"
 
-#: open-type-font.cc:44
-#, c-format
-msgid "cannot allocate %lu bytes"
-msgstr "impossible d'allouer %lu octets"
-
-#: open-type-font.cc:48
-#, c-format
-msgid "cannot load font table: %s"
-msgstr "impossible de charger la table des fontes : %s"
-
-#: open-type-font.cc:53
-#, c-format
-msgid "FreeType error: %s"
-msgstr "Erreur FreeType : %s"
-
-#: open-type-font.cc:110
-#, c-format
-msgid "unsupported font format: %s"
-msgstr "format de police non supporté : %s"
-
-#: open-type-font.cc:112
-#, c-format
-msgid "error reading font file %s: %s"
-msgstr "erreur de lecture du fichier de fontes %s : %s"
-
-#: open-type-font.cc:187
-#, c-format
-msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr "erreur Freetype FT_Get_Glyph_Name () : %s"
-
 #: midi-stream.cc:39
 #, c-format
 msgid "cannot open for write: %s: %s"
@@ -3078,148 +3207,158 @@ msgstr "impossible d'ouvrir le fichier en écriture : %s : %s"
 msgid "cannot write to file: `%s'"
 msgstr "impossible d'écrire dans le fichier « %s »"
 
-#: parser.yy:825
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:129
+#, c-format
+msgid "Cyclic markup detected: %s"
+msgstr "Markup avec référence circulaire : %s"
+
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:142
+#, c-format
+msgid "Markup depth exceeds maximal value of %d; Markup: %s"
+msgstr ""
+"Cascade de markups dépassant la valeur maximale de %d ;\n"
+"Markup : %s"
+
+#: parser.yy:162 parser.yy:176
+msgid "Too much lookahead"
+msgstr "Trop d'anticipation"
+
+#: parser.yy:827 parser.yy:1193 parser.yy:1226
+msgid "not a context mod"
+msgstr "ceci n'est pas un module de contexte"
+
+#: parser.yy:995
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "dans la section \\score, utiliser \\layout au lieu de \\paper"
 
-#: parser.yy:849
+#: parser.yy:1019
 msgid "need \\paper for paper block"
 msgstr "\\paper est nécessaire pour définir les paramètres de la page"
 
-#: parser.yy:1369
+#: parser.yy:1943
 msgid "only \\consists takes non-string argument."
 msgstr "seul \\consists peut prendre un argument autre qu'une chaîne"
 
-#: parser.yy:1382
+#: parser.yy:1956
 msgid "Grob name should be alphanumeric"
 msgstr "Un nom de Grob devrait être alphanumérique"
 
-#: parser.yy:1697
-msgid "second argument must be pitch list"
-msgstr "le second argument doit être une liste de hauteurs"
+#: parser.yy:2150
+msgid "not a rhythmic event"
+msgstr "événement non rythmique"
 
-#: parser.yy:1728 parser.yy:1733 parser.yy:2206
+#: parser.yy:2246 parser.yy:2251
 msgid "have to be in Lyric mode for lyrics"
 msgstr "doit être en mode Lyric pour des paroles"
 
-#: parser.yy:1830
+#: parser.yy:2366
 msgid "expecting string as script definition"
 msgstr "chaîne requise pour définir un script"
 
-#: parser.yy:1985 parser.yy:2036
+#: parser.yy:2518 parser.yy:2569
 #, c-format
 msgid "not a duration: %d"
 msgstr "%d n'est pas une durée"
 
-#: parser.yy:2160
+#: parser.yy:2688
 msgid "have to be in Note mode for notes"
 msgstr "doit être en mode Note pour des notes"
 
-#: parser.yy:2221
+#: parser.yy:2737
 msgid "have to be in Chord mode for chords"
 msgstr "doit être en mode Chord pour des accords"
 
-#: lexer.ll:192
+#: parser.yy:2997
+msgid "not a markup"
+msgstr "n'est pas un « markup »"
+
+#: lexer.ll:225
 msgid "stray UTF-8 BOM encountered"
 msgstr "parasitage par UTF-8 BOM"
 
-#: lexer.ll:196
+#: lexer.ll:228
 msgid "Skipping UTF-8 BOM"
 msgstr "Escamotage d'UTF-8 BOM"
 
-#: lexer.ll:251
+#: lexer.ll:286
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "L'entrée a été renommée en « %s »"
 
-#: lexer.ll:268
+#: lexer.ll:303
 msgid "quoted string expected after \\version"
 msgstr "\\version doit être suivi d'une chaîne entre guillemets"
 
-#: lexer.ll:272
+#: lexer.ll:307
 msgid "quoted string expected after \\sourcefilename"
 msgstr "\\sourcefilename doit être suivi d'une chaîne entre guillemets"
 
-#: lexer.ll:276
+#: lexer.ll:311
 msgid "integer expected after \\sourcefileline"
 msgstr "\\sourcefilename doit être suivi d'un nombre entier"
 
-#: lexer.ll:289
-msgid "EOF found inside a comment"
-msgstr "Fin de fichier (EOF) à l'intérieur du commentaire"
-
-#: lexer.ll:304
+#: lexer.ll:334
 msgid "\\maininput not allowed outside init files"
 msgstr "\\maininput n'est pas permis en dehors des fichiers d'initialisation"
 
-#: lexer.ll:328
+#: lexer.ll:358
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "identificateur erroné ou non défini : « %s »"
 
+#: lexer.ll:384
+msgid "string expected after \\include"
+msgstr "\\include doit être suivi d'une chaîne entre guillemets"
+
 #. backup rule
-#: lexer.ll:337
+#: lexer.ll:394
 msgid "end quote missing"
 msgstr "absence de guillemet fermant"
 
-#: lexer.ll:487
+#: lexer.ll:556
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr "Accolade repérée à la fin d'une parole. Manquerait-il une espace ?"
 
-#: lexer.ll:597
+#: lexer.ll:671
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr "Accolade repérée à la fin d'un \"markup\". Manquerait-il une espace ?"
 
-#: lexer.ll:701
+#: lexer.ll:683
+msgid "EOF found inside a comment"
+msgstr "Fin de fichier (EOF) à l'intérieur du commentaire"
+
+#: lexer.ll:775
 #, c-format
-msgid "invalid character: `%c'"
-msgstr "caractère invalide : « %c »"
+msgid "invalid character: `%s'"
+msgstr "caractère invalide : « %s »"
 
-#: lexer.ll:822 lexer.ll:823
+#: lexer.ll:868 lexer.ll:869
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "chaîne d'échappement inconnue : « \\%s »"
 
-#: lexer.ll:932 lexer.ll:933
+#: lexer.ll:1117 lexer.ll:1118
+msgid "non-UTF-8 input"
+msgstr "la source n'est pas en UTF-8"
+
+#: lexer.ll:1161 lexer.ll:1162
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr ""
 "%s est plus qu'obsolète ;\n"
 "le plus ancien pouvant être supporté est %s"
 
-#: lexer.ll:933 lexer.ll:934
+#: lexer.ll:1162 lexer.ll:1163
 msgid "consider updating the input with the convert-ly script"
 msgstr "Envisagez la mise à jour de la source à l'aide du script convert-ly"
 
-#: lexer.ll:939 lexer.ll:940
+#: lexer.ll:1168 lexer.ll:1169
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "Programme plus qu'obsolète : %s (le fichier requiert %s)"
 
-#: documentation-lib.scm:59
-#, scheme-format
-msgid "Processing ~S..."
-msgstr "Traitement de ~S..."
-
-#: documentation-lib.scm:176
-#, scheme-format
-msgid "Writing ~S..."
-msgstr "Écriture de ~S..."
-
-#: documentation-lib.scm:184
-#, scheme-format
-msgid "cannot find description for property `~S' (~S)"
-msgstr ""
-"impossible de trouver une description de la propriété « ~S »\n"
-" (~S)"
-
-#: documentation-lib.scm:205
-#, scheme-format
-msgid "cannot find description for property ~S (~S)"
-msgstr ""
-"impossible de trouver une description de la propriété ~S\n"
-" (~S)"
-
 #: parser-clef.scm:141 parser-clef.scm:181
 #, scheme-format
 msgid "unknown clef type `~a'"
@@ -3245,113 +3384,109 @@ msgstr "impossible de trouver l'interface pour la propriété ~S"
 msgid "unknown Grob interface: ~S"
 msgstr "interface d'objet graphique (Grob) inconnue : ~S"
 
+#: graphviz.scm:64
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Écriture du graphique « ~a »..."
+
+#: parser-ly-from-scheme.scm:71
+msgid "error in #{ ... #}"
+msgstr "erreur dans #{ ... #}"
+
 #: framework-eps.scm:108
 #, scheme-format
 msgid "Writing ~a..."
 msgstr "Écriture de ~a..."
 
-#: define-music-properties.scm:21 define-grob-properties.scm:21
-#: define-context-properties.scm:31
+#: output-ps.scm:48
+msgid "Found infinity or nan in output.  Substituting 0.0"
+msgstr "Détection d'une valeur infini ou non numérique. Substitution par 0.0"
+
+#: output-ps.scm:313 output-svg.scm:556
 #, scheme-format
-msgid "symbol ~S redefined"
-msgstr "symbole « ~S » redéfini"
+msgid "unknown line-cap-style: ~S"
+msgstr "line-cap-style inconnu : ~S"
 
-#: paper.scm:117
+#: output-ps.scm:318 output-svg.scm:562
+#, scheme-format
+msgid "unknown line-join-style: ~S"
+msgstr "line-join-style inconnu : ~S"
+
+#: paper.scm:120
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size n'est pas à un niveau de portée globale"
 
-#: paper.scm:301
+#: paper.scm:304
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "~S n'est pas un objet de \\layout {}"
 
-#: paper.scm:313
+#: paper.scm:316
 #, scheme-format
 msgid "Unknown paper size: ~a"
 msgstr "Format de papier inconnu : ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:328
+#: paper.scm:331
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "#(set-paper-size ..) doit être dans la section \\paper { ... }"
 
-#: lily.scm:225
-msgid "Using (ice-9 curried-definitions) module\n"
-msgstr "Utilisation du module (ice-9 curried-definitions)\n"
-
-#: lily.scm:230
-msgid "Guile 1.8\n"
-msgstr "Guile 1.8\n"
-
-#: lily.scm:290
+#: backend-library.scm:27
 #, scheme-format
-msgid "cannot find: ~A"
-msgstr "impossible de trouver ~A"
+msgid "Invoking `~a'..."
+msgstr "Appel de « ~a »..."
 
-#: lily.scm:350
+#: backend-library.scm:31
 #, scheme-format
-msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr ""
-"type d'argument erroné pour ~a.\n"
-" Attendait ~a, ~s trouvé"
-
-#: lily.scm:710
-msgid "Compilation successfully completed"
-msgstr "Compilation menée à son terme, avec succès."
+msgid "`~a' failed (~a)\n"
+msgstr "échec de « ~a » (~a)\n"
 
-#: lily.scm:711
-msgid "Compilation completed with warnings or errors"
-msgstr "Compilation menée à son terme, avec des avertissements ou erreurs."
-
-#: lily.scm:773
+#: backend-library.scm:90
 #, scheme-format
-msgid "job ~a terminated with signal: ~a"
-msgstr "le travail ~a s'est terminé avec le signal ~a"
+msgid "Converting to `~a'...\n"
+msgstr "Conversion à « ~a »...\n"
 
-#: lily.scm:776
+#. Do not try to guess the name of the png file,
+#. GS produces PNG files like BASE-page%d.png.
+#: backend-library.scm:99
 #, scheme-format
-msgid ""
-"logfile ~a (exit ~a):\n"
-"~a"
-msgstr ""
-"fichier journal ~a (sortie ~a) :\n"
-"~a"
+msgid "Converting to ~a..."
+msgstr "Conversion à ~a..."
 
-#: lily.scm:798 lily.scm:876
+#: backend-library.scm:137
 #, scheme-format
-msgid "failed files: ~S"
-msgstr "erreur sur les fichiers ~S"
+msgid "Writing header field `~a' to `~a'..."
+msgstr "écriture du champ d'entête « ~a » dans « ~a »..."
 
-#: lily.scm:867
+#: backend-library.scm:187
 #, scheme-format
-msgid "Redirecting output to ~a..."
-msgstr "Redirection de la sortie vers ~a..."
+msgid "missing stencil expression `~S'"
+msgstr "absence d'expression stencil « ~S »"
 
-#: lily.scm:886
+#: output-svg.scm:47
 #, scheme-format
-msgid "Invoking `~a'...\n"
-msgstr "Appel de « ~a »...\n"
+msgid "undefined: ~S"
+msgstr "~S indéfini(e)"
 
-#: graphviz.scm:64
+#: output-svg.scm:157
 #, scheme-format
-msgid "Writing graph `~a'..."
-msgstr "Écriture du graphique « ~a »..."
+msgid "cannot decypher Pango description: ~a"
+msgstr "la description de Pango ne peut être déchiffrée : ~a"
 
-#: framework-svg.scm:84
-#, scheme-format
-msgid "Updating font into: ~a"
-msgstr "Actualisation de la fonte dans ~a"
+#: output-svg.scm:237
+msgid "Glyph must have a unicode value"
+msgstr "Un glyphe doit avoir une valeur unicode"
 
-#: layout-beam.scm:40
+#: output-svg.scm:289 output-svg.scm:299
 #, scheme-format
-msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr "Erreur de définition de ligature : attendait (~S,~S), ~S trouvé."
+msgid "cannot find SVG font ~S"
+msgstr "fonte SVG ~S introuvable"
 
-#: layout-beam.scm:54
+#: flag-styles.scm:151
 #, scheme-format
-msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr "Erreur de définition de ligature : attendait ~S 0, repéré ~S."
+msgid "flag stroke `~a' or `~a' not found"
+msgstr "type de crochet inconnu : « ~a » ou « ~a »"
 
 #: modal-transforms.scm:38
 msgid "'from' pitch not in scale; ignoring"
@@ -3377,49 +3512,73 @@ msgstr "hauteur d'inversion absente de la gamme : rien à transposer"
 msgid "negative replication count; ignoring"
 msgstr "compteur de réplication négatif : rien à transposer"
 
-#: backend-library.scm:29 ps-to-png.scm:68
+#: to-xml.scm:191
+#, scheme-format
+msgid "assertion failed: ~S"
+msgstr "erreur d'assertion : ~S"
+
+#: define-grob-properties.scm:21 define-context-properties.scm:31
+#: define-music-properties.scm:21
 #, scheme-format
-msgid "Invoking `~a'..."
-msgstr "Appel de « ~a »..."
+msgid "symbol ~S redefined"
+msgstr "symbole « ~S » redéfini"
 
-#: backend-library.scm:34
+#: chord-entry.scm:52
 #, scheme-format
-msgid "`~a' failed (~a)"
-msgstr "échec de « ~a » (~a)"
+msgid "Spurious garbage following chord: ~A"
+msgstr "Information incompréhensible à la suite de l'accord « ~A »"
+
+#: lily.scm:234
+msgid "Using (ice-9 curried-definitions) module\n"
+msgstr "Utilisation du module (ice-9 curried-definitions)\n"
+
+#: lily.scm:237
+msgid "Guile 1.8\n"
+msgstr "Guile 1.8\n"
 
-#: backend-library.scm:94
+#: lily.scm:297
 #, scheme-format
-msgid "Converting to `~a'..."
-msgstr "Conversion à « ~a »..."
+msgid "cannot find: ~A"
+msgstr "impossible de trouver ~A"
 
-#. Do not try to guess the name of the png file,
-#. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:104
+#: lily.scm:701
+msgid "Success: compilation successfully completed"
+msgstr "Compilation menée à son terme, avec succès."
+
+#: lily.scm:702
+msgid "Compilation completed with warnings or errors"
+msgstr "Compilation menée à son terme, avec des avertissements ou erreurs."
+
+#: lily.scm:764
 #, scheme-format
-msgid "Converting to ~a..."
-msgstr "Conversion à ~a..."
+msgid "job ~a terminated with signal: ~a"
+msgstr "le travail ~a s'est terminé avec le signal ~a"
 
-#: backend-library.scm:142
+#: lily.scm:767
 #, scheme-format
-msgid "Writing header field `~a' to `~a'..."
-msgstr "écriture du champ d'entête « ~a » dans « ~a »..."
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"fichier journal ~a (sortie ~a) :\n"
+"~a"
 
-#: backend-library.scm:192
+#: lily.scm:789 lily.scm:869
 #, scheme-format
-msgid "missing stencil expression `~S'"
-msgstr "absence d'expression stencil « ~S »"
+msgid "failed files: ~S"
+msgstr "erreur sur les fichiers ~S"
 
-#: to-xml.scm:191
+#: lily.scm:860
 #, scheme-format
-msgid "assertion failed: ~S"
-msgstr "erreur d'assertion : ~S"
+msgid "Redirecting output to ~a..."
+msgstr "Redirection de la sortie vers ~a..."
 
-#: chord-entry.scm:49
+#: lily.scm:879 ps-to-png.scm:66
 #, scheme-format
-msgid "Spurious garbage following chord: ~A"
-msgstr "Information incompréhensible à la suite de l'accord « ~A »"
+msgid "Invoking `~a'...\n"
+msgstr "Appel de « ~a »...\n"
 
-#: lily-library.scm:758
+#: lily-library.scm:761
 msgid ""
 "Find the index between @var{start} and @var{end} (an integer)\n"
 "which produces the closest match to @var{target-val} if\n"
@@ -3429,15 +3588,11 @@ msgstr ""
 "(nombre entier) qui soit le plus proche de @var{valeur-cible}\n"
 "lorsqu'appliqué à la fonction @var{appelant}."
 
-#: lily-library.scm:832
+#: lily-library.scm:835
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "unité inconnue : ~S"
 
-#: lily-library.scm:858 lily-library.scm:867
-msgid "warning:"
-msgstr "Avertissement :"
-
 #: lily-library.scm:860
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
@@ -3445,119 +3600,118 @@ msgstr ""
 "déclaration de \\version absente ;\n"
 "ajoutez ~a pour une compatibilité future"
 
-#: lily-library.scm:868
+#: lily-library.scm:866
 msgid "old relative compatibility not used"
 msgstr "compatibilité avec l'ancien mode relatif non utilisée"
 
-#: output-ps.scm:48
-msgid "Found infinity or nan in output.  Substituting 0.0"
-msgstr "Détection d'une valeur infini ou non numérique. Substitution par 0.0"
-
-#: output-ps.scm:299 output-svg.scm:550
+#: framework-svg.scm:84
 #, scheme-format
-msgid "unknown line-cap-style: ~S"
-msgstr "line-cap-style inconnu : ~S"
+msgid "Updating font into: ~a"
+msgstr "Actualisation de la fonte dans ~a"
 
-#: output-ps.scm:304 output-svg.scm:556
+#: part-combiner.scm:598
 #, scheme-format
-msgid "unknown line-join-style: ~S"
-msgstr "line-join-style inconnu : ~S"
+msgid "quoted music `~a' is empty"
+msgstr "il n'y a rien à reproduire de « ~a » "
 
-#: output-svg.scm:47
-#, scheme-format
-msgid "undefined: ~S"
-msgstr "~S indéfini(e)"
+#: music-functions.scm:273
+msgid "More alternatives than repeats.  Junking excess alternatives"
+msgstr ""
+"Plus d'alternatives que de répétitions.\n"
+" Escamotage des alternatives surnuméraires."
 
-#: output-svg.scm:151
+#: music-functions.scm:302
 #, scheme-format
-msgid "cannot decypher Pango description: ~a"
-msgstr "la description de Pango ne peut être déchiffrée : ~a"
+msgid "invalid tremolo repeat count: ~a"
+msgstr "nombre de répétition en trémolo invalide : ~a"
 
-#: output-svg.scm:231
-msgid "Glyph must have a unicode value"
-msgstr "Un glyphe doit avoir une valeur unicode"
+#: music-functions.scm:634
+msgid "Bad chord repetition"
+msgstr "Mauvaise répétition d'accord"
 
-#: output-svg.scm:283 output-svg.scm:293
+#: music-functions.scm:669
 #, scheme-format
-msgid "cannot find SVG font ~S"
-msgstr "fonte SVG ~S introuvable"
+msgid "music expected: ~S"
+msgstr "~S requiert de la musique"
 
-#: flag-styles.scm:148
+#: music-functions.scm:985
 #, scheme-format
-msgid "flag stroke `~a' or `~a' not found"
-msgstr "type de crochet inconnu : « ~a » ou « ~a »"
+msgid "cannot find quoted music: `~S'"
+msgstr "impossible de trouver la citation de musique « ~S »"
 
-#: define-note-names.scm:962
-msgid "Select note names language."
-msgstr "Sélection de la langue des noms de note."
+#: music-functions.scm:1123
+msgid "Add @var{octave-shift} to the octave of @var{pitch}."
+msgstr "Ajoute @var{octave-shift} à l'octave de @var{hauteur}."
 
-#: define-note-names.scm:969
+#: music-functions.scm:1183
 #, scheme-format
-msgid "Using `~a' note names..."
-msgstr "Utilisation de `~a' pour le nom des notes..."
+msgid "Unknown octaveness type: ~S "
+msgstr "Octave inconnue : « ~S »"
 
-#: define-note-names.scm:972
-#, scheme-format
-msgid "Could not find language `~a'.  Ignoring."
-msgstr "`~a' n'est pas une langue reconnue pour les noms de note. Abandon."
+#: music-functions.scm:1184
+msgid "Defaulting to 'any-octave."
+msgstr "Application de la valeur par défaut 'any-octave."
 
-#: define-music-types.scm:747
+#: music-functions.scm:1521
 #, scheme-format
-msgid "symbol expected: ~S"
-msgstr "symbole requis : ~S"
+msgid "unknown accidental style: ~S"
+msgstr "style d'altération inconnu : ~S"
 
-#: define-music-types.scm:750
-#, scheme-format
-msgid "cannot find music object: ~S"
-msgstr "impossible de trouver l'objet de type musique : ~S"
+#: define-event-classes.scm:80
+msgid "All classes must be the last in their matrilineal line."
+msgstr "Toute classe doit être la dernière de sa lignée."
 
-#: define-music-types.scm:769
-#, scheme-format
-msgid "unknown repeat type `~S'"
-msgstr "type de répétition inconnu : « ~S »"
+#: define-event-classes.scm:84
+msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
+msgstr ""
+"Chaque classe requiert que son pédigrée soit correctement défini\n"
+"dans la hiérarchie de la classe existante."
 
-#: define-music-types.scm:770
-msgid "See define-music-types.scm for supported repeats"
-msgstr "Consulter define-music-types.scm pour connaître les répétitions prises en charge"
+#: define-event-classes.scm:151
+#, scheme-format
+msgid "event class ~A seems to be unused"
+msgstr "la classe d'événement ~A semble être inutilisée"
 
-#: translation-functions.scm:350
+#. should be programming-error
+#: define-event-classes.scm:157
 #, scheme-format
-msgid "Negative fret for pitch ~a on string ~a"
-msgstr "La hauteur ~a sur la corde ~a donne un fret négatif"
+msgid "translator listens to nonexisting event class ~A"
+msgstr "le traducteur écoute une classe d'événements ~A inexistante"
 
-#: translation-functions.scm:401
+#: markup-macros.scm:331
 #, scheme-format
-msgid "No open string for pitch ~a"
-msgstr "Pas de corde à vide pour la hauteur ~a"
+msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgstr ""
+"Nombre d'arguments erroné : ~A requis, ~A présent(s) :\n"
+" ~S"
 
-#: translation-functions.scm:416 translation-functions.scm:428
+#: markup-macros.scm:337
 #, scheme-format
-msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
+msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
 msgstr ""
-"Hauteur et corde requises demandent un fret négatif :\n"
-" corde ~a hauteur ~a"
+"Argument invalide à la position ~A.\n"
+" ~A requis, trouvé ~S ."
 
-#: translation-functions.scm:419
-msgid "Ignoring string request and recalculating."
-msgstr "Cette corde sera ignorée et redéfinie."
+#: markup-macros.scm:373
+#, scheme-format
+msgid "Not a markup command: ~A"
+msgstr "~A n'est pas une commande de type « markup »"
 
-#: translation-functions.scm:431
-msgid "Ignoring note in tablature."
-msgstr "Cette note sera ignorée dans la tablature."
+#: define-note-names.scm:962
+msgid "Select note names language."
+msgstr "Sélection de la langue des noms de note."
 
-#: translation-functions.scm:454
+#: define-note-names.scm:968
 #, scheme-format
-msgid "No string for pitch ~a (given frets ~a)"
-msgstr "Aucune corde ne contient la hauteur ~a avec un fret ~a"
+msgid "Using `~a' note names..."
+msgstr "Utilisation de « ~a » pour le nom des notes..."
 
-#: translation-functions.scm:559
+#: define-note-names.scm:971
 #, scheme-format
-msgid ""
-"No label for fret ~a (on string ~a);\n"
-"only ~a fret labels provided"
+msgid "Could not find language `~a'.  Ignoring."
 msgstr ""
-"Pas d'étiquette correspondant au fret ~a (corde de ~a) ;\n"
-"les seules disponibles sont : ~a"
+"« ~a » n'est pas une langue reconnue pour les noms de note.\n"
+" Abandon."
 
 #: framework-ps.scm:250
 #, scheme-format
@@ -3607,127 +3761,142 @@ msgstr ""
 "  %% Start cut-&-pastable-section\n"
 "  %% ****************************************************************\n"
 
-#: music-functions.scm:268
-msgid "More alternatives than repeats.  Junking excess alternatives"
-msgstr ""
-"Plus d'alternatives que de répétitions.\n"
-" Escamotage des alternatives surnuméraires."
-
-#: music-functions.scm:297
-#, scheme-format
-msgid "invalid tremolo repeat count: ~a"
-msgstr "nombre de répétition en trémolo invalide : ~a"
-
-#: music-functions.scm:619
+#: layout-beam.scm:40
 #, scheme-format
-msgid "music expected: ~S"
-msgstr "~S requiert de la musique"
+msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
+msgstr "Erreur de définition de ligature : attendait (~S,~S), ~S trouvé."
 
-#. FIXME: uncomprehensable message
-#: music-functions.scm:662
+#: layout-beam.scm:54
 #, scheme-format
-msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
-msgstr ""
-"Échec du contrôle de barre de mesure. \n"
-"Aurait dû se trouver à ~a au lieu de ~a"
+msgid "Error in beam quanting.  Expected ~S 0, found ~S."
+msgstr "Erreur de définition de ligature : attendait ~S 0, repéré ~S."
 
-#: music-functions.scm:845
+#: define-music-types.scm:752
 #, scheme-format
-msgid "cannot find quoted music: `~S'"
-msgstr "impossible de trouver la citation de musique « ~S »"
-
-#: music-functions.scm:979
-msgid "Add @var{octave-shift} to the octave of @var{pitch}."
-msgstr "Ajoute @var{octave-shift} à l'octave de @var{hauteur}."
+msgid "symbol expected: ~S"
+msgstr "symbole requis : ~S"
 
-#: music-functions.scm:1039
+#: define-music-types.scm:755
 #, scheme-format
-msgid "Unknown octaveness type: ~S "
-msgstr "Octave inconnue : « ~S »"
-
-#: music-functions.scm:1040
-msgid "Defaulting to 'any-octave."
-msgstr "Application de la valeur par défaut 'any-octave."
+msgid "cannot find music object: ~S"
+msgstr "impossible de trouver l'objet de type musique : ~S"
 
-#: music-functions.scm:1378
+#: define-music-types.scm:774
 #, scheme-format
-msgid "unknown accidental style: ~S"
-msgstr "style d'altération inconnu : ~S"
-
-#: define-event-classes.scm:79
-msgid "All classes must be the last in their matrilineal line."
-msgstr "Toute classe doit être la dernière de sa lignée."
+msgid "unknown repeat type `~S'"
+msgstr "type de répétition inconnu : « ~S »"
 
-#: define-event-classes.scm:83
-msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
+#: define-music-types.scm:775
+msgid "See define-music-types.scm for supported repeats"
 msgstr ""
-"Chaque classe requiert que son pédigrée soit correctement défini\n"
-"dans la hiérarchie de la classe existante."
+"Consulter define-music-types.scm pour connaître les répétitions\n"
+" prises en charge"
 
-#: define-event-classes.scm:149
+#: translation-functions.scm:351
 #, scheme-format
-msgid "event class ~A seems to be unused"
-msgstr "la classe d'événement ~A semble être inutilisée"
+msgid "Negative fret for pitch ~a on string ~a"
+msgstr "La hauteur ~a sur la corde ~a donne un fret négatif"
 
-#. should be programming-error
-#: define-event-classes.scm:155
+#: translation-functions.scm:402
 #, scheme-format
-msgid "translator listens to nonexisting event class ~A"
-msgstr "le traducteur écoute une classe d'événements ~A inexistante"
+msgid "No open string for pitch ~a"
+msgstr "Pas de corde à vide pour la hauteur ~a"
 
-#: markup.scm:223
+#: translation-functions.scm:417 translation-functions.scm:429
 #, scheme-format
-msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
 msgstr ""
-"Nombre d'arguments erroné : ~A requis, ~A présent(s) :\n"
-" ~S"
+"Hauteur et corde requises demandent un fret négatif :\n"
+" corde ~a hauteur ~a"
+
+#: translation-functions.scm:420
+msgid "Ignoring string request and recalculating."
+msgstr "Cette corde sera ignorée et redéfinie."
+
+#: translation-functions.scm:432
+msgid "Ignoring note in tablature."
+msgstr "Cette note sera ignorée dans la tablature."
 
-#: markup.scm:229
+#: translation-functions.scm:455
 #, scheme-format
-msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
-msgstr ""
-"Argument invalide à la position ~A.\n"
-" ~A requis, trouvé ~S ."
+msgid "No string for pitch ~a (given frets ~a)"
+msgstr "Aucune corde ne contient la hauteur ~a avec un fret ~a"
 
-#: markup.scm:292
+#: translation-functions.scm:560
 #, scheme-format
-msgid "Not a markup command: ~A"
-msgstr "~A n'est pas une commande de type « markup »"
+msgid ""
+"No label for fret ~a (on string ~a);\n"
+"only ~a fret labels provided"
+msgstr ""
+"Pas d'étiquette correspondant au fret ~a (corde de ~a) ;\n"
+"les seules disponibles sont : ~a"
 
-#: ps-to-png.scm:74
+#: ps-to-png.scm:70
 #, scheme-format
 msgid "~a exited with status: ~S"
 msgstr "~a s'est terminé avec le statut ~S"
 
-#: define-markup-commands.scm:883
+#: define-markup-commands.scm:887
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr "pas de système trouvé dans le bloc \\score, contient-il un bloc \\layout ?"
 
-#: define-markup-commands.scm:2561
+#: define-markup-commands.scm:2614
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "impossible de trouver le glyphe ~a"
 
-#: define-markup-commands.scm:2987
+#: define-markup-commands.scm:3040
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "il n'y a pas d'accolade qui fasse ~S points"
 
-#: define-markup-commands.scm:2988
+#: define-markup-commands.scm:3041
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr "application de la taille par défaut (~S pt)"
 
-#: define-markup-commands.scm:3141
+#: define-markup-commands.scm:3194
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "chaîne de durée invalide : ~a"
 
-#: ly-syntax-constructors.scm:51
-msgid "Music head function must return Music object"
-msgstr "Une fonction musicale primitive devrait renvoyer un objet Music"
+#: documentation-lib.scm:59
+#, scheme-format
+msgid "Processing ~S..."
+msgstr "Traitement de ~S..."
+
+#: documentation-lib.scm:176
+#, scheme-format
+msgid "Writing ~S..."
+msgstr "Écriture de ~S..."
+
+#: documentation-lib.scm:188
+#, scheme-format
+msgid "cannot find description for property `~S' (~S)"
+msgstr ""
+"impossible de trouver une description de la propriété « ~S »\n"
+" (~S)"
+
+#: documentation-lib.scm:209
+#, scheme-format
+msgid "cannot find description for property ~S (~S)"
+msgstr ""
+"impossible de trouver une description de la propriété ~S\n"
+" (~S)"
+
+#: ly-syntax-constructors.scm:65
+#, scheme-format
+msgid "~a function cannot return ~a"
+msgstr "La fonction ~a ne peut retourner ~a."
+
+#: ly-syntax-constructors.scm:74
+#, scheme-format
+msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
+msgstr ""
+"type d'argument erroné pour ~a.\n"
+" Attendait ~a, ~s trouvé"
 
-#: ly-syntax-constructors.scm:177
+#: ly-syntax-constructors.scm:187
 #, scheme-format
 msgid "Invalid property operation ~a"
 msgstr "Opération de propriété invalide : ~a"
index 107518d531c002e3859759f99f060a3913bbad69..fba256f4bff7fafb283ba5bb86aedc509fa4c09f 100644 (file)
@@ -1131,6 +1131,7 @@ results, use @code{LEFT} and @code{RIGHT}.")
      (ties ,ly:grob-array? "A grob array of @code{Tie} objects.")
      (tremolo-flag ,ly:grob? "The tremolo object on a stem.")
      (tuplet-number ,ly:grob? "The number for a bracket.")
+     (tuplet-start ,boolean? "Is stem at the start of a tuplet?")
      (tuplets ,ly:grob-array? "An array of smaller tuplet brackets.")
      (X-colliding-grobs ,ly:grob-array? "Grobs that can collide
 with a self-aligned grob on the X-axis.")
index 97645233c63a9057a319541fb4413b020ca9d002..44130334346af5416004a06ac39d5a5d7afce624 100644 (file)
                                   (padding . 0.5)
                                      ))
                          ))
+       (cross-staff . ,ly:line-spanner::calc-cross-staff)
        (gap . 0.5)
        (left-bound-info . ,ly:line-spanner::calc-left-bound-info)
        (normalized-endpoints . ,ly:spanner::calc-normalized-endpoints)
        (allow-loose-spacing . #t)
        (axes . (,X))
        (before-line-breaking . ,ly:paper-column::before-line-breaking)
+       (bound-alignment-interfaces . (break-alignment-interface))
        (full-measure-extra-space . 1.0)
        (horizontal-skylines . ,ly:separation-item::calc-skylines)
        ;;                    (stencil . ,ly:paper-column::print)
index 3e87b4a8a8bab722ac34ac4846fccbaacd3c27ed..5c7ec677de70850bc7f33e1e18a8dcf4d4edec41 100644 (file)
@@ -426,7 +426,8 @@ Otherwise, return #f."
   ;; post_events : ( post_event | tagged_post_event )*
   ;; tagged_post_event: '-' \tag embedded_scm post_event
 
-  (let* ((elements (ly:music-property chord 'elements))
+  (let* ((elements (append (ly:music-property chord 'elements)
+                          (ly:music-property chord 'articulations)))
         (chord-elements (filter (lambda (m)
                                    (music-is-of-type? m 'rhythmic-event))
                                 elements))
index 0f1b1e619e412f75e1ef6ce9cb27b2349db2d1f8..8161601b78ab723a853870c92c580df33e8bdbaa 100644 (file)
@@ -200,7 +200,15 @@ An alternative syntax is @var{note}@code{\\decr} @dots{}
        ))
 
     (EventChord
-     . ((description . "Internally used to group a set of events.")
+     . ((description . "Explicitly entered chords.
+
+When iterated, @code{elements} are converted to events at the current
+timestep, followed by any @code{articulations}.  Per-chord postevents
+attached by the parser just follow any rhythmic events in
+@code{elements} instead of utilizing @code{articulations}.
+
+An unexpanded chord repetition @samp{q} is recognizable by having its
+duration stored in @code{duration}.")
        (iterator-ctor . ,ly:event-chord-iterator::constructor)
        (length-callback . ,ly:music-sequence::event-chord-length-callback)
        (to-relative-callback .
@@ -332,7 +340,12 @@ Note the explicit font switch.")
        ))
 
     (NoteEvent
-     . ((description . "A note.")
+     . ((description . "A note.
+
+Outside of chords, any events in @code{articulations} with a listener
+are broadcast like chord articulations, the others are retained.
+
+For iteration inside of chords, @xref{EventChord}.")
        (iterator-ctor . ,ly:rhythmic-music-iterator::constructor)
        (types . (general-music event note-event rhythmic-event
                  melodic-event))
index 1666084735b997db40fb812d1f4d26a76712775b..84424584105f1cfd882b07cf55e3e069b29cb706 100644 (file)
@@ -62,8 +62,9 @@ First it recurses over the children, then the function is applied to
 @var{music}."
   (let ((es (ly:music-property music 'elements))
        (e (ly:music-property music 'element)))
-    (set! (ly:music-property music 'elements)
-         (map (lambda (y) (music-map function y)) es))
+    (if (pair? es)
+       (set! (ly:music-property music 'elements)
+             (map (lambda (y) (music-map function y)) es)))
     (if (ly:music? e)
        (set! (ly:music-property music 'element)
              (music-map function  e)))
@@ -311,8 +312,7 @@ through MUSIC."
 calculate the number of slashes based on the durations.  Returns @code{0}
 if durations in @var{music} vary, allowing slash beats and double-percent
 beats to be distinguished."
-  (let* ((durs (map (lambda (elt)
-                     (duration-of-note elt))
+  (let* ((durs (map duration-of-note
                    (extract-named-music music '(EventChord NoteEvent
                                                 RestEvent SkipEvent))))
         (first-dur (car durs)))
@@ -427,7 +427,7 @@ in @var{grob}."
   (make-sequential-music
    (append
     (map (lambda (x) (make-grob-property-set x 'direction
-                                            (if (odd? n) -1 1)))
+                                                 (if (odd? n) -1 1)))
         direction-polyphonic-grobs)
     (list
      (make-property-set 'graceSettings
@@ -450,6 +450,33 @@ in @var{grob}."
      (make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2))
      (make-grob-property-set 'MultiMeasureRest 'staff-position (if (odd? n) -4 4))))))
 
+(define-safe-public (make-voice-props-override n)
+  (make-sequential-music
+   (append
+    (map (lambda (x) (make-grob-property-override x 'direction
+                                                 (if (odd? n) -1 1)))
+        direction-polyphonic-grobs)
+    (list
+     (make-property-set 'graceSettings
+                       ;; TODO: take this from voicedGraceSettings or similar.
+                       '((Voice Stem font-size -3)
+                         (Voice Flag font-size -3)
+                         (Voice NoteHead font-size -3)
+                         (Voice TabNoteHead font-size -4)
+                         (Voice Dots font-size -3)
+                         (Voice Stem length-fraction 0.8)
+                         (Voice Stem no-stem-extend #t)
+                         (Voice Beam beam-thickness 0.384)
+                         (Voice Beam length-fraction 0.8)
+                         (Voice Accidental font-size -4)
+                         (Voice AccidentalCautionary font-size -4)
+                         (Voice Script font-size -3)
+                         (Voice Fingering font-size -8)
+                         (Voice StringNumber font-size -8)))
+
+     (make-grob-property-override 'NoteColumn 'horizontal-shift (quotient n 2))
+     (make-grob-property-override 'MultiMeasureRest 'staff-position (if (odd? n) -4 4))))))
+
 (define-safe-public (make-voice-props-revert)
   (make-sequential-music
    (append
@@ -954,7 +981,7 @@ set to the @code{location} parameter."
                      (if (null? clef)
                          (make-music 'Music)
                          (make-cue-clef-set clef))
-                     (context-spec-music (make-voice-props-set cue-voice) 'CueVoice "cue")
+                     (context-spec-music (make-voice-props-override cue-voice) 'CueVoice "cue")
                      quote-music
                      (context-spec-music (make-voice-props-revert) 'CueVoice "cue")
                      (if (null? clef)
@@ -963,7 +990,7 @@ set to the @code{location} parameter."
              (set! main-music
                    (make-sequential-music
                     (list
-                     (make-voice-props-set main-voice)
+                     (make-voice-props-override main-voice)
                      main-music
                      (make-voice-props-revert))))
              (set! (ly:music-property quote-music 'element) main-music)))
@@ -1594,35 +1621,90 @@ Entries that conform with the current key signature are not invalidated."
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
+(define-public (map-some-music map? music)
+  "Walk through @var{music}, transform all elements calling @var{map?}
+and only recurse if this returns @code{#f}."
+  (let loop ((music music))
+    (or (map? music)
+       (let ((elt (ly:music-property music 'element))
+             (elts (ly:music-property music 'elements))
+             (arts (ly:music-property music 'articulations)))
+         (if (ly:music? elt)
+             (set! (ly:music-property music 'element)
+                   (loop elt)))
+         (if (pair? elts)
+             (set! (ly:music-property music 'elements)
+                   (map loop elts)))
+         (if (pair? arts)
+             (set! (ly:music-property music 'articulations)
+                   (map loop arts)))
+         music))))
+
+(define-public (extract-music music pred?)
+  "Return a flat list of all music matching @var{pred?} inside of
+@var{music}, not recursing into matches themselves."
+  (reverse!
+   (let loop ((music music) (res '()))
+     (if (pred? music)
+        (cons music res)
+        (fold loop
+              (fold loop
+                    (let ((elt (ly:music-property music 'element)))
+                      (if (null? elt)
+                          res
+                          (loop elt res)))
+                    (ly:music-property music 'elements))
+              (ly:music-property music 'articulations))))))
+
 (define-public (extract-named-music music music-name)
-  "Return a flat list of all music named @var{music-name} from @var{music}."
-  (if (not (list? music-name))
-      (set! music-name (list music-name)))
-  (if (ly:music? music)
-      (if (memq (ly:music-property music 'name) music-name)
-         (list music)
-         (let ((arts (ly:music-property music 'articulations)))
-           (append-map!
-            (lambda (x) (extract-named-music x music-name))
-            (if (pair? arts)
-                arts
-                (cons (ly:music-property music 'element)
-                      (ly:music-property music 'elements))))))
-      '()))
+  "Return a flat list of all music named @var{music-name} (either a
+single event symbol or a list of alternatives) inside of @var{music},
+not recursing into matches themselves."
+  (extract-music
+   music
+   (if (cheap-list? music-name)
+       (lambda (m) (memq (ly:music-property m 'name) music-name))
+       (lambda (m) (eq? (ly:music-property m 'name) music-name)))))
 
 (define-public (extract-typed-music music type)
-  "Return a flat list of all music with @var{type} from @var{music}."
-  (if (ly:music? music)
-      (if (music-is-of-type? music type)
-         (list music)
-         (let ((arts (ly:music-property music 'articulations)))
-           (append-map!
-            (lambda (x) (extract-typed-music x type))
-            (if (pair? arts)
-                arts
-                (cons (ly:music-property music 'element)
-                      (ly:music-property music 'elements))))))
-      '()))
+  "Return a flat list of all music with @var{type} (either a single
+type symbol or a list of alternatives) inside of @var{music}, not
+recursing into matches themselves."
+  (extract-music
+   music
+   (if (cheap-list? type)
+       (lambda (m)
+        (any (lambda (t) (music-is-of-type? m t)) type))
+       (lambda (m) (music-is-of-type? m type)))))
+
+(define*-public (event-chord-wrap! music #:optional parser)
+  "Wrap isolated rhythmic events and non-postevent events in
+@var{music} inside of an @code{EventChord}.  If the optional
+@var{parser} argument is given, chord repeats @samp{q} are expanded
+using the default settings.  Otherwise, you need to cater for them
+yourself."
+  (map-some-music
+   (lambda (m)
+     (cond ((music-is-of-type? m 'event-chord)
+           (if (pair? (ly:music-property m 'articulations))
+               (begin
+                 (set! (ly:music-property m 'elements)
+                       (append (ly:music-property m 'elements)
+                               (ly:music-property m 'articulations)))
+                 (set! (ly:music-property m 'articulations) '())))
+           m)
+          ((music-is-of-type? m 'rhythmic-event)
+           (let ((arts (ly:music-property m 'articulations)))
+             (if (pair? arts)
+                 (set! (ly:music-property m 'articulations) '()))
+             (make-event-chord (cons m arts))))
+          (else #f)))
+   (if parser
+       (expand-repeat-chords!
+       (cons 'rhythmic-event
+             (ly:parser-lookup parser '$chord-repeat-events))
+       music)
+       music)))
 
 (define-public (event-chord-notes event-chord)
   "Return a list of all notes from @var{event-chord}."
index 7a43a7bb54978e4f314b948ebe389e59664c14eb..17bbea995b1f7c7bf03005b4ffffea2d6c9fd221 100644 (file)
         (if (interval-empty? (interval-intersection stem_ph my_ph)) #f (coord-translate stem_ph dist)))
       #f))
 
+;; FIXME: NEED TO FIND A BETTER WAY TO HANDLE KIEVAN NOTATION
 (define-public (note-head::calc-duration-log grob)
-  (min 2
-       (ly:duration-log
-       (ly:event-property (event-cause grob) 'duration))))
+  (let ((style (ly:grob-property grob 'style)))
+    (if (and (symbol? style) (string-match "kievan*" (symbol->string style)))
+      (min 3
+        (ly:duration-log
+       (ly:event-property (event-cause grob) 'duration)))
+      (min 2
+       (ly:duration-log
+       (ly:event-property (event-cause grob) 'duration))))))
 
 (define-public (dots::calc-dot-count grob)
   (ly:duration-dot-count
@@ -226,6 +232,8 @@ and duration-log @var{log}."
         (string-append (number->string log) "petrucci")))
     ((neomensural)
      (string-append (number->string log) (symbol->string style)))
+    ((kievan)
+     (string-append (number->string log) "kievan"))
     (else
      (if (string-match "vaticana*|hufnagel*|medicaea*" (symbol->string style))
         (symbol->string style)
@@ -233,9 +241,10 @@ and duration-log @var{log}."
                        (symbol->string style))))))
 
 (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 (if (string-match "kievan*" (symbol->string style))
+                 (min 3 (ly:grob-property grob 'duration-log))
+                 (min 2 (ly:grob-property grob 'duration-log)))))
     (select-head-glyph style log)))
 
 (define-public (note-head::brew-ez-stencil grob)
@@ -388,7 +397,10 @@ and duration-log @var{log}."
     ("S|:" . ("S" . "|:"))
     (".S|:" . ("|" . "S|:"))
     (":|S|:" . (":|" . "S|:"))
-    (":|S.|:" . (":|S" . "|:"))))
+    (":|S.|:" . (":|S" . "|:"))
+
+    ;; ancient bar lines
+    ("kievan" . ("kievan" . ""))))
 
 (define-public (bar-line::calc-glyph-name grob)
   (let* ((glyph (ly:grob-property grob 'glyph))
@@ -678,6 +690,9 @@ and duration-log @var{log}."
     (0 . "accidentals.vaticana0")
     (1/2 . "accidentals.mensural1")))
 
+(define-public alteration-kievan-glyph-name-alist
+ '((-1/2 . "accidentals.kievanM1")
+   (1/2 . "accidentals.kievan1")))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; * Pitch Trill Heads
index c92de614c7da0a23fd370eb7ed4a00170c49bcb2..6d46cc626cc8df1cc64743af3428bed24fc665d7 100644 (file)
@@ -76,7 +76,8 @@
     ("petrucci-f4" . ("clefs.petrucci.f" 2 0))
     ("petrucci-f5" . ("clefs.petrucci.f" 4 0))
     ("petrucci-f" . ("clefs.petrucci.f" 2 0))
-    ("petrucci-g" . ("clefs.petrucci.g" -2 0))))
+    ("petrucci-g" . ("clefs.petrucci.g" -2 0))
+    ("kievan-do" . ("clefs.kievan.do" 0 0))))
 
 ;; "an alist mapping GLYPHNAME to the position of the middle C for
 ;; that symbol"
     ("clefs.petrucci.c4" . 0)
     ("clefs.petrucci.c5" . 0)
     ("clefs.petrucci.f" . 4)
-    ("clefs.petrucci.g" . -4)))
+    ("clefs.petrucci.g" . -4)
+    ("clefs.kievan.do" . 0)))
 
 (define-public (make-clef-set clef-name)
   "Generate the clef setting commands for a clef with name @var{clef-name}."
index 21cfa99326ac9f1083da409d166333bc27ce5058..88c0b88fa6be7d94d61f6d8f40c946176c449309 100644 (file)
@@ -149,7 +149,7 @@ Voice-state objects
 
     (define (active<? a b)
       (cond ((symbol<? (car a) (car b)) #t)
-           ((symbol<? (car b) (car b)) #f)
+           ((symbol<? (car b) (car a)) #f)
            (else (< (cdr a) (cdr b)))))
 
     (define (analyse-span-event active ev)
index 568b967ba6d16ef891b691c87774c81d2e6268a7..5eec46fdd69a34db7b00ce24f8aac3f6a95f2059 100644 (file)
@@ -159,12 +159,13 @@ If it unsets the property, return @code{#f}."
 (define-public (music-elements music)
   "Return list of all @var{music}'s top-level children."
   (let ((elt (ly:music-property music 'element))
-        (elts (append
-              (ly:music-property music 'articulations)
-              (ly:music-property music 'elements))))
-    (if (not (null? elt))
-        (cons elt elts)
-        elts)))
+        (elts (ly:music-property music 'elements))
+       (arts (ly:music-property music 'articulations)))
+    (if (pair? arts)
+       (set! elts (append elts arts)))
+    (if (null? elt)
+       elts
+        (cons elt elts))))
 
 (define-public (find-child music predicate)
   "Find the first node in @var{music} that satisfies @var{predicate}."
index 637d3874bcd54bdd19181ac7a24d94162d6ccc4b..7767686f4a3a99e4b6aa71145c64a98c8a7f6f96 100755 (executable)
@@ -3,14 +3,27 @@
 # GUI interface for common LilyPond git repository commands
 # Copyright 2009--2012 by Johannes Schindelin and Carl Sorensen
 #
+package require Tk
 
-set version 0.64
+set version 0.66
 
+proc get_environment_var {var_name default_value} {
+    global env
+    if [catch {set return_value $env($var_name)}] {
+        set return_value $default_value
+    }
+    return $return_value
+}
 # set to 1 to set up for translation, to 0 for other
 set translator 0
 
+# If you have push access, set to 1, or use LILYPOND_GIT_PUSH
+set default_push_access 0
+set push_access [get_environment_var "LILYPOND_GIT_PUSH" $default_push_access]
+
+
 # location of lilypond git
-set lily_dir $env(HOME)/lilypond-git
+set lily_dir [get_environment_var LILYPOND_GIT $env(HOME)/lilypond-git]
 
 if {$translator == 1} {
     set windowTitle \
@@ -18,6 +31,7 @@ if {$translator == 1} {
     set updateButtonText "1. Update translation"
     set initializeButtonText "1. Get translation"
     set originHead "lilypond/translation"
+    set pushHead $originHead
     set rebase 0
 } else {
     set windowTitle \
@@ -25,9 +39,11 @@ if {$translator == 1} {
     set updateButtonText "1. Update source"
     set initializeButtonText "1. Get source"
     set originHead "master"
+    set pushHead "staging"
+    set defaultBranch "dev/local_working"
     set rebase 1
 }
-package require Tk
+
 
 ##  Submits the user data collected using the git config command
 
@@ -118,10 +134,14 @@ set commit_header {}
 
 # Helper functions
 
-if {[file exists $lily_dir]} {
-    cd $lily_dir
+proc add_working_branch {} {
+    global originHead
+    global workingBranch
+    git checkout $originHead
+    git branch -f $workingBranch
 }
 
+
 set abort_dir "./aborted_edits"
 
 proc write_to_output {s} {
@@ -214,7 +234,10 @@ proc update_lilypond_with_rebase {} {
 proc update_lilypond {rebase} {
     global lily_dir
     global originHead
+    global pushHead
     global translator
+    global workingBranch
+    global push_access
     . config -cursor watch
     if {![file exists $lily_dir]} {
         write_to_output "Cloning LilyPond (this can take some time) ...\n"
@@ -228,17 +251,26 @@ proc update_lilypond {rebase} {
         git reset --hard origin/$originHead
         git config branch.$originHead.remote origin
         git config branch.$originHead.merge refs/heads/$originHead
+        git checkout $originHead
+        if {$workingBranch != ""} {
+            add_working_branch
+            git checkout $workingBranch
+        }
         .buttons.commitFrame.commit configure -state normal
         .buttons.commitFrame.amend configure -state normal
         .buttons.update configure -text buttonUpdateText
         .buttons.patch configure -state normal
+        if {$push_access && !$translator} {
+            .buttons.push configure -state normal
+        }
         .buttons.panic configure -state normal
         toggle_rebase
     } else {
         write_to_output "Updating LilyPond...\n"
         git fetch origin
         if {$rebase} {
-            git rebase origin/$originHead
+            git rebase origin/$originHead $originHead
+            git rebase origin/$originHead $workingBranch
         } else {
             git merge origin/$originHead
         }
@@ -267,6 +299,33 @@ proc make_patch_from_origin {rebase} {
     . config -cursor ""
 }
 
+
+proc push_patch_to_staging {} {
+    global workingBranch
+    global pushHead
+    global git_log
+    global push_canceled
+    global log_text
+    global originHead
+
+    git rebase $originHead $workingBranch
+    set staging_sha [exec git rev-parse ]
+    set head_sha [exec git rev-parse $workingBranch]
+    set log_error [catch {exec git --no-pager log {--pretty=format:%h : %an -- %s} --graph $originHead..$workingBranch} log_text]
+    if {$log_error == 0 && $log_text == ""} {
+        tk_messageBox -type ok -message "No changes in repository.  Nothing to push."
+    } else {
+        get_git_log
+        tkwait visibility .gitLogWindow
+        tkwait window .gitLogWindow
+        if {$push_canceled == 0} {
+            git rebase origin/$pushHead $workingBranch~0
+            git push origin HEAD:$pushHead
+            git checkout $workingBranch
+        }
+    }
+}
+
 proc abort_changes {} {
     global abort_dir
     global originHead
@@ -335,6 +394,59 @@ proc commitMessageCancel {} {
     destroy .commitMessage
 }
 
+proc pushContinue {} {
+  global push_canceled
+  set push_canceled = 0
+  destroy .gitLogWindow
+}
+
+proc pushCancel {} {
+    global push_canceled
+    set push_canceled 1
+    destroy .gitLogWindow
+}
+
+
+# git log output window
+proc get_git_log {} {
+    global log_text
+    toplevel .gitLogWindow
+    frame  .gitLogWindow.messageFrame
+
+
+    text   .gitLogWindow.messageFrame.message_body \
+       -xscrollcommand [list .gitLogWindow.messageFrame.horizontal set] \
+       -yscrollcommand [list .gitLogWindow.messageFrame.vertical set] \
+         -width 60  -height 10 -relief solid -border 2 -wrap none
+    scrollbar .gitLogWindow.messageFrame.horizontal -orient h -command [list .gitLogWindow.messageFrame.message_body xview]
+    scrollbar .gitLogWindow.messageFrame.vertical -orient v -command [list .gitLogWindow.messageFrame.message_body yview]
+
+    frame .gitLogWindow.messageFrame.leftFrame
+    label .gitLogWindow.messageFrame.leftFrame.label \
+        -text "Log of commits in push:"
+    button .gitLogWindow.messageFrame.leftFrame.ok \
+        -text Continue -default active -command pushContinue
+    button .gitLogWindow.messageFrame.leftFrame.cancel -text Cancel -default active \
+        -command pushCancel
+    wm withdraw .gitLogWindow
+    wm title .gitLogWindow "Commits to be pushed"
+
+    pack .gitLogWindow.messageFrame.leftFrame.label
+    pack .gitLogWindow.messageFrame.leftFrame.ok
+    pack .gitLogWindow.messageFrame.leftFrame.cancel
+
+    pack .gitLogWindow.messageFrame.leftFrame -side left
+
+    pack .gitLogWindow.messageFrame.horizontal -side bottom -fill x
+    pack .gitLogWindow.messageFrame.vertical -side right -fill y
+    pack .gitLogWindow.messageFrame.message_body -expand true -anchor nw -fill both
+    pack .gitLogWindow.messageFrame
+
+    wm transient .gitLogWindow .
+    wm deiconify .gitLogWindow
+    .gitLogWindow.messageFrame.message_body insert insert $log_text
+}
+
 
 # Commit message input window
 proc get_commit_message {} {
@@ -396,6 +508,10 @@ button .buttons.update -text $updateButtonText \
     -command update_lilypond_with_rebase
 button .buttons.patch -text "3. Make patch set" \
     -command patch_from_origin
+if {$push_access && !$translator} {
+    button .buttons.push -text "4. Push patch to staging" \
+    -command push_patch_to_staging
+}
 toggle_rebase
 button .buttons.panic -text "Abort changes -- Reset to origin" \
     -command abort_changes -fg Blue -bg Red
@@ -406,6 +522,9 @@ if {![file exists $lily_dir]} {
     .buttons.commitFrame.commit configure -state disabled
     .buttons.commitFrame.amend configure -state disabled
     .buttons.patch configure -state disabled
+    if {$push_access} {
+        .buttons.push configure -state disabled
+    }
     .buttons.panic configure -state disabled
 }
 
@@ -414,6 +533,9 @@ if {![file exists $lily_dir]} {
 pack .buttons.update -side left
 pack .buttons.commitFrame -side left
 pack .buttons.patch -side left
+if {$push_access} {
+    pack .buttons.push -side left
+}
 pack .buttons.spacer -side left
 pack .buttons.panic -side right
 
@@ -436,5 +558,19 @@ pack .output.text -expand true -anchor nw -fill both
 pack .buttons
 pack .output
 
-#grid .buttons -row 2 -column 1
-#grid .output -row 3 -column 1 -sticky "w"
+# set working branch and push branch
+set workingBranch [get_environment_var LILYPOND_BRANCH $defaultBranch]
+
+puts "\nworkingBranch $workingBranch\n"
+
+if {[file exists $lily_dir]} {
+    cd $lily_dir
+    set branchList  [exec git branch]
+    if { $workingBranch != ""} {
+        if {![regexp $workingBranch $branchList]} {
+            add_working_branch
+        }
+        git checkout $workingBranch
+    }
+}
+
index a868ea2903395ebadec6f19383d183810a2170a9..a3bc4b576bdc8e08f4bc9ff0f9e2dbbe42147c53 100644 (file)
@@ -102,18 +102,19 @@ for opt in options:
     else:
         raise Exception ('unknown option: ' + o)
 
-texi_file_re = re.compile ('.*\.i?te(ly|xi)$')
-html_file_re = re.compile ('.*\.i?htm(l)?$')
-xml_file_re = re.compile ('.*\.i?(xm|mx)l$')
-tex_file_re = re.compile ('.*\.i?(la)?tex$')
+html_file_re = re.compile ('.*\.i?html?$')
+info_file_re = re.compile ('.*\.info$')
 pdf_file_re = re.compile ('.*\.i?pdf$')
+tex_file_re = re.compile ('.*\.i?(la)?tex$')
+texi_file_re = re.compile ('.*\.i?te(ly|xi|xinfo)$')
+xml_file_re = re.compile ('.*\.i?(xm|mx)l$')
 
 def name2line (n):
     if texi_file_re.match (n):
         # We have a texi include file, simply include it:
         s = r"@include %s" % os.path.basename (n)
-    elif (html_file_re.match (n) or pdf_file_re.match (n) or
-          tex_file_re.match (n)):
+    elif (html_file_re.match (n) or info_file_re.match (n)
+          or pdf_file_re.match (n) or tex_file_re.match (n)):
         s = r"""
 @ifhtml
 @html