]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into lilypond/translation
authorFrancisco Vila <francisco.vila@hispalinux.es>
Wed, 9 Mar 2011 10:37:15 +0000 (11:37 +0100)
committerFrancisco Vila <francisco.vila@hispalinux.es>
Wed, 9 Mar 2011 10:37:15 +0000 (11:37 +0100)
310 files changed:
Documentation/changes.tely
Documentation/contributor.texi
Documentation/contributor/build-notes.itexi [new file with mode: 0644]
Documentation/es/notation/staff.itely
Documentation/es/web/community.itexi
Documentation/es/web/news.itexi
Documentation/included/authors.itexi
Documentation/notation/fretted-strings.itely
Documentation/notation/rhythms.itely
Documentation/notation/vocal.itely
Documentation/notation/wind.itely
Documentation/snippets/accordion-discant-symbols.ly
Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly
Documentation/snippets/adding-ambitus-per-voice.ly
Documentation/snippets/adding-an-extra-staff-at-a-line-break.ly
Documentation/snippets/adding-an-extra-staff.ly
Documentation/snippets/adding-bar-lines-to-chordnames-context.ly
Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly
Documentation/snippets/adding-drum-parts.ly
Documentation/snippets/adding-fingerings-to-tablatures.ly
Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly
Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.ly
Documentation/snippets/adding-the-current-date-to-a-score.ly
Documentation/snippets/adding-volta-brackets-to-additional-staves.ly
Documentation/snippets/additional-voices-to-avoid-collisions.ly
Documentation/snippets/adjusting-grace-note-spacing.ly
Documentation/snippets/adjusting-lyrics-vertical-spacing.ly
Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly
Documentation/snippets/aligning-and-centering-instrument-names.ly
Documentation/snippets/aligning-bar-numbers.ly
Documentation/snippets/aligning-marks-with-various-notation-objects.ly
Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly
Documentation/snippets/altering-the-length-of-beamed-stems.ly
Documentation/snippets/ambitus-with-multiple-voices.ly
Documentation/snippets/analysis-brackets-above-the-staff.ly
Documentation/snippets/ancient-fonts.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly
Documentation/snippets/ancient-time-signatures.ly
Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly
Documentation/snippets/arabic-improvisation.ly
Documentation/snippets/asymmetric-slurs.ly
Documentation/snippets/automatic-beam-subdivisions.ly
Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly
Documentation/snippets/beam-endings-in-score-context.ly
Documentation/snippets/beam-grouping-in-7-8-time.ly
Documentation/snippets/beams-across-line-breaks.ly
Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly
Documentation/snippets/broken-crescendo-hairpin.ly
Documentation/snippets/caesura-railtracks-with-fermata.ly
Documentation/snippets/center-text-below-hairpin-dynamics.ly
Documentation/snippets/changing--flageolet-mark-size.ly
Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly
Documentation/snippets/changing-beam-knee-gap.ly
Documentation/snippets/changing-chord-separator.ly
Documentation/snippets/changing-form-of-multi-measure-rests.ly
Documentation/snippets/changing-fret-orientations.ly
Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly
Documentation/snippets/changing-partcombine-texts.ly
Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly
Documentation/snippets/changing-the-ambitus-gap.ly
Documentation/snippets/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly
Documentation/snippets/changing-the-breath-mark-symbol.ly
Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly
Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly
Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly
Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly
Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly
Documentation/snippets/changing-the-text-for-sustain-markings.ly
Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly
Documentation/snippets/changing-the-tuplet-number.ly
Documentation/snippets/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly
Documentation/snippets/chant-or-psalms-notation.ly
Documentation/snippets/chord-glissando-in-tablature.ly [new file with mode: 0644]
Documentation/snippets/chord-name-exceptions.ly
Documentation/snippets/chord-name-major7.ly
Documentation/snippets/chordchanges-for-fretboards.ly
Documentation/snippets/clip-systems.ly
Documentation/snippets/clusters.ly
Documentation/snippets/combining-dynamics-with-markup-texts.ly
Documentation/snippets/combining-two-parts-on-the-same-staff.ly
Documentation/snippets/compound-time-signatures.ly
Documentation/snippets/conducting-signs,-measure-grouping-signs.ly
Documentation/snippets/contemporary-glissando.ly
Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly
Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly
Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly
Documentation/snippets/controlling-tuplet-bracket-visibility.ly
Documentation/snippets/creating-a-delayed-turn.ly
Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly
Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly
Documentation/snippets/creating-blank-staves.ly
Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly
Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly
Documentation/snippets/creating-metronome-marks-in-markup-mode.ly
Documentation/snippets/creating-real-parenthesized-dynamics.ly
Documentation/snippets/creating-simultaneous-rehearsal-marks.ly
Documentation/snippets/creating-slurs-across-voices.ly
Documentation/snippets/creating-text-spanners.ly
Documentation/snippets/cross-staff-tremolos.ly
Documentation/snippets/custodes.ly
Documentation/snippets/customizing-fretboard-fret-diagrams.ly
Documentation/snippets/customizing-markup-fret-diagrams.ly
Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly
Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly
Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly
Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly
Documentation/snippets/displaying-complex-chords.ly
Documentation/snippets/displaying-grob-ancestry.ly
Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly
Documentation/snippets/dynamics-custom-text-spanner-postfix.ly
Documentation/snippets/dynamics-text-spanner-postfix.ly
Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly
Documentation/snippets/engravers-one-by-one.ly
Documentation/snippets/engraving-ties-manually.ly
Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly
Documentation/snippets/faking-a-hammer-in-tablatures.ly
Documentation/snippets/fingering-symbols-for-wind-instruments.ly
Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly
Documentation/snippets/flamenco-notation.ly
Documentation/snippets/flat-flags-and-beam-nibs.ly
Documentation/snippets/forcing-horizontal-shift-of-notes.ly
Documentation/snippets/forcing-hyphens-to-be-shown.ly
Documentation/snippets/fretboards-alternate-tables.ly
Documentation/snippets/fretted-string-harmonics-in-tablature.ly [new file with mode: 0644]
Documentation/snippets/fretted-strings.snippet-list
Documentation/snippets/generating-random-notes.ly
Documentation/snippets/graphical-and-text-woodwind-diagrams.ly
Documentation/snippets/grid-lines--changing-their-appearance.ly
Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly
Documentation/snippets/grouping-beats.ly
Documentation/snippets/guitar-slides.ly
Documentation/snippets/guitar-strum-rhythms.ly
Documentation/snippets/hairpins-with-different-line-styles.ly
Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly
Documentation/snippets/hymn-template.ly
Documentation/snippets/incipit.ly
Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly
Documentation/snippets/inserting-a-caesura.ly
Documentation/snippets/isolated-percent-repeats.ly
Documentation/snippets/jazz-combo-template.ly
Documentation/snippets/keep-change-clefs-full-sized.ly
Documentation/snippets/letter-tablature-formatting.ly
Documentation/snippets/line-arrows.ly
Documentation/snippets/lyrics-alignment.ly
Documentation/snippets/makam-example.ly
Documentation/snippets/making-slurs-with-complex-dash-structure.ly
Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly
Documentation/snippets/measure-counter.ly
Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly
Documentation/snippets/modern-tab-text-clef.ly
Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly
Documentation/snippets/moving-dotted-notes-in-polyphony.ly
Documentation/snippets/moving-slur-positions-vertically.ly
Documentation/snippets/multi-measure-rest-markup.ly
Documentation/snippets/nesting-staves.ly
Documentation/snippets/new/chord-glissando-in-tablature.ly [new file with mode: 0644]
Documentation/snippets/new/fretted-string-harmonics-in-tablature.ly [new file with mode: 0644]
Documentation/snippets/new/open-string-harmonics-in-tablature.ly [new file with mode: 0644]
Documentation/snippets/new/slides-in-tablature.ly [new file with mode: 0644]
Documentation/snippets/new/woodwind-diagrams-listing.ly
Documentation/snippets/non-default-tuplet-numbers.ly
Documentation/snippets/non-traditional-key-signatures.ly
Documentation/snippets/numbers-as-easy-note-heads.ly
Documentation/snippets/open-string-harmonics-in-tablature.ly [new file with mode: 0644]
Documentation/snippets/orchestra,-choir-and-piano-template.ly
Documentation/snippets/ottava-text.ly
Documentation/snippets/partcombine-and-autobeamoff.ly
Documentation/snippets/percent-repeat-count-visibility.ly
Documentation/snippets/percent-repeat-counter.ly
Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly
Documentation/snippets/piano-template-simple.ly
Documentation/snippets/piano-template-with-centered-dynamics.ly
Documentation/snippets/piano-template-with-centered-lyrics.ly
Documentation/snippets/piano-template-with-melody-and-lyrics.ly
Documentation/snippets/placement-of-right-hand-fingerings.ly
Documentation/snippets/polyphony-in-tablature.ly
Documentation/snippets/positioning-arpeggios.ly
Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly
Documentation/snippets/positioning-grace-notes-with-floating-space.ly
Documentation/snippets/positioning-multi-measure-rests.ly
Documentation/snippets/positioning-text-markups-inside-slurs.ly
Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly
Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly
Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly
Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly
Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly
Documentation/snippets/printing-hairpins-using-al-niente-notation.ly
Documentation/snippets/printing-marks-at-the-end-of-a-line.ly
Documentation/snippets/printing-marks-on-every-staff.ly
Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly
Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly
Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly
Documentation/snippets/quoting-another-voice-with-transposition.ly
Documentation/snippets/quoting-another-voice.ly
Documentation/snippets/recorder-fingering-chart.ly
Documentation/snippets/redefining-grace-note-global-defaults.ly
Documentation/snippets/removing-bar-numbers-from-a-score.ly
Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly
Documentation/snippets/removing-the-first-empty-line.ly
Documentation/snippets/rest-styles.ly
Documentation/snippets/reverting-default-beam-endings.ly
Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly
Documentation/snippets/setting-system-separators.ly
Documentation/snippets/setting-the-double-repeat-default-for-volte.ly
Documentation/snippets/setting-the-minimum-length-of-hairpins.ly
Documentation/snippets/shortening-volta-brackets.ly
Documentation/snippets/showing-chords-at-changes.ly
Documentation/snippets/simple-lead-sheet.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly
Documentation/snippets/single-staff-template-with-notes-and-chords.ly
Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly
Documentation/snippets/single-staff-template-with-only-notes.ly
Documentation/snippets/slides-in-tablature.ly [new file with mode: 0644]
Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly
Documentation/snippets/stand-alone-two-column-markup.ly
Documentation/snippets/stem-and-beam-behavior-in-tablature.ly
Documentation/snippets/string-quartet-template-simple.ly
Documentation/snippets/string-quartet-template-with-separate-parts.ly
Documentation/snippets/subdividing-beams.ly
Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly
Documentation/snippets/transcription-of-ancient-music-with-incipit.ly
Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly
Documentation/snippets/tweaking-clef-properties.ly
Documentation/snippets/tweaking-grace-layout-within-music.ly
Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly
Documentation/snippets/using-alternative-flag-styles.ly
Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly
Documentation/snippets/using-double-slurs-for-legato-chords.ly
Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly
Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly
Documentation/snippets/using-the-whiteout-property.ly
Documentation/snippets/using-ties-with-arpeggios.ly
Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly
Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly
Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly
Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly
Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly
Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly
Documentation/snippets/vocal-ensemble-template.ly
Documentation/snippets/volta-below-chords.ly
Documentation/snippets/woodwind-diagrams-key-lists.ly
Documentation/snippets/woodwind-diagrams-listing.ly
Documentation/web/news-front.itexi
VERSION
input/regression/completion-heads-factor.ly
input/regression/completion-rest.ly [new file with mode: 0644]
input/regression/footnote-break-visibility.ly [new file with mode: 0644]
input/regression/footnote-spanner.ly [new file with mode: 0644]
input/regression/footnote.ly [new file with mode: 0644]
input/regression/lyrics-bar.ly
input/regression/mensural-ligatures.ly
input/regression/page-spacing-staff-group-nested.ly
input/regression/woodwind-diagrams-empty.ly
lily/align-interface.cc
lily/audio-item.cc
lily/audio-staff.cc
lily/axis-group-interface.cc
lily/balloon.cc
lily/completion-note-heads-engraver.cc
lily/completion-rest-engraver.cc [new file with mode: 0644]
lily/constrained-breaking.cc
lily/dynamic-align-engraver.cc
lily/footnote-engraver.cc [new file with mode: 0644]
lily/include/audio-item.hh
lily/include/audio-staff.hh
lily/include/constrained-breaking.hh
lily/include/midi-item.hh
lily/include/midi-walker.hh
lily/include/page-breaking.hh
lily/include/page-layout-problem.hh
lily/include/page-spacing.hh
lily/include/paper-system.hh
lily/include/staff-grouper-interface.hh
lily/include/system.hh
lily/midi-item.cc
lily/midi-walker.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/page-spacing.cc
lily/paper-book.cc
lily/paper-system.cc
lily/performance.cc
lily/staff-grouper-interface.cc
lily/staff-performer.cc
lily/stencil-interpret.cc
lily/system.cc
lily/vertical-align-engraver.cc
lily/volta-bracket.cc
ly/engraver-init.ly
ly/music-functions-init.ly
ly/paper-defaults-init.ly
po/de.po
po/es.po
po/fr.po
python/convertrules.py
scm/define-context-properties.scm
scm/define-event-classes.scm
scm/define-grob-interfaces.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-markup-commands.scm
scm/define-music-properties.scm
scm/define-music-types.scm
scm/define-stencil-commands.scm
scm/output-lib.scm
scripts/midi2ly.py

index d6700d995af2adb4e7e8cda75eb12e3ad49c1475..9ac6177dbd083de045008891f5fc9c13e88c51cb 100644 (file)
@@ -61,6 +61,42 @@ which scares away people.
 
 @end ignore
 
+@item
+MIDI-import through Midi2ly is improved
+@itemize @bullet
+@item Midi2ly now also works on Windows systems
+@item MIDI-files with more than 32 tracks are now handled
+@item notes on certain simultaneous voices no longer ignored
+@item notes overrunning a bar line are no longer truncated
+@item initial key signature and time signature are respected
+@item a problem with octaves in subsequent tracks/voices is fixed
+@item initial support for multiple voices notated on one staff
+@item the instrumentName is set from track data
+@item new --skip option, rests are displayed by default
+@item rests overrunning a bar line are not truncated
+@item new --include-header option for setting titles
+@item new --preview option for big MIDI-files
+@end itemize
+The first feature was sponsored by Valentin Villenave,
+the other features were sponsored by Image-Line Software for FL Studio.
+
+@item
+A new @code{Completion_rest_engraver} is available for automatically
+converting long rests which overrun bar lines, matching the
+@code{Completion_heads_engraver} for notes
+@example
+\layout @{
+  \context @{
+    \Voice
+    \remove "Note_heads_engraver"
+    \consists "Completion_heads_engraver"
+    \remove "Rest_engraver"
+    \consists "Completion_rest_engraver"
+  @}
+@}
+@end example
+This feature was sponsored by Image-Line Software for FL Studio.
+
 @item
 Dots can be added to the table of contents items using:
 @example
index 579000dfc3f4e43b77dcb775764cea95156f7ae8..26b3a26fbbf00ef0416c2bde966bfcfe253ad4f1 100644 (file)
@@ -60,6 +60,7 @@ Copyright @copyright{} 2007--2011 by the authors.
 * Regression tests::
 * Programming work::
 * Release work::
+* Build system notes::
 * Administrative policies::
 
 Appendices
@@ -85,6 +86,7 @@ Appendices
 @include contributor/regressions.itexi
 @include contributor/programming-work.itexi
 @include contributor/release-work.itexi
+@include contributor/build-notes.itexi
 @include contributor/administration.itexi
 
 @include fdl.itexi
diff --git a/Documentation/contributor/build-notes.itexi b/Documentation/contributor/build-notes.itexi
new file mode 100644 (file)
index 0000000..6bea562
--- /dev/null
@@ -0,0 +1,310 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+
+@node Build system notes
+@chapter Build system notes
+
+@warning{This chapter is in high flux, and is being run in a
+@qq{wiki-like} fashion.  Do not trust anything you read in this
+chapter.}
+
+@menu
+* Build system overview::
+* Tips for working on the build system::
+* Doc build::
+* Website build::
+@end menu
+
+
+@node Build system overview
+@section Build system overview
+
+Build system is currently GNU make, with an extra "stepmake" layer
+on top.  Look at files in @file{make/} and @file{stepmake/} and
+all @file{GNUmakefile}s.
+
+There is wide-spread dissatisfaction with this system, and we are
+considering changing.  This would be a huge undertaking (estimated
+200+ hours).  This change will probably involve not using GNU make
+any more -- but a discussion about the precise build system will
+have to wait.  Before we reach that point, we need to figure out
+(at least approximately) what the current build system does.
+
+Fundamentally, a build system does two things:
+
+@enumerate
+@item
+Constructs command-line commands, for example:
+
+@example
+lilypond-book \
+  --tons --of --options \
+  pitches.itely
+texi2pdf \
+  --more --imperial --and --metric --tons --of --options \
+  pitches.texi
+@end example
+
+@item
+If there was a previous build, it decides which parts of the
+system need to be rebuilt.
+
+@end enumerate
+
+When I try to do anything in the build system, it helps to remind
+myself of this.  The "end result" is just a series of command-line
+commands.  All the black magick is just an attempt to construct
+those commands.
+
+@node Tips for working on the build system
+@section Tips for working on the build system
+
+@itemize
+@item
+Add:
+
+@example
+echo "aaa"
+
+echo "bbb"
+@end example
+
+to the build system files in various places.  This will let you
+track where the program is, in various points of the build.
+
+@item
+First task: understand how @code{make website} works,
+@emph{without} the translations.  Looking at the english-only
+website is the best introduction to the build system... it only
+covers about 5% of the whole thing, but even that will likely take
+10 hours or more.
+
+@end itemize
+
+
+
+@node Doc build
+@section Doc build
+
+@menu
+* Building a bibliography::
+@end menu
+
+@node Building a bibliography
+@subsection Building a bibliography
+
+Bibliography files contain a list of citations, like this:
+
+@example
+@@Book@{vinci,
+  author = @{Vinci, Albert C.@},
+  title = @{Fundamentals of Traditional Music Notation@},
+  publisher = @{Kent State University Press@},
+  year = @{1989@}
+@}
+@end example
+
+There are a variety of types of citation (e.g. Book (as above),
+article, publication).  Each cited publication has a list of
+entries that can be used to identify the publication.
+Bibliograpies are normally stored as files with a .bib
+extension.  One part of the doc-build process is transforming the
+bibliography information into @code{texinfo} files.  The commands
+to do this are in the @file{GNUmakefile} in the
+@file{Documentation} directory.
+
+A typical line of the makefile to translate a single bibliography
+is:
+
+@example
+$(outdir)/colorado.itexi:
+       BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \
+               -s $(top-src-dir)/Documentation/lily-bib \
+               -o $(outdir)/colorado.itexi \
+               $(src-dir)/essay/colorado.bib
+@end example
+
+Line by line:
+
+@example
+$(outdir)/colorado.itexi:
+@end example
+
+We're making the file @file{colorado.itexi} and so this is the
+make instruction.
+
+@example
+       BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \
+@end example
+
+It's in the @file{essay} directory and we want to run the
+bib2texi.py script against it.
+
+@example
+               -s $(top-src-dir)/Documentation/lily-bib \
+@end example
+
+The style template is @file{lily-bib.bst} and is found in the
+@file{Documentation} directory.
+
+@example
+               -o $(outdir)/colorado.itexi \
+@end example
+
+The output file in @file{colorado.itexi}.
+
+@example
+               $(src-dir)/essay/colorado.bib
+@end example
+
+The input file is @file{colorado.bib} in the @file{essay}
+directory.
+
+The @code{bib2texi} Python script used to be used with a variety
+of options, but now is always called using the same options, as
+above.  Its job is to create the file containing the options for
+@code{bibtex} (the program that actually does the translation),
+run bibtex, and then clean up some temporary files.  Its main
+"value add" is the creation of the options file, using this code:
+
+@example
+open (tmpfile + '.aux', 'w').write (r'''
+\relax
+\citation@{*@}
+\bibstyle@{%(style)s@}
+\bibdata@{%(files)s@}''' % vars ())
+@end example
+
+The key items are the style file (now always lily-bib for us) and
+the input file.
+
+The style file is written in its own specialised language,
+described to some extent at
+
+@example
+@uref{http://amath.colorado.edu/documentation/LaTeX/reference/faq/bibtex.pdf}
+@end example
+
+The file @file{lily-bib.bst} also has fairly extensive commenting.
+
+@node Website build
+@section Website build
+
+Start here: @file{make/website.make}
+
+Typing make website runs the file @file{GNUmakefile} from the
+build directory.  This only contains 3 lines:
+
+@example
+depth = .
+include config$(if $(conf),-$(conf),).make
+include $(configure-srcdir)/GNUmakefile.in
+@end example
+
+The variable @code{depth} is used throughout the make system to
+track how far down the directory structure the make is.  The first
+include sets lots of variables but doesn't "do" anything.  The
+second runs the file @file{GNUmakefile.in} from the top level
+source directory.
+
+This sets another load of variables, and then includes (i.e.
+immediately runs) @file{stepmake.make} from the @file{make}
+subdirectory.  This sets a load of other variables, does some
+testing to see if SCONS (another build tool?) is being used, and
+then runs @file{make/config.make} - which doesn't seem to exist...
+
+Next, it runs @file{make/toplevel-version.make}, which sets the
+version variables for major, minor, patch, stable, development and
+mypatchlevel (which seems to be used for patch numbers for
+non-stable versions only?).
+
+Next - @file{make/local.make}, which doesn't exist.
+
+Then a few more variable and the interesting comment:
+
+@example
+# Don't try to outsmart us, you puny computer!
+# Well, UGH.  This only removes builtin rules from
+@end example
+
+and then tests to see whether BUILTINS_REMOVED is defined.  It
+appears to be when I run make, and so
+@file{stepmake/stepmake/no-builtin-rules.make} is run.  The
+comment at the head of this file says:
+
+@example
+# UGH.  GNU make comes with implicit rules.
+# We don't want any of them, and can't force users to run
+# --no-builtin-rules
+@end example
+
+I've not studied that file at length, but assume it removes all
+make's build-in rules (e.g. @file{*.c} files are run through the
+GNU C compiler) - there's a lot of them in here, and a lot of
+comments, and I'd guess most of it isn't needed.
+
+We return to @file{stepmake.make}, where we hit the make rule all:
+The first line of this is:
+
+@example
+-include $(addprefix $(depth)/make/,$(addsuffix -inclusions.make, $(LOCALSTEPMAKE_TEMPLATES)))
+@end example
+
+which, when the variables are substituted, gives:
+
+@example
+./make/generic-inclusions.make
+./make/lilypond-inclusions.make.
+@end example
+
+(Note - according to the make documentation, -include is only
+different from include in that it doesn't produce any kind of
+error message when the included file doesn't exist).
+
+And the first file doesn't exist.  Nor the second.  Next:
+
+@example
+-include $(addprefix $(stepdir)/,$(addsuffix -inclusions.make, $(STEPMAKE_TEMPLATES)))
+@end example
+
+which expands to the following files:
+
+@example
+/home/phil/lilypond-git/stepmake/stepmake/generic-inclusions.make
+/home/phil/lilypond-git/stepmake/stepmake/toplevel-inclusions.make
+/home/phil/lilypond-git/stepmake/stepmake/po-inclusions.make
+/home/phil/lilypond-git/stepmake/stepmake/install-inclusions.make.
+@end example
+
+One little feature to notice here - these are all absolute file
+locations - the line prior to this used relative locations.  And
+none of these files exist, either.  (Further note - I'm assuming
+all these lines of make I'm following are autogenerated, but
+that'll be something else to discover.)
+
+Next:
+
+@example
+include $(addprefix $(stepdir)/,$(addsuffix -vars.make, $(STEPMAKE_TEMPLATES)))
+@end example
+
+which expands to:
+
+@example
+/home/phil/lilypond-git/stepmake/stepmake/generic-vars.make
+/home/phil/lilypond-git/stepmake/stepmake/toplevel-vars.make
+/home/phil/lilypond-git/stepmake/stepmake/po-vars.make
+/home/phil/lilypond-git/stepmake/stepmake/install-vars.make.
+@end example
+
+Woo.  They all exist (they should - no - in front of the include).
+
+Next step will be to work out what these do.
+
+That's my 30 minutes for Monday.
+
+Website build includes @ref{Building a bibliography}.
+
+
+
+
index 4cbbca703da002f025a9c5d0e8f99607dae31bdd..f2e6a9a46d113a25c78ff340abe535400f8b6abf 100644 (file)
@@ -1088,7 +1088,7 @@ flute = \relative c'' {
 
 Si la expresión musical que se usa para @code{\quoteDuring} contiene
 cualquier cosa que no sea un silencio de separación o un silencio
-multicompás, ase produce una situación de polifonía, lo que no suele
+multicompás, se produce una situación de polifonía, lo que no suele
 ser deseable:
 
 @lilypond[verbatim,quote]
index ace07803e414f9f1654c77382805079a2bc10a45..277c7b536f13858199ca2e1d854f59c82e43259e 100644 (file)
@@ -603,10 +603,6 @@ Las pruebas de lilypond-book de esta versión.
 
 @item @regtestDevelXml-es (@regtestDevelXmlPdf-es{})
 
-@item @regtestStable-es (@regtestStablePdf-es{})
-
-@item @regtestStableXml-es (@regtestStableXmlPdf-es{})
-
 @item @regtestDevelAbc (@regtestDevelAbcPdf{})
 
 @item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{})
index c02688fce8411f7f68e1f0c60fbb64ae2b3bbdf2..77524a292a1e4768347ddad8b1af7d6b29bf9032 100644 (file)
@@ -703,13 +703,13 @@ LilyPond número 17} (en inglés) ahora mismo!
 
 
 @newsItem
-@subsubheading ¡Lanzado LilyPond 2.13.13!  @emph{13 de febrero de 2010}
+@subsubheading ¡Lanzado LilyPond 2.13.14!  @emph{27 de febrero de 2010}
 
 Nos complace anunciar el lanzamiento de LilyPond 2.13.14.  Esta
 versión está orientada solamente a los desarrolladores, e incluye una
 amplia actualización de las traducciones, además de la ronda usual de
 correcciones de fallos.
-
+@newsEnd
 
 @newsItem
 @subsubheading ¡Lanzado LilyPond 2.13.13!  @emph{13 de febrero de 2010}
index ae14bfc0f359ff1826f54827f5c04a8f87bf27bf..296416b5a6237eefc8a26a74285ef468d82a4dbf 100644 (file)
@@ -87,7 +87,7 @@ Assistant documentation editor, Code cleanup
 Core developer
 
 @item Mike Solomon:
-@email{mike@@apollinemike.com}
+@email{mike@@apollinemike.com},
 Contemporary music attaché
 
 @item Carl Sorensen:
index 98de6e3335d68fcd4fc66d0c8d9dd68b32d81830..c60ddd4e4e7fe69bb6f6c47dafb67432ab4ae6aa 100644 (file)
@@ -363,15 +363,64 @@ ties = \relative c' {
 @cindex tablature and harmonic indications
 @cindex slides in tablature notation
 @cindex tablature and slides
+@cindex chord glissandi
+@funindex \harmonic
+@funindex \harmonicByFret
+@funindex \harmonicByRatio
+@funindex \chordGlissando
+
+Harmonic indications can be added to tablature notation as sounding
+pitches:
+
+@lilypond[verbatim,quote]
+firstHarmonic = {
+  <d'\4\harmonic>4
+  <g'\3\harmonic>4
+  <b'\2\harmonic>2
+}
+\score {
+  <<
+    \new Staff { \firstHarmonic }
+    \new TabStaff { \firstHarmonic }
+  >>
+}
+@end lilypond
 
-Harmonic indications and slides can be added to tablature
-notation.
+Note that the command @code{\harmonic} must always be defined
+inside a chord construct. It only makes sense for open-string harmonics
+in the 12th fret. All other harmonics should be calculated by LilyPond.
+This can be achieved by indicating the fret where a finger of the
+fretting hand should touch a string.
+
+@lilypond[verbatim,quote]
+fretHarmonics = {
+  \harmonicByFret #5 d16\4
+  \harmonicByFret #4 d16\4
+  \harmonicByFret #3 d8\4
+  \harmonicByFret #5 <g\3 b\2>2.
+}
+\score {
+  <<
+    \new Staff { \fretHarmonics }
+    \new TabStaff { \fretHarmonics }
+  >>
+}
+@end lilypond
 
-@lilypond[verbatim, quote, relative=1]
-\new TabStaff {
-  \new TabVoice {
-    <c g'\harmonic>4 d\2\glissando e\2
-  }
+Alternatively, harmonics can be computed by defining the ratio of
+string lengths above and below the harmonic fingering.
+
+@lilypond[verbatim,quote]
+ratioHarmonics = {
+  \harmonicByRatio #1/2 <g\3 b\2 e'\1>4
+  \harmonicByRatio #1/3 <g\3 b\2 e'\1>4
+  \harmonicByRatio #1/4 { g8\3 b8\2 e'4\1 }
+}
+\score {
+  <<
+    \new Staff { \ratioHarmonics }
+    \new TabStaff { \ratioHarmonics }
+  >>
 }
 @end lilypond
 
@@ -384,10 +433,24 @@ notation.
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {polyphony-in-tablature.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{open-string-harmonics-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{fretted-string-harmonics-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{slides-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{chord-glissando-in-tablature.ly}
+
 
 @seealso
 Notation Reference:
-@ref{Stems}.
+@ref{Stems},
+@ref{Harmonics},
+@ref{Glissando}.
 
 Snippets:
 @rlsr{Fretted strings}.
index 40fc4ec61091c45c040027ace5b0a9321f986ee9..5ab5bdc53d4230c41f72ab4602c2107d7d98ea79 100644 (file)
@@ -1672,28 +1672,35 @@ time signatures.
 
 @cindex notes, splitting
 @cindex splitting notes
+@cindex rests, splitting
+@cindex splitting rests
 
 @funindex Note_heads_engraver
 @funindex Completion_heads_engraver
+@funindex Completion_rest_engraver
 
-Long notes which overrun bar lines can be converted automatically
-to tied notes.  This is done by replacing the
-@code{Note_heads_engraver} with the
-@code{Completion_heads_engraver}.  In the following
-example, notes crossing the bar lines are split and tied.
+Long notes which overrun bar lines can be converted automatically to
+tied notes.  This is done by replacing the @code{Note_heads_engraver}
+with the @code{Completion_heads_engraver}.  Similarly, long rests which
+overrun bar lines are split automatically by replacing the
+@code{Rest_engraver} with the @code{Completion_rest_engraver}.  In the
+following example, notes and rests crossing the bar lines are split,
+notes are also tied.
 
 @lilypond[quote,verbatim,relative=1]
 \new Voice \with {
   \remove "Note_heads_engraver"
   \consists "Completion_heads_engraver"
+  \remove "Rest_engraver"
+  \consists "Completion_rest_engraver"
 }
 
-{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 }
+{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 r1*2 }
 @end lilypond
 
-This engraver splits all running notes at the bar line, and
-inserts ties.  One of its uses is to debug complex scores: if the
-measures are not entirely filled, then the ties show exactly how
+Thes engravers split all running notes and rests at the bar line, and
+inserts ties for notes.  One of its uses is to debug complex scores: if
+the measures are not entirely filled, then the ties show exactly how
 much each measure is off.
 
 
@@ -1711,6 +1718,8 @@ Snippets:
 Internals Reference:
 @rinternals{Note_heads_engraver},
 @rinternals{Completion_heads_engraver},
+@rinternals{Rest_engraver},
+@rinternals{Completion_rest_engraver},
 @rinternals{Forbid_line_break_engraver}.
 
 
@@ -2225,10 +2234,10 @@ in only one staff.
 >>
 @end lilypond
 
-The default beam settings for the time signature can also be
-changed, so that set the desired beaming will always be used
-Changes in automatic beaming settings
-for a time signature are described in @ref{Time signature}.
+The default beam settings for the time signature can also be changed, so
+that the desired beaming will always be used.  Changes in automatic
+beaming settings for a time signature are described in
+@ref{Time signature}.
 
 @lilypond[quote,verbatim,relative=2]
 <<
@@ -3212,10 +3221,38 @@ durations in the other staves.  For the above example
 >>
 @end lilypond
 
+The use of grace notes within voice contexts confuses the way the
+voice is typeset. This can be overcome by inserting a rest or note
+between the voice command and the grace note.
+
+@lilypond[quote,verbatim]
+accMusic = {
+  \acciaccatura { f8 } e8 r8 \acciaccatura { f8 } e8 r4
+}
+
+\new Staff {
+  <<
+    \new Voice {
+      \relative c'' {
+        r8 r8 \voiceOne \accMusic \oneVoice r8 |
+        r8 \voiceOne r8 \accMusic \oneVoice r8 |
+      }
+    }
+    \new Voice {
+      \relative c' {
+        s8 s8 \voiceTwo \accMusic \oneVoice s8 |
+        s8 \voiceTwo r8 \accMusic \oneVoice s8 |
+      }
+    }
+  >>
+}
+@end lilypond
+
 Grace sections should only be used within sequential music
 expressions.  Nesting or juxtaposing grace sections is not
 supported, and might produce crashes or other errors.
 
+
 @node Aligning to cadenzas
 @unnumberedsubsubsec Aligning to cadenzas
 
index e63729bb0fb3e1539d181c2512cc912e61f56fe2..b337d262054ac2ef75c0337a23c0bf166b57de55 100644 (file)
@@ -1159,7 +1159,7 @@ To make this change for all lyrics in the score, set the property in the
 @c TODO: move to LSR -vv
 
 Checking to make sure that text scripts and lyrics are within the margins
-required additional calculations.  To speed up processing slighty, this
+requires additional calculations.  To speed up processing slightly, this
 feature can be disabled:
 
 @example
index d5c4afbd88364e5112dc7b2ebac88f75812a2163..ab31e7c23a92e08df2c917028e45900ac018ec85 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.13.36"
+@c \version "2.13.51"
 
 @node Wind instruments
 @section Wind instruments
index 9cc0469f720a75de66635484ac098a28d5923e82..85c865f06d3e3c2e27a1de1edf637e08d94e4b2b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "keyboards"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Los símbolos específicos de acordeón discanto se escriben mediante
 @code{\\markup}.  Se puede trucar la colocación vertical de los
index 09653eebf4f521397a0c3940bfb2f925d80272a1..0ccc76dd252570943b992e5129bbad2e23114002 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords, ancient-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Al escribir un bajo cifrado, podemos situar las cifras encima o debajo
index eddd784bbca017ee532d7054a7b3f9d826779694..a9b5910d7f24ad371dc806ca4fdb851a8ca77256 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, staff-notation, vocal-music"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   doctitlees = "Añadir un ámbito por voz"
   texidoces = "
 Se puede añadir un ámbito por cada voz. En este caso, el ámbito se
index 56eea44c89763645720be473f89020fb6621f3b7..27188b4228489779f96e99085bf10b41fa97dc78 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, breaks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Al añadir un pentagrama nuevo en un salto de línea, por desgracia
 se añade un espacio adicional al final de la línea antes del salto
index 79cad9c8e89c9fadfffcfe42248e6e021f1ac946..4611f92c2dd6bb1b55c7ead45ae8144929f8a4bb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede añadir (posiblemente de forma temporal) un pentagrama
 nuevo una vez que la pieza ha comenzado.
index 8840e702daf47f7363fd70014de825995d94bac7..6bb286df4b12dbbc7292b4bfc92782657c41f09f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para añadir indicaciones de línea divisoria dentro del contexto de
 los nombres de acorde @code{ChordNames}, incluya el grabador
index ee511865ba1bfb2afebb45b5ba7533363c1c9dac..4d8c74e0cf990a45d24e77edd247f38008f07635 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La sintaxis de LilyPond puede implicar muchas colocaciones poco
 comunes para los paréntesis, corchetes, etc, que a veces se tienen
index 05ba79129bff7c3b70cbcae52d4bb9babca72519..adeeb9269b98dbca941eb2befe25f1f9e0f6bd57 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, percussion"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Mediante la utilización de las potentes herramientas preconfiguradas
 como la función @code{\\drummode} y el contexto @code{DrumStaff}, la
index d56d053921efe839d6fe271c46de123e0310def9..beaca9796ade72596f8b6b41713b8bbf3f0d229c 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para añadir digitaciones a las tablaturas, utilice una combinación de
 @code{\\markup} y @code{\\finger}.
index 964d0e37cd0b597b312d097b1bfc435188e6b4db..2e90627ba2ee7d1b86a88eca2e41fb905becb63b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, vocal-music"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
    Este ejemplo muestra una forma de simplificar la adición de muchas
index bb5c50960630c867de4dd64fb29128271d3a84d6..ad7414db9ed66f0e9d621bb26d195864333ebd18 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La función @code{\\parenthesize} es un truco especial que encierra
 objetos entre paréntesis.  El grob asociado es @code{ParenthesesItem}.
index f2f816e347ed1165dd0804f120ea1109db1dd4be..493b9396b5a94805386630b8037a581bdc19eda8 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text, titles"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Con algo de código de Scheme, se puede añadir fácilmente la fecha
 actual a una partitura.
index 2002476480f57fcfd1e91e03e223e8b0418dec67..3934b542f744450b7dfa3d4c2b19bdf80e0373f5 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 El grabador @code{Volta_engraver} reside de forma predeterminada
 dentro del contexto de @code{Score}, y los corchetes de la repetición
index 3f4a5d1867e49efe8c38d6e50e65b100f0f986d7..506b96f7bb3e298a225ef00d5d59f5871a30d431 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Voces adicionales para evitar colisiones"
  texidoces = "
 En ciertos casos de polifonía compleja, se necesitan voces adicionales
index 9386f981aef9375875b5a3ad31ae755335faa851..d29fb1386852259021052a272dd1b16a50391baf 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede ajustar la separación entre las notas de adorno utilizando la
 propiedad @code{spacing-increment} de @code{Score.GraceSpacing}.
index 10ebe4a67b42f12250191f9d8e16518d176f55b9..3cd62b2d8b6af25dc8ad11ce7e749e747e4a1794 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.42"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Este fragmento de código muestra cómo situar la línea de base de la
 letra más cerca del pentagrama.
index 8d25128268c60d8403900f1d8f0c48a281650edc..ad4695c0b0cc3f22e3d56f61d91ea7abbb2d9060 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Puede ser necesario trucar la propiedad
 @code{shortest-duration-space} para poder ajustar el tamaño de las
index 534dabd73fe78b590eb204b778faba4c62232b3d..82b6aac9893baebc429ba377760b3e4ab0116785 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text, paper-and-layout, titles"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La alineación horizontal de los nombres de instrumento se puede
 trucar modificando la propiedad @code{Staff.InstrumentName
index 985d9d4846f3dc8ff6acaf901ed1e44026b827ff..6242e09db179c0e15523ff9b7751397e291908fd 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Los números de compás se alinean de forma predeterminada por la
index 357779a838b358a483082306c537a9e8f80ca654..c7e14a5597b0d9e1fe4db31ecff3dd8d3922dd42 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Si están especificadas, las marcas de texto se pueden alinear con
 objetos de notación distintos a las líneas divisorias.  Entre estos
index 8d45605806808f190e3111181f8ba80468f3af41..036f037f2bd6355641b55f1e59c3216393d9cea4 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, fretted-strings, spacing"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Las cifras de digitación orientadas verticalmente se colocan de forma
index a9b2e887102602f5f97b38aa61fd5795e4d62481..40556883b881ff0d3a73c9be8336f1c7cfd5debb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede variar la longitud de las plicas de las figuras unidas por
 una barra mediante la sobreescritura de la propiedad
index 31d0e6d1805221b86596703ecb1003248557b810..60682fcd1b6cbdb8d4de400229ca40c12a1f2934 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, vocal-music"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   doctitlees = "Ámbitos con varias voces"
   texidoces = "
 La adición del grabador @code{Ambitus_engraver} al contexto de
index b7b5996d23fc07cd65dab11620cf0c5a8272bbc1..ff18ecaaa6986c68fc12d49f0485f2bf06d534fd 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 De forma predeterminada se añaden corchetes de análisis sencillos
 debajo del pentagrama.  El ejemplo siguiente muestra una manera de
index c43cba33c1e0e0203d761eb9d7dda22509838cd2..111a55031e01eaa5f6b178df1f3fe3c99bb9cc63 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "ancient-notation"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Aquí se muestran muchos de (¿o quizá todos?) los símbolos que
 están contemplados por la capacidad de LilyPond para la música
index b7c29ed7dbf35a0252097cf31db4b5adc7758d37..b8b075d24d26efbf7ea26b221a4eaeba8189f9b0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, ancient-notation, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Este ejemplo muestra cómo hacer una transcripción moderna de canto
 gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza
index fa6b720c29df49c2a9ffd0bcfb7117a709e04bc4..0d92bbee6691491fbfb22c84bbf4e9f31aeebb00 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "ancient-notation, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Al transcribir música mensural, es útil un «incipit» al compienzo
 de la pieza para indicar la tonalidad y el tempo
index 2f2048eb5edd5b0a5cd70904bcf2d4a7b862b28f..b8e646507db898e9a3c7f76e2ac97e045fb5d3c8 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "ancient-notation"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Las indicaciones de compás también se pueden grabar en estilo antiguo.
 
index a12a2a8f82368d900ce2ba5d896fff4ea0dcbe87..ad7d49256a22e7571fd99b61e7d1aa57c1d9b2a6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, editorial-annotations"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   doctitlees = "Aplicar estilos de cabeza según la nota de la escala"
   texidoces = "
 La propiedad @code{shapeNoteStyles} se puede usar para definir varios
index 9092f92d4db7c28f75272e2d260942c9f04a2d51..13d8f0f9f3002bc229166b8269949cad024e71e9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "world-music"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para las improvisaciones o @emph{taqasim} que son libres durante unos
 momentos, se puede omitir la indicación de compás y se puede usar
index 59adfb9f676c317d632a038af7c70e5789ec49d8..590e0ab784757b84bb1e9aca3bb7a771efadf4d7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede hacer que una ligadura de expresión sea asimétrica para
 adaptarse mejor a un patrón asimétrico de notas.
index 68272616eea4453efe1f4fb54df2a492a052a8e6..adcc4a24673c24c9ea977b37582789ddec6671f7 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden subdividir las barras automáticamente.  Estableciendo la
 propiedad @code{subdivideBeams}, las barras se subdividen en
index 31b65313908fe2e44d51967189b302cfbafc3e5d..4c44d2e253319e6d562bf7ae8b7d07bdba0a1599 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, editorial-annotations, chords, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index d573f7327e54c361edb04b20d93d9af349ea8da2..81bcc4c427191bc8efa5d079b12966789c5e12f3 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Las reglas de final de barra especificadas en el contexto
 @code{Score} se aplican a todos los pentagramas, pero se pueden
index 1125226f64c2556d6c6b600a231cdf8c0bf3423a..ba6fb51d1d6b8e339b35dbe1da6bd87dfbb0ebbe 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 No está especificada ninguna agrupación predeterminada automática
 de las barras para el compás de 7/8, de forma que si se requieren
index 465c212992027108fbbbf608f4d8fe14e6a9dcfb..64b46d23f8451fd1bd8a2ecd10436fe9a0c62393 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Normalmente están prohibidos los saltos de línea si las barras
 atraviesan las líneas divisorias.  Se puede cambiar este
index 302d7d2d633ef4f1667681794dcd5b7913cab2c2..974dd3373ed4632bc05c63e57db88d46340f9bf9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La instrucción @code{\\whiteout} intercala un rectángulo blanco
 debajo de un elemento de marcado.  Este rectángulo blanco no tapa
index e5a61719ee2b470c046e0de8937f6c85806e2b0a..d3232f3c361cf55e6e4fca7161bdec7a116bb545 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para hacer invisibles partes de un regulador de crescendo, se usa
 el método de dibujar un rectángulo blanco encima de la parte
index 094bb780e65831f4a3d6a59074885227f77db1e9..5391f06d203cb6727f1d4616545adcc6ecf2115b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 A veces se denota una «cesura» mediante una doble marca de respiración
 parecida a las vías del tren, con un calderón encima. Este fragmento
index 12527402843cfd892baee8ae43e6f5f64f0ef691..00357bdc395ce26f26f7570f463eee63f361d237 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Este ejemplo proporciona una función para tipografiar un regulador con
 texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra
index ba7680ee08bd274ded58690e5b5d59c1350dc5f3..5e48340b054469adb8bd59e998046bdf9f8ca02c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, unfretted-strings"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para hacer más pequeño el círculo de @code{\\flageolet} (armónico)
 utilice la siguiente función de Scheme.
index b6c54df689f48a89bc543e4262c2cd959bf971a2..a914e15077909b5da0f22261df4e3c9299236ba2 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden modificar notas individuales de un acorde con la instrucción
 @code{\\tweak}, alterando la propiedad @code{font-size}.
index a2dfcc6b36c5a9bfed4ade2ffb5a6d338300d01e..090ae5f43ac610cc05c4e8cea126719477f40a07 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se insertan automáticamente barras en ángulo cuando se detecta un
 intervalo muy grande entre las notas.  Se puede hacer un ajuste
index 754c42cced907401d82a845be89c5f81c2c88b65..7ef66ff6ed755bd45d61da7fb80d09b787d07cfe 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede establecer el separador entre las distintas partes del
 nombre de un acorde para que sea cualquier elemento de marcado.
index 796c2d51188a9828250b135ce3356bd727f0820a..c634baeb45ca0b258eb2941bfb26f0c6dc3c9da1 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Cambiar la forma de los silencios multicompás"
  texidoces = "
 Si hay diez compases de silencio o menos, se imprime en el pentagrama
index 68f2fdd14b480327617adac241efeb545a358c63..339ad37363ab0e8c82eae35d00ef6e551d8c1471 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index dbc092154dd0c7b2decce3c9a3c6407d27f9d340..2d74ec3f3f4dafde992c42d746c1f1d89748df6f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "contexts-and-engravers, midi"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Al producir una salida MIDI, el comportamiento predeterminado es
 que cada pentagrama representa un canal MIDI, con todas las voces
index 094ca59a205d82817c1de24e5771fdc6dd0efda0..4bb4b0dd99e3293c694da3ad84e26aec55d31f3b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Al utilizar la posibilidad de combinación automática de partes, se
 puede modificar el texto que se imprime para las secciones de solo
index f80a25fa08d9acd5c159c01e1455f7257f1a465f..5fe8c04848418c0d904732752f98779621620465 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede modificar el texto empleado para los crescendos y
 decrescendos modificando las propiedades de contexto
index e3714f43c95ef881178aa014865cc565c0189cfa..cb73fb4833a17fc419bc4b99215188997675a106 100644 (file)
@@ -7,7 +7,7 @@
 %% Note: this file works from version 2.13.36
 \version "2.13.36"
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Es posible ajustar la separación en las indicaciones de tesitura.
index eae0b272a24c8255d6d159006ddf8a1860249238..aa2149373afda9e3a09f5147a7a7f694f03593e1 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede cambiar el aspecto de las ligaduras de expresión de
 continuas a punteadas o intermitentes.
index 41f76011e3b3cd8d7ede5469658748bb84fb79d0..027cccc33688d2d51e26e243053dc762475ea475 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 El glifo de la marca de respiración se puede ajustar
 sobreescribiendo la propiedad de texto del objeto de presentación
index 5100e9aadd65fa882a83315996c83a6ae04938c5..1500924e4fa2cc0a5537a7675c8cdf4c408aadbe 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La nomenclatura inglesa (predeterminada) para los acordes del cifrado
 americano se puede cambiar por la alemana (@code{\\germanChords}
index 35acbffff555f0bf7cd3f6e3824bc68b23dc7713..792991566f62efbc677514b34bb7771857915576 100644 (file)
@@ -7,7 +7,7 @@
 %% Note: this file works from version 2.13.36
 \version "2.13.36"
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Este código muestra cómo cambiar la cantidad de puntillos de una nota.
index 41e1ad9218f39f1abae354ac45d548cddac25bfa..73a770b8a1e4f62c9f81f7cd395f35af3e2199e0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Las alteraciones y los signos «más» pueden aparecer antes o
 después de los números, según el valor de las propiedades
index f805af705dc2d188d7dbbeca333621d18391a5a9..ad606391ed838f438eed32a67f87213e101261fd 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%%%    Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%%%    Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index 23d887490be3f303fb029c0454fba55f30eb271d..df89457817ff57b3d56a92f33acb86739b62e284 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides, midi"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para cambiar el tempo en la salida MIDI sin
 imprimir nada, hacemos invisible la indicación metronómica:
index 8951f542b8b5e3c371573fa4b51123170c86dd62..0043cedc2a46a06b27cb537d5eef20e6a8df747a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "keyboards, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de
 las indicaciones de pisar pedal y levantar pedal.  Observe que las
index c15fb464fdc318a8e21bceb5eeba3d2a57faabba..35f94d9f49dc95323f111c0192eb34dcdb40411b 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La instrucción @code{\\time} establece las propiedades
 @code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y
index cf186a769bfe5c7b73643fb2f98677236ad65c20..e54bcbfd4c6914d2a9ef971c2acb2322561ed779 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Cambiar el número del grupo especial"
  texidoces = "
 
index 98da5ac0235a28c460de9251ab3a4b28539bc96d..77a4ae222fecaf1bf6eae8f5d2da67d5777551b8 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La propiedad @code{measureLength}, junto con
 @code{measurePosition}, determina cuándo es necesario dibujar una
index 354865ec8bfbe507e80c907fbd60ae9fff7e2b8b..3552401b644cde372e0b31651784c3a4c444cd4a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Este tipo de notación se utiliza para el canto de los Salmos, en
 que las estrofas no siempre tienen la misma longitud.
diff --git a/Documentation/snippets/chord-glissando-in-tablature.ly b/Documentation/snippets/chord-glissando-in-tablature.ly
new file mode 100644 (file)
index 0000000..6bd5505
--- /dev/null
@@ -0,0 +1,37 @@
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.13.53
+\version "2.13.53"
+
+\header {
+  lsrtags = "fretted-strings"
+  texidoc = "
+Slides for chords can be indicated in both Staff and TabStaff.
+String numbers are necessary for TabStaff because automatic
+string calculations are different for chords and for single notes,
+and @code{\\chordGlissando} draws lines between single notes.
+"
+  doctitle = "Chord glissando in tablature"
+} % begin verbatim
+
+
+myMusic = \relative c' {
+  \chordGlissando
+  <c\3 e\2 g\1>8 <f\3 a\2 c\1>
+}
+
+\score {
+  <<
+    \new Staff {
+      \clef "treble_8"
+      \myMusic
+    }
+    \new TabStaff {
+      \myMusic
+    }
+  >>
+}
index a08d2f3fca9fa65090dbf0463b6f2786e2569ad0..05d37d98e083e5b4911ab37262d665f0ffc8a8fa 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede usar la propiedad @code{chordNameExceptions} para
 almacenar una lista de notaciones espaciales para acordes
index 3582796381ad1609f9280f863876d1ed5609f0dd..90b7b62b470f8e3ab2e79a2fa63059e59b467e7c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La presentación del acorde de séptima mayor se
 puede ajustar mediante majorSevenSymbol.
index 667d182274608ab6932a185b86a5c36f6e5dbbdf..99e0181076ba871fa12bab06b04deaef6687b620 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede hacer que los diagramas de posiciones se muestren sólo
 cuando el acorde cambia o al comienzo de una nueva línea.
index c9f0af219ced4ebc0faee6b18ce12b1d7faf1495..81f652c49dda0341a18aaec88932ea0513f510b9 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Este código muestra cómo recortar (extraer) fragmentos a partir de una
 partitura completa.
index 2f1bbedf2c86e09aa4c378fcd2551dd0722b00d2..810e55f567bc65c3eaece9a8fece72640d16181a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes, chords, keyboards"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Los «clusters» o racimos son un mecanismo para indicar la
 interpretación de un ámbito de notas al mismo tiempo.
index e566c64fa9204fbb8a7a534b78a1a4c99804d547..c080ee426685fbeab67118d5838df7b9d3572b79 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più
 forte} o @qq{piano subito}). Se pueden producir usando un bloque
index f8135fb0084de147c42e4d5f47efa5b913562eea..e82fa075b64f79e2baa533c27ef7e40aa36f584d 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes, text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 La herramienta de combinación de partes (instrucción
index e8e9db63c3301cb5e357334eb9c3fb450bb00224..920bffe7c0b3678e36bffc502fb8fca90e8daaaf 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Indicaciones de compases compuestos"
  texidoces = "
 Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden
index 6ffa09e212c99bb30ceb1897fe57d031ee12385d..69b391a05dd0de560d13a0ce04d8cb89d471dd6a 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La agrupación de pulsos dentro de un compás está controlada por la
 propiedad de contexto @code{beatStructure}.  Hay establecidos valores
index d737046fa24ef1e3e2d0bfa06a288e3dc6323f02..00119a41fb74513666a45849b2eba381c9fd2d28 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede tipografiar un gissando contemporáneo sin nota final
 utilizando una nota oculta y temporalización de cadenza.
index 7f3e3deffb738fe0184865f79936d4437bfb40ac..3e79dfd04b184a6ded4f2f12f63b5917348faeb9 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 La visibilidad de los objetos de extensión que acaban en la primera
index 2d0ab1c384d0054eb61c0ce235cbc8a9dacb10d9..7595ff8b5fbb2dec014e63377555d60f236446d7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, chords, keyboards, fretted-strings"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede controlar con precisión la colocación de los números de
 digitación.  Para que se tenga en cuenta la orientación de las
index adff3ac6e6df57114fb7483947a6ce35ef2fdf4a..6c123d7ff52da4721b4245eaa105566b9ec3530c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 El orden vertical que ocupan las inscripciones gráficas está
 controlado con la propiedad @code{'script-priority}. Cuanto más
index 9f706764e9806010bfe6ace716f5b1cf224b8715..7a5cd24b9059762f2d6c46b340e811f2ba9d5695 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 El comportamiento predeterminado de la visibilidad de los corchetes de
index e63dd8a1bf276c10a5c0c2d0a9175f1436d35803..39276280726ea93d9ca69eeab16453f10023d6ba 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 texidoces = "
 La creación de un grupeto circular de anticipación entre dos notas,
 donde la nota inferior del grupeto utiliza una alteración, requiere
index 8896de8a1149552cea4b9325bb9b884339b5a104..0e0bbf818ce5781414367726a3b266c33f8d6ca1 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 En una música que tenga muchas apariciones de la
 misma secuencia de notas a distintas alturas, podría ser de
index cbd3850e237965f3f3b006aa06c0459dcb58b62c..7b37da71d9a4489061d06b292dc58cbcfe15f567 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede trazar un símbolo de arpegio entre notas de distintas
 voces que están sobre el mismo pentagrama si el grabador
index d60dca9a37b387630c47f1754ba14aba2b8d24dd..0cee19fa73ee4cd960b330074eef94531bc631d0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, editorial-annotations, contexts-and-engravers, paper-and-layout"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para crear pentagramas en blanco, genere compases vacíos y después
 elimine el grabador de números de compás @code{Bar_number_engraver}
index 01ebc3be07af8c5aa71190ac82f7ebc510ce7fd3..083517a61212f9dbba533bf7b90337660a6b5acb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
 cruce entre los pentagramas ajustando la propiedad
index 30b69727e4bff8381ccfb0d8dc6dfd8aa8e8257b..9b2565944ed95b20bac0303fc7629a3a1ed889c9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden crear arpegios que se cruzan entre pentagramas dentro de
 contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
index 110f12ef5118be8a291908eb9d508d7085e87887..503b5fa22bf3da4cf7595c64aa1b501ca1eecb64 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden crear indicaciones metronómicas nuevas en modo de
 marcado, pero no cambian el tempo en la salida MIDI.
index 1ef6844fc229115a1581eeb8f1b895cd49ebfee9..1ff0a1602237b15e944f0e9c481d8c8cca611a01 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Aunque la manera más fácil de añadir paréntesis a una indicación
 de dinámica es utilizar un bloque @code{\\markup}, este método
index ab5595f429da965ee69795023cc7692566ad7ebc..f46112a74ad4995575f5dcc7a7390cf8a4b63729 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 A diferencia de las inscripciones de texto, las lestras de ensayo
 no se pueden apilar en un punto concreto de la partitura: sólo se
index fbe34bbd30cf2161b8cfcfa447208cd670065102..0bc5c7ec5bb834a6631026d2dde48c9449733dae 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, keyboards, unfretted-strings"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 En determinadas situaciones es necesario crear ligaduras de
 expresión entre notas que están en voces distintas.
index 76b891630b9e433ad9956fc2630c9b7d57c684f4..0af66e610efe3ba80084c64d8fc98017827e91c1 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan}
 permiten la creación de elementos de extensión textuales tan
index 35a46508822efbb8aa57a610b0b3c3b727495b71..141f1f65e15d5a01074c786ff72782ec290e17d9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, keyboards"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index c5351a261e28ee345ad4d6925cb0e272cbabe6da..f03f858cad1e1386bb9edea7d597af69f36418df 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden tipografiar «custos» en diferentes estilos.
 
index b73cf100ec8c9551e54af50e215e589c179fdf27..1b60ae23372a8887e47ff4cd0c2497f40e29e5d0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones de acordes por medio de @code{'fret-diagram-details}.
index 5c6ce9bec23d11b4cda5299d47eedf80e2282ab3..c0eb3b329b8c8b093d38307b775870e26e6e77cd 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones a través de @code{'fret-diagram-details}.  Para los
index fedffa29aeed9c29de295c0045a93d826c95257e..f6ec40daa694d149bb841796aa1422efdceae178 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La dirección predeterminada de las plicas sobre la tercera línea
 del pentagrama está determinada por la propiedad
index 2d47db9c3780d7b9b53c5813c4b24b809b132e00..e17623031f41aad581e8c16eca1690e543f39596 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
index 28e844bb4ce3513fc4e69e8b48d380de1ea6d882..8eb815cdfa7023d3007723ebf8d6ebaaf20e70aa 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.46"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Se pueden añadir diagramas de posiciones predefinidas para
index d7429fea77df830c18abe3c3a2848ab6d84e11f5..89accb1ba664cc9f567951623b77682e1ce1f114 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Si hay un solo pentagrama en un de los tipos de sistema
 @code{ChoirStaff} o @code{StaffGroup}, el comportamiento
index 01c1c95f789d2675098c7da549a536e126a22485..ddef3e818c824b57b0836d182f7ae742a9b37aaa 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 He aquí una forma de imprimir un acorde en el que suena la misma nota
index 9fd4a9cc38caa0e0af85ee9823ed4dd9a66ecf9a..6871171cd1e01f69c1b675912a39b273c754f7c8 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Al trabajar con los callbacks de un grob, puede ser de mucha ayuda
index 8f4689b6b09358a5b3f1aff2bb5eea10fc6fd752..14179b1a4e04d74ce5b70c7e820136d6660d4da2 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: d0a39a10d625c28a43acd9641aefeb2c7218ab41
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   doctitlees = "Alteraciones de estilo dodecafónico para todas las notas incluidas las naturales"
   texidoces = "
 En las obras de principios del s.XX, empezando por Schoenberg, Berg y
index c25a34d7ae3940026df5c929e5a84b26bc5c91ff..91fe4520c2777c89f5cdac48014dfb728c37d662 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Funciones postfijas para la creación de objetos de extensión de texto
index dabccb009b603f4aaff866bd602501ab2682e9fa..4e832b9805d8046a2384a84b63d5086c7348f3c4 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Los objetos de extensión \cresc, \dim y \decresc ahora se pueden
index a4f3ddbc6205756d901f4f95df9f6a2e636e5f0c..81694536a2e19b1225a44d5dc9cfe83320205dde 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations, text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede insertar códico PostScript directamente dentro de un
 bloque @code{\\markup}.
index 4999c30cfd3a7e579db180d5ff28f5732c6e4154..9331da9180b51d27598021f38ae28129a35b06ff 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.52"
 
 \header {
-%% Translation of GIT committish: d0a39a10d625c28a43acd9641aefeb2c7218ab41
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Del problema central de la notación, esto es, crear un determinado
 símbolo, se encargan los «plugins» o complementos añadidos.  Cada
index d3af8eceda6bbaff6e8170028da6a90d1d00bc01..3a9e04979a33b79b6b4f5b5e3029d63dc668d15c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Grabado manual de las ligaduras"
  texidoces = "
 Se pueden grabar a mano las ligaduras modificando la propiedad
index 52df73e4e6a891fa913d092ca058df38b0a8bcfb..e52de5d8424617db7e68e8d2bb0161b171ddbe7e 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times"
  texidoces = "
 La propiedad @code{tupletSpannerDuration} establece cuánto debe durar
index 4a6bfe6036db1416c2982c6b93010e4e7c2cb6ed..08739680b1d1dd2c84edee97170c43a28295a9a0 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de
index 6af1e55a7b14e20587c97d0d2423d609227c60e5..1e608249b03c1f5a42e6aa22c895d2a00c2cd0d0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "winds"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden conseguir símbolos especiales combinando glifos existentes,
 lo que es de utilidad para la notación de instrumentos de viento.
index 646297d41cc019da488ce4e4afb49bffd9a40e67..7e7bce2ba79b9549cc9e7a8e27e515e351481450 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 En este ejemplo se combinan las digitaciones de la mano izquierda,
 indicaciones del número de cuerda y digitaciones de la mano
index 42ea46f07bfb140ae103530a33b399cd70510c63..3b4eb1c40f3a7f6165628f801bf297788e6ed008 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index c075b48227484085eca2af1466c759887dba27a2..8b9036d6ef9a0e83d5e935b47ed583cc92483a74 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Son posibles tanto los corchetes rectos sobre notas sueltas como
 extremos de barra sueltos en figuras unidas, con una combinación de
index 3fedd0164d8d9ac24bbfc73ca41c27395716db8c..a444bcf05b94b838fc651e18b6a052a6c941b828 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
  doctitlees = "Forzar el desplazamiento horizontal de las notas"
 
index 5a62b8bd04beeb2a2e424d133f39455c62041ae4..3a2a0df20d2d85d1c7a42a5625a00c3def6023e5 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Si LilyPond no cree que haya sitio suficiente para un guión separador
index 2b0d0f6d50ed41a92a6ab039bc34aea3797324ec..a060770051207ee88249aa2782b499124fea0f0d 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Se pueden crear tablas alternativas de diagramas de posiciones.  Se
diff --git a/Documentation/snippets/fretted-string-harmonics-in-tablature.ly b/Documentation/snippets/fretted-string-harmonics-in-tablature.ly
new file mode 100644 (file)
index 0000000..fde41e9
--- /dev/null
@@ -0,0 +1,82 @@
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.13.49
+\version "2.13.49"
+
+\header {
+  lsrtags = "fretted-strings"
+  texidoc = "
+Fretted-string harmonics:
+"
+  doctitle = "Fretted-string harmonics in tablature"
+} % begin verbatim
+
+
+pinchedHarmonics = {
+   \textSpannerDown
+   \override TextSpanner #'bound-details #'left #'text =
+      \markup {\halign #-0.5 \teeny "PH" }
+      \override TextSpanner #'style =
+         #'dashed-line
+   \override TextSpanner #'dash-period = #0.6
+   \override TextSpanner #'bound-details #'right #'attach-dir = #1
+   \override TextSpanner #'bound-details #'right #'text =
+      \markup { \draw-line #'(0 . 1) }
+   \override TextSpanner #'bound-details #'right #'padding = #-0.5
+}
+
+harmonics = {
+  %artificial harmonics (AH)
+  \textLengthOn
+  <\parenthesize b b''\harmonic>4_\markup{ \teeny "AH 16" }
+  <\parenthesize g g''\harmonic>4_\markup{ \teeny "AH 17" }
+  <\parenthesize d' d'''\harmonic>2_\markup{ \teeny "AH 19" }
+  %pinched harmonics (PH)
+  \pinchedHarmonics
+  <a'\harmonic>2\startTextSpan
+  <g'\harmonic>4
+  <e'\harmonic>4\stopTextSpan
+  %tapped harmonics (TH)
+  <\parenthesize g\4 g'\harmonic>4_\markup{ \teeny "TH 17" }
+  <\parenthesize a\4 a'\harmonic>4_\markup{ \teeny "TH 19" }
+  <\parenthesize c'\3 c''\harmonic>2_\markup{ \teeny "TH 17" }
+  %touch harmonics (TCH)
+  a4( <e''\harmonic>2. )_\markup{ \teeny "TCH" }
+}
+
+frettedStrings = {
+  %artificial harmonics (AH)
+  \harmonicByFret #4 g4\3
+  \harmonicByFret #5 d4\4
+  \harmonicByFret #7 g2\3
+  %pinched harmonics (PH)
+  \harmonicByFret #7 d2\4
+  \harmonicByFret #5 d4\4
+  \harmonicByFret #7 a4\5
+  %tapped harmonics (TH)
+  \harmonicByFret #5 d4\4
+  \harmonicByFret #5 d4\4
+  \harmonicByFret #4 g2\3
+  %touch harmonics (TCH)
+  a4 \harmonicByFret #9 g2.\3
+}
+
+\score {
+  <<
+    \new Staff {
+      \new Voice {
+        \clef "treble_8"
+        \harmonics
+      }
+    }
+    \new TabStaff {
+      \new TabVoice {
+        \frettedStrings
+      }
+    }
+  >>
+}
index 056eb0dfea75ef9e20015257c22bcfab829d514c..c10384bba3126c1e1a0b5a3dc35b74d6009abf99 100644 (file)
@@ -3,6 +3,7 @@ adding-fingerings-to-tablatures.ly
 allowing-fingerings-to-be-printed-inside-the-staff.ly
 bar-chords-notation-for-guitar--with-text-spanner.ly
 changing-fret-orientations.ly
+chord-glissando-in-tablature.ly
 chordchanges-for-fretboards.ly
 controlling-the-placement-of-chord-fingerings.ly
 customizing-fretboard-fret-diagrams.ly
@@ -13,6 +14,7 @@ fingerings,-string-indications,-and-right-hand-fingerings.ly
 flamenco-notation.ly
 fret-diagrams-explained-and-developed.ly
 fretboards-alternate-tables.ly
+fretted-string-harmonics-in-tablature.ly
 guitar-slides.ly
 guitar-strum-rhythms.ly
 how-to-change-fret-diagram-position.ly
@@ -20,7 +22,9 @@ jazz-combo-template.ly
 laissez-vibrer-ties.ly
 letter-tablature-formatting.ly
 modern-tab-text-clef.ly
+open-string-harmonics-in-tablature.ly
 placement-of-right-hand-fingerings.ly
 polyphony-in-tablature.ly
+slides-in-tablature.ly
 stem-and-beam-behavior-in-tablature.ly
 string-number-extender-lines.ly
index 560d85fe85eadfa0c45aa7cbd751711a15378d6a..983823ba4a2ad50ee5beec33d776500c0e274dfa 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Este fragmento de código basado en Scheme genera
 24 notas aleatorias (o tantas como se necesiten), basándose en la
index a1984c3be754b77492f7947b86039614ce88399a..f30e52ab4c8576c473959783e1034a12bf4e3e5b 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%%%    Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%%%    Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 En muchos casos, las llaves que no están en la columna central se
index 607ac9b100c0b29e908cc82bf8b3da55c524a367..fdb05dae841c535a6f2eff0f86bbc421708dca28 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede cambiar el aspecto de las líneas de rejilla
 sobreescribiendo algunas de sus propiedades.
index a6a9f37681b015eccc3b2dc0ad4456ba6494cb4a..cddcd3fcffb7547220b27cfa62bb243371128810 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden trazar líneas verticales normales entre pentagramas para
 mostrar la relación entre notas; sin embargo, en caso de música
index bdad67051981b108e4d9f7a709cd094b800571c7..e81368d201d00a8adb471cb3726b3d5d59bb2165 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Los patrones de barrado se pueden alterar con la propiedad
 @code{beatGrouping}:
index 0404ed782bfbc0ec7356340f346bbadfa925312a..2023c0f90176122ff966527ca644e15a4809e9ca 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
 
   texidoces = "
index 16cb42568ac6702c311d0667a825e9cf94efef03..e3e1d398b2c8bb13b37add74f7a7ffbb821f976e 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, fretted-strings"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para la música de guitarra, es posible mostrar los ritmos de rasgueo,
 además de las notas de la melodía, acordes y diagramas de posiciones.
index 5b2eeca94424e279de3358ddc8b57cdd7157654d..cd834a50fdf33cb6a82190aa75706fae984ad16e 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Los reguladores pueden imprimirse en uno cualquiera de los estilos de
 @code{line-interface}: discontinuo, punteado, línea, trino o zig-zag.
index 18f584a9b6844bbac41f760db2511ecc378c2af0..0bb9a534927d07d74974288ef8ec66ddd5b05650 100644 (file)
@@ -7,7 +7,7 @@
 %% Note: this file works from version 2.13.36
 \version "2.13.36"
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Aquí se muestra la manera de ocultar las alteraciones de las notas
index 3cfe8ae86d241533093fa5deda0dac8a3ef89da0..63fa63413502527d42ebda0b0edc31ef6a36d7eb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Los cambios de dinámica con estilo de texto (como cresc. y dim.)
 se imprimen con una línea intermitente que muestra su alcance.
index 7f12eaa2342e8d82376eedc67634f445d9c0d6a8..cb9dd6bb7354a9d949a86544b69cb3328fa1f278 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, template"
 
-%% Translation of GIT committish: d0a39a10d625c28a43acd9641aefeb2c7218ab41
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
   Este fragmento de código muestra una forma de preparar un himno cuando
 cada línea comienza con un compás parcial.  También muestra cómo
index e0cdadecc02673dce30520ad7b2f3316bd74f088..458fa054d511e22b0eaf3e36a7891c6d479f88d1 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Los «incipit» se pueden escribir utilizando el grob del nombre del
 instruemento, pero manteniendo independientes las definiciones del
index 4cc638e2c6a420bef63e838381de79680fdba20c..b6795235c9d2f0d969cb7b2b393193c0406fc934 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "keyboards"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Un corchete de arpegio puede indicar que se tienen que tocar con la
 misma mano notas que están en dos pentagramas distintos. Para hacerlo,
index 04c5bd194aa4e180c8da6efef71022500069e457..6761cf1508449b04d15ffe65e853568461f11cd5 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Las marcas de cesura se pueden crear sobreescribiendo la propiedad
 @code{'text} del objeto @code{BreathingSign}.  También está disponible
index 1aa8b754ca5185fed53a1b71a9905f92b664ae8f..8ee28205d8fdb1a9010b40e00519a08fd36bef83 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 También se pueden imprimir símbolos de porcentaje sueltos.
 
index 701f571e038c08ab927c4434202f3e5b77c49e3e..4a5d83920727d14c111f5096d90b83b72fc6e126 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "keyboards, percussion, fretted-strings, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Ésta es una plantilla bastante avanzada, para un conjunto de
 jazz. Observe que la notación de todos los instrumentos está en
index 3e7776e3f472e4cf2a0b63f5a0186a5d0f839ff8..dfaf633d3d8d36f6b8addbfe89223d6b278d8cbc 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Cuando se produce un cambio de clave, el símbolo de clave se imprime a
 un tamaño menor que la clave inicial.  Esto se puede ajustar con
index c73a8c4a9ac11af34c7d013f7677485ff66d0585..b2777f66c51c78091ca9ebb67d0b96845729903c 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La tablatura se puede formatear utilizando letras en lugar de números.
 
index 5ab28d8863c527d6a64f3bdfd6c9ab942f8fc786..094b9b7d96cd755d6ab0e0d3a507a4b2dfd342cf 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden aplicar puntas de flecha a los elementos de extensión de
 texto y de línea (como el Glissando).
index b2d102235163f46aa057ee3d9539f2307388d67d..db4feb506ef0a1e4694e5567df2f31b73f23ed22 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text, vocal-music"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La alineación horizontal de la letra se puede ajustar sobreescribiendo
 la propiedad @code{self-alignment-X} del objeto @code{LyricText}.
index 35610d4e849c786d62eb000e2eb9f5ad03dcf264..f8caa656bd93e8f50cea8fa9bdd7670785062704 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 El «Makam» es un tipo de melodía de Turquía que
 utiliza alteraciones microtonales de 1/9 de tono.  Consulte el
index 59091b63b97315041c0b57ee8e7992ef029b147c..48b0bf80da684514e2b9f38e981e5676ea1a9d16 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Las ligaduras de expresión se pueden construir con patrones de
index ce9c996c11baf915b556820aad5d747eadcb7067..d724822d35e0ab824197c64311a0a71ff5f200d5 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, editorial-annotations"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede engrosar una línea del pentagrama con fines pedagógicos
 (p.ej. la tercera línea o la de la clave de Sol).  Esto se puede
index d1a6e9125f7f7b81a02b7008be0b0a0e2139deb9..61f088cc63227770783605ee0b5553f595032098 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, staff-notation, editorial-annotations"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Este fragmento de código proporciona una solución alternativa a la
 producción de contadores de compás utilizando repeticiones
index f0650968a8e8b058ca9828d997f1543f4a855dd7..0c0c7750624bb75724909ff933ee6f2f3cdf36cf 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, ancient-notation, contexts-and-engravers, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La disposición «mensurstriche» en que las líneas divisorias no
 están dibujadas sobre los pentagramas, sino entre ellos, se puede
index eb7385ca7d4bcf7088c359e953ec308d1c9c1afc..bb04425c8bc04c029699f49906eb69ee759b4411 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Utilice un texto de marcado para sustituir el glifo de clave (TAB) con
 una fuente tipográfica moderna.
index 2218f75e3b8034d83edd7985db09375508a23855..c14d7bfb6a54eb819913fb4c9c446d421bc35197 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Las abreviaturas se encuentran definidas dentro del archivo
 @file{ly/script-init.ly}, donde las variables @code{dashHat},
index 9eb3c5514caa44b88911a246dbaa14e8f7a22e6f..9412d216b1b51b4f27ff783ca6d7e1de4d993b3d 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Cuando se puede una nota en la voz superior para evitar la colisión
 con una nota de otra voz, el comportamiento predeterminado es
index e08d2cbaee6f1b22d56461330f2e51bc5850e6f5..89a7c685cc606264b29174f4e58a777b3a0b59ef 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede ajustar la posición vertical de una ligadura de
 expresión utilizando la propiedad @code{positions} del objeto
index a0101c21d41594fc76c68bd0d937712f7631a054..0ed8561cd1a2732777678c72189b589af942eca6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 texidoces = "
 Los elementos de marcado aplicados a un silencio multicompás se
 centran encima o debajo de éste.  Los elementos de marcado extensos
index 482b7741c55c8bdbefc4bf3fefa33f8bf0746b58..7e876dee850a4d6dea52fb9d1b33f3790b7ed5d6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede utilizar la propiedad
 @code{systemStartDelimiterHierarchy} para crear grupos de
diff --git a/Documentation/snippets/new/chord-glissando-in-tablature.ly b/Documentation/snippets/new/chord-glissando-in-tablature.ly
new file mode 100644 (file)
index 0000000..1f5e088
--- /dev/null
@@ -0,0 +1,29 @@
+\version "2.13.53"
+
+\header {
+  lsrtags = "fretted-strings"
+  texidoc = "
+Slides for chords can be indicated in both Staff and TabStaff.
+String numbers are necessary for TabStaff because automatic
+string calculations are different for chords and for single notes,
+and @code{\chordGlissando} draws lines between single notes.
+"
+  doctitle = "Chord glissando in tablature"
+}
+
+myMusic = \relative c' {
+  \chordGlissando
+  <c\3 e\2 g\1>8 <f\3 a\2 c\1>
+}
+
+\score {
+  <<
+    \new Staff {
+      \clef "treble_8"
+      \myMusic
+    }
+    \new TabStaff {
+      \myMusic
+    }
+  >>
+}
diff --git a/Documentation/snippets/new/fretted-string-harmonics-in-tablature.ly b/Documentation/snippets/new/fretted-string-harmonics-in-tablature.ly
new file mode 100644 (file)
index 0000000..44ce72c
--- /dev/null
@@ -0,0 +1,74 @@
+\version "2.13.49"
+
+\header {
+  lsrtags = "fretted-strings"
+  texidoc = "
+Fretted-string harmonics:
+"
+  doctitle = "Fretted-string harmonics in tablature"
+}
+
+pinchedHarmonics = {
+   \textSpannerDown
+   \override TextSpanner #'bound-details #'left #'text =
+      \markup {\halign #-0.5 \teeny "PH" }
+      \override TextSpanner #'style =
+         #'dashed-line
+   \override TextSpanner #'dash-period = #0.6
+   \override TextSpanner #'bound-details #'right #'attach-dir = #1
+   \override TextSpanner #'bound-details #'right #'text =
+      \markup { \draw-line #'(0 . 1) }
+   \override TextSpanner #'bound-details #'right #'padding = #-0.5
+}
+
+harmonics = {
+  %artificial harmonics (AH)
+  \textLengthOn
+  <\parenthesize b b''\harmonic>4_\markup{ \teeny "AH 16" }
+  <\parenthesize g g''\harmonic>4_\markup{ \teeny "AH 17" }
+  <\parenthesize d' d'''\harmonic>2_\markup{ \teeny "AH 19" }
+  %pinched harmonics (PH)
+  \pinchedHarmonics
+  <a'\harmonic>2\startTextSpan
+  <g'\harmonic>4
+  <e'\harmonic>4\stopTextSpan
+  %tapped harmonics (TH)
+  <\parenthesize g\4 g'\harmonic>4_\markup{ \teeny "TH 17" }
+  <\parenthesize a\4 a'\harmonic>4_\markup{ \teeny "TH 19" }
+  <\parenthesize c'\3 c''\harmonic>2_\markup{ \teeny "TH 17" }
+  %touch harmonics (TCH)
+  a4( <e''\harmonic>2. )_\markup{ \teeny "TCH" }
+}
+
+frettedStrings = {
+  %artificial harmonics (AH)
+  \harmonicByFret #4 g4\3
+  \harmonicByFret #5 d4\4
+  \harmonicByFret #7 g2\3
+  %pinched harmonics (PH)
+  \harmonicByFret #7 d2\4
+  \harmonicByFret #5 d4\4
+  \harmonicByFret #7 a4\5
+  %tapped harmonics (TH)
+  \harmonicByFret #5 d4\4
+  \harmonicByFret #5 d4\4
+  \harmonicByFret #4 g2\3
+  %touch harmonics (TCH)
+  a4 \harmonicByFret #9 g2.\3
+}
+
+\score {
+  <<
+    \new Staff {
+      \new Voice {
+        \clef "treble_8"
+        \harmonics
+      }
+    }
+    \new TabStaff {
+      \new TabVoice {
+        \frettedStrings
+      }
+    }
+  >>
+}
diff --git a/Documentation/snippets/new/open-string-harmonics-in-tablature.ly b/Documentation/snippets/new/open-string-harmonics-in-tablature.ly
new file mode 100644 (file)
index 0000000..3524d28
--- /dev/null
@@ -0,0 +1,64 @@
+\version "2.13.49"
+
+\header {
+  lsrtags = "fretted-strings"
+  texidoc = "
+Reference for open-string harmonics:
+"
+  doctitle = "Reference for open-string harmonics"
+}
+
+openStringHarmonics = {
+  %first harmonic
+  \harmonicByFret #12 e,2\6_\markup{"1st harm."}
+  \harmonicByRatio #1/2 e,\6
+  %second harmonic
+  \harmonicByFret #7 e,\6_\markup{"2nd harm. - - - -"}
+  \harmonicByRatio #1/3 e,\6
+  \harmonicByFret #19 e,\6
+  \harmonicByRatio #2/3 e,\6
+  %\harmonicByFret #19 < e,\6 a,\5 d\4 >
+  %\harmonicByRatio #2/3 < e,\6 a,\5 d\4 >
+  %third harmonic
+  \harmonicByFret #5 e,\6_\markup{"3rd harm. - - - -"}
+  \harmonicByRatio #1/4 e,\6
+  \harmonicByFret #24 e,\6
+  \harmonicByRatio #3/4 e,\6
+  \break
+  %fourth harmonic
+  \harmonicByFret #4 e,\6_\markup{"4th harm. - - - - - - - - - - - - -"}
+  \harmonicByRatio #1/5 e,\6
+  \harmonicByFret #9 e,\6
+  \harmonicByRatio #2/5 e,\6
+  \harmonicByFret #16 e,\6
+  \harmonicByRatio #3/5 e,\6
+  %fifth harmonic
+  \harmonicByFret #3 e,\6_\markup{"5th harm."}
+  \harmonicByRatio #1/6 e,\6
+  \break
+  %sixth harmonic
+  \harmonicByFret #2.7 e,\6_\markup{"6th harm."}
+  \harmonicByRatio #1/7 e,\6
+  %seventh harmonic
+  \harmonicByFret #2.3 e,\6_\markup{"7th harm."}
+  \harmonicByRatio #1/8 e,\6
+  %eighth harmonic
+  \harmonicByFret #2 e,\6_\markup{"8th harm."}
+  \harmonicByRatio #1/9 e,\6
+}
+
+\score {
+  <<
+    \new Staff {
+      \new Voice {
+        \clef "treble_8"
+        \openStringHarmonics
+      }
+    }
+    \new TabStaff {
+      \new TabVoice {
+        \openStringHarmonics
+      }
+    }
+  >>
+}
diff --git a/Documentation/snippets/new/slides-in-tablature.ly b/Documentation/snippets/new/slides-in-tablature.ly
new file mode 100644 (file)
index 0000000..da6b4f2
--- /dev/null
@@ -0,0 +1,38 @@
+\version "2.13.49"
+
+\header {
+  lsrtags = "fretted-strings"
+  texidoc = "
+Slides can be typeset in both @code{Staff} and @code{TabStaff} contexts:
+"
+  doctitle = "Slides in tablature"
+}
+
+slides = {
+  c'8\3(\glissando d'8\3)
+  c'8\3\glissando d'8\3
+  \hideNotes
+  \grace { g16\3\glissando }
+  \unHideNotes
+  c'4\3
+  \afterGrace d'4\3\glissando {
+  \stemDown \hideNotes
+  g16\3 }
+  \unHideNotes
+}
+
+\score {
+  <<
+    \new Staff { \clef "treble_8" \slides }
+    \new TabStaff { \slides }
+  >>
+  \layout {
+    \context {
+      \Score
+      \override Glissando #'minimum-length = #4
+      \override Glissando #'springs-and-rods =
+                          #ly:spanner::set-spacing-rods
+      \override Glissando #'thickness = #2
+    }
+  }
+}
index 381523528fd6ed6c8367419059aa50f6b70a9cfb..9185acb308466c181d263aa9154461d9b0100c72 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.13.36"
+\version "2.13.51"
 
 \header {
   lsrtags="winds"
index b10a6b9f77d1965802d1e70a49a28154a11543b3..820c6e57099307481b74bdcbd366ee3e34ecde3f 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 LilyPond también proporciona funciones de formato para imprimir
 números de grupo especial diferentes a la propia fracción, así
index 0767f65d30a7a460ff2da9916c34a930b133da64..df8f3e33b3577702e3205a55ccf0a05dd0a25070 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   doctitlees = "Armaduras de tonalidad no tradicionales"
   texidoces = "
 
index a8d32a347d5017c166ac297a7f55728453b9bbb0..2dadaf69d3d0abf4d91e51a6b3413bc7598a3665 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Las cabezas de nota de notación fácil utilizan la propiedad
diff --git a/Documentation/snippets/open-string-harmonics-in-tablature.ly b/Documentation/snippets/open-string-harmonics-in-tablature.ly
new file mode 100644 (file)
index 0000000..9dae041
--- /dev/null
@@ -0,0 +1,72 @@
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.13.49
+\version "2.13.49"
+
+\header {
+  lsrtags = "fretted-strings"
+  texidoc = "
+Reference for open-string harmonics:
+"
+  doctitle = "Reference for open-string harmonics"
+} % begin verbatim
+
+
+openStringHarmonics = {
+  %first harmonic
+  \harmonicByFret #12 e,2\6_\markup{"1st harm."}
+  \harmonicByRatio #1/2 e,\6
+  %second harmonic
+  \harmonicByFret #7 e,\6_\markup{"2nd harm. - - - -"}
+  \harmonicByRatio #1/3 e,\6
+  \harmonicByFret #19 e,\6
+  \harmonicByRatio #2/3 e,\6
+  %\harmonicByFret #19 < e,\6 a,\5 d\4 >
+  %\harmonicByRatio #2/3 < e,\6 a,\5 d\4 >
+  %third harmonic
+  \harmonicByFret #5 e,\6_\markup{"3rd harm. - - - -"}
+  \harmonicByRatio #1/4 e,\6
+  \harmonicByFret #24 e,\6
+  \harmonicByRatio #3/4 e,\6
+  \break
+  %fourth harmonic
+  \harmonicByFret #4 e,\6_\markup{"4th harm. - - - - - - - - - - - - -"}
+  \harmonicByRatio #1/5 e,\6
+  \harmonicByFret #9 e,\6
+  \harmonicByRatio #2/5 e,\6
+  \harmonicByFret #16 e,\6
+  \harmonicByRatio #3/5 e,\6
+  %fifth harmonic
+  \harmonicByFret #3 e,\6_\markup{"5th harm."}
+  \harmonicByRatio #1/6 e,\6
+  \break
+  %sixth harmonic
+  \harmonicByFret #2.7 e,\6_\markup{"6th harm."}
+  \harmonicByRatio #1/7 e,\6
+  %seventh harmonic
+  \harmonicByFret #2.3 e,\6_\markup{"7th harm."}
+  \harmonicByRatio #1/8 e,\6
+  %eighth harmonic
+  \harmonicByFret #2 e,\6_\markup{"8th harm."}
+  \harmonicByRatio #1/9 e,\6
+}
+
+\score {
+  <<
+    \new Staff {
+      \new Voice {
+        \clef "treble_8"
+        \openStringHarmonics
+      }
+    }
+    \new TabStaff {
+      \new TabVoice {
+        \openStringHarmonics
+      }
+    }
+  >>
+}
index 0f22d6d0da5ec86dd85032263e369c547364a456..905d2cff639e7a151fdf7828c4bf40b33c6ff0bb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, staff-notation, vocal-music, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Esta plantilla muestra el uso de contextos @code{StaffGroup} y
 @code{GrandStaff} anidados para sub-agrupar instrumentos del mismo
index 3dc2da7bd9629180ee591f7bccc80ab28bb26a6c..62e5c152136af25ccda536c5b99819dfb81ddf91 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Internamente, @code{\\ottava} establece las propiedades
index b101620c1cd1a8b513d6285ae4b11bc0c78e0266..28d4ce94d7b05dd8a12675ec8048c91c9b7cecd0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%%   Translation of GIT committish: d0a39a10d625c28a43acd9641aefeb2c7218ab41
+%%   Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index 1932f43d7a90fe32b71cd360e0ec906d06686f8a..77960cf9b85722c0f972b3b381ea69e8cd7bec9f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden mostrar los contadores de las repeticiones del tipo
 porcentaje a intervalos regulares mediante el establecimiento de
index 3ee261ad8e9064fed5bc133cbf374edc606245a7..ee471148c70f925c05a395603c064b7ebb5742f7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Las repeticiones de compases completos de más de dos repeticiones
 pueden llevar un contador si se activa la propiedad adecuada, como se
index ddb4b4d39a5a00df74649bd39616de7984fc4fa6..ac34c6ac79bfd2f76fe73c53776bb91fd0bbfb7b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra"
  texidoces = "
 Este ejemplo artificial muestra cómo se pueden permitir tanto los
index a3b71be71fd07ccce46b2a8f087e1633fa88276d..746bef7ca2c813e55c14b4970d6e267496d143e2 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "keyboards, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Presentamos a continuación una plantilla de piano sencilla con algunas
 notas.
index 7d3ec0229fb56c301c6315303b57dce1b2c9b5f8..11c3ed52cd5f5a85021ee5fa121ff1a398dea274 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Muchas partituras de piano tienen las indicaciones dinámicas centradas
 entre los dos pentagramas.  El contexto @code{Dynamics}, si se sitúa
index 03f45a98d166afde63d8198a49c68281e424a229..992eacb37392961199739625ef9e3e130cbf5f21 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text, keyboards, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 En lugar de tener un pentagrama dedicado a la melodía y la letra, ésta
 se puede centrar entre los pentagramas de un sistema de piano.
index b12406faa66ee7b58a34e8bf62f113f380c091e1..34aa47250458f0ecbefe9f6a8cc3cde138682ca9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, keyboards, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 He aquí el típico formato dde una canción: un pentagrama con la
 melodía y la letra, y el acompañamiento de piano por debajo.
index 29a4e4c73e2a5f0fb6041ae7dbf377a7ceabbd99..c50e33330128a581822fc6260a64caaceeb60e43 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Es posible ejercer un mayor control sobre la colocación de las
 digitaciones de la mano derecha estableciendo el valor de una
index 345b377d1b53d2125ab59fcaa694d13129ef1086..0126a846219c8a1ea81d57e0ef0860217fa975d4 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La polifonía se crea de la misma forma en un @code{TabStaff} que
 en una pauta normal.
index 793535b302dda5746ea73175a3e5ff567d6b68c4..991ffae5a14c963946337d980aa5ceca4ae27bab 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Si necesitamos alargar o acortar un símbolo de arpegio, podemos
 modificar independientemente los extremos superior e inferior.
index daee899e7a3ec1099d2496aeb584d8c76e35bc93..49e67f037985519d0b166716197f84ac71509f2c 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Cuando se colocan figuras sobre líneas adicionales, sus barras se
index f3b122033ee862d8768492fd76a7467e65268241..81fafa13bd2b62ade8b92245f7a9f9db22c164a9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Al establecer la propiedad @code{'strict-grace-spacing} hacemos que
index 8a422f4318621c49487700834701440b92d8fbf3..d853005ecef1abc22f0059d25f5387b28a93d1d7 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Posicionar los silencios multicompás"
  texidoces = "
 A diferencia de los silencios normales, no existe una instrucción
index f200fb3e9366215eb34c4cfa01d177bddf488ba9..79e11621be34817e5f8ab417efa9355544254475 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Los elementos de marcado de texto deben tener la propiedad
index a4de5d4c769235e3b3743340faca9349a80232f0..5e6c446c3bde5a479536719f17f2a01951b1f7b9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 doctitlees = "Evitar que se añadan becuadros adicionales automáticamente"
 
 texidoces = "
index 3c25b17aff579e6e0867ea997aaf85a12964b87d..698981016492cc968cae49ba6dd0caacbb5dec61 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura"
 
 texidoces = "
index b0746746a51002af8e148dc4d7ed0144d41e6e83..e6119742998b70971b7f3743e7e4e595f75e7d01 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede imprimir una línea divisoria de la forma @code{|:} al
 principio de la pieza, sobreescribiendo la propiedad correspondiente:
index c12272cb4ae0bfe5d5b26476f4393d80361b0eb4..ffa3db2def955980af56794d11cc9e77e3a0c29a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Se pueden imprimir los números de compás a intervalos regulares
index 2b85daa453dc64671bf75b7c8da99e63146223b5..644a22ebe9f91d92dc1fbf0779a417ad89d3b5eb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias.
index c7e55a8148a7534e96d1de654a0a6fd06c838a06..a49477ebe9d589d809dcd32893495b36d19c5628 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden imprimir reguladores con un círculo en la punta (notación
 «al niente») estableciendo la propiedad @code{circled-tip} del objeto
index 7d1b7416ff2edd3a1558c329bc9122d0fd789a82..d76d705d36a33cc088898e602e1fe35e94fe589e 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index b0bd10e9b5bcd063efd2e0427f3ff1bec818c951..2bb635762e8b4865c109678e6c299cd500fa61ee 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Aunque normalmente las marcas de texto sólo se imprimen sobre el
 pentagrama superior, también se pueden imprimir en otro pentagrama
index f1b52766c989fdd649f40b1b34f61f466e356640..c2bb2acb48148055d62b5b06969b961ac6731726 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 De forma predeterminada, las indicaciones metronómicas y las
 letras de ensayo se imprimen encima del pentagrama.  Para
index f69f74cc8bf844a14cfd9b81e79e50edde01f991..1169980de071c911e7f9922b9377d96a81ab5cbf 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede usar el contexto @code{NoteNames} para imprimir el valor
 textual de las notas.  La propiedad @code{printOctaveNames} activa o
index 520f727e492fcd733383ff1b284d4e6c4f9c943a..ec652c2b16463e4474c40088a954fad0121424d4 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 De forma predeterminada se suprime el número del primer compás de una
index 1030a4c4e1671daf7a591aef55ffb394bc64ccd5..53fabd477486db20ff9924b3eb634fa7c40aa32a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, staff-notation"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Los pasajes citados tienen en cuenta la transposición de la fuente
 tanto como la del destino.  En este ejemplo, todos los
index c9ba9d4ac7522a8ab4e61f79bb0dd6d1e89bc7d4..908f76b8fd4bfdec6240c86dde5de6f4e627ff3f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 La propiedad @code{quotedEventTypes} determina los tipos de eventos
index 4606483fb3d8e7760476b4f947a8b28c6a26b3d0..bb0bacd4290e6f0946edac399b51d9efd42d51e0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "winds"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 El ejemplo siguiente muestra cómo se pueden realizar diagramas de
index a6f3fccf92a859bc411d6525b27c9b4b0e2de3a9..f13c01fb7ba2c69b633f42f99da20ff0c5fa84cb 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Los valores predeterminados para las notas de adorno están
index 24b77282dc9cc93cb8a9f22549b06b385548bed9..46e6b0e3b225a368993e807f465b80f20095cff1 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Se pueden eliminar completamente los números de compás quitando el
index 099ac87fc07771cd3312600e0886a858f90ee024..154f84d87619436b3dbae5862072737521a10063 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 De forma predeterminada, las líneas divisorias en los grupos
 StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas.
index 203f27c82126234e71d4a82455b16a6dedad9bd8..dd58e556de546139bbe2ab7c4678574a1dca08d0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, breaks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 El primer pentagrama vacío también se puede suprimir de la
 partitura estableciendo la propiedad @code{remove-first} de
index a3a86e2de19042355e81396802272768e224a430..f5c488493f9adae086ec8e22459476d26c26c818 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   doctitlees = "Estilos de silencios"
   texidoces = "
 Los silencios se pueden imprimir en distintos estilos.
index 911524f696ff643d171520b25bfa3bf550f49e64..f7e2bcf3831a17f3638ff5a084f599db24a71c67 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Para tipografiar las barras agrupadas en la forma @code{3-4-3-2} sólo
 es necesario modificar la estructura de pulsos:
index e23450fcc2e9c5fa18f336ad881e73109be716d4..9c18b005705001218ca23d262d4c712bf1bce7c0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Si la nota que da fin a un regulador cae sobre la primera parte de
 un compás, el regulador se detiene en la línea divisoria
index 123bf29445e6245d62f5e6474a5de90db9bba89b..e7f71f2de230604ad770b8dd7432051d83067070 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, paper-and-layout"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden insertar separadores sistema entre los sistemas de una
 página.  Se puede usar cualquier elemento de marcado, pero
index 005100db784dabd460d801375e5e9d912e2b9cd7..32f405bb109b6a5ad59c7e3d26671b4c8fbaccf3 100644 (file)
@@ -7,7 +7,7 @@
 %% Note: this file works from version 2.13.36
 \version "2.13.36"
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index 2090a59504287cf37e4abe49d5fe3cd92093b2c8..b32a17430f543fca461ac255e1a475fbae326157 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Si los reguladores son demasiado cortos, se pueden alargar
 modificando la propiedad @code{minimum-length} del objeto
index 0129f3487795b1c68f37495720340430d0bd8770..6b77a002bd9765f431e37bcefbf7db8d0e7a9ad0 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 De forma predeterminada, los corchetes de primera y segunda vez se
 trazan encima de los finales alternativos completos, pero es posible
index 8a01664a491ccdde4cd7c376c2ff4640163bc3ac..f8e22548239306c1fb109380409d8f6a2c3602df 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se pueden imprimir los acordes exclusivamente al comienzo de las
 líneas y cuando cambia el acorde.
index dcabbae32d1c906c59a2c06f29f76b0cb47f3f21..5187bc42d0caafa90070a323e9909c02f47431aa 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Al juntar nombres de acorde en cifrado americano, melodía y letra,
 obtenemos una hoja guía de acordes o «lead sheet»:
index f7151e865f80e802745c926cffb86015e1b50a3c..88b00ca4f6cfd38017ce8eb9741d0eb6ac8a07e8 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, chords, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Esta plantilla facilita la preparación de una canción con melodía,
 letra y acordes.
index c3ebc408e865d8f50077e7dc4708b52d075004c8..2e208f7ad53d2a35eb3322f628156a73ac9a2623 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, chords, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Presentamos a continuación un ejemplo de plantilla para una hoja
 guía de acordes con melodía, letra, acordes y diagramas de
index 55c81b1e053b37ecc6488033b13687f96b185b54..cf6e8e7569c1fbedac9f07db78e619513b92d969 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 ¿Quiere preparar una hoja guía de acordes (o «lead sheet») con
 melodía y acordes?  ¡No busque más!
index aeaca569903967127a3f2a77b29e5bffc02aa9e9..5ab3df320ae544c716bd649ad7ccf7d8ffe3779d 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Esta pequeña plantilla muestra una melodía sencilla con letra. Córtela
 y péguela, escriba las notas y luego la letra. Este ejemplo desactiva
index 65a03b6ef532a5bf444bc437c31b0385073ac1fb..b41eb3251c1cbde6dcd2d81bd521a03ac77d8dd6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Esta plantilla simple prepara un pentagrama con notas, adecuado para
 un instrumento solista o un fragmento melódico. Córtelo y péguelo en
diff --git a/Documentation/snippets/slides-in-tablature.ly b/Documentation/snippets/slides-in-tablature.ly
new file mode 100644 (file)
index 0000000..39d1b98
--- /dev/null
@@ -0,0 +1,46 @@
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.13.49
+\version "2.13.49"
+
+\header {
+  lsrtags = "fretted-strings"
+  texidoc = "
+Slides can be typeset in both @code{Staff} and @code{TabStaff} contexts:
+"
+  doctitle = "Slides in tablature"
+} % begin verbatim
+
+
+slides = {
+  c'8\3(\glissando d'8\3)
+  c'8\3\glissando d'8\3
+  \hideNotes
+  \grace { g16\3\glissando }
+  \unHideNotes
+  c'4\3
+  \afterGrace d'4\3\glissando {
+  \stemDown \hideNotes
+  g16\3 }
+  \unHideNotes
+}
+
+\score {
+  <<
+    \new Staff { \clef "treble_8" \slides }
+    \new TabStaff { \slides }
+  >>
+  \layout {
+    \context {
+      \Score
+      \override Glissando #'minimum-length = #4
+      \override Glissando #'springs-and-rods =
+                          #ly:spanner::set-spacing-rods
+      \override Glissando #'thickness = #2
+    }
+  }
+}
index e681bc500bef04b19c40efa1bfe0c94cd3e3e6d5..ce245ae1b508ee637c7e4c341c5a6a542c53d60b 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   doctitlees = "Marca de pizzicato de chasquido (`pizzicato de Bartók')"
   texidoces = "
 El pizzicato de chasquido (también llamado @q{Pizzicato de Bartók}) es un
index d1893ff9873866c7c670730e7160218e64ed62ff..5b2c05a276feb92f70e000e103344ab73c0070c8 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Los textos independientes se pueden disponer en varias columnas
 utilizando instrucciones @code{\\markup}:
index 25b0b333df107636bdb3157c984488a5dfe3a525..39fdf4bcfa7ec4e92ed141851f7ba5d52e03bc4e 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 La dirección de las plicas se contola de la misma forma en la
 tablatura que en la notación tradicional. Las barras se pueden
index 3387982087c6a6ba846f1f881fb6790d9369d96f..3968283f39f1fa829daebe209b73ce10ee1df3e6 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "unfretted-strings, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Esta plantilla muestra un cuarteto de cuerda normal. También utiliza
 una sección @code{\\global} para el compás y la armadura
index eb6defed2ed442d25d3f6f40ebf0b30dea2ff0b4..841614413c31e45853c96795b55b31a78fb9a620 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "unfretted-strings, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un
 resultado satisfactorio para el cuarteto, pero ¿y si tenemos que
index 3ac0fc893553f204bd93bc05c2641f41b01e113f..d24ec06cbb77f8b80e2bf1af1fc226a951fd35cd 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index 17b69fa268d9fe1ac649ca18189224a6d05cfb1f..7eb1e11187ebdb83edaf4264feb4142a8d005c30 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 A veces, la indicación de compás no debe imprimir la fracción completa
index 8efe5b4436dfaa9a0d893d374c2a1782fb0fa6e8..c8b43a507380d237450a37cb163498dfa76cb8c2 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 A modo de alternativa para obtener auténticos «incipit»
 independientes de la partitura principal, se incluyen como
index 3ed3d539c3be810a7bfff3c2952336637e950db6..696ccd6b8c7d723ea85acd92f3f19c931925931f 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 doctitlees = "Transportar música con el menor número de alteraciones"
 texidoces = "
 Este ejemplo utiliza código de Scheme para forzar las
index 9a75d69875b233f5740dc6bd12ca4579ed694668..38fc83f58bff05dd8f67204348692accddf3f07d 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "pitches, staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   doctitlees = "Trucaje de las propiedades de clave"
   texidoces = "
 La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de
index b04c5d8c8333f2090cf0be82dc96eb012b9681aa..0a87412be2f68b19d04e4c720bf924e5ab223456 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 La disposición de las expresiones de adorno se puede cambiar a lo
index 71dc5b1976af315a59b6e3fbca3863997d28f1c2..ab6ed94901e4b33f7c5293af42254db834809244 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Se puede usar el delimitador de comienzo de un sistema
 @code{SystemStartSquare} estableciéndolo explícitamente dentro de
index 79550b2c402a73f1e11514a559d0deed3134881b..b3fd8c7327e3bf5db1978797e71de1272449a2da 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Se pueden imprimir estilos alternativos del corchete o gancho de las
index be7552223b9d1051c9377eb5ccba4d6a1e9c055e..e994f30b5f19ba1d83b6fa62fa33831af951ce63 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks, vocal-music"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 El corchete de arpegios @code{arpeggioBracket} se puede usar para
 indicar la división de voces cuando no hay plicas que puedan ofrecer
index 2999f6c344c7ac20c28caf31b87f09dd429dbe0a..9ad6b8699f116bb82a02a249af02500f853478e3 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Algunos compositores escriben dos ligaduras cuando quieren acordes
 legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
index 6238b039a8f439c3b015b3d3489c404dd826b28a..71ba868992e586326b8c36e65cfe251aa4b5a572 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Es posible aplicar la barrita que cruza la barra de las
index 349cbf00fd06fd1fea7d19375597028d198e5203..8bc7f62ebbd6ae661f6b9679e0cc3acd50821670 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index a298f5f26ad685c52d6f98c23253cc6861f35d93..f0823271c56a4bf4832d2f1632fed57b5ebf232a 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index dc60088fc94a500e5d8f0b1a4bf43b9a14a76241..ff7c33c5d564496709b4dfac40d3800294fd3986 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
  doctitlees = "Uso de ligaduras en los arpegios"
  texidoces = "
 En ocasiones se usan ligaduras de unión para escribir los arpegios.
index 7961fce4cb1b11b1af0f75726ec97b7c7ef44943..4fefe47b0ecba4767e615b0b73546c7fee292f6a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "tweaks-and-overrides, spacing"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor
 adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e
index cdd3d1762f1fff29e9de969f8e1dea5170bf23ff..51a10ac5b28348f9655260a4e9c44f8d4f4b924a 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Las expresiones dinámicas que se comienzan, terminan o se producen
 en la misma nota se alinean verticalmente.  Para asegurar que las
index b8630523e9d5af486b5515b3ce26b9f6419e3e96..c400ca1d79eb12139bc6e17c10b536a0fc8282a9 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "vocal-music, tweaks-and-overrides, spacing"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Este fragmento de código muestra el uso de las propiedades de
 contexto @code{alignBelowContext} y @code{alignAboveContext} para
index 5e1a47ccc484736b19a8650a1e7e4dd0e8ec1195..2a42faea777cb72bc5e624576b6ba14232ba60d8 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "chords, tweaks-and-overrides"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Allí donde se utilicen líneas extensoras para el bajo cifrado mediante
 el establecimiento de @code{useBassFigureExtenders} al valor
index af00f574ec3994f6cb67af7be75b80246556bb46..a87180b4f8ce56cb676dc2ebeb99b57ecbaf0ed8 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.47"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 
 Esta plantilla añade una reducción de piano automática a la partitura
index e11f7da4f0fb35ddf74455fee446774140cb2070..0f01a6a16e36d7abf16901380c40807f27c9d803 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "text, vocal-music, contexts-and-engravers, template"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Esta plantilla es, básicamente, la misma que la sencilla plantilla
 @qq{Conjunto vocal}, excepto que aquí todas las líneas de letra se
index 4fc6ad70f98e72ee147a9ab990255204eaf7ee79..2a813d82d74af735ebb857c30aa24ad005834087 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 Esta plantilla crea una partitura que comienza con una estrofa para
index cfb6c319afc582388b922ee3efa6897e7635d194..88918475cd3f835615223fd1e3c3fa33b1e6a906 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.47"
 
 \header {
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 He aquí una partitura vocal estándar para cuatro voces SATB. Con
 grupos mayores, suele ser útil incluir una sección que aparezca en
index a70c0cb16964afd5bc566757c71772e84d8c50cc..990b9bc61d437c8420eac8801368e82faf2d882b 100644 (file)
@@ -9,7 +9,7 @@
 \header {
   lsrtags = "repeats, staff-notation, chords"
 
-%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 Mediante la adición del grabador @code{Volta_engraver} al
 pentagrama pertinente, se pueden poner los corchetes de primera y
index c36473b669579c67b6106ea91a711e2c03f0b108..ce10f82f1495260fe3e164cc00ac1a8b884d2199 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%%%    Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%%%    Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
 
   texidoces = "
 
index 268174e7c00d4aa85d6d8301146f0932c9d7e4e1..cf2836c42b24b21157de2a5b9c4cf869ae8d763c 100644 (file)
@@ -8,7 +8,7 @@
 \version "2.13.36"
 
 \header {
-%%%    Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
+%%%    Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
   texidoces = "
 El fragmento de música que aparece a continuación presenta todos los
 diagramas de viento madera que se encuentran definidos en LilyPond por
index 0cd32ad1710281a07aa10aceda057cf4db20bc3d..fda88fcbb9ce9c7fc46ffcd7ce11a920e1772d11 100644 (file)
@@ -8,6 +8,17 @@
 
 @c used for news about the upcoming release; see CG 10.2
 
+@newsItem
+@subsubheading LilyPond 2.13.53 released!  @emph{Mar 6, 2011}
+
+We are happy to announce the release of LilyPond 2.13.53.  This
+release contains the usual number of bugfixes.
+
+Please note that this is @strong{not} the third release candidate,
+due to a few remaining Critical bugs.
+
+@newsEnd
+
 @newsItem
 @subsubheading LilyPond 2.13.52 released!  @emph{Mar 1, 2011}
 
diff --git a/VERSION b/VERSION
index 95e049e78fceb788e63728943d7ade2e2b96865d..2fcf7b2fa7d866f01b124cacb9120c73afddc074 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=13
-PATCH_LEVEL=53
+PATCH_LEVEL=54
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.12.3
-VERSION_DEVEL=2.13.52
+VERSION_DEVEL=2.13.53
index a065a37e0baa32d988a253d6f3ec5caa5c4a955d..f4955f5a3a612c2716814d72af8c220c41300a7a 100644 (file)
@@ -22,4 +22,5 @@ notes with a duration factor still keep their requested appearance.
   c\breve |
   c1*2 |
   c2*4 |
+  c8*20
 }
diff --git a/input/regression/completion-rest.ly b/input/regression/completion-rest.ly
new file mode 100644 (file)
index 0000000..7ac0ac8
--- /dev/null
@@ -0,0 +1,26 @@
+\version "2.13.53"
+
+\header{
+texidoc="
+
+If the @code{Rest_engraver} is replaced by the @code{Completion_rest_engraver},
+rests with a duration factor still keep their requested appearance.
+
+"
+}
+
+#(set-paper-size "a6")
+
+\layout { ragged-right= ##t }
+
+
+\new Voice \with {
+    \remove "Rest_engraver"
+    \consists "Completion_rest_engraver"
+} \relative c'{
+
+  r\breve |
+  r1*2 |
+  r2*4 |
+  r8*20
+}
diff --git a/input/regression/footnote-break-visibility.ly b/input/regression/footnote-break-visibility.ly
new file mode 100644 (file)
index 0000000..e45d801
--- /dev/null
@@ -0,0 +1,25 @@
+\version "2.13.54"
+\header {
+  texidoc = "With grobs that have break visibility, footnotes will
+automatically print to the first line of the break.  This behavior
+can be overrided."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+
+\new Staff \with { \consists "Footnote_engraver" }
+{
+  \relative c' {
+    c1
+    \footnoteGrob #'TimeSignature #'(0 . 2) "foo" "bar"
+    \time 3/4
+    \break \pageBreak
+    c2.
+    \once \override Staff . FootnoteItem #'break-visibility = ##(#f #f #t)
+    \footnoteGrob #'TimeSignature #'(0 . 2) "foo" "bar"
+    \time 4/4
+    \break \pageBreak
+    c1 \bar "|."
+}}}
diff --git a/input/regression/footnote-spanner.ly b/input/regression/footnote-spanner.ly
new file mode 100644 (file)
index 0000000..eecbd97
--- /dev/null
@@ -0,0 +1,61 @@
+\version "2.13.54"
+\header {
+  texidoc = "Footnotes are annotated at the correct place, and the
+annotation goes to the correct page."
+}
+
+#(set-default-paper-size "a6")
+
+\paper { ragged-last-bottom = ##f }
+
+\book {
+
+\relative c'' {
+\once \override FootnoteSpanner #'spanner-placement = #-0.7
+\footnoteGrob #'Hairpin
+              #'(0.5 . 0.5)
+              \markup { \tiny "1." }
+              \markup { 1. \justify { Goes to the second broken spanner. } }
+b4\< c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a \break \pageBreak
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a\!
+
+\once \override FootnoteSpanner #'spanner-placement = #1.0
+\footnoteGrob #'Hairpin
+              #'(0.5 . 0.5)
+              \markup { \tiny "2." }
+              \markup { 2. \justify { Goes to the last broken spanner. } }
+b4\< c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a \break \pageBreak
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d a
+b c d\!
+}}
diff --git a/input/regression/footnote.ly b/input/regression/footnote.ly
new file mode 100644 (file)
index 0000000..607d36a
--- /dev/null
@@ -0,0 +1,33 @@
+\version "2.13.54"
+\header {
+  texidoc = "Lilypond does footnotes."
+}
+
+#(set-default-paper-size "a6")
+\book {
+
+\markup {
+  a \footnote \concat { b \super 1 } "1. c"
+  \footnote \concat { d \super 2 } "2. e"
+  \footnote \line { f \super 3 } "3. g"
+}
+
+\markup { h i }
+
+\relative c' {
+\footnoteGrob #'NoteHead #'(1 . -1) \markup { \tiny 4 } \markup { 4. j }
+a b c d }
+
+\pageBreak
+
+\markup { k \footnote \concat { l \super 5 } \line { 5. m }  }
+
+\relative c' { a1 }
+
+\relative c' {
+  d4 e
+  < f  a-\footnote #'(1 . -1) \markup { \tiny 6 } \markup { 6. n } c >
+  \footnoteGrob #'Beam #'(1 . 1) \markup { \tiny 7 } \markup { 7. o }
+  \footnoteGrob #'Hairpin #'(1 . 1) \markup { \tiny 8 } \markup { 8. p }
+  a8\< [ b c d\f ] r2. |
+}}
index f4d3c1d8d79b2aa0038a6cc438bd3211988dfbd4..d8a596b2e652e6c76b598f9da5d3a385972f1be8 100644 (file)
@@ -11,21 +11,21 @@ lyrics do not collide with barlines.
     ragged-right = ##t
 }
 
-<<
-    \new Staff {
-       b1 \bar "|:" b1 \bar ":|"
+\relative c'' <<
+    \new Voice = "a"{
+       b1 \bar "|:" b1 \bar ":|" b1 \bar "|."
     }
-    \context Lyrics \with {
+    \new Lyrics \with {
        \consists "Bar_engraver"
        \consists "Separating_line_group_engraver"
-    } \lyricmode {
-         looooooooooooooooooooooooooooooooooong1 syllable
+    } \lyricsto "a" {
+         bars lengthened if
       }
-    \lyrics {
-       no Bar_Engraver_Bar_Engraver_Bar_Engraver
+    \new Lyrics \lyricsto "a" {
+       required for noncollision
     }
     \new Staff {
-       b1 b1
+       b1 b1 b1
     }
 >>
 \layout {
index b34c6d1c9cfa5981bfd3c879dcfd647cafc1a700..18636147ca82a9c83eafb1962df7210ad6ab1c46 100644 (file)
@@ -17,6 +17,7 @@
   \context {
     \Score
     \override SpacingSpanner #'packed-spacing = ##t
+    \override PaperColumn #'keep-inside-line = ##f
   }
 }
 
index 95124a7cbd2aef8c5c5024070a83b076f37c3351..8a11e330b5ca6090abd8866511b35ed757ca6055 100644 (file)
@@ -6,7 +6,10 @@
 
 \score {
  <<
-   \new StaffGroup <<
+   \new StaffGroup \with {
+     \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #15
+   }
+   <<
      \new Staff {
        c'1
      }
index 07ea72e7fa6102d0aca949b80077aca9fc0dce63..1e6e859bad9c7316c01d6ba527f4240a8fc033bb 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.13.36"
+\version "2.13.51"
 
 \header {
   texidoc="Empty woodwind diagrams for all instruments
index cabce9e97464f81e607b3ae2098e9f359d459ca6..cb876f5bbf1de0297f590d7e79c3902a26af3ebe 100644 (file)
@@ -167,13 +167,12 @@ Align_interface::get_minimum_translations_without_min_dist (Grob *me,
   return internal_get_minimum_translations (me, all_grobs, a, false, false, 0, 0);
 }
 
-// If include_fixed_spacing is false, the only constraints that will be measured
-// here are those that result from collisions (+ padding).  That is, all
-// minimum-distances, line-break-system-details, basic-distance+stretchable=0
-// constraints will be ignored.
-// - If you want to find the minimum height of a system, include_fixed_spacing should be true.
-// - If you're going to actually lay out the page, then it should be false (or
-//   else centered dynamics will break when there is a fixed alignment).
+// If include_fixed_spacing is true, the manually fixed spacings
+// induced by stretchable=0 or alignment-distances are included
+// in the minimum translations here.  If you want to find the minimum
+// height of a system, include_fixed_spacing should be true.  If you
+// want to actually lay out the page, then it should be false (or
+// else centered dynamics will break when there is a fixed alignment).
 vector<Real>
 Align_interface::internal_get_minimum_translations (Grob *me,
                                                    vector<Grob*> const &all_grobs,
@@ -213,14 +212,12 @@ Align_interface::internal_get_minimum_translations (Grob *me,
          SCM spec = Page_layout_problem::get_spacing_spec (elems[j-1], elems[j], pure, start, end);
          Page_layout_problem::read_spacing_spec (spec, &padding, ly_symbol2scm ("padding"));
 
-         if (include_fixed_spacing)
-           {
-             Real min_distance = 0;
-             if (Page_layout_problem::read_spacing_spec (spec, &min_distance, ly_symbol2scm ("minimum-distance")))
-               dy = max (dy, min_distance);
+         Real min_distance = 0;
+         if (Page_layout_problem::read_spacing_spec (spec, &min_distance, ly_symbol2scm ("minimum-distance")))
+           dy = max (dy, min_distance);
 
-             dy = max (dy, Page_layout_problem::get_fixed_spacing (elems[j-1], elems[j], spaceable_count, pure, start, end));
-           }
+         if (include_fixed_spacing)
+           dy = max (dy, Page_layout_problem::get_fixed_spacing (elems[j-1], elems[j], spaceable_count, pure, start, end));
 
          if (Page_layout_problem::is_spaceable (elems[j]) && last_spaceable_element)
            {
@@ -234,17 +231,15 @@ Align_interface::internal_get_minimum_translations (Grob *me,
                                                      ly_symbol2scm ("padding"));
              padding = max (padding, spaceable_padding);
 
+             Real min_distance = 0;
+             if (Page_layout_problem::read_spacing_spec (spec,
+                                                         &min_distance,
+                                                         ly_symbol2scm ("minimum-distance")))
+               dy = max (dy, min_distance + stacking_dir*(last_spaceable_element_pos - where));
+
              if (include_fixed_spacing)
-               {
-                 Real min_distance = 0;
-                 if (Page_layout_problem::read_spacing_spec (spec,
-                                                             &min_distance,
-                                                             ly_symbol2scm ("minimum-distance")))
-                   dy = max (dy, min_distance + stacking_dir*(last_spaceable_element_pos - where));
-
-                 dy = max (dy, Page_layout_problem::get_fixed_spacing (last_spaceable_element, elems[j], spaceable_count,
-                                                                       pure, start, end));
-               }
+               dy = max (dy, Page_layout_problem::get_fixed_spacing (last_spaceable_element, elems[j], spaceable_count,
+                                                                     pure, start, end));
            }
        }
 
index 0ed413bf6796a858656a9ff318e14c4c9e99584a..8459aa8c54547dd9e54d7497f744121156f9acaa 100644 (file)
@@ -39,8 +39,9 @@ Audio_item::get_column () const
 }
 
 Audio_item::Audio_item ()
+  : audio_column_ (0)
+  , channel_ (0)
 {
-  audio_column_ = 0;
 }
 
 Audio_note::Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposing)
index 3ca1910abc8f86d290f27383275d0fdc552f941c..b827b8b377be9130134cba00a59ad4026a169c10 100644 (file)
 #include "midi-walker.hh"
 
 void
-Audio_staff::add_audio_item (Audio_item *l)
+Audio_staff::add_audio_item (Audio_item *ai)
 {
-  audio_items_.push_back (l);
+  audio_items_.push_back (ai);
 }
 
 Audio_staff::Audio_staff ()
+  : percussion_ (false)
 {
-  channel_ = -1; 
 }
 
 void
-Audio_staff::output (Midi_stream &midi_stream, int channel)
+Audio_staff::output (Midi_stream &midi_stream, int track)
 {
   Midi_track midi_track;
-  midi_track.number_ = channel;
+  midi_track.number_ = track;
 
-  Midi_walker i (this, &midi_track, channel);
+  Midi_walker i (this, &midi_track);
   for (; i.ok (); i++)
     i.process ();
 
index 520d024516a5f350eee316028114e2684f61ab90..0b399fd2482e5fa8ef9da603a416471dd9281ac8 100644 (file)
@@ -773,11 +773,11 @@ Axis_group_interface::calc_maybe_pure_staff_staff_spacing (Grob *me, bool pure,
 
   if (grouper)
     {
-      Grob *last_in_group = Staff_grouper_interface::get_maybe_pure_last_grob (grouper, pure, start, end);
-      if (me == last_in_group)
-       return grouper->get_maybe_pure_property ("staffgroup-staff-spacing", pure, start, end);
-      else
+      bool within_group = Staff_grouper_interface::maybe_pure_within_group (grouper, me, pure, start, end);
+      if (within_group)
        return grouper->get_maybe_pure_property ("staff-staff-spacing", pure, start, end);
+      else
+       return grouper->get_maybe_pure_property ("staffgroup-staff-spacing", pure, start, end);
     }
   return me->get_maybe_pure_property ("default-staff-staff-spacing", pure, start, end);
 }
index f4efd4c4894a7b827e62b4a203a312daa8da0c28..1dfab523a8bc54cc77dfe60a69b049344e6627cb 100644 (file)
 
 #include "text-interface.hh"
 #include "grob.hh"
+#include "item.hh"
 #include "line-interface.hh"
 #include "lookup.hh"
 #include "font-interface.hh"
 #include "lily-guile.hh"
 #include "output-def.hh"
 #include "misc.hh"
+#include "spanner.hh"
 
 class Balloon_interface
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
+  DECLARE_SCHEME_CALLBACK (print_spanner, (SCM));
   DECLARE_GROB_INTERFACE ();
+
+  static SCM internal_balloon_print (Grob *me, Grob *p, Offset off);
 };
 
 MAKE_SCHEME_CALLBACK (Balloon_interface, print, 1);
@@ -39,19 +44,67 @@ Balloon_interface::print (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
 
+  if (Item *item = dynamic_cast<Item *> (me))
+    if (!Item::break_visible (item))
+      return SCM_EOL;
+
   Grob *p = me->get_parent (X_AXIS);
-  
+
   Offset off (me->relative_coordinate (p, X_AXIS),
              me->relative_coordinate (p, Y_AXIS));
 
+  return internal_balloon_print (me, p, off);
+}
+
+// ugh...code dup...hopefully can be consolidated w/ above one day
+MAKE_SCHEME_CALLBACK (Balloon_interface, print_spanner, 1);
+SCM
+Balloon_interface::print_spanner (SCM smob)
+{
+  Spanner *me = unsmob_spanner (smob);
+  Grob *orig = me->original ();
+
+  if (orig)
+    {
+      // TODO : consolidate code dup from System::get_footnote_grobs_in_range
+      int pos = orig->spanned_rank_interval ()[LEFT];
+      Real spanner_placement = min (1.0,
+                                    max (robust_scm2double (me->get_property ("spanner-placement"), -1.0),
+                                         -1.0));
+
+      spanner_placement = (spanner_placement + 1.0) / 2.0;
+      int rpos = orig->spanned_rank_interval ()[RIGHT];
+      pos = (int)((rpos - pos) * spanner_placement + pos + 0.5);
+
+      if (pos < me->spanned_rank_interval () [LEFT])
+        return SCM_EOL;
+      if (pos >= me->spanned_rank_interval () [RIGHT] && (me->spanned_rank_interval () [RIGHT] != orig->spanned_rank_interval () [RIGHT]))
+        return SCM_EOL;
+    }
+
+
+  Spanner *p = dynamic_cast<Spanner *> (me->get_parent (Y_AXIS));
+
+  if (!p)
+    return SCM_EOL;
+
+  Offset off (me->relative_coordinate (me->get_bound (LEFT), X_AXIS),
+             me->relative_coordinate (p, Y_AXIS));
+  return internal_balloon_print (me, p, off);
+}
+
+SCM
+Balloon_interface::internal_balloon_print (Grob *me, Grob *p, Offset off)
+{
   Box b (p->extent (p, X_AXIS),
         p->extent (p, Y_AXIS));
-
   Real padding = robust_scm2double (me->get_property ("padding"), .1);
   b.widen (padding, padding);
 
   // FIXME
-  Stencil fr = Lookup::frame (b, 0.1, 0.05);
+  Stencil fr;
+  if (to_boolean (me->get_property ("annotation-balloon")))
+    fr = Lookup::frame (b, 0.1, 0.05);
 
   SCM bt = me->get_property ("text");
   SCM chain = Font_interface::text_font_alist_chain (me);
@@ -71,7 +124,8 @@ Balloon_interface::print (SCM smob)
 
   Offset z2 = z1 + off;
 
-  fr.add_stencil (Line_interface::line (me, z1, z2));
+  if (to_boolean (me->get_property ("annotation-line")))
+    fr.add_stencil (Line_interface::line (me, z1, z2));
 
   text_stil->translate (z2);
   fr.add_stencil (*text_stil);
@@ -85,7 +139,10 @@ ADD_INTERFACE (Balloon_interface,
               " object.",
 
               /* properties */
+              "annotation-balloon "
+              "annotation-line "
               "padding "
+              "spanner-placement "
               "text "
               );
 
index 59b47ab5252a244e6c715cbbcc51ea8827fbed06..3002d48bb91eca7253e1bfaaa9967d5c4b000b60 100644 (file)
@@ -45,12 +45,13 @@ struct Pending_tie
 {
   Moment when_;
   Stream_event* tie_event_;
-  Pending_tie() { tie_event_ = 0; }
+  Pending_tie () : tie_event_ (0) {}
 };
 
-int compare(Pending_tie const &a, Pending_tie const &b)
+static int
+compare (Pending_tie const &a, Pending_tie const &b)
 {
-  return compare(a.when_, b.when_);
+  return compare (a.when_, b.when_);
 }
 
 
@@ -73,20 +74,17 @@ class Completion_heads_engraver : public Engraver
 {
   vector<Item*> notes_;
   vector<Item*> prev_notes_;
-
   // Must remember notes for explicit ties.
   vector<Item*> tie_note_candidates_;
   vector<Stream_event*> tie_note_candidate_events_;
   vector<Grob*> ties_;
   PQueue<Pending_tie> pending_ties_;
   vector<Stream_event*> note_events_;
-
   Stream_event *current_tie_event_;
   Moment note_end_mom_;
   bool is_first_;
   Rational left_to_do_;
   Rational do_nothing_until_;
-
   Rational factor_;
 
   Moment next_barline_moment ();
@@ -194,7 +192,10 @@ Completion_heads_engraver::process_music ()
        note that note_dur may be strictly less than left_to_do_
        (say, if left_to_do_ == 5/8)
       */
-      note_dur = Duration (left_to_do_ / factor_, false).compressed (factor_);
+      if (factor_.denominator () == 1 && factor_ > Rational (1, 1))
+       note_dur = Duration (left_to_do_, false);
+      else
+       note_dur = Duration (left_to_do_ / factor_, false).compressed (factor_);
     }
   else
     {
@@ -205,7 +206,12 @@ Completion_heads_engraver::process_music ()
     }
   Moment nb = next_barline_moment ();
   if (nb.main_part_ && nb < note_dur.get_length ())
-    note_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_);
+    {
+      if (factor_.denominator () == 1 && factor_ > Rational (1, 1))
+       note_dur = Duration (nb.main_part_, false);
+      else
+       note_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_);
+    }
 
   do_nothing_until_ = now.main_part_ + note_dur.get_length ();
 
@@ -218,14 +224,10 @@ Completion_heads_engraver::process_music ()
        event = event->clone ();
 
       SCM pits = note_events_[i]->get_property ("pitch");
-      Duration appearance = note_dur;
-      if (factor_.denominator () == 1 && factor_ > Rational (1, 1))
-       appearance = Duration (note_dur.get_length (), false);
-
       event->set_property ("pitch", pits);
-      event->set_property ("duration", appearance.smobbed_copy ());
-      event->set_property ("length", Moment (appearance.get_length ()).smobbed_copy ());
-      event->set_property ("duration-log", scm_from_int (appearance.duration_log ()));
+      event->set_property ("duration", note_dur.smobbed_copy ());
+      event->set_property ("length", Moment (note_dur.get_length ()).smobbed_copy ());
+      event->set_property ("duration-log", scm_from_int (note_dur.duration_log ()));
 
       Item *note = make_note_head (event);
       if (need_clone)
@@ -311,18 +313,17 @@ ADD_TRANSLATOR (Completion_heads_engraver,
                /* doc */
                "This engraver replaces @code{Note_heads_engraver}.  It plays"
                " some trickery to break long notes and automatically tie them"
-               " into the next measure.",
-
+               " into the next measure."
+               ,
                /* create */
                "NoteHead "
-               "Dots "
-               "Tie ",
-
+               "Tie "
+               ,
                /* read */
                "middleCPosition "
                "measurePosition "
-               "measureLength ",
-
+               "measureLength "
+               ,
                /* write */
                "completionBusy "
                );
diff --git a/lily/completion-rest-engraver.cc b/lily/completion-rest-engraver.cc
new file mode 100644 (file)
index 0000000..3d8d721
--- /dev/null
@@ -0,0 +1,249 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+                           Jan Nieuwenhuizen <janneke@gnu.org>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <cctype>
+using namespace std;
+
+#include "dot-column.hh"
+#include "dots.hh"
+#include "duration.hh"
+#include "global-context.hh"
+#include "item.hh"
+#include "output-def.hh"
+#include "pitch.hh"
+#include "pqueue.hh"
+#include "rhythmic-head.hh"
+#include "score-engraver.hh"
+#include "spanner.hh"
+#include "staff-symbol-referencer.hh"
+#include "stream-event.hh"
+#include "tie.hh"
+#include "warn.hh"
+
+#include "translator.icc"
+
+/*
+  How does this work?
+
+  When we catch the rest, we predict the end of the rest. We keep the
+  events living until we reach the predicted end-time.
+
+  Every time process_music () is called and there are rest events, we
+  figure out how long the rest to typeset should be. It should be no
+  longer than what's specified, than what is left to do and it should
+  not cross barlines.
+
+  We copy the events into scratch rest events, to make sure that we get
+  all durations exactly right.
+*/
+
+class Completion_rest_engraver : public Engraver
+{
+  vector<Item*> rests_;
+  vector<Item*> prev_rests_;
+  vector<Stream_event*> rest_events_;
+  Moment rest_end_mom_;
+  bool is_first_;
+  Rational left_to_do_;
+  Rational do_nothing_until_;
+  Rational factor_;
+
+  Moment next_barline_moment ();
+  Item *make_rest (Stream_event*);
+
+public:
+  TRANSLATOR_DECLARATIONS (Completion_rest_engraver);
+
+protected:
+  virtual void initialize ();
+  void start_translation_timestep ();
+  void process_music ();
+  void stop_translation_timestep ();
+  DECLARE_TRANSLATOR_LISTENER (rest);
+};
+
+void
+Completion_rest_engraver::initialize ()
+{
+  is_first_ = false;
+}
+
+IMPLEMENT_TRANSLATOR_LISTENER (Completion_rest_engraver, rest);
+void
+Completion_rest_engraver::listen_rest (Stream_event *ev)
+{
+  rest_events_.push_back (ev);
+  
+  is_first_ = true;
+  Moment now = now_mom ();
+  Moment musiclen = get_event_length (ev, now);
+
+  rest_end_mom_ = max (rest_end_mom_, (now + musiclen));
+  do_nothing_until_ = Rational (0, 0);
+}
+
+/*
+  The duration _until_ the next barline.
+*/
+Moment
+Completion_rest_engraver::next_barline_moment ()
+{
+  Moment *e = unsmob_moment (get_property ("measurePosition"));
+  Moment *l = unsmob_moment (get_property ("measureLength"));
+  if (!e || !l || !to_boolean (get_property ("timing")))
+    {
+      return Moment (0, 0);
+    }
+
+  return (*l - *e);
+}
+
+Item*
+Completion_rest_engraver::make_rest (Stream_event *ev)
+{
+  Item *rest = make_item ("Rest", ev->self_scm ());
+  if (Pitch *p = unsmob_pitch (ev->get_property ("pitch")))
+    {
+      int pos = p->steps ();
+      SCM c0 = get_property ("middleCPosition");
+      if (scm_is_number (c0))
+       pos += scm_to_int (c0);
+      rest->set_property ("staff-position", scm_from_int (pos));
+    }
+
+  return rest;
+}
+
+void
+Completion_rest_engraver::process_music ()
+{
+  if (!is_first_ && !left_to_do_)
+    return;
+
+  is_first_ = false;
+
+  Moment now = now_mom ();
+  if (do_nothing_until_ > now.main_part_)
+    return;
+
+  Duration rest_dur;
+  Duration appearance;
+  Duration *orig = 0;
+  if (left_to_do_)
+    {
+      /*
+       rest that rest_dur may be strictly less than left_to_do_
+       (say, if left_to_do_ == 5/8)
+      */
+      if (factor_.denominator () == 1 && factor_ > Rational (1, 1))
+       rest_dur = Duration (left_to_do_, false);
+      else
+       rest_dur = Duration (left_to_do_ / factor_, false).compressed (factor_);
+      appearance = Duration (left_to_do_, false);
+    }
+  else
+    {
+      orig = unsmob_duration (rest_events_[0]->get_property ("duration"));
+      rest_dur = *orig;
+      factor_ = rest_dur.factor ();
+      left_to_do_ = orig->get_length ();
+    }
+  Moment nb = next_barline_moment ();
+  if (nb.main_part_ && nb < rest_dur.get_length ())
+    {
+      if (factor_.denominator () == 1 && factor_ > Rational (1, 1))
+       rest_dur = Duration (nb.main_part_, false);
+      else
+       rest_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_);
+    }
+
+  do_nothing_until_ = now.main_part_ + rest_dur.get_length ();
+
+  for (vsize i = 0; left_to_do_ && i < rest_events_.size (); i++)
+    {
+      bool need_clone = !orig || *orig != rest_dur;
+      Stream_event *event = rest_events_[i];
+
+      if (need_clone)
+       event = event->clone ();
+
+      SCM pits = rest_events_[i]->get_property ("pitch");
+      event->set_property ("pitch", pits);
+      event->set_property ("duration", rest_dur.smobbed_copy ());
+      event->set_property ("length", Moment (rest_dur.get_length ()).smobbed_copy ());
+      event->set_property ("duration-log", scm_from_int (rest_dur.duration_log ()));
+
+      Item *rest = make_rest (event);
+      if (need_clone)
+       event->unprotect ();
+      rests_.push_back (rest);
+    }
+  
+  left_to_do_ -= rest_dur.get_length ();
+  if (left_to_do_)
+    get_global_context ()->add_moment_to_process (now.main_part_ + rest_dur.get_length());
+  /*
+    don't do complicated arithmetic with grace rests.
+  */
+  if (orig && now_mom ().grace_part_)
+    left_to_do_ = Rational (0, 0);
+}
+
+void
+Completion_rest_engraver::stop_translation_timestep ()
+{
+  if (rests_.size ())
+    prev_rests_ = rests_;
+  rests_.clear ();
+}
+
+void
+Completion_rest_engraver::start_translation_timestep ()
+{
+  Moment now = now_mom ();
+  if (rest_end_mom_.main_part_ <= now.main_part_)
+    {
+      rest_events_.clear ();
+      prev_rests_.clear ();
+    }
+  context ()->set_property ("restCompletionBusy",
+                           ly_bool2scm (rest_events_.size ()));
+}
+
+Completion_rest_engraver::Completion_rest_engraver ()
+{
+}
+
+ADD_TRANSLATOR (Completion_rest_engraver,
+               /* doc */
+               "This engraver replaces @code{Rest_engraver}.  It plays"
+               " some trickery to break long rests into the next measure."
+               ,
+               /* create */
+               "Rest "
+               ,
+               /* read */
+               "middleCPosition "
+               "measurePosition "
+               "measureLength "
+               ,
+               /* write */
+               "restCompletionBusy "
+               );
index fdcd64586600f5c3c50cfc66c2f169f390393e54..f6f84b80907714907d218525deb8c868a95f397e 100644 (file)
@@ -519,6 +519,8 @@ Constrained_breaking::fill_line_details (Line_details *const out, vsize start, v
   out->title_space_ = system_markup_space_;
   out->inverse_hooke_ = out->full_height () + system_system_space_;
 
+  out->footnotes_ = sys->get_footnotes_in_range (start_rank, end_rank);
+
   out->refpoint_extent_ = sys->pure_refpoint_extent (start_rank, end_rank);
   if (out->refpoint_extent_.is_empty ())
     out->refpoint_extent_ = Interval (0, 0);
@@ -550,6 +552,11 @@ Line_details::Line_details (Prob *pb, Output_def *paper)
   Page_layout_problem::read_spacing_spec (spec, &min_distance_, ly_symbol2scm ("minimum-distance"));
   Page_layout_problem::read_spacing_spec (title_spec, &title_min_distance_, ly_symbol2scm ("minimum-distance"));
 
+  SCM footnotes = pb->get_property ("footnotes");
+  if (scm_is_pair (footnotes))
+    for (SCM s = footnotes; scm_is_pair (s); s = scm_cdr (s))
+      footnotes_.push_back (unsmob_stencil (scm_car (s)));
+
   last_column_ = 0;
   force_ = 0;
   Interval stencil_extent = unsmob_stencil (pb->get_property ("stencil"))->extent (Y_AXIS);
index 43498089d003fd96d1d066bcdc5af61825f219a9..f62c45f0dc6d3adec09cccf6e700fa1722806a24 100644 (file)
@@ -37,6 +37,7 @@ class Dynamic_align_engraver : public Engraver
   DECLARE_TRANSLATOR_LISTENER (break_span);
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_ACKNOWLEDGER (dynamic);
+  DECLARE_ACKNOWLEDGER (footnote_spanner);
   DECLARE_END_ACKNOWLEDGER (dynamic);
 
 protected:
@@ -63,6 +64,7 @@ Dynamic_align_engraver::Dynamic_align_engraver ()
 
 ADD_ACKNOWLEDGER (Dynamic_align_engraver, dynamic);
 ADD_ACKNOWLEDGER (Dynamic_align_engraver, note_column);
+ADD_ACKNOWLEDGER (Dynamic_align_engraver, footnote_spanner);
 ADD_END_ACKNOWLEDGER (Dynamic_align_engraver, dynamic);
 
 void
@@ -80,6 +82,15 @@ Dynamic_align_engraver::acknowledge_end_dynamic (Grob_info info)
     ended_.push_back (info.spanner ());
 }
 
+void
+Dynamic_align_engraver::acknowledge_footnote_spanner (Grob_info info)
+{
+  Grob *parent = info.grob ()->get_parent (Y_AXIS);
+  if (line_ && parent
+      && parent->internal_has_interface (ly_symbol2scm ("dynamic-interface")))
+    Axis_group_interface::add_element (line_, info.grob ());
+}
+
 void
 Dynamic_align_engraver::acknowledge_note_column (Grob_info info)
 {
diff --git a/lily/footnote-engraver.cc b/lily/footnote-engraver.cc
new file mode 100644 (file)
index 0000000..7539bf9
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 2011 Mike Solomon <mike@apollinemike.com>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "engraver.hh"
+
+#include "stream-event.hh"
+#include "item.hh"
+#include "pointer-group-interface.hh"
+#include "spanner.hh"
+
+#include "translator.icc"
+
+class Footnote_engraver : public Engraver
+{
+  TRANSLATOR_DECLARATIONS (Footnote_engraver);
+
+  DECLARE_TRANSLATOR_LISTENER (footnote);
+  DECLARE_ACKNOWLEDGER (grob);
+  DECLARE_END_ACKNOWLEDGER (grob);
+  vector<Stream_event *> events_;
+  vector<Drul_array<Spanner *> > annotated_spanners_;
+
+  void stop_translation_timestep ();
+
+  void footnotify (Grob *, Stream_event *);
+};
+
+IMPLEMENT_TRANSLATOR_LISTENER (Footnote_engraver, footnote);
+void
+Footnote_engraver::listen_footnote (Stream_event *ev)
+{
+  events_.push_back (ev);
+}
+
+void
+Footnote_engraver::stop_translation_timestep ()
+{
+  events_.clear ();
+}
+
+Footnote_engraver::Footnote_engraver ()
+{
+}
+
+void
+Footnote_engraver::footnotify (Grob *g, Stream_event *event)
+{
+  Spanner *s = dynamic_cast<Spanner *>(g);
+
+  if (s)
+    {
+      Spanner *b = make_spanner ("FootnoteSpanner", event->self_scm ());
+      b->set_parent (s, Y_AXIS);
+      b->set_parent (s, X_AXIS);
+      Grob *bound = unsmob_grob (get_property ("currentMusicalColumn"));
+      b->set_bound (LEFT, bound);
+      annotated_spanners_.push_back (Drul_array<Spanner *> (s,b));
+    }
+  else
+    {
+      Grob *b = make_item ("FootnoteItem", event->self_scm ());
+      b->set_parent (g, Y_AXIS);
+      b->set_parent (g, X_AXIS);
+    }
+}
+
+void
+Footnote_engraver::acknowledge_grob (Grob_info info)
+{
+  Stream_event *cause = info.event_cause ();
+
+  SCM arts = cause ? cause->get_property ("articulations") : SCM_EOL;
+  for (SCM s = arts; scm_is_pair (s); s = scm_cdr (s))
+    {
+      Stream_event *e = unsmob_stream_event (scm_car (s));
+      if (e->in_event_class ("footnote-event"))
+         footnotify (info.grob (), e);
+    }
+
+  for (vsize i = 0; i < events_.size (); i++)
+    {
+      if (info.grob ()->name () == ly_symbol2string (events_[i]->get_property ("symbol")))
+       footnotify (info.grob (), events_[i]);
+    }
+}
+
+void
+Footnote_engraver::acknowledge_end_grob (Grob_info info)
+{
+  Spanner *s = dynamic_cast<Spanner *>(info.grob ());
+
+  if (s)
+    for (vsize i = 0; i < annotated_spanners_.size (); i++)
+      {
+        if (annotated_spanners_[i][LEFT] == s)
+          {
+            Grob *bound = unsmob_grob (get_property ("currentMusicalColumn"));
+            annotated_spanners_[i][RIGHT]->set_bound (RIGHT, bound);
+            break;
+          }
+      }
+}
+
+ADD_ACKNOWLEDGER (Footnote_engraver, grob);
+ADD_END_ACKNOWLEDGER (Footnote_engraver, grob);
+
+ADD_TRANSLATOR (Footnote_engraver,
+              /* doc */
+              "Create footnote texts.",
+
+              /* create */
+              "FootnoteItem "
+              "FootnoteSpanner ",
+
+              /*read*/
+              "currentMusicalColumn ",
+
+              /*write*/
+              ""
+              );
index 6bf0cb4a6aaaa6bcba61ffd0e2e9e12578dbd75f..525544dc1df0f86db111081a24cfc465a99358c0 100644 (file)
 class Audio_item : public Audio_element
 {
 public:
-  Audio_item ();
   Audio_column *audio_column_;
+  int channel_;
+
+  Audio_item ();
   Audio_column *get_column () const;
 
   virtual void render ();
index 47a58177b458cbe7347899fbe1efde6e6e2a5e90..a76854ddb1c28e3822a4bc51db89090974ad6379 100644 (file)
 
 struct Audio_staff : public Audio_element
 {
-  void add_audio_item (Audio_item *l);
+  void add_audio_item (Audio_item *ai);
   void output (Midi_stream &midi_stream_r, int track);
 
   Audio_staff ();
   
+  bool percussion_;
   vector<Audio_item*> audio_items_;
-  int channel_;
 };
 
 #endif // AUDIO_STAFF_HH
index fc1b44e41f586f2f830edf47cf0e107007736ee8..d0e631d901447f3f26cfd6cb5d5fb49dbba291b4 100644 (file)
@@ -44,6 +44,9 @@ struct Line_details {
   Grob *last_column_;
   Real force_;
   Line_shape shape_;
+  vector<Stencil *> footnotes_; /* The footnotes at the bottom of the
+                                   page, where each stencil represents
+                                   a different footnote. */
   Interval refpoint_extent_; /* The refpoints of the first and last
                                spaceable staff in this line.  min-distance
                                should be measured from the bottom
index f77f9c8507debc98ec5060b219843eaad5f52122..cc59ed0abe1c165511408dfe82d4bde628ffb940 100644 (file)
@@ -33,7 +33,7 @@ string int2midi_varint_string (int i);
 class Midi_item
 {
 public:
-  DECLARE_CLASSNAME(Midi_item);
+  DECLARE_CLASSNAME (Midi_item);
   Midi_item ();
   virtual ~Midi_item ();
   virtual char const *name () const;
@@ -48,8 +48,8 @@ class Midi_channel_item : public Midi_item
 {
 public:
   int channel_;
-  DECLARE_CLASSNAME(Midi_channel_item);
-  Midi_channel_item ();
+  DECLARE_CLASSNAME (Midi_channel_item);
+  Midi_channel_item (Audio_item *ai);
 };
 
 class Midi_duration : public Midi_item
@@ -70,7 +70,7 @@ class Midi_instrument : public Midi_channel_item
 public:
   Midi_instrument (Audio_instrument *);
 
-  DECLARE_CLASSNAME(Midi_instrument);
+  DECLARE_CLASSNAME (Midi_instrument);
   virtual string to_string () const;
 
   Audio_instrument *audio_;
@@ -80,7 +80,7 @@ class Midi_key : public Midi_item
 {
 public:
   Midi_key (Audio_key *);
-  DECLARE_CLASSNAME(Midi_key);
+  DECLARE_CLASSNAME (Midi_key);
 
   virtual string to_string () const;
 
@@ -91,7 +91,7 @@ class Midi_time_signature : public Midi_item
 {
 public:
   Midi_time_signature (Audio_time_signature *);
-  DECLARE_CLASSNAME(Midi_time_signature);
+  DECLARE_CLASSNAME (Midi_time_signature);
 
   virtual string to_string () const;
 
@@ -103,7 +103,7 @@ class Midi_note : public Midi_channel_item
 {
 public:
   Midi_note (Audio_note *);
-  DECLARE_CLASSNAME(Midi_note);
+  DECLARE_CLASSNAME (Midi_note);
 
   int get_semitone_pitch () const;
   int get_fine_tuning () const;
@@ -120,7 +120,7 @@ class Midi_note_off : public Midi_note
 {
 public:
   Midi_note_off (Midi_note *);
-  DECLARE_CLASSNAME(Midi_note_off);
+  DECLARE_CLASSNAME (Midi_note_off);
 
   virtual string to_string () const;
 
@@ -136,7 +136,7 @@ public:
       TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
       MARKER, CUE_POINT
     };
-  DECLARE_CLASSNAME(Midi_text);
+  DECLARE_CLASSNAME (Midi_text);
 
   Midi_text (Audio_text *);
 
@@ -149,7 +149,7 @@ class Midi_dynamic : public Midi_channel_item
 {
 public:
   Midi_dynamic (Audio_dynamic *);
-  DECLARE_CLASSNAME(Midi_dynamic);
+  DECLARE_CLASSNAME (Midi_dynamic);
 
   virtual string to_string () const;
 
@@ -160,7 +160,7 @@ class Midi_piano_pedal : public Midi_channel_item
 {
 public:
   Midi_piano_pedal (Audio_piano_pedal *);
-  DECLARE_CLASSNAME(Midi_piano_pedal);
+  DECLARE_CLASSNAME (Midi_piano_pedal);
 
   virtual string to_string () const;
 
@@ -171,13 +171,11 @@ class Midi_tempo : public Midi_item
 {
 public:
   Midi_tempo (Audio_tempo *);
-  DECLARE_CLASSNAME(Midi_tempo);
+  DECLARE_CLASSNAME (Midi_tempo);
 
   virtual string to_string () const;
 
   Audio_tempo *audio_;
 };
 
-
-
 #endif // MIDI_ITEM_HH
index 15f573cbaca5206bfd4569346678e59dcfcbc766..4fd1ae39fc643a6da565dc9b24aef02039209fdb 100644 (file)
@@ -39,22 +39,22 @@ int compare (Midi_note_event const &left, Midi_note_event const &right);
 class Midi_walker
 {
 public:
-  Midi_walker (Audio_staff *audio_staff, Midi_track *midi_track,
-              int channel);
+  Midi_walker (Audio_staff *audio_staff, Midi_track *midi_track);
   ~Midi_walker ();
 
   void process ();
   void operator ++ (int);
   bool ok () const;
   void finalize ();
+
 private:
   void do_start_note (Midi_note *note);
   void do_stop_notes (int);
   void output_event (int, Midi_item *l);
   Midi_item *get_midi (Audio_item*); 
-  int channel_;
   Midi_track *track_;
   Audio_staff *staff_;
+  bool percussion_;
   vsize index_;
   vector<Audio_item*> items_;
   PQueue<Midi_note_event> stop_note_queue;
index b34b6c4c84a14e481a5a225cdd519634f632af62..fa68c6175207068f4543498ec5262ca1fc352089 100644 (file)
@@ -124,6 +124,8 @@ public:
   Real page_height (int page_number, bool last) const;
   Real paper_height () const;
   vsize system_count () const;
+  Real footnote_separator_stencil_height () const;
+  Real footnote_padding () const;
   Real line_count_penalty (int line_count) const;
   int line_count_status (int line_count) const;
   bool too_many_lines (int line_count) const;
@@ -145,6 +147,7 @@ protected:
 
   void break_into_pieces (vsize start, vsize end, Line_division const &div);
   SCM systems ();
+  SCM footnotes ();
 
   void set_current_breakpoints (vsize start,
                                vsize end,
@@ -184,6 +187,8 @@ private:
   int max_systems_per_page_;
   int min_systems_per_page_;
   vsize system_count_;
+  Real footnote_separator_stencil_height_;
+  Real footnote_padding_;
   int orphan_penalty_;
 
   vector<Line_division> current_configurations_;
index 941ccef2a793dd59fa4d05f8ff1f4d8cbb6a5366..fb1c7c373d4a1ad72252f8ebd2c4b8294aeeb7d0 100644 (file)
@@ -34,8 +34,11 @@ public:
   static bool read_spacing_spec (SCM spec, Real* dest, SCM sym);
   static bool is_spaceable (Grob *g);
   static SCM get_details (Grob *g);
+  static SCM get_footnotes_from_lines (SCM lines, Real padding);
+  static Stencil* get_footnote_separator_stencil (Output_def *paper);
   static SCM get_spacing_spec (Grob *before, Grob *after, bool pure, int start, int end);
   static Real get_fixed_spacing (Grob *before, Grob *after, int spaceable_index, bool pure, int start, int end);
+  static void add_footnotes_to_footer (SCM footnotes, Stencil *foot, Paper_book *pb);
 
 protected:
   void append_system (System*, Spring const&, Real indent, Real padding);
index be261735aa2f61ae608220bb280178ca9c76dfb1..206bcbf426bb4193ab7c0bdf03c3665c01711229 100644 (file)
@@ -102,6 +102,7 @@ struct Page_spacing
   Real rod_height_;
   Real spring_len_;
   Real inverse_spring_k_;
+  bool has_footnotes_;
 
   Line_details last_line_;
   Line_details first_line_;
@@ -111,11 +112,13 @@ struct Page_spacing
   {
     page_height_ = page_height;
     breaker_ = breaker;
+    has_footnotes_ = false;
     clear ();
   }
 
   void calc_force ();
   void resize (Real new_height);
+  Real account_for_footnotes (Line_details const &line);
   void append_system (const Line_details &line);
   void prepend_system (const Line_details &line);
   void clear ();
index 96053d8d03de635d3c6f07d9a36ca624f73344e8..1aaa530b8a916b37288f3ed7efe43ac3bd0c8636 100644 (file)
@@ -30,5 +30,6 @@
 */
 Prob *make_paper_system (SCM immutable_init);
 void paper_system_set_stencil (Prob *prob, Stencil s);
+SCM get_footnotes (SCM expr);
 
 #endif /* PAPER_SYSTEM_HH */
index 3562ca0e5d2063b1196ba6781dd6804df39f02c7..d26169e4bd6107d05cc99cd888e65560eaf72b59 100644 (file)
@@ -27,7 +27,7 @@ class Staff_grouper_interface
 public:
   DECLARE_GROB_INTERFACE ();
 
-  static Grob *get_maybe_pure_last_grob (Grob *, bool, int, int);
+  static bool maybe_pure_within_group (Grob *, Grob *child, bool, int, int);
 };
 
 #endif /* STAFF_GROUPER_INTERFACE_HH */
index 882f209f9680b052afa354d72a99d5be11c312ef..940f6a5fb876e1b2ca76cc58280f714b570f9757 100644 (file)
@@ -36,7 +36,9 @@ class System : public Spanner
   void init_elements ();
   friend class Paper_score;    // ugh.
   Paper_score *pscore_;        // ugh.
-  
+  bool checked_footnotes_;
+  vector<Grob *> footnote_grobs_; // TODO: make this a grob array
+
 public:
   Paper_score *paper_score () const;
   Grob *get_vertical_alignment ();
@@ -44,11 +46,16 @@ public:
   Grob *get_pure_bound (Direction dir, int start, int end);
   Grob *get_maybe_pure_bound (Direction dir, bool pure, int start, int end);
   int get_rank () const;
+  vector<Stencil *> get_footnotes_in_range (vsize st, vsize end);
+  void get_footnote_grobs_in_range (vector<Grob *> &out, vsize st, vsize end);
+  Stencil make_footnote_stencil (Real padding);
   void do_break_substitution_and_fixup_refpoints ();
   void post_processing ();
+  void populate_footnote_grob_vector ();
   SCM get_paper_system ();
   SCM get_paper_systems ();
   SCM get_broken_system_grobs ();
+  SCM get_broken_footnote_stencils ();
 
   DECLARE_SCHEME_CALLBACK (calc_pure_relevant_grobs, (SCM));
   DECLARE_SCHEME_CALLBACK (height, (SCM));
index b3b064b67ac300d88124467978bfa0f66bc5f8e3..ab67947d553e67e99c80acfe2d474ef0b4e5890e 100644 (file)
@@ -72,8 +72,9 @@ Midi_duration::to_string () const
 }
 
 Midi_instrument::Midi_instrument (Audio_instrument *a)
+  : Midi_channel_item (a)
+  , audio_ (a)
 {
-  audio_ = a;
   audio_->str_ = String_convert::to_lower (audio_->str_);
 }
 
@@ -100,9 +101,9 @@ Midi_item::Midi_item ()
 {
 }
 
-Midi_channel_item::Midi_channel_item ()
+Midi_channel_item::Midi_channel_item (Audio_item *ai)
+  : channel_ (ai->channel_)
 {
-  channel_ = 0;
 }
 
 Midi_item::~Midi_item ()
@@ -133,8 +134,8 @@ int2midi_varint_string (int i)
 }
 
 Midi_key::Midi_key (Audio_key *a)
+  : audio_ (a)
 {
-  audio_ = a;
 }
 
 string
@@ -150,9 +151,9 @@ Midi_key::to_string () const
 }
 
 Midi_time_signature::Midi_time_signature (Audio_time_signature *a)
+  : audio_ (a)
+  , clocks_per_1_ (18)
 {
-  audio_ = a;
-  clocks_per_1_ = 18;
 }
 
 string
@@ -178,12 +179,12 @@ Midi_time_signature::to_string () const
 }
 
 Midi_note::Midi_note (Audio_note *a)
+  : Midi_channel_item (a)
+  , audio_ (a)
+  , dynamic_byte_ (0x5a)
 {
-  audio_ = a;
-  dynamic_byte_ = 0x5a;
 }
 
-
 int
 Midi_note::get_fine_tuning () const
 {
@@ -262,8 +263,9 @@ Midi_note_off::to_string () const
 }
 
 Midi_dynamic::Midi_dynamic (Audio_dynamic *a)
+  : Midi_channel_item (a)
+  , audio_ (a)
 {
-  audio_ = a;
 }
 
 string
@@ -291,8 +293,9 @@ Midi_dynamic::to_string () const
 }
 
 Midi_piano_pedal::Midi_piano_pedal (Audio_piano_pedal *a)
+  : Midi_channel_item (a)
+  , audio_ (a)
 {
-  audio_ = a;
 }
 
 string
@@ -314,8 +317,8 @@ Midi_piano_pedal::to_string () const
 }
 
 Midi_tempo::Midi_tempo (Audio_tempo *a)
+  : audio_ (a)
 {
-  audio_ = a;
 }
 
 string
@@ -328,8 +331,8 @@ Midi_tempo::to_string () const
 }
 
 Midi_text::Midi_text (Audio_text *a)
+  : audio_ (a)
 {
-  audio_ = a;
 }
 
 string
index 6476220f7a69a07a60aa49c7dbdb9ca0a7858a45..fdafd91b1d3a6252a13dcc0b6d3644a00ba94688 100644 (file)
@@ -52,15 +52,14 @@ audio_item_less (Audio_item * const a,
   return a->get_column ()->when_ <  b->get_column ()->when_;
 }
 
-Midi_walker::Midi_walker (Audio_staff *audio_staff, Midi_track *track,
-                         int channel)
+Midi_walker::Midi_walker (Audio_staff *audio_staff, Midi_track *track)
 {
-  channel_ = channel;
   track_ = track;
   index_ = 0;
   items_ = audio_staff->audio_items_;
   vector_sort (items_, audio_item_less);
   last_tick_ = 0;
+  percussion_ = audio_staff->percussion_;
 }
 
 Midi_walker::~Midi_walker ()
@@ -171,9 +170,6 @@ Midi_walker::process ()
 
   if (Midi_item *midi = get_midi (audio))
     {
-      if (Midi_channel_item *mci = dynamic_cast<Midi_channel_item*> (midi))
-       mci->channel_ = channel_;
-      
       if (Midi_note *note = dynamic_cast<Midi_note *> (midi))
        {
          if (note->audio_->length_mom_.to_bool ())
@@ -188,6 +184,11 @@ Midi_item*
 Midi_walker::get_midi (Audio_item *i)
 {
   Midi_item *mi = Midi_item::get_midi (i);
+
+  if (percussion_)
+    if (Midi_channel_item *mci = dynamic_cast<Midi_channel_item*> (mi))
+      mci->channel_ = 9;
+
   midi_events_.push_back (mi);
   return mi;
 }
index 4e386b81832186cf48f7014f0b879b025cb616db..80702f59ba2e3517aa8afd8fd1f3acb9d790a9af 100644 (file)
 
 #include "international.hh"
 #include "item.hh"
+#include "line-interface.hh"
 #include "output-def.hh"
 #include "page-layout-problem.hh"
 #include "page-spacing.hh"
 #include "paper-book.hh"
 #include "paper-score.hh"
 #include "paper-system.hh"
+#include "text-interface.hh"
 #include "system.hh"
 #include "warn.hh"
 
@@ -178,7 +180,12 @@ compress_lines (const vector<Line_details> &orig)
 
          // compressed.title_ is true if and only if the first of its
          // compressed lines was a title.
-         compressed.title_ = old.title_;
+          compressed.title_ = old.title_;
+
+          // adds footnotes of one line to the footnotes of another
+          compressed.footnotes_.insert (compressed.footnotes_.begin (),
+            old.footnotes_.begin (), old.footnotes_.end ());
+          
          ret.back () = compressed;
        }
       else
@@ -243,6 +250,20 @@ Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break, Prob_bre
   min_systems_per_page_ = max (0, robust_scm2int (pb->paper_->c_variable ("min-systems-per-page"), 0));
   orphan_penalty_ = robust_scm2int (pb->paper_->c_variable ("orphan-penalty"), 100000);
 
+  Stencil *footnote_separator = Page_layout_problem::get_footnote_separator_stencil (pb->paper_);
+
+  if (footnote_separator)
+    {
+      Interval separator_extent = footnote_separator->extent (Y_AXIS);
+      Real separator_span = separator_extent.length ();
+
+      footnote_separator_stencil_height_ = separator_span;
+    }
+  else
+    footnote_separator_stencil_height_ = 0.0;
+
+  footnote_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0);
+
   if (systems_per_page_ && (max_systems_per_page_ || min_systems_per_page_))
     {
       warning (_f ("ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"));
@@ -302,6 +323,18 @@ Page_breaking::system_count () const
   return system_count_;
 }
 
+Real
+Page_breaking::footnote_separator_stencil_height () const
+{
+  return footnote_separator_stencil_height_;
+}
+
+Real
+Page_breaking::footnote_padding () const
+{
+  return footnote_padding_;
+}
+
 bool
 Page_breaking::too_many_lines (int line_count) const
 {
@@ -514,6 +547,12 @@ Page_breaking::draw_page (SCM systems, SCM configuration, int page_num, bool las
   Prob *p = unsmob_prob (page);
   p->set_property ("lines", paper_systems);
   p->set_property ("configuration", configuration);
+
+  Stencil *foot = unsmob_stencil (p->get_property ("foot-stencil"));
+  SCM footnotes = Page_layout_problem::get_footnotes_from_lines (systems, footnote_padding ());
+  Page_layout_problem::add_footnotes_to_footer (footnotes, foot, unsmob_paper_book (p->get_property ("paper-book")));
+
+  p->set_property ("foot-stencil", foot->smobbed_copy ());
   scm_apply_1 (page_stencil, page, SCM_EOL);
 
   return page;
@@ -559,6 +598,7 @@ Page_breaking::make_pages (vector<vsize> lines_per_page, SCM systems)
     {
       SCM lines = scm_caar (s);
       SCM config = scm_cdar (s);
+      
       bool bookpart_last_page = (s == systems_and_configs);
       SCM page = draw_page (lines, config, page_num, bookpart_last_page);
 
index 3aebfd4aac138bd51a524119dd3f3578bd08bd15..c9512fcca83a9d6908ae8237a048f47985a1fc98 100644 (file)
 #include "prob.hh"
 #include "skyline-pair.hh"
 #include "system.hh"
+#include "text-interface.hh"
+
+/*
+   Returns a stencil for the footnote of each system.  This stencil may
+   itself be comprised of several footnotes.
+*/
+
+SCM
+Page_layout_problem::get_footnotes_from_lines (SCM lines, Real padding)
+{
+  SCM footnotes = SCM_EOL;
+  // ugh...code dup from the Page_layout_problem constructor
+  for (SCM s = lines; scm_is_pair (s); s = scm_cdr (s))
+    {
+      if (Grob *g = unsmob_grob (scm_car (s)))
+       {
+         System *sys = dynamic_cast<System *> (g);
+         if (!sys)
+            {
+              programming_error ("got a grob for footnotes that wasn't a System");
+              continue;
+            }
+          footnotes = scm_cons (sys->make_footnote_stencil (padding).smobbed_copy (), footnotes);
+        }
+      else if (Prob *p = unsmob_prob (scm_car (s)))
+        {
+          SCM stencils = p->get_property ("footnotes");
+          if (stencils == SCM_EOL)
+            continue;
+          Stencil footnote_stencil;
+
+          for (SCM st = stencils; scm_is_pair (st); st = scm_cdr (st))
+            footnote_stencil.add_at_edge (Y_AXIS, DOWN, *unsmob_stencil (scm_car (st)), padding);
+          footnotes = scm_cons (footnote_stencil.smobbed_copy (), footnotes);
+        }
+    }
+
+  if (!scm_is_pair (footnotes))
+    return SCM_EOL;
+    
+  return scm_reverse (footnotes);
+}
+
+Stencil*
+Page_layout_problem::get_footnote_separator_stencil (Output_def *paper)
+{
+  SCM props = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"),
+                          paper->self_scm ());
+
+  SCM markup = paper->c_variable ("footnote-separator-markup");
+
+  if (!Text_interface::is_markup (markup))
+    return NULL;
+
+  SCM footnote_stencil = Text_interface::interpret_markup (paper->self_scm (),
+                                                           props, markup);
+
+  Stencil *footnote_separator = unsmob_stencil (footnote_stencil);
+
+  return footnote_separator;
+}
+
+void
+Page_layout_problem::add_footnotes_to_footer (SCM footnotes, Stencil *foot, Paper_book *pb)
+{
+  bool footnotes_found = false;
+  Real footnote_padding = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0);
+  
+  footnotes = scm_reverse (footnotes);
+  for (SCM s = footnotes; scm_is_pair (s); s = scm_cdr (s))
+    {
+      Stencil *stencil = unsmob_stencil (scm_car (s));
+
+      if (!stencil)
+        continue;
+
+      if (!stencil->is_empty ())
+        {
+          foot->add_at_edge (Y_AXIS, UP, *stencil, footnote_padding);
+          footnotes_found = true;
+        }
+    }
+  
+  if (footnotes_found)
+    {
+      Stencil *separator = get_footnote_separator_stencil (pb->paper_);
+      if (separator)
+        foot->add_at_edge (Y_AXIS, UP, *separator, footnote_padding);
+    }
+}
 
 Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM systems)
   : bottom_skyline_ (DOWN)
@@ -47,7 +137,13 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst
     {
       Stencil *head = unsmob_stencil (page->get_property ("head-stencil"));
       Stencil *foot = unsmob_stencil (page->get_property ("foot-stencil"));
-
+      
+      Real footnote_padding = 0.0;
+      if (pb && pb->paper_)
+        footnote_padding = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0);
+      SCM footnotes = get_footnotes_from_lines (systems, footnote_padding);
+      add_footnotes_to_footer (footnotes, foot, pb);
+      
       header_height_ = head ? head->extent (Y_AXIS).length () : 0;
       footer_height_ = foot ? foot->extent (Y_AXIS).length () : 0;
       page_height_ = robust_scm2double (page->get_property ("paper-height"), 100);
@@ -424,7 +520,8 @@ Page_layout_problem::find_system_offsets ()
                      loose_line_min_distances.clear ();
                    }
                  last_spaceable_line = staff;
-                 last_spaceable_line_translation = -solution_[spring_idx - 1];
+                 // Negative is down but the translation is relative to the whole page.
+                 last_spaceable_line_translation = -system_position + translation;
 
                  staff->translate_axis (translation, Y_AXIS);
                  found_spaceable_staff = true;
@@ -435,10 +532,6 @@ Page_layout_problem::find_system_offsets ()
                    loose_lines.push_back (last_spaceable_line);
 
                  if (staff_idx)
-                   // NOTE: the way we do distances between loose lines (and other lines too, actually)
-                   // is not the most accurate way possible: we only insert rods between adjacent
-                   // lines.  To be more accurate, we could insert rods between non-adjacent lines
-                   // using a scheme similar to the one in set_column_rods.
                    loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]);
                  else
                    {
index 17ba73d9239846e49c4e1d8e7fe23345e30e6efe..13c6a0c02a98f45cd0d9208e4a13f2e61fe315c5 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "page-spacing.hh"
 
+#include "international.hh"
 #include "matrix.hh"
 #include "page-breaking.hh"
 #include "warn.hh"
@@ -59,6 +60,7 @@ Page_spacing::append_system (const Line_details &line)
       first_line_ = line;
     }
 
+  rod_height_ += account_for_footnotes (line);
   inverse_spring_k_ += line.inverse_hooke_;
 
   last_line_ = line;
@@ -66,6 +68,25 @@ Page_spacing::append_system (const Line_details &line)
   calc_force ();
 }
 
+Real
+Page_spacing::account_for_footnotes (Line_details const &line)
+{
+  Real footnote_height = 0.0;
+  for (vsize i = 0; i < line.footnotes_.size (); i++)
+    {
+      footnote_height += (has_footnotes_
+                          ? 0.0
+                          : (breaker_->footnote_separator_stencil_height ()
+                             + breaker_->footnote_padding ()));
+
+      has_footnotes_ = true;
+      Interval extent = line.footnotes_[i]->extent (Y_AXIS);
+      footnote_height += extent[UP] - extent[DOWN];
+      footnote_height += breaker_->footnote_padding ();
+    }  
+  return footnote_height;
+}
+
 void
 Page_spacing::prepend_system (const Line_details &line)
 {
@@ -77,7 +98,7 @@ Page_spacing::prepend_system (const Line_details &line)
   rod_height_ -= first_line_.full_height ();
   rod_height_ += first_line_.tallness_;
   rod_height_ += line.full_height();
-
+  rod_height_ += account_for_footnotes (line);
   inverse_spring_k_ += line.inverse_hooke_;
 
   first_line_ = line;
@@ -90,6 +111,7 @@ Page_spacing::clear ()
 {
   force_ = rod_height_ = spring_len_ = 0;
   inverse_spring_k_ = 0;
+  has_footnotes_ = false;
 }
 
 
index 4678ee3895b88d6f8b11bd1e200d213a5dafac8e..7a13120c6464d0f426e8d63fad05cf1d8ef56d1a 100644 (file)
@@ -532,6 +532,9 @@ Paper_book::get_system_specs ()
                          list == texts? SCM_BOOL_T : SCM_BOOL_F);
 
              paper_system_set_stencil (ps, *unsmob_stencil (t));
+             
+             SCM footnotes = get_footnotes (unsmob_stencil (t)->expr ());
+             ps->set_property ("footnotes", footnotes);
              ps->set_property ("is-title", SCM_BOOL_T);
              if (list != texts)
                /* For each markup other than the first, place it as closely as
index aef20f10c04ea9a8d81e80d1f1ae263d9e88e8d1..711d919446d4f8d21a3205563d6dde914aceb8b2 100644 (file)
@@ -27,6 +27,64 @@ make_paper_system (SCM immutable_init)
   return prob;
 }
 
+/*
+  TODO
+  it might be interesting to split off the footnotes as well, ie.
+  
+  get_footnotes(SCM expr, SCM* footnotes, SCM* cleaned) 
+    
+  by doing it this way and overwriting the old expr in the caller,
+  you can make sure nobody tries to handle footnotes differently
+  downstream.
+*/
+SCM
+get_footnotes (SCM expr)
+{
+  if (!scm_is_pair (expr))
+    return SCM_EOL;
+
+  SCM head = scm_car (expr);
+
+  if (head == ly_symbol2scm ("delay-stencil-evaluation"))
+    {
+      // we likely need to do something here...just don't know what...
+      return SCM_EOL;
+    }
+  
+  if (head == ly_symbol2scm ("combine-stencil"))
+    {
+      SCM out = SCM_EOL;
+      SCM *tail = &out;
+
+      for (SCM x = scm_cdr (expr); scm_is_pair (x); x = scm_cdr (x))
+        {
+          SCM footnote = get_footnotes (scm_car (x));
+          if (scm_is_pair (footnote))
+            {
+              for (SCM y = footnote; scm_is_pair (y); y = scm_cdr (y))
+                {
+                  *tail = scm_cons (scm_car (y), SCM_EOL);
+                  tail = SCM_CDRLOC (*tail);
+                }
+            }
+          else if (SCM_EOL != footnote)
+            {
+              *tail = scm_cons (footnote, SCM_EOL);
+              tail = SCM_CDRLOC (*tail);
+            }
+        }
+      return out;
+    }
+  if (head == ly_symbol2scm ("translate-stencil"))
+    return get_footnotes (scm_caddr (expr));
+
+  if (head == ly_symbol2scm ("footnote"))
+    return scm_cadr (expr);
+
+  return SCM_EOL;
+}
+
+
 void
 paper_system_set_stencil (Prob *prob, Stencil s)
 {
index 33f6fb971ee13de6d803fa21d4ddcfcd5f555b20..b07c8604cfde4c445f1fc1259d64e3c181cab29f 100644 (file)
@@ -53,44 +53,17 @@ Performance::output (Midi_stream &midi_stream) const
   if (be_verbose_global)
     progress_indication (_ ("Track...") + " ");
   
-  int channel = 0;
   for (vsize i = 0; i < audio_staffs_.size (); i++)
     {
       Audio_staff *s = audio_staffs_[i];
       if (be_verbose_global)
        progress_indication ("[" + to_string (i));
-
-      int midi_channel =  s->channel_;
-
-      if (midi_channel < 0)
-       {
-         midi_channel = channel;
-         channel ++;
-         /*
-           MIDI players tend to ignore instrument settings on
-           channel 10, the percussion channel.
-         */
-         if (channel % 16 == 9)
-           channel ++;
-       }
-
-      /*
-       Huh? Why does each staff also have a separate channel? We
-       should map channels to voices, not staves. --hwn.
-      */
-      if (midi_channel > 15)
-       {
-         warning (_ ("MIDI channel wrapped around"));
-         warning (_ ("remapping modulo 16"));
-
-         midi_channel = midi_channel % 16; 
-       }
-
-      s->output (midi_stream, midi_channel);
+      s->output (midi_stream, i);
       if (be_verbose_global)
        progress_indication ("]");
     }
 }
+
 void
 Performance::add_element (Audio_element *p)
 {
index ec204fbf9bc70bda428f74427498b02b647951b9..803e1ee82dcfa4958f94b2f2f94efc644b15bafb 100644 (file)
 #include "page-layout-problem.hh"
 #include "pointer-group-interface.hh"
 
-Grob*
-Staff_grouper_interface::get_maybe_pure_last_grob (Grob *me, bool pure, int start, int end)
+/* Checks whether the child grob is in the "interior" of this staff-grouper.
+   This is the case if the next spaceable, living child after the given one
+   belongs to the group.
+*/
+bool
+Staff_grouper_interface::maybe_pure_within_group (Grob *me, Grob *child, bool pure, int start, int end)
 {
   extract_grob_set (me, "elements", elts);
-  for (vsize i = elts.size (); i--;)
-    if (Page_layout_problem::is_spaceable (elts[i])
-       && ((pure && !Hara_kiri_group_spanner::request_suicide (me, start, end))
-           || (!pure && elts[i]->is_live ())))
-      return elts[i];
 
-  return 0;
+  vector<Grob*>::const_iterator i = find (elts, child);
+
+  if (i == elts.end ())
+    return false;
+
+  for (++i; i != elts.end (); ++i)
+    if (Page_layout_problem::is_spaceable (*i)
+       && ((pure && !Hara_kiri_group_spanner::request_suicide (*i, start, end))
+           || (!pure && (*i)->is_live ())))
+      return me == unsmob_grob ((*i)->get_object ("staff-grouper"));
+
+  // If there was no spaceable, living child after me, I don't
+  // count as within the group.
+  return false;
 }
 
 ADD_INTERFACE (Staff_grouper_interface,
index daf00a18122a05583fbcee63c2cac1408e6611db..17de3172df61c837dcdfe41805615523d42f8cca 100644 (file)
@@ -17,6 +17,8 @@
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <map>
+
 #include "warn.hh"
 #include "audio-column.hh"
 #include "audio-item.hh"
@@ -49,6 +51,7 @@ private:
   Audio_text *instrument_name_;
   Audio_text *name_;
   Audio_tempo *tempo_;
+  map<string, int> channel_map_;
 };
 
 #include "translator.icc"
@@ -115,17 +118,13 @@ void
 Staff_performer::stop_translation_timestep ()
 {
   SCM proc = ly_lily_module_constant ("percussion?");
-
   SCM drums = scm_call_1 (proc, ly_symbol2scm (instrument_string_.c_str ()));
-  audio_staff_->channel_ = (drums == SCM_BOOL_T ? 9 : -1);
+  audio_staff_->percussion_ = (drums == SCM_BOOL_T);
+
   if (name_)
-    {
       name_ = 0;
-    }
   if (tempo_)
-    {
       tempo_ = 0;
-    }
   instrument_name_ = 0;
   instrument_ = 0;
 }
@@ -155,6 +154,24 @@ void
 Staff_performer::acknowledge_audio_element (Audio_element_info inf)
 {
   if (Audio_item *ai = dynamic_cast<Audio_item *> (inf.elem_))
-    audio_staff_->add_audio_item (ai);
+    {
+      /* map each context (voice) to its own channel */
+      Context *c = inf.origin_contexts (this)[0];
+      string id = c->id_string ();
+      int channel = channel_map_.size ();
+      /* MIDI players tend to ignore instrument settings on channel
+        10, the percussion channel.  */
+      if (channel % 16 == 9)
+       channel_map_[""] = channel++;
+
+      map<string, int>::const_iterator i = channel_map_.find (id);
+      if (i != channel_map_.end ())
+       channel = i->second;
+      else
+       channel_map_[id] = channel;
+
+      ai->channel_ = channel;
+      audio_staff_->add_audio_item (ai);
+    }
 }
 
index 19c241ea849fa8f09f591e9e30ec9219746e2595..4f8c6bbc8be85712cf2bdea34b6fc25f78bd51a8 100644 (file)
@@ -37,6 +37,8 @@ interpret_stencil_expression (SCM expr,
          interpret_stencil_expression (scm_force (scm_cadr (expr)), func, func_arg, o);
          return;
        }
+      if (head == ly_symbol2scm ("footnote"))
+        return;
       if (head == ly_symbol2scm ("translate-stencil"))
        {
          o += ly_scm2offset (scm_cadr (expr));
index 19279d7cd061e7b0c309f96c2a6f74b67f236e95..574dce56c9de8e54869b164e772dc702707663d0 100644 (file)
@@ -22,6 +22,7 @@
 #include "align-interface.hh"
 #include "all-font-metrics.hh"
 #include "axis-group-interface.hh"
+#include "break-align-interface.hh"
 #include "grob-array.hh"
 #include "hara-kiri-group-spanner.hh"
 #include "international.hh"
@@ -35,6 +36,7 @@
 #include "pointer-group-interface.hh"
 #include "skyline-pair.hh"
 #include "staff-symbol-referencer.hh"
+#include "text-interface.hh"
 #include "warn.hh"
 
 System::System (System const &src)
@@ -43,6 +45,7 @@ System::System (System const &src)
   all_elements_ = 0;
   pscore_ = 0;
   rank_ = 0;
+  checked_footnotes_ = false;
   init_elements ();
 }
 
@@ -51,6 +54,7 @@ System::System (SCM s)
 {
   all_elements_ = 0;
   rank_ = 0;
+  checked_footnotes_ = false;
   init_elements ();
 }
 
@@ -162,7 +166,7 @@ System::do_break_substitution_and_fixup_refpoints ()
          Grob *g = all_elts[j];
          g->fixup_refpoint ();
        }
-
+        
       count += all_elts.size ();
     }
 
@@ -226,6 +230,116 @@ System::get_paper_systems ()
   return lines;
 }
 
+void
+System::populate_footnote_grob_vector ()
+{
+  extract_grob_set (this, "all-elements", all_elts);
+  for (vsize i = 0; i < all_elts.size (); i++)
+    if (all_elts[i]->internal_has_interface (ly_symbol2scm ("footnote-interface")))
+      footnote_grobs_.push_back (all_elts[i]);
+
+  sort (footnote_grobs_.begin (), footnote_grobs_.end (), Grob::less);
+  checked_footnotes_ = true;
+}
+
+void
+System::get_footnote_grobs_in_range (vector<Grob *> &out, vsize start, vsize end)
+{
+  if (!checked_footnotes_)
+    populate_footnote_grob_vector ();
+
+  for (vsize i = 0; i < footnote_grobs_.size (); i++)
+    {
+      int pos = footnote_grobs_[i]->spanned_rank_interval ()[LEFT];
+      bool end_of_line_visible = true;
+      if (Spanner *s = dynamic_cast<Spanner *>(footnote_grobs_[i]))
+        {
+          Real spanner_placement = min (1.0,
+                                        max (robust_scm2double (s->get_property ("spanner-placement"), -1.0),
+                                             -1.0));
+
+          spanner_placement = (spanner_placement + 1.0) / 2.0;
+          int rpos = s->spanned_rank_interval ()[RIGHT];
+          pos = (int)((rpos - pos) * spanner_placement + pos + 0.5);
+        }
+      
+      if (Item *item = dynamic_cast<Item *>(footnote_grobs_[i]))
+        {
+          if (!Item::break_visible (item))
+            continue;
+          // safeguard to bring down the column rank so that end of line footnotes show up on the correct line
+          end_of_line_visible = (LEFT == item->break_status_dir ());
+        }
+
+      if (pos < (int)start)
+        continue;
+      if (pos > (int)end)
+        break;
+      if (pos == (int)start && end_of_line_visible)
+        continue;
+      if (pos == (int)end && !end_of_line_visible)
+        continue;
+      if (!footnote_grobs_[i]->is_live ())
+        continue;
+
+      out.push_back (footnote_grobs_[i]);
+    }
+}
+
+vector<Stencil *>
+System::get_footnotes_in_range (vsize start, vsize end)
+{
+  vector<Grob *> footnote_grobs;
+  get_footnote_grobs_in_range (footnote_grobs, start, end);
+  vector<Stencil *> out;
+
+  for (vsize i = 0; i < footnote_grobs.size (); i++)
+    {
+      SCM footnote_markup = footnote_grobs[i]->get_property ("footnote-text");
+
+      if (!Text_interface::is_markup (footnote_markup))
+        continue;
+
+      SCM props = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"),
+                              pscore_->layout ()->self_scm ());
+
+      SCM footnote_stl = Text_interface::interpret_markup (pscore_->layout ()->self_scm (),
+                                                           props, footnote_markup);
+
+      Stencil *footnote_stencil = unsmob_stencil (footnote_stl);
+      out.push_back (footnote_stencil);
+    }
+
+  return out;
+}
+
+Stencil
+System::make_footnote_stencil (Real padding)
+{
+  Stencil mol;
+
+  for (vsize i = 0; i < footnote_grobs_.size (); i++)
+    {
+      SCM footnote_markup = footnote_grobs_[i]->get_property ("footnote-text");
+      if (Spanner *orig = dynamic_cast<Spanner *>(footnote_grobs_[i]))
+        if (orig->is_broken ())
+          footnote_markup = orig->broken_intos_[0]->get_property ("footnote-text");
+
+      if (!Text_interface::is_markup (footnote_markup))
+        continue;
+
+      SCM props = scm_call_1 (ly_lily_module_constant ("layout-extract-page-properties"),
+                              pscore_->layout ()->self_scm ());
+
+      SCM footnote_stl = Text_interface::interpret_markup (pscore_->layout ()->self_scm (),
+                                                           props, footnote_markup);
+
+      mol.add_at_edge (Y_AXIS, DOWN, *unsmob_stencil (footnote_stl), padding);
+    }
+
+  return mol;
+}
+
 void
 System::break_into_pieces (vector<Column_x_positions> const &breaking)
 {
@@ -242,6 +356,8 @@ System::break_into_pieces (vector<Column_x_positions> const &breaking)
       Interval iv (pure_height (this, st, end));
       system->set_property ("pure-Y-extent", ly_interval2scm (iv));
 
+      get_footnote_grobs_in_range (system->footnote_grobs_, st, end);
+
       system->set_bound (LEFT, c[0]);
       system->set_bound (RIGHT, c.back ());
       SCM system_labels = SCM_EOL;
index 094967d98dc30518c576dbdc4cdf0ee0dfdf8ebd..570340f8d94dbc8254328b0e8cc6e84caad6cce1 100644 (file)
@@ -151,21 +151,27 @@ Vertical_align_engraver::acknowledge_axis_group (Grob_info i)
              if (arr[i] == before_grob)
                {
                  arr.insert (arr.begin () + i, added);
-                 added->set_property ("staff-affinity", scm_from_int (DOWN));
+
+                 /* Only set staff affinity if it already has one.  That way we won't
+                    set staff-affinity on things that don't want it (like staves). */
+                 if (scm_is_number (added->get_property ("staff-affinity")))
+                   added->set_property ("staff-affinity", scm_from_int (DOWN));
                  break;
                }
              else if (arr[i] == after_grob)
                {
                  arr.insert (arr.begin () + i + 1, added);
-                 added->set_property ("staff-affinity", scm_from_int (UP));
+                 if (scm_is_number (added->get_property ("staff-affinity")))
+                   added->set_property ("staff-affinity", scm_from_int (UP));
                  break;
                }
            }
        }
     }
-  else if (qualifies (i) && !unsmob_grob (i.grob ()->get_object ("staff-grouper")))
+  else if (qualifies (i))
     {
       Pointer_group_interface::add_grob (valign_, ly_symbol2scm ("elements"), i.grob ());
-      i.grob ()->set_object ("staff-grouper", valign_->self_scm ());
+      if (!unsmob_grob (i.grob ()->get_object ("staff-grouper")))
+       i.grob ()->set_object ("staff-grouper", valign_->self_scm ());
     }
 }
index c135e525682b877a77b4b4fa826fbeaa7d3407db..6877a1a2eb05f7046eb04bf55b34652760524788 100644 (file)
@@ -57,14 +57,17 @@ Volta_bracket_interface::print (SCM smob)
   Item *bound = dynamic_cast<Spanner *> (me)->get_bound (LEFT);
 
   /*
-    not a start, but really broken in two
+    If the volta bracket appears after a line-break, make
+    it start after the prefatory matter.
   */
   Real left = 0.;
   if (bound->break_status_dir () == RIGHT)
     {
       Paper_column *pc = bound->get_column ();
-      left = pc->extent (pc, X_AXIS)[RIGHT]
-       - bound->relative_coordinate (pc, X_AXIS);
+      left = pc->break_align_width (pc, ly_symbol2scm ("break-alignment"))[RIGHT]
+       // For some reason, break_align_width is relative to
+       // the x-parent of the column.
+       - bound->relative_coordinate (pc->get_parent (X_AXIS), X_AXIS);
     }
   else
     {
index 91bc12ccbdd99d24d8c71ae3b475c970a0346381..0720893ffc725fb0157dcab101b54310dcb48612 100644 (file)
@@ -208,7 +208,6 @@ subscripts, slurs, ties, and rests.
 You have to instantiate this explicitly if you want to have
 multiple voices on the same staff."
 
-  localKeySignature = #'()
   \consists "Font_size_engraver"
 
   \consists "Pitched_trill_engraver"
@@ -229,6 +228,7 @@ multiple voices on the same staff."
   \consists "Dots_engraver"
   \consists "Rest_engraver"
   \consists "Tweak_engraver"
+  \consists "Footnote_engraver"
 
   %% switch on to make stem directions interpolate for the
   %% center line.
index ac62bffa9ae67575da8bbce6e60ec12fd8d18595..10643a3bab9708e7d6f32f3c93e17a85cb2ccd4c 100644 (file)
@@ -204,7 +204,70 @@ breathe =
    (_i "Insert a breath mark.")
    (make-music 'BreathingEvent))
 
-
+%%  Make slide indication for chords
+chordGlissando =
+#(define-music-function (parser location mus1 mus2) (ly:music? ly:music?)
+   "Make a glissando between the notes of triads @code{mus1} and @code{mus2}."
+
+   (define (add-glissando musChord)
+     (let ((els (ly:music-property musChord 'elements)))
+       (ly:music-set-property! musChord 'elements (append els (list (make-music 'GlissandoEvent))))
+       musChord))
+
+   (define (get-notes musicChord)
+     (filter (lambda(x) (eq? (ly:music-property x 'name) 'NoteEvent))
+             (ly:music-property musicChord 'elements)))
+
+   (define (select-note musChord index)
+     (let* ((notes (get-notes musChord))
+            (non-notes (filter (lambda (x)
+                                 (not (eq? (ly:music-property x 'name)
+                                           'NoteEvent)))
+                               (ly:music-property musChord 'elements)))
+            (selected-note (list-ref notes index))
+            (new-els (cons selected-note non-notes))
+            (new-mus (ly:music-deep-copy musChord)))
+       (ly:music-set-property! new-mus 'elements new-els)
+       new-mus))
+
+   (define (add-glissando-line mus1 mus2 index)
+     (context-spec-music
+      (context-spec-music
+       (make-sequential-music
+        (list
+         hideNotes
+         (make-grob-property-set 'StringNumber 'transparent #t)
+         (make-grob-property-set 'NoteColumn 'ignore-collision #t)
+         ;; obviously, this isn't equivalent to \once,
+         ;; so could be changed if required
+         (make-grob-property-set 'Glissando 'thickness 2)
+         (make-grob-property-set 'DynamicText 'transparent #t)
+         (make-grob-property-set 'DynamicLineSpanner 'transparent #t)
+         (make-grob-property-set 'DynamicTextSpanner 'transparent #t)
+         (add-glissando (select-note mus1 index))
+         (select-note mus2 index)))
+       'Bottom (symbol->string (gensym)))
+      'Staff))
+
+   (let* ((notes1 (get-notes mus1))
+          (notes2 (get-notes mus2))
+          (note-count (min (length notes1) (length notes2))))
+
+    #{
+       \once \override Glissando #'minimum-length = #4
+       \once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
+     <<
+       {
+         $(add-glissando mus1)
+         $mus2
+       }
+       $(make-simultaneous-music
+           (map (lambda (x)
+                        (add-glissando-line mus1 mus2 x))
+                (iota note-count)))
+    >>
+    \revert NoteColumn #'ignore-collision
+  #}))
 
 clef =
 #(define-music-function (parser location type) (string?)
@@ -342,7 +405,28 @@ featherDurations=
 
      argument))
 
-
+footnoteGrob =
+#(define-music-function (parser location grob-name offset text footnote)
+   (symbol? number-pair? markup? markup?)
+   (_i "Attach @var{text} to @var{grob-name} at offset @var{offset},
+ with @var{text} referring to @var{footnote} (use like @code{\\once})")
+   (make-music 'FootnoteEvent
+              'symbol grob-name
+              'X-offset (car offset)
+              'Y-offset (cdr offset)
+              'text text
+              'footnote-text footnote))
+
+footnote =
+#(define-music-function (parser location offset text footnote)
+   (number-pair? markup? markup?)
+   (_i "Attach @var{text} at @var{offset} with @var{text} referring
+ to @var{footnote} (use like @code{\\tweak})")
+   (make-music 'FootnoteEvent
+              'X-offset (car offset)
+              'Y-offset (cdr offset)
+              'text text
+              'footnote-text footnote))
 
 grace =
 #(def-grace-function startGraceMusic stopGraceMusic
index 69fecc16b61756a24343d6eee6a0b2801c35b6fd..9f88def048a7cee394aa93cb396d00fe12b2ee37 100644 (file)
@@ -56,7 +56,6 @@
   ragged-bottom = ##f
   ragged-last-bottom = ##t  % best for shorter scores
 
-
   %%
   %% Flexible vertical spacing
   %%
   page-breaking = #ly:optimal-breaking
 
 
+  %%
+  %% Footnotes
+  %%
+  footnote-separator-markup = \markup { \draw-hline }
+  footnote-padding = 0.5\mm
+
+
   %%
   %% Page numbering
   %%
   print-first-page-number = ##f
   print-page-number = ##t
 
-
   %%
   %% Headers, footers, and titles
   %%
index 0377990af30d092357e9080c7906cf26c933650b..626dc9963fbf9e4869bbdf646c9a4d27cd60770e 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -4,12 +4,13 @@
 # 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.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.13.48\n"
+"Project-Id-Version: lilypond 2.13.53\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2010-12-06 22:30+0100\n"
-"PO-Revision-Date: 2011-02-12 20:51+0200\n"
+"POT-Creation-Date: 2011-03-02 10:34+0100\n"
+"PO-Revision-Date: 2011-03-03 22:19+0200\n"
 "Last-Translator: Till Paala <till.rettig@gmx.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
@@ -17,55 +18,57 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: book_base.py:24
+#: fontextract.py:25
 #, python-format
-msgid "file not found: %s"
-msgstr "Datei `%s' nicht gefunden"
+msgid "Scanning %s"
+msgstr "Warnung: %s"
 
-#: book_base.py:161
-msgid "Output function not implemented"
-msgstr "Ausgabefunktion nicht implementiert"
+#: fontextract.py:70
+#, python-format
+msgid "Extracted %s"
+msgstr "%s ausgepackt"
 
-#: book_latex.py:156
-msgid "cannot find \\begin{document} in LaTeX document"
-msgstr "\\begin{document} im LaTeX-Dokument kann nicht gefunden werden"
+#: fontextract.py:85
+#, python-format
+msgid "Writing fonts to %s"
+msgstr "Schreiben der Schriftarten nach %s"
 
-#: book_snippets.py:517
+#: book_snippets.py:519
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "veraltete ly-option verwendet: %s=%s"
 
-#: book_snippets.py:519
+#: book_snippets.py:521
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "Übersetzung im Kompatibilitätsmodus: %s=%s"
 
-#: book_snippets.py:522
+#: book_snippets.py:524
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "veraltete ly-option verwendet: %s"
 
-#: book_snippets.py:524
+#: book_snippets.py:526
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "Übersetzung im Kompatibilitätsmodus: %s"
 
-#: book_snippets.py:542
+#: book_snippets.py:544
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "unbekannte Option ignoriert: %s"
 
-#: book_snippets.py:728
+#: book_snippets.py:736
 #, python-format
 msgid "Opening filter `%s'\n"
 msgstr "Filter »%s« wird geöffnet\n"
 
-#: book_snippets.py:748
+#: book_snippets.py:756
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "»%s« gescheitert (%d)"
 
-#: book_snippets.py:749
+#: book_snippets.py:757
 msgid "The error log is as follows:"
 msgstr "Das Fehlerprotokoll lautet wie folgt:"
 
@@ -619,23 +622,23 @@ msgstr ""
 "Swallow_performer und String_number_engraver.\n"
 "Neue vertikale Abstandsvariablen."
 
-#: convertrules.py:2982
-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"
+#: 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:2988
+#: convertrules.py:2995
 msgid "Unify fetaNumber and fetaDynamic encodings"
 msgstr "Kodierungen für fetaNumber und fetaDynamic vereinheitlichen"
 
-#: convertrules.py:2993
+#: convertrules.py:3000
 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 
-#: convertrules.py:3004
+#: convertrules.py:3011
 msgid "\\cresc etc. are now postfix operators"
 msgstr "\\cresc usw. werden jetzt der Note nachgestellt"
 
-#: convertrules.py:3010
+#: convertrules.py:3017
 msgid ""
 "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
@@ -643,27 +646,27 @@ msgstr ""
 "Entferne beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings und \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 
-#: convertrules.py:3028
+#: convertrules.py:3035
 msgid "\\overrideBeamSettings.  Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
 msgstr "\\overrideBeamSettings.  Benutze \\set beamExceptions oder \\overrideTimeSignatureSettings.\n"
 
-#: convertrules.py:3032
+#: convertrules.py:3039
 msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
 msgstr "\\revertBeamSettings. Benutze \\set beamExceptions oder \\revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3036
+#: convertrules.py:3043
 msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"
 msgstr "beamSettings. Benutze baseMoment, beatStructure und beamExceptions.\n"
 
-#: convertrules.py:3040
+#: convertrules.py:3047
 msgid "beatLength. Use baseMoment and beatStructure.\n"
 msgstr "beatLength. Benutze baseMoment und beatStructure.\n"
 
-#: convertrules.py:3044
+#: convertrules.py:3051
 msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
 msgstr "setbeatGrouping. Benutze baseMoment und beatStructure.\n"
 
-#: convertrules.py:3049
+#: convertrules.py:3056
 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."
@@ -671,11 +674,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:3054
+#: 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:3062
+#: convertrules.py:3069
 msgid ""
 "Rename vertical spacing variables.\n"
 "Add fretboard-table argument to savePredefinedFretboard."
@@ -683,36 +686,76 @@ msgstr ""
 "Vertikale Abstandsvariablen umbenennen.\n"
 "fretboard-table-Argument hinzufügen, um PredefinedFretboard zu speichern."
 
-#: convertrules.py:3080
+#: convertrules.py:3087
 msgid "Rename vertical spacing grob properties."
 msgstr "Vertikale Abstands-Grob-Eigenschaften umbenennen."
 
-#: convertrules.py:3096
+#: convertrules.py:3103
 msgid "Remove \\paper variables head-separation and foot-separation."
 msgstr "\\paper-Variablen head-separation und foot-separation entfernen."
 
-#: convertrules.py:3101
+#: convertrules.py:3108
 msgid "Adjust settings for top-system-spacing instead.\n"
 msgstr "Anstelle dessen Einstellungen für top-system-spacing anpassen.\n"
 
-#: convertrules.py:3106
+#: convertrules.py:3113
 msgid "Adjust settings for last-bottom-spacing instead.\n"
 msgstr "Anstelle dessen Einstellungen für last-bottom-spacing anpassen.\n"
 
-#: fontextract.py:25
-#, python-format
-msgid "Scanning %s"
-msgstr "Warnung: %s"
+#: convertrules.py:3119
+msgid ""
+"Rename space to basic-distance in various spacing alists.\n"
+"Remove HarmonicParenthesesItem grob."
+msgstr ""
+"Umbennen von Abstand in basic-distance in verschiedenen Positionierungs-Alisten.\n"
+"Entfernen des HarmonicParenthesesItem-Grobs."
 
-#: fontextract.py:70
-#, python-format
-msgid "Extracted %s"
-msgstr "%s ausgepackt"
+#: convertrules.py:3127
+msgid "HarmonicParenthesesItem has been eliminated.\n"
+msgstr "HarmonicParenthesesItem wurde entfernt.\n"
 
-#: fontextract.py:85
+#: convertrules.py:3128
+msgid "Harmonic parentheses are part of the TabNoteHead grob.\n"
+msgstr "Harmonische Klammern sind Teil des TabNoteHead-Grobs.\n"
+
+#: convertrules.py:3133
+msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n"
+msgstr "Entferne Kontext von overrideTimeSignatureSettings und revertTimeSignatureSettings.\n"
+
+#: convertrules.py:3140
+msgid ""
+"Change stringTunings from a list of semitones to a list of pitches.\n"
+"Change tenor and baritone ukulele names in string tunings.\n"
+"Generate messages for manual conversion of vertical spacing if required."
+msgstr ""
+"Ändere stringTunings von einer Liste mit Halbtönen in eine Tonhöhenliste.\n"
+"Ä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:3185
+msgid "Replace bar-size with bar-extent."
+msgstr "Ersetze bar-size durch bar-extent."
+
+#: convertrules.py:3197
+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"
+
+#: book_base.py:24
 #, python-format
-msgid "Writing fonts to %s"
-msgstr "Schreiben der Schriftarten nach %s"
+msgid "file not found: %s"
+msgstr "Datei `%s' nicht gefunden"
+
+#: book_base.py:161
+msgid "Output function not implemented"
+msgstr "Ausgabefunktion nicht implementiert"
 
 #: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115
 #: input.cc:123
@@ -787,183 +830,386 @@ msgstr "Tonartalterationsoktave für eine nicht existente Alteration Nr. %s ange
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "Kann kein Instrument für ID=%s finden\n"
 
-#: abc2ly.py:1373 convert-ly.py:87 lilypond-book.py:122 midi2ly.py:860
-#, python-format
-msgid "%s [OPTION]... FILE"
-msgstr "%s [OPTIONEN]... DATEI"
+#: book_latex.py:156
+msgid "cannot find \\begin{document} in LaTeX document"
+msgstr "\\begin{document} im LaTeX-Dokument kann nicht gefunden werden"
 
-#: abc2ly.py:1374
+#: musicxml2ly.py:223
 #, python-format
-msgid ""
-"abc2ly converts ABC music files (see\n"
-"%s) to LilyPond input.\n"
-msgstr ""
-"abc2ly wandelt ABC-Musikdateien in LilyPond-Eingabe um\n"
-"(siehe auch %s).\n"
-
-#: abc2ly.py:1382 convert-ly.py:94 etf2ly.py:1206 lilypond-book.py:212
-#: midi2ly.py:896 musicxml2ly.py:2683 main.cc:168
-msgid "show version number and exit"
-msgstr "Versionsnummer ausgeben und beenden"
-
-#: abc2ly.py:1386 convert-ly.py:98 etf2ly.py:1202 lilypond-book.py:140
-#: midi2ly.py:875 musicxml2ly.py:2665 main.cc:157
-msgid "show this help and exit"
-msgstr "diese Hilfe anzeigen und beenden"
+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"
 
-#: abc2ly.py:1388 etf2ly.py:1207 midi2ly.py:879
-msgid "write output to FILE"
-msgstr "Ausgabe in DATEI schreiben"
+#: musicxml2ly.py:239 musicxml2ly.py:241
+#, python-format
+msgid "Unprocessed PartGroupInfo %s encountered"
+msgstr "Unverarbeitetes PartGroupInfo %s angetroffen"
 
-#: abc2ly.py:1390
-msgid "be strict about success"
-msgstr "bzgl. Erfolg streng sein"
+#: musicxml2ly.py:494
+#, python-format
+msgid "Encountered note at %s without type and duration (=%s)"
+msgstr "Note bei %s ohne Art und Dauer angetroffen (=%s)"
 
-#: abc2ly.py:1392
-msgid "preserve ABC's notion of beams"
-msgstr "ABCs Prinzip der Balken beibehalten"
+#: musicxml2ly.py:514
+#, 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"
 
-#. 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"
-#: abc2ly.py:1395 convert-ly.py:144 etf2ly.py:1216 lilypond-book.py:234
-#: midi2ly.py:909 musicxml2ly.py:2751 main.cc:281
-#, c-format, python-format
-msgid "Report bugs via %s"
-msgstr "Melden Sie Fehler an %s"
+#: musicxml2ly.py:761
+msgid "Unable to extract key signature!"
+msgstr "Kann die Tonart nicht extrahieren!"
 
-#: convert-ly.py:44
-msgid ""
-"Update LilyPond input to newer version.  By default, update from the\n"
-"version taken from the \\version command, to the current LilyPond version."
-msgstr ""
-"LilyPond-Eingabe auf neuere Version bringen. Standardmäßig wird von der\n"
-"Version vom Kommando \\version zur aktuellen LilyPond-Version gegangen."
+#: musicxml2ly.py:788
+#, 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"
 
-#: convert-ly.py:46 lilypond-book.py:82
-msgid "Examples:"
-msgstr "Beispiele:"
+#: musicxml2ly.py:926
+#, python-format
+msgid "Encountered unprocessed marker %s\n"
+msgstr "Unverarbeiteter Marker %s angetroffen\n"
 
-#: convert-ly.py:81 etf2ly.py:1189 lilypond-book.py:116 midi2ly.py:90
+#: musicxml2ly.py:1020
 #, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s bei"
+msgid "unknown span event %s"
+msgstr "Unbekannte Spannerklasse »%s«"
 
-#: convert-ly.py:83 etf2ly.py:1191 lilypond-book.py:118 midi2ly.py:92
-msgid "Distributed under terms of the GNU General Public License."
-msgstr "Vertrieben unter den Bedingungen der GNU General Public License."
+#: musicxml2ly.py:1030
+#, python-format
+msgid "unknown span type %s for %s"
+msgstr "Unbekannter Spannertyp %s für %s"
 
-#: convert-ly.py:84 etf2ly.py:1192 lilypond-book.py:119 midi2ly.py:93
-msgid "It comes with NO WARRANTY."
-msgstr "Es wird OHNE GARANTIE ausgeliefert."
+#: musicxml2ly.py:1450
+msgid "Unknown metronome mark, ignoring"
+msgstr "Unbekanntes Metronom-Zeichen, wird ignoriert"
 
-#: convert-ly.py:102 convert-ly.py:135
-msgid "VERSION"
-msgstr "VERSION"
+#. TODO: Implement the other (more complex) way for tempo marks!
+#: musicxml2ly.py:1455
+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."
 
-#: convert-ly.py:104
-msgid "start from VERSION [default: \\version found in file]"
-msgstr "bei VERSION anfangen [Standard: \\version in Datei gefunden]"
+#: musicxml2ly.py:1657
+#, python-format
+msgid "Unable to convert chord type %s to lilypond."
+msgstr "Kann Akkordtyp %s nicht nach lilypond umwandeln"
 
-#: convert-ly.py:107
-msgid "edit in place"
-msgstr "vor Ort ändern"
+#: musicxml2ly.py:1806
+#, 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"
 
-#: convert-ly.py:111
-msgid "do not add \\version command if missing"
-msgstr "keinen \\version-Befehl hinzufügen, falls es fehlt"
+#: musicxml2ly.py:1810
+msgid "cannot find suitable event"
+msgstr "passendes Ereignis kann nicht gefunden werden"
 
-#: convert-ly.py:117
+#: musicxml2ly.py:1958
 #, python-format
-msgid "force updating \\version number to %s"
-msgstr "erzwinge Aktualisierung von \\version nach %s"
-
-#: convert-ly.py:123
-msgid "only update \\version number if file is modified"
-msgstr "Aktualisierung von \\version nur, wenn die Datei verändert wurde"
+msgid "Negative skip %s (from position %s to %s)"
+msgstr "Negativer Sprung (skip) %s (von Position %s bis %s)"
 
-#: convert-ly.py:129
+#: musicxml2ly.py:2099
 #, python-format
-msgid "show rules [default: -f 0, -t %s]"
-msgstr "Regeln anzeigen [Standard: -f 0, -t %s]"
+msgid "Negative skip found: from %s to %s, difference is %s"
+msgstr "Negativer Sprung (skip) gefunden: von %s bis %s, Differenz ist %s"
 
-#: convert-ly.py:134
+#: musicxml2ly.py:2180
 #, python-format
-msgid "convert to VERSION [default: %s]"
-msgstr "zu VERSION konvertieren [Standard: %s]"
+msgid "unexpected %s; expected %s or %s or %s"
+msgstr "unerwartetes %s; %s oder %s oder %s erwartet"
 
-#: convert-ly.py:139 etf2ly.py:1210 lilypond-book.py:215 midi2ly.py:897
-#: main.cc:170
-msgid "show warranty and copyright"
-msgstr "Informationen zu Gewährleistung und Copyright anzeigen"
+#: musicxml2ly.py:2286
+msgid "Encountered closing slur, but no slur is open"
+msgstr "Auf schließenden Legatobogen gestoßen, aber es wurde kein Bogen begonnen"
 
-#: convert-ly.py:184
-msgid "Applying conversion: "
-msgstr "Anwenden der Umwandlung: "
+#: musicxml2ly.py:2289
+msgid "Cannot have two simultaneous (closing) slurs"
+msgstr "Zwei gleichzeitige (schließende) Legatobögen sind nicht möglich"
 
-#: convert-ly.py:197
-msgid "Error while converting"
-msgstr "Fehler beim Umwandeln"
+#: musicxml2ly.py:2298
+msgid "Cannot have a slur inside another slur"
+msgstr "Ein Legatobogen innerhalb eines anderen Legatobogens ist nicht möglich"
 
-#: convert-ly.py:199
-msgid "Stopping at last successful rule"
-msgstr "Abbruch bei letzter erfolgreicher Regel"
+#: musicxml2ly.py:2301
+msgid "Cannot have two simultaneous slurs"
+msgstr "Zwei gleichzeitige Legatobögen sind nicht möglich"
 
-#: convert-ly.py:224
+#: musicxml2ly.py:2435
 #, python-format
-msgid "Processing `%s'... "
-msgstr "»%s« wird verarbeitet..."
+msgid "cannot simultaneously have more than one mode: %s"
+msgstr "Kann nicht gleichzeitig mehr als einen Modus haben: %s"
 
-#: convert-ly.py:332
-#, python-format
-msgid "%s: Unable to open file"
-msgstr "%s: Konnte Datei nicht öffnen"
+#: musicxml2ly.py:2543
+msgid "Converting to LilyPond expressions..."
+msgstr "In LilyPond-Ausdrücke umwandeln..."
 
-#: convert-ly.py:339
-#, python-format
-msgid "%s: Unable to determine version.  Skipping"
-msgstr "Version für »%s« kann nicht erkannt werden.  Wird übersprungen"
+#: musicxml2ly.py:2554
+msgid "musicxml2ly [OPTION]... FILE.xml"
+msgstr "musicxml2ly [Optionen]... DATEI.xml"
 
-#: convert-ly.py:344
-#, python-format
+#: musicxml2ly.py:2556
 msgid ""
-"%s: Invalid version string `%s' \n"
-"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
+"Convert MusicXML from FILE.xml to LilyPond input.\n"
+"If the given filename is -, musicxml2ly reads from the command line.\n"
 msgstr ""
-"%s: Ungültige Versionsangabe `%s' \n"
-"Gültige Versionsangaben bestehen aus drei Zahlen, durch Punkte getrennt; etwa `2.8.12'"
+"Wandle MusicXML-Datei von DAT.xml nach LilyPond-Eingabe um.\n"
+"Wenn der angegebene Dateiname - ist, list musicxml2ly von der Kommandozeile.\n"
 
-#: etf2ly.py:1195
-#, python-format
-msgid "%s [OPTION]... ETF-FILE"
-msgstr "%s [OPTIONEN]... ETF-DATEI"
+#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140
+#: convert-ly.py:98 etf2ly.py:1202 main.cc:157
+msgid "show this help and exit"
+msgstr "diese Hilfe anzeigen und beenden"
 
-#: etf2ly.py:1196
+#: musicxml2ly.py:2566
 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"
+"Copyright (c) 2005--2011 by\n"
+"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
+"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
+"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Enigma Transport-Format ist ein von Coda Music Technology's Finale\n"
-"verwendetes Format. etf2ly wandelt eine Teilmenge von ETF in\n"
-"eine von Lilypond verwendbare Datei um.\n"
-
-#: etf2ly.py:1208 midi2ly.py:880 musicxml2ly.py:2743 main.cc:161 main.cc:166
-msgid "FILE"
-msgstr "DATEI"
+"Copyright (c) 2005--2011\n"
+"····Han-Wen·Nienhuys·<hanwen@xs4all.nl>,\n"
+"····Jan·Nieuwenhuizen·<janneke@gnu.org>·and\n"
+"····Reinhold·Kainhofer·<reinhold@kainhofer.com>\n"
 
-#: lilypond-book.py:80
-msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
-msgstr "LilyPond-Schnipsel in Mischdatei (HTML, LaTeX, texinfo oder DocBook) verarbeiten"
+#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212
+#: convert-ly.py:94 etf2ly.py:1206 main.cc:168
+msgid "show version number and exit"
+msgstr "Versionsnummer ausgeben und beenden"
 
-#: lilypond-book.py:87
-msgid "BOOK"
-msgstr "BUCH"
+#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169
+msgid "be verbose"
+msgstr "wortreich sein"
 
-#: lilypond-book.py:95
-#, python-format
-msgid "Exiting (%d)..."
-msgstr "Beenden (%d)..."
+#: musicxml2ly.py:2591
+msgid "use lxml.etree; uses less memory and cpu time"
+msgstr "lxml.etree verwenden; benötigt weniger Speicher und Prozessorzeit"
+
+#: musicxml2ly.py:2597
+msgid "input file is a zip-compressed MusicXML file"
+msgstr "Eingabedatei ist eine zip-komprimierte MusicXML-Datei"
+
+#: musicxml2ly.py:2603
+msgid "convert pitches in relative mode (default)"
+msgstr "Tonhöhen im relativen Modus konvertieren (Standard)"
+
+#: musicxml2ly.py:2608
+msgid "convert pitches in absolute mode"
+msgstr "Tonhöhen im absoluten Modus konvertieren"
+
+#: musicxml2ly.py:2611
+msgid "LANG"
+msgstr "SPRA"
+
+#: musicxml2ly.py:2613
+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:2619
+msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
+msgstr "Richtungen (^, _ oder -) for Artikulationen, Dynamik usw. nicht konvertieren"
+
+#: musicxml2ly.py:2625
+msgid "do not convert exact vertical positions of rests"
+msgstr "zusätzliche vertikale Positionen von Pausen nicht konvertieren"
+
+#: musicxml2ly.py:2631
+msgid "do not convert the exact page layout and breaks"
+msgstr "nicht das exakte Seitenlayout und Umbrüche konvertieren"
+
+#: musicxml2ly.py:2637
+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:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208
+#: main.cc:161 main.cc:166
+msgid "FILE"
+msgstr "DATEI"
+
+#: musicxml2ly.py:2645
+msgid "set output filename to FILE, stdout if -"
+msgstr "Ausgabedateiname auf DATEI setzen, stout if -"
+
+#. 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:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234
+#: convert-ly.py:144 etf2ly.py:1216 main.cc:281
+#, c-format, python-format
+msgid "Report bugs via %s"
+msgstr "Melden Sie Fehler an %s"
+
+#: musicxml2ly.py:2728
+#, python-format
+msgid "unknown part in part-list: %s"
+msgstr "unbekannte Stimme in part-list (Stimmen-Liste): %s"
+
+#: musicxml2ly.py:2790
+msgid "Input is compressed, extracting raw MusicXML data from stdin"
+msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten von stdin"
+
+#: musicxml2ly.py:2793
+#, python-format
+msgid "Input file %s is compressed, extracting raw MusicXML data"
+msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten"
+
+#: musicxml2ly.py:2823
+msgid "Reading MusicXML from Standard input ..."
+msgstr "MusicXML von standard input lesen..."
+
+#: musicxml2ly.py:2825
+#, python-format
+msgid "Reading MusicXML from %s ..."
+msgstr "MusicXML aus %s lesen..."
+
+#: musicxml2ly.py:2858
+#, python-format
+msgid "Output to `%s'"
+msgstr "Ausgabe nach »%s«"
+
+#: musicxml2ly.py:2925
+#, python-format
+msgid "Unable to find input file %s"
+msgstr "Eingabedatei kann nicht gefunden werden %s"
+
+#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#, python-format
+msgid "Copyright (c) %s by"
+msgstr "Copyright (c) %s bei"
+
+#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+msgid "Distributed under terms of the GNU General Public License."
+msgstr "Vertrieben unter den Bedingungen der GNU General Public License."
+
+#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+msgid "It comes with NO WARRANTY."
+msgstr "Es wird OHNE GARANTIE ausgeliefert."
+
+#: midi2ly.py:99
+msgid "warning: "
+msgstr "Warnung: "
+
+#: midi2ly.py:102 midi2ly.py:1041
+msgid "error: "
+msgstr "Fehler: "
+
+#: midi2ly.py:103
+msgid "Exiting... "
+msgstr "Beenden... "
+
+#: midi2ly.py:960
+#, python-format
+msgid "%s output to `%s'..."
+msgstr "%s nach »%s« ausgeben..."
+
+#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#, python-format
+msgid "%s [OPTION]... FILE"
+msgstr "%s [OPTIONEN]... DATEI"
+
+#: midi2ly.py:973
+#, python-format
+msgid "Convert %s to LilyPond input.\n"
+msgstr "%s in LilyPond-Quelltext umwandeln.\n"
+
+#: midi2ly.py:978
+msgid "print absolute pitches"
+msgstr "Absolute Tonhöhen ausgeben"
+
+#: midi2ly.py:980 midi2ly.py:1002
+msgid "DUR"
+msgstr "DAUER"
+
+#: midi2ly.py:981
+msgid "quantise note durations on DUR"
+msgstr "Notenlängen auf DAUER quantisieren"
+
+#: midi2ly.py:984
+msgid "print explicit durations"
+msgstr "Explizite Notenlängen ausgeben"
+
+#: midi2ly.py:989
+msgid "prepend FILE to output"
+msgstr "DATEI an die Ausgabe anfügen"
+
+#: midi2ly.py:993
+msgid "set key: ALT=+sharps|-flats; MINOR=1"
+msgstr "Tonart setzen: VORZ=+Kreuze|-B's; MOLL=1"
+
+#: midi2ly.py:994
+msgid "ALT[:MINOR]"
+msgstr "VORZ[:MOLL]"
+
+#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207
+msgid "write output to FILE"
+msgstr "Ausgabe in DATEI schreiben"
+
+#: midi2ly.py:999
+msgid "preview of first 4 bars"
+msgstr "Vorschau der ersten 4 Takte"
+
+#: midi2ly.py:1001
+msgid "quantise note starts on DUR"
+msgstr "Notenanfänge auf DAUER quantisieren"
+
+#: midi2ly.py:1004
+msgid "DUR*NUM/DEN"
+msgstr "DAUER*ZÄHLER/NENNER"
+
+# tuplet = Wertaufteilung nach: Peter Giger: Die Kunst des Rhythmus, Seite 25
+#: midi2ly.py:1007
+msgid "allow tuplet durations DUR*NUM/DEN"
+msgstr "Wertaufteilungsdauern DAUER*ZÄHLER/NENNER erlauben"
+
+#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210
+#: main.cc:170
+msgid "show warranty and copyright"
+msgstr "Informationen zu Gewährleistung und Copyright anzeigen"
+
+#: midi2ly.py:1019
+msgid "treat every text as a lyric"
+msgstr "Jeden Text als Liedtext behandeln"
+
+#: midi2ly.py:1022
+msgid "Examples"
+msgstr "Beispiele"
+
+#: midi2ly.py:1042
+msgid "no files specified on command line."
+msgstr "Keine Dateien auf der Kommandozeile angegeben."
+
+#: abc2ly.py:1374
+#, python-format
+msgid ""
+"abc2ly converts ABC music files (see\n"
+"%s) to LilyPond input.\n"
+msgstr ""
+"abc2ly wandelt ABC-Musikdateien in LilyPond-Eingabe um\n"
+"(siehe auch %s).\n"
+
+#: abc2ly.py:1390
+msgid "be strict about success"
+msgstr "bzgl. Erfolg streng sein"
+
+#: abc2ly.py:1392
+msgid "preserve ABC's notion of beams"
+msgstr "ABCs Prinzip der Balken beibehalten"
+
+#: lilypond-book.py:80
+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
+msgid "Examples:"
+msgstr "Beispiele:"
+
+#: lilypond-book.py:87
+msgid "BOOK"
+msgstr "BUCH"
+
+#: lilypond-book.py:95
+#, python-format
+msgid "Exiting (%d)..."
+msgstr "Beenden (%d)..."
 
 #: lilypond-book.py:127
 msgid "FILTER"
@@ -1042,10 +1288,6 @@ msgstr "nicht abbrechen wenn, keine PNG-Bilder für EPS-Dateien gefunden werden"
 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:204 midi2ly.py:890 musicxml2ly.py:2688 main.cc:169
-msgid "be verbose"
-msgstr "wortreich sein"
-
 #: lilypond-book.py:220
 msgid ""
 "run executable PROG instead of latex, or in\n"
@@ -1117,293 +1359,121 @@ msgstr "Einfügung wird verarbeitet: %s"
 msgid "Removing `%s'"
 msgstr "»%s« wird gelöscht"
 
-#: midi2ly.py:99
-msgid "warning: "
-msgstr "Warnung: "
+#: convert-ly.py:44
+msgid ""
+"Update LilyPond input to newer version.  By default, update from the\n"
+"version taken from the \\version command, to the current LilyPond version."
+msgstr ""
+"LilyPond-Eingabe auf neuere Version bringen. Standardmäßig wird von der\n"
+"Version vom Kommando \\version zur aktuellen LilyPond-Version gegangen."
 
-#: midi2ly.py:102 midi2ly.py:922
-msgid "error: "
-msgstr "Fehler: "
+#: convert-ly.py:102 convert-ly.py:135
+msgid "VERSION"
+msgstr "VERSION"
 
-#: midi2ly.py:103
-msgid "Exiting... "
-msgstr "Beenden... "
+#: convert-ly.py:104
+msgid "start from VERSION [default: \\version found in file]"
+msgstr "bei VERSION anfangen [Standard: \\version in Datei gefunden]"
 
-#: midi2ly.py:848
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s nach »%s« ausgeben..."
+#: convert-ly.py:107
+msgid "edit in place"
+msgstr "vor Ort ändern"
 
-#: midi2ly.py:861
-#, python-format
-msgid "Convert %s to LilyPond input.\n"
-msgstr "%s in LilyPond-Quelltext umwandeln.\n"
+#: convert-ly.py:111
+msgid "do not add \\version command if missing"
+msgstr "keinen \\version-Befehl hinzufügen, falls es fehlt"
 
-#: midi2ly.py:866
-msgid "print absolute pitches"
-msgstr "Absolute Tonhöhen ausgeben"
+#: convert-ly.py:117
+#, python-format
+msgid "force updating \\version number to %s"
+msgstr "erzwinge Aktualisierung von \\version nach %s"
 
-#: midi2ly.py:868 midi2ly.py:883
-msgid "DUR"
-msgstr "DAUER"
+#: convert-ly.py:123
+msgid "only update \\version number if file is modified"
+msgstr "Aktualisierung von \\version nur, wenn die Datei verändert wurde"
 
-#: midi2ly.py:869
-msgid "quantise note durations on DUR"
-msgstr "Notenlängen auf DAUER quantisieren"
+#: convert-ly.py:129
+#, python-format
+msgid "show rules [default: -f 0, -t %s]"
+msgstr "Regeln anzeigen [Standard: -f 0, -t %s]"
 
-#: midi2ly.py:872
-msgid "print explicit durations"
-msgstr "Explizite Notenlängen ausgeben"
+#: convert-ly.py:134
+#, python-format
+msgid "convert to VERSION [default: %s]"
+msgstr "zu VERSION konvertieren [Standard: %s]"
 
-#: midi2ly.py:876
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "Tonart setzen: VORZ=+Kreuze|-B's; MOLL=1"
+#: convert-ly.py:184
+msgid "Applying conversion: "
+msgstr "Anwenden der Umwandlung: "
 
-#: midi2ly.py:877
-msgid "ALT[:MINOR]"
-msgstr "VORZ[:MOLL]"
+#: convert-ly.py:197
+msgid "Error while converting"
+msgstr "Fehler beim Umwandeln"
 
-#: midi2ly.py:882
-msgid "quantise note starts on DUR"
-msgstr "Notenanfänge auf DAUER quantisieren"
+#: convert-ly.py:199
+msgid "Stopping at last successful rule"
+msgstr "Abbruch bei letzter erfolgreicher Regel"
 
-#: midi2ly.py:885
-msgid "DUR*NUM/DEN"
-msgstr "DAUER*ZÄHLER/NENNER"
-
-# tuplet = Wertaufteilung nach: Peter Giger: Die Kunst des Rhythmus, Seite 25
-#: midi2ly.py:888
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "Wertaufteilungsdauern DAUER*ZÄHLER/NENNER erlauben"
-
-#: midi2ly.py:900
-msgid "treat every text as a lyric"
-msgstr "Jeden Text als Liedtext behandeln"
-
-#: midi2ly.py:903
-msgid "Examples"
-msgstr "Beispiele"
-
-#: midi2ly.py:923
-msgid "no files specified on command line."
-msgstr "Keine Dateien auf der Kommandozeile angegeben."
-
-#: musicxml2ly.py:324
-#, 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:340 musicxml2ly.py:342
-#, python-format
-msgid "Unprocessed PartGroupInfo %s encountered"
-msgstr "Unverarbeitetes PartGroupInfo %s angetroffen"
-
-#: musicxml2ly.py:595
-#, python-format
-msgid "Encountered note at %s without type and duration (=%s)"
-msgstr "Note bei %s ohne Art und Dauer angetroffen (=%s)"
-
-#: musicxml2ly.py:615
-#, 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:864
-msgid "Unable to extract key signature!"
-msgstr "Kann die Tonart nicht extrahieren!"
-
-#: musicxml2ly.py:891
-#, 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:1029
-#, python-format
-msgid "Encountered unprocessed marker %s\n"
-msgstr "Unverarbeiteter Marker %s angetroffen\n"
-
-#: musicxml2ly.py:1123
-#, python-format
-msgid "unknown span event %s"
-msgstr "Unbekannte Spannerklasse »%s«"
-
-#: musicxml2ly.py:1133
-#, python-format
-msgid "unknown span type %s for %s"
-msgstr "Unbekannter Spannertyp %s für %s"
-
-#: musicxml2ly.py:1553
-msgid "Unknown metronome mark, ignoring"
-msgstr "Unbekanntes Metronom-Zeichen, wird ignoriert"
-
-#. TODO: Implement the other (more complex) way for tempo marks!
-#: musicxml2ly.py:1558
-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:1760
-#, python-format
-msgid "Unable to convert chord type %s to lilypond."
-msgstr "Kann Akkordtyp %s nicht nach lilypond umwandeln"
-
-#: musicxml2ly.py:1909
-#, 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:1913
-msgid "cannot find suitable event"
-msgstr "passendes Ereignis kann nicht gefunden werden"
-
-#: musicxml2ly.py:2061
+#: convert-ly.py:224
 #, python-format
-msgid "Negative skip %s (from position %s to %s)"
-msgstr "Negativer Sprung (skip) %s (von Position %s bis %s)"
+msgid "Processing `%s'... "
+msgstr "»%s« wird verarbeitet..."
 
-#: musicxml2ly.py:2202
+#: convert-ly.py:332
 #, 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"
+msgid "%s: Unable to open file"
+msgstr "%s: Konnte Datei nicht öffnen"
 
-#: musicxml2ly.py:2283
+#: convert-ly.py:339
 #, python-format
-msgid "unexpected %s; expected %s or %s or %s"
-msgstr "unerwartetes %s; %s oder %s oder %s erwartet"
-
-#: musicxml2ly.py:2389
-msgid "Encountered closing slur, but no slur is open"
-msgstr "Auf schließenden Legatobogen gestoßen, aber es wurde kein Bogen begonnen"
-
-#: musicxml2ly.py:2392
-msgid "Cannot have two simultaneous (closing) slurs"
-msgstr "Zwei gleichzeitige (schließende) Legatobögen sind nicht möglich"
-
-#: musicxml2ly.py:2401
-msgid "Cannot have a slur inside another slur"
-msgstr "Ein Legatobogen innerhalb eines anderen Legatobogens ist nicht möglich"
-
-#: musicxml2ly.py:2404
-msgid "Cannot have two simultaneous slurs"
-msgstr "Zwei gleichzeitige Legatobögen sind nicht möglich"
+msgid "%s: Unable to determine version.  Skipping"
+msgstr "Version für »%s« kann nicht erkannt werden.  Wird übersprungen"
 
-#: musicxml2ly.py:2538
+#: convert-ly.py:344
 #, python-format
-msgid "cannot simultaneously have more than one mode: %s"
-msgstr "Kann nicht gleichzeitig mehr als einen Modus haben: %s"
-
-#: musicxml2ly.py:2646
-msgid "Converting to LilyPond expressions..."
-msgstr "In LilyPond-Ausdrücke umwandeln..."
-
-#: musicxml2ly.py:2657
-msgid "musicxml2ly [OPTION]... FILE.xml"
-msgstr "musicxml2ly [Optionen]... DATEI.xml"
-
-#: musicxml2ly.py:2659
 msgid ""
-"Convert MusicXML from FILE.xml to LilyPond input.\n"
-"If the given filename is -, musicxml2ly reads from the command line.\n"
-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:2669
-msgid ""
-"Copyright (c) 2005--2011 by\n"
-"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
-"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
-"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
+"%s: Invalid version string `%s' \n"
+"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
 msgstr ""
-"Copyright (c) 2005--2011\n"
-"····Han-Wen·Nienhuys·<hanwen@xs4all.nl>,\n"
-"····Jan·Nieuwenhuizen·<janneke@gnu.org>·and\n"
-"····Reinhold·Kainhofer·<reinhold@kainhofer.com>\n"
-
-#: musicxml2ly.py:2694
-msgid "use lxml.etree; uses less memory and cpu time"
-msgstr "lxml.etree verwenden; benötigt weniger Speicher und Prozessorzeit"
-
-#: musicxml2ly.py:2700
-msgid "input file is a zip-compressed MusicXML file"
-msgstr "Eingabedatei ist eine zip-komprimierte MusicXML-Datei"
-
-#: musicxml2ly.py:2706
-msgid "convert pitches in relative mode (default)"
-msgstr "Tonhöhen im relativen Modus konvertieren (Standard)"
-
-#: musicxml2ly.py:2711
-msgid "convert pitches in absolute mode"
-msgstr "Tonhöhen im absoluten Modus konvertieren"
-
-#: musicxml2ly.py:2714
-msgid "LANG"
-msgstr "SPRA"
-
-#: musicxml2ly.py:2716
-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:2722
-msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
-msgstr "Richtungen (^, _ oder -) for Artikulationen, Dynamik usw. nicht konvertieren"
-
-#: musicxml2ly.py:2728
-msgid "do not convert exact vertical positions of rests"
-msgstr "zusätzliche vertikale Positionen von Pausen nicht konvertieren"
-
-#: musicxml2ly.py:2734
-msgid "do not convert the exact page layout and breaks"
-msgstr "nicht das exakte Seitenlayout und Umbrüche konvertieren"
-
-#: musicxml2ly.py:2740
-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:2748
-msgid "set output filename to FILE, stdout if -"
-msgstr "Ausgabedateiname auf DATEI setzen, stout if -"
-
-#: musicxml2ly.py:2831
-#, python-format
-msgid "unknown part in part-list: %s"
-msgstr "unbekannte Stimme in part-list (Stimmen-Liste): %s"
-
-#: musicxml2ly.py:2893
-msgid "Input is compressed, extracting raw MusicXML data from stdin"
-msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten von stdin"
-
-#: musicxml2ly.py:2896
-#, python-format
-msgid "Input file %s is compressed, extracting raw MusicXML data"
-msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten"
-
-#: musicxml2ly.py:2926
-msgid "Reading MusicXML from Standard input ..."
-msgstr "MusicXML von standard input lesen..."
-
-#: musicxml2ly.py:2928
-#, python-format
-msgid "Reading MusicXML from %s ..."
-msgstr "MusicXML aus %s lesen..."
+"%s: Ungültige Versionsangabe `%s' \n"
+"Gültige Versionsangaben bestehen aus drei Zahlen, durch Punkte getrennt; etwa `2.8.12'"
 
-#: musicxml2ly.py:2961
+#: etf2ly.py:1195
 #, python-format
-msgid "Output to `%s'"
-msgstr "Ausgabe nach »%s«"
+msgid "%s [OPTION]... ETF-FILE"
+msgstr "%s [OPTIONEN]... ETF-DATEI"
 
-#: musicxml2ly.py:3028
-#, python-format
-msgid "Unable to find input file %s"
-msgstr "Eingabedatei kann nicht gefunden werden %s"
+#: etf2ly.py:1196
+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"
+msgstr ""
+"Enigma Transport-Format ist ein von Coda Music Technology's Finale\n"
+"verwendetes Format. etf2ly wandelt eine Teilmenge von ETF in\n"
+"eine von Lilypond verwendbare Datei um.\n"
 
-#: website_post.py:115
+#: website_post.py:123
 msgid "English"
 msgstr "Englisch"
 
-#: website_post.py:118
+#: website_post.py:126
 msgid "Other languages"
 msgstr "Andere Sprachen"
 
+#: warn.cc:59
+#, c-format
+msgid "success: %s"
+msgstr "Erfolg: %s"
+
+#: warn.cc:86 grob.cc:617 input.cc:97
+#, c-format
+msgid "programming error: %s"
+msgstr "Programmierfehler: %s"
+
+#: warn.cc:87 input.cc:98
+msgid "continuing, cross fingers"
+msgstr "Fortsetzung, die Daumen drücken"
+
 #: getopt-long.cc:153
 #, c-format
 msgid "option `%s' requires an argument"
@@ -1424,73 +1494,92 @@ msgstr "unerkannte Option: »%s«"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "ungültiges Argument »%s« für Option »%s«"
 
-#: warn.cc:59
-#, c-format
-msgid "success: %s"
-msgstr "Erfolg: %s"
+#: grob.cc:286
+msgid "Infinity or NaN encountered"
+msgstr "Unendlichkeit oder NaN angetroffen"
 
-#: warn.cc:86 grob.cc:617 input.cc:97
-#, c-format
-msgid "programming error: %s"
-msgstr "Programmierfehler: %s"
+#: vaticana-ligature.cc:95
+msgid "flexa-height undefined; assuming 0"
+msgstr "flexa-Höhe nicht definiert: 0 angenommen"
 
-#: warn.cc:87 input.cc:98
-msgid "continuing, cross fingers"
-msgstr "Fortsetzung, die Daumen drücken"
+#: vaticana-ligature.cc:100
+msgid "ascending vaticana style flexa"
+msgstr "aufsteigender Vaticana-Stil flexa"
 
-#: accidental-engraver.cc:180
-#, c-format
-msgid "accidental typesetting list must begin with context-name: %s"
-msgstr "Versetzungszeichensatzliste muss mit Kontextnamen beginnen: %s"
+#: vaticana-ligature.cc:188
+msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
+msgstr "Vaticana_ligature: nichts zusammengefügt (delta_pitch == 0)"
 
-#: accidental-engraver.cc:210
-#, c-format
-msgid "procedure or context-name expected for accidental rule, found %s"
-msgstr "Prozedur oder Kontextname für Versetzungszeichenregel erwartet, %s gefunden"
+#: parse-scm.cc:101
+msgid "GUILE signaled an error for the expression beginning here"
+msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck"
 
-#: 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"
+#: 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"
 
-#: accidental.cc:215
-msgid "natural alteration glyph not found"
-msgstr "Auflösungszeichen konnte nicht gefunden werden"
+#. if we get to here, just put everything on one line
+#: constrained-breaking.cc:189 constrained-breaking.cc:207
+msgid "cannot find line breaking that satisfies constraints"
+msgstr "es kann kein Zeilenumbruch gefunden werden, der die Bedingungen erfüllen"
 
-#: all-font-metrics.cc:156
-#, c-format
-msgid "cannot find font: `%s'"
-msgstr "Schriftart kann nicht gefunden werden: »%s«"
+#: horizontal-bracket-engraver.cc:78
+msgid "do not have that many brackets"
+msgstr "so viele Klammern gibt es nicht"
 
-#: apply-context-iterator.cc:42
-msgid "\\applycontext argument is not a procedure"
-msgstr "Argument für \\applycontext ist keine Prozedur"
+#: horizontal-bracket-engraver.cc:87
+msgid "conflicting note group events"
+msgstr "in Konflikt stehende Notengruppenereignisse"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
+#: 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"
+
+#: pango-font.cc:187 open-type-font.cc:319
 #, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "kann nicht geändert werden, bereits im Übersetzer: %s"
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "FT_Get_Glyph_Name() Fehler: %s"
 
-#: 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"
+#: pango-font.cc:204
+#, 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"
 
-#: axis-group-engraver.cc:95
-msgid "are there two Axis_group_engravers?"
-msgstr "gibt es zwei Axis_group_engravers?"
+#: pango-font.cc:241
+#, c-format
+msgid "no PostScript font name for font `%s'"
+msgstr "Kein PostScript-Schriftartname für Schriftart: »%s«"
 
-#: axis-group-engraver.cc:96
-msgid "removing this vertical group"
-msgstr "Entfernen dieser vertikalen Gruppe"
+#: pango-font.cc:290
+msgid "FreeType face has no PostScript font name"
+msgstr "FreeType-Schriftart hat keinen PostScript-Schriftartnamen"
 
-#: axis-group-interface.cc:611
-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«"
+#: midi-item.cc:92
+#, c-format
+msgid "no such MIDI instrument: `%s'"
+msgstr "kein MIDI-Instrument: `%s'"
 
-#: bar-check-iterator.cc:84
+#: note-heads-engraver.cc:76
+msgid "NoteEvent without pitch"
+msgstr "NoteEvent ohne Tonhöhe"
+
+#: rest.cc:159
 #, c-format
-msgid "barcheck failed at: %s"
-msgstr "Taktüberprüfung gescheitert bei: %s"
+msgid "rest `%s' not found"
+msgstr "Pause »%s« nicht gefunden"
+
+#: spaceable-grob.cc:94
+#, c-format
+msgid "No spring between column %d and next one"
+msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger"
 
 #: beam-engraver.cc:147
 msgid "already have a beam"
@@ -1512,83 +1601,9 @@ msgstr "Notenhals passt nicht in Balken"
 msgid "beam was started here"
 msgstr "Balken wurde hier begonnen"
 
-#: beam-quanting.cc:314
-msgid "no feasible beam position"
-msgstr "Keine praktikable Balkenposition"
-
-#: beam.cc:171
-msgid "removing beam with no stems"
-msgstr "Balken ohne Notenhälse wird entfernt"
-
-#: beam.cc:1116
-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"
-
-#: break-alignment-interface.cc:206
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Kein Abstandeintrag von %s nach »%s«"
-
-#: 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"
-
-#: chord-tremolo-engraver.cc:88
-msgid "No tremolo to end"
-msgstr "Kein Tremolo zu beenden"
-
-#: chord-tremolo-engraver.cc:109
-msgid "unterminated chord tremolo"
-msgstr "unbegrenztes Akkord-Tremolo"
-
-#: clef.cc:65
-#, c-format
-msgid "clef `%s' not found"
-msgstr "Schlüssel »%s« nicht gefunden"
-
-#: cluster.cc:120
-#, c-format
-msgid "unknown cluster style `%s'"
-msgstr "unbekannter Clusterstil: »%s«"
-
-#: cluster.cc:157
-msgid "junking empty cluster"
-msgstr "Leeres Cluster wird verworfen"
-
-#: coherent-ligature-engraver.cc:111
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
-msgstr "Coherent_ligature_engraver: setze »spacing-increment=0.01«: ptr=%ul"
-
-#. if we get to here, just put everything on one line
-#: constrained-breaking.cc:189 constrained-breaking.cc:207
-msgid "cannot find line breaking that satisfies constraints"
-msgstr "es kann kein Zeilenumbruch gefunden werden, der die Bedingungen erfüllen"
-
-#: context-property.cc:42
-msgid "need symbol arguments for \\override and \\revert"
-msgstr "Symbol-Argumente für \\override und \\revert benötigt"
+#: music-iterator.cc:182
+msgid "Sending non-event to context"
+msgstr "Nicht-Ereignis wird an Kontext gesendet"
 
 #: context.cc:149
 #, c-format
@@ -1610,11 +1625,6 @@ msgstr "Ungültiges CreateContext-Ereignis: Kontext %s kann nicht erzeugt werden
 msgid "cannot find or create: `%s'"
 msgstr "»%s« kann weder gefunden noch erzeugt werden"
 
-#: custos.cc:88
-#, c-format
-msgid "custos `%s' not found"
-msgstr "Custos »%s« nicht gefunden"
-
 #: dispatcher.cc:82
 msgid "Event class should be a symbol"
 msgstr "Ereignisklasse sollte ein Symbol sein"
@@ -1624,10 +1634,17 @@ msgstr "Ereignisklasse sollte ein Symbol sein"
 msgid "Unknown event class %s"
 msgstr "Unbekannte Ereignisklasse »%s«"
 
-#: dots.cc:48
-#, c-format
-msgid "dot `%s' not found"
-msgstr "Punkt »%s« nicht gefunden"
+#: 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?"
+
+#: tie-engraver.cc:116
+msgid "unterminated tie"
+msgstr "unbegrenzter Bindebogen"
+
+#: tie-engraver.cc:312
+msgid "lonely tie"
+msgstr "einsamer Bindebogen"
 
 #: dynamic-engraver.cc:197
 msgid "cannot find start of (de)crescendo"
@@ -1649,178 +1666,156 @@ msgstr "Crescendo beginnt hier"
 msgid "unterminated (de)crescendo"
 msgstr "unbegrenztes (De-) Crescendo"
 
-#: 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"
-
-#: extender-engraver.cc:170 extender-engraver.cc:179
-msgid "unterminated extender"
-msgstr "unbegrenzter Textunterstrich"
+#: paper-score.cc:122 minimal-page-breaking.cc:40
+msgid "Calculating line breaks..."
+msgstr "Zeilenumbrüche werden berechnet..."
 
-#: font-config-scheme.cc:152 font-config.cc:55
+#: paper-score.cc:135
 #, c-format
-msgid "failed adding font directory: %s"
-msgstr "Schriftartverzeichnis konnte nicht hinzugefügt werden: %s"
+msgid "Element count %d (spanners %d) "
+msgstr "Elementanzahl: %d (Klammern: %d)"
 
-#: font-config-scheme.cc:154 font-config.cc:57
-#, c-format
-msgid "adding font directory: %s"
-msgstr "Schriftartverzeichnis wird hinzugefügt: %s"
+#: paper-score.cc:139
+msgid "Preprocessing graphical objects..."
+msgstr "Vorverarbeitung der grafischen Elemente..."
 
-#: font-config-scheme.cc:168
-#, c-format
-msgid "failed adding font file: %s"
-msgstr "Schriftartdatei konnte nicht hinzugefügt werden: %s"
+#: paper-score.cc:163 optimal-page-breaking.cc:208
+#: page-turn-page-breaking.cc:248
+msgid "Drawing systems..."
+msgstr "Systeme erstellen..."
 
-#: font-config-scheme.cc:170
-#, c-format
-msgid "adding font file: %s"
-msgstr "Schriftartdatei wird hinzugefügt: %s"
+#: mensural-ligature-engraver.cc:96
+msgid "ligature with less than 2 heads -> skipping"
+msgstr "Ligatur mit weniger als 2 Notenköpfen -> überspringen"
 
-#: font-config.cc:40
-msgid "Initializing FontConfig..."
-msgstr "FontConfig wird initialisiert..."
+#: mensural-ligature-engraver.cc:123
+msgid "cannot determine pitch of ligature primitive -> skipping"
+msgstr "Tonhöhe des Ligaturelements kann nicht ermittelt werden -> überspringen"
 
-#: font-config.cc:61
-msgid "Building font database..."
-msgstr "Schriftartendatenbank erstellen..."
+#: mensural-ligature-engraver.cc:137
+msgid "single note ligature - skipping"
+msgstr "Ligatur mit einer einzelnen Note -> überspringen"
 
-#: general-scheme.cc:305
-msgid "infinity or NaN encountered while converting Real number"
-msgstr "Unendlichkeit oder NaN bei Umwandlung einer Realen Zahl gefunden"
+#: mensural-ligature-engraver.cc:148
+msgid "prime interval within ligature -> skipping"
+msgstr "Prime in der Ligatur -> überspringen"
 
-#: general-scheme.cc:306
-msgid "setting to zero"
-msgstr "auf Null gesetzt"
+#: mensural-ligature-engraver.cc:159
+msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
+msgstr "Mensuralligatur: Dauer weder Mx, L, B noch S -> überspringen"
 
-#: general-scheme.cc:542 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"
+#: mensural-ligature-engraver.cc:202
+msgid "semibrevis must be followed by another one -> skipping"
+msgstr "Semibrevis muss von einem weiteren gefolgt werden -> überspringen"
 
-#: glissando-engraver.cc:105
-msgid "unterminated glissando"
-msgstr "unbegrenztes Glissando."
+#: mensural-ligature-engraver.cc:212
+msgid ""
+"semibreves can only appear at the beginning of a ligature,\n"
+"and there may be only zero or two of them"
+msgstr ""
+"Semibrevis kann nur am Anfang einer Ligatur auftreten,\n"
+"und es können nur null oder zwei davon auftreten"
 
-#: global-context-scheme.cc:96 global-context-scheme.cc:114
-msgid "no music found in score"
-msgstr "keine Musik in der Partitur gefunden"
+#: mensural-ligature-engraver.cc:232
+msgid ""
+"invalid ligatura ending:\n"
+"when the last note is a descending brevis,\n"
+"the penultimate note must be another one,\n"
+"or the ligatura must be LB or SSB"
+msgstr ""
+"ungültiges Ende der Ligatur:\n"
+"Wenn die letzte Note eine absteigende Brevis ist,\n"
+"muss die vorletzte Note eine weitere sein,\n"
+"oder die Ligatur muss LB oder SSB sein"
 
-#: global-context-scheme.cc:104
-msgid "Interpreting music... "
-msgstr "Interpretation der Musik..."
+#: mensural-ligature-engraver.cc:386
+msgid "unexpected case fall-through"
+msgstr "unerwarteter case-Ausgang"
 
-#: global-context-scheme.cc:127
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "verstrichene Zeit: %.2f Sekunden"
-
-#: gregorian-ligature-engraver.cc:70
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignoriert"
-
-#: gregorian-ligature-engraver.cc:75
+#: piano-pedal-engraver.cc:298
 #, c-format
-msgid "implied \\%s added"
-msgstr "implizites \\%s hinzugefügt"
-
-#. ligature may not start with 2nd head of pes or flexa
-#: gregorian-ligature-engraver.cc:224
-msgid "cannot apply `\\~' on first head of ligature"
-msgstr "»\\~« kann nicht auf erste Note der Ligatur angewendet werden"
-
-#. (pitch == prev_pitch)
-#: gregorian-ligature-engraver.cc:236
-msgid "cannot apply `\\~' on heads with identical pitch"
-msgstr "»\\~« kann nicht auf Noten mit gleicher Tonhöhe angewendet werden"
+msgid "expect 3 strings for piano pedals, found: %ld"
+msgstr "3 Textketten für Piano-Pedal erwartet, %ld gefunden"
 
-#: grob-interface.cc:68
+#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
+#: piano-pedal-performer.cc:104
 #, c-format
-msgid "Unknown interface `%s'"
-msgstr "Unbekannte Schnittstelle »%s«"
+msgid "cannot find start of piano pedal: `%s'"
+msgstr "es kann kein Anfang für Piano-Pedal gefunden werden: »%s«"
 
-#: grob-interface.cc:79
+#: piano-pedal-engraver.cc:359
 #, c-format
-msgid "Grob `%s' has no interface for property `%s'"
-msgstr "Grob »%s« hat keine Schnittstelle für Eigenschaft »%s«"
+msgid "cannot find start of piano pedal bracket: `%s'"
+msgstr "es kann kein Anfang für Piano-Pedal-Klammer gefunden werden: »%s«"
 
-#: grob-property.cc:34
-#, c-format
-msgid "%d: %s"
-msgstr "%d: %s"
+#: input.cc:131 source-file.cc:179 source-file.cc:194
+msgid "position unknown"
+msgstr "Position unbekannt"
 
-#: grob-property.cc:173
+#: paper-outputter-scheme.cc:41
 #, c-format
-msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
-msgstr "Zyklische Abhängigkeit: Laufende Verarbeitung für #'%s (%s) gefunden"
-
-#: grob.cc:286
-msgid "Infinity or NaN encountered"
-msgstr "Unendlichkeit oder NaN angetroffen"
+msgid "Layout output to `%s'..."
+msgstr "Layout nach »%s« ausgeben..."
 
-#: hairpin.cc:186
-msgid "decrescendo too small"
-msgstr "Decrescendo zu kurz"
+#: general-scheme.cc:306
+msgid "infinity or NaN encountered while converting Real number"
+msgstr "Unendlichkeit oder NaN bei Umwandlung einer Realen Zahl gefunden"
 
-#: horizontal-bracket-engraver.cc:78
-msgid "do not have that many brackets"
-msgstr "so viele Klammern gibt es nicht"
+#: general-scheme.cc:307
+msgid "setting to zero"
+msgstr "auf Null gesetzt"
 
-#: horizontal-bracket-engraver.cc:87
-msgid "conflicting note group events"
-msgstr "in Konflikt stehende Notengruppenereignisse"
+#: general-scheme.cc:543
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr "Unendlich oder NaN in Ausgabe gefunden. Wird durch 0.0 ersetzt"
 
-#: hyphen-engraver.cc:104
-msgid "removing unterminated hyphen"
-msgstr "unbegrenzter Bindestrich wird entfernt"
+#: music.cc:151
+#, c-format
+msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden"
 
-#: hyphen-engraver.cc:118
-msgid "unterminated hyphen; removing"
-msgstr "unbegrenzter Bindestrich; entfernt"
+#: music.cc:219
+msgid "(normalized pitch)"
+msgstr "(normalisierte Tonhöhe)"
 
-#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
+#: music.cc:223
 #, c-format
-msgid "cannot find file: `%s'"
-msgstr "Datei »%s« kann nicht gefunden werden"
+msgid "Transposing %s by %s makes alteration larger than double"
+msgstr "Transponieren von %s um %s erzeugt mehr als ein Doppel-Vorzeichen"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:100
+#: translator-ctors.cc:65
 #, c-format
-msgid "(search path: `%s')"
-msgstr "(Suchpfad: »%s«)"
+msgid "unknown translator: `%s'"
+msgstr "unbekannter Übersetzer: »%s«"
 
-#: input.cc:131 source-file.cc:179 source-file.cc:194
-msgid "position unknown"
-msgstr "Position unbekannt"
+#: 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"
 
-#: key-signature-interface.cc:78
-#, c-format
-msgid "No glyph found for alteration: %s"
-msgstr "Kein Glyph für Vorzeichen gefunden: %s"
+#: new-fingering-engraver.cc:106
+msgid "cannot add text scripts to individual note heads"
+msgstr "es kann kein Text zu einzelnen Notenköpfen hinzugefügt werden"
 
-#: key-signature-interface.cc:88
-msgid "alteration not found"
-msgstr "Alterierung nicht gefunden"
+#: new-fingering-engraver.cc:250
+msgid "no placement found for fingerings"
+msgstr "Keine Platzierung für Fingersatz gefunden"
+
+#: new-fingering-engraver.cc:251
+msgid "placing below"
+msgstr "Platzierung darunter"
 
-#: ligature-bracket-engraver.cc:73 ligature-engraver.cc:104
+#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72
 msgid "cannot find start of ligature"
 msgstr "Anfang der Ligatur kann nicht gefunden werden"
 
-#: ligature-bracket-engraver.cc:86 ligature-engraver.cc:131
-msgid "already have a ligature"
-msgstr "habe bereits eine Ligatur"
-
 #: ligature-engraver.cc:109
 msgid "no right bound"
 msgstr "keine rechte Begrenzung"
 
+#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85
+msgid "already have a ligature"
+msgstr "habe bereits eine Ligatur"
+
 #: ligature-engraver.cc:140
 msgid "no left bound"
 msgstr "keine linke Begrenzung"
@@ -1837,684 +1832,655 @@ msgstr "Pause wird ignoriert: Ligatur darf keine Pause enthalten"
 msgid "ligature was started here"
 msgstr "Ligatur wurde hier begonnen"
 
-#: lily-guile.cc:89
+#: auto-change-iterator.cc:74 change-iterator.cc:72
 #, c-format
-msgid "(load path: `%s')"
-msgstr "(Lade-Pfad: `%s')"
+msgid "cannot change, already in translator: %s"
+msgstr "kann nicht geändert werden, bereits im Übersetzer: %s"
 
-#: lily-guile.cc:439
+#: accidental-engraver.cc:180
 #, 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:442
-msgid "perhaps a typing error?"
-msgstr "vielleicht ein Tippfehler?"
+msgid "accidental typesetting list must begin with context-name: %s"
+msgstr "Versetzungszeichensatzliste muss mit Kontextnamen beginnen: %s"
 
-#: lily-guile.cc:449
-msgid "doing assignment anyway"
-msgstr "Zuweisung wird trotzdem durchgeführt"
+#: accidental-engraver.cc:210
+#, c-format
+msgid "procedure or context-name expected for accidental rule, found %s"
+msgstr "Prozedur oder Kontextname für Versetzungszeichenregel erwartet, %s gefunden"
 
-#: lily-guile.cc:461
+#: ttf.cc:481 ttf.cc:530
 #, 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"
+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"
 
-#: lily-lexer.cc:264
-msgid "include files are not allowed in safe mode"
-msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt"
+#: ttf.cc:513 ttf.cc:565
+msgid "font index must be non-negative, using index 0"
+msgstr "font-index muss nicht-negativ sein, benutze Index 0"
 
-#: lily-lexer.cc:291
+#: break-alignment-interface.cc:206
 #, c-format
-msgid "identifier name is a keyword: `%s'"
-msgstr "Bezeichnername ist ein Schlüsselwort: »%s«"
+msgid "No spacing entry from %s to `%s'"
+msgstr "Kein Abstandeintrag von %s nach »%s«"
 
-#: lily-lexer.cc:312
-#, c-format
-msgid "error at EOF: %s"
-msgstr "Fehler am Dateiende (EOF): %s"
+#: minimal-page-breaking.cc:44
+msgid "Calculating page breaks..."
+msgstr "Zeilenumbrüche werden berechnet..."
 
-#: lily-parser-scheme.cc:82
+#: vaticana-ligature-engraver.cc:400
 #, c-format
-msgid "Changing working directory to: `%s'"
-msgstr "Aktuelles Verzeichnis wird zu »%s« geändert"
+msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
+msgstr "Präfix(e) »%s« dieses Kopfes gemäß den Einschränkungen des ausgewählten Ligaturstils ignoriert"
 
-#: lily-parser-scheme.cc:99
+#: vaticana-ligature-engraver.cc:736
 #, c-format
-msgid "cannot find init file: `%s'"
-msgstr "Init-Datei kann nicht gefunden werden: »%s«"
+msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
+msgstr "Vaticana_ligature_engraver: setzen »spacing-increment = %f«: ptr=%ul"
 
-#: lily-parser-scheme.cc:118
+#: paper-book.cc:214
 #, c-format
-msgid "Processing `%s'"
-msgstr "»%s« wird verarbeitet"
+msgid "program option -dprint-pages not supported by backend `%s'"
+msgstr "Programmoption -dprint-pages nicht von Backend »%s« unterstützt"
 
-#: lily-parser-scheme.cc:204
-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."
+#: paper-book.cc:233
+#, c-format
+msgid "program option -dpreview not supported by backend `%s'"
+msgstr "Programmoption -dpreview nicht von »%s« unterstützt"
 
-#: lily-parser.cc:106
-msgid "Parsing..."
-msgstr "Analysieren..."
+#: output-def.cc:235
+msgid "margins do not fit with line-width, setting default values"
+msgstr "Ränder passen nicht zur Zeilenbreite, setze Standardwerte"
 
-#: lily-parser.cc:134
-msgid "braces do not match"
-msgstr "Klammern passen nicht zueinander"
+#: 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"
 
-#: lyric-combine-music-iterator.cc:337
+#: score-engraver.cc:78
 #, c-format
-msgid "cannot find Voice `%s'"
-msgstr "Stimme kann nicht gefunden werden: »%s«"
+msgid "cannot find `%s'"
+msgstr "»%s« kann nicht gefunden werden"
 
-#: lyric-engraver.cc:175
-msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr "Textsilbe hat keine Note. \\lyricsto oder associatedVoice verwenden."
+#: score-engraver.cc:80
+msgid "Music font has not been installed properly."
+msgstr "Musik-Schriftart wurde nicht ordnungsgemäß installiert."
 
-#: main.cc:109
+#: score-engraver.cc:82
 #, c-format
-msgid ""
-"This program is free software.  It is covered by the GNU General Public\n"
-"License and you are welcome to change it and/or distribute copies of it\n"
-"under certain conditions.  Invoke as `%s --warranty' for more\n"
-"information.\n"
-msgstr ""
-"Dieses Programm ist Freie Software. Sie wird von der GNU General Public License\n"
-"geschützt, und Sie können sie gerne ändern und/oder Kopien unter bestimmten\n"
-"Bedingungen weitergeben. Rufen Sie »%s --warranty« für weitere\n"
-"Informationen auf.\n"
+msgid "Search path `%s'"
+msgstr "Suchpfad »%s«"
 
-#: main.cc:115
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
-"Boston, MA 02111-1307, USA.\n"
-msgstr ""
-"    Dieses Programm ist Freie Software; Sie können es unter den\n"
-"Bedingungen der GNU General Public License Version 2, wie von der\n"
-"Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren.\n"
-"\n"
-"    Dieses Programm wird herausgegeben in der Hoffnung, dass es nützlich sein wird\n"
-"Es wird jedoch KEINE GARANTIE übernommen. Selbst die\n"
-"implizite Garantie der MARKTGÄNGIGKEIT oder TAUGLICHKEIT FÜR EINEN\n"
-"BESTIMMTEN ZWECK kann nicht gewährleistet werden. Siehe GNU General Public\n"
-"License für weitere Details.\n"
-"\n"
-"    Sie sollten eine Kopie der GNU General Public\n"
-"License zusammen mit diesem Programm erhalten haben. Falls nicht, schreiben\n"
-"Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
-"Boston, MA 02111-1307, USA.\n"
-
-#: main.cc:146
-msgid "SYM[=VAL]"
-msgstr "SYM[=WERT]"
-
-#: main.cc:147
-msgid ""
-"set Scheme option SYM to VAL (default: #t).\n"
-"Use -dhelp for help."
-msgstr ""
-"Scheme-Option SYM auf WERT setzen (Vorgabe: #t).\n"
-"-dhelp für Hilfe verwenden."
-
-#: main.cc:150
-msgid "EXPR"
-msgstr "AUSD"
-
-#: main.cc:150
-msgid "evaluate scheme code"
-msgstr "Scheme-Code auswerten"
-
-#. Bug in option parser: --output =foe is taken as an abbreviation
-#. for --output-format.
-#: main.cc:153
-msgid "FORMATs"
-msgstr "FORMATe"
+#: score-engraver.cc:84
+msgid "Aborting"
+msgstr "Abbruch"
 
-#: main.cc:153
-msgid "dump FORMAT,...  Also as separate options:"
-msgstr "dump FORMAT,... Auch als separate Optionen:"
+#: note-collision.cc:497
+msgid "ignoring too many clashing note columns"
+msgstr "zu viele kollidierende Notenspalten werden ignoriert"
 
-#: main.cc:154
-msgid "generate PDF (default)"
-msgstr "PDF erzeugen (Standard)"
+#. fixme: be more verbose.
+#: volta-engraver.cc:111
+msgid "cannot end volta spanner"
+msgstr "Volta-Klammer kann nicht beendet werden"
 
-#: main.cc:155
-msgid "generate PNG"
-msgstr "PNG erzeugen"
+#: volta-engraver.cc:121
+msgid "already have a volta spanner, ending that one prematurely"
+msgstr "Wiederholungsklammer bereits vorhanden, wird vorzeitig beendet"
 
-#: main.cc:156
-msgid "generate PostScript"
-msgstr "PostScript erzeugen"
+#: volta-engraver.cc:125
+msgid "also already have an ended spanner"
+msgstr "endende Textklammer auch bereits vorhanden"
 
-#: main.cc:158
-msgid "FIELD"
-msgstr "FELD"
+#: volta-engraver.cc:126
+msgid "giving up"
+msgstr "aufgeben"
 
-#: main.cc:158
-msgid ""
-"dump header field FIELD to file\n"
-"named BASENAME.FIELD"
-msgstr "Header-Feld FELD in Datei BASISNAME.FELD schreiben"
+#: page-layout-problem.cc:322
+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"
 
-#: main.cc:160
-msgid "add DIR to search path"
-msgstr "VERZ zum Suchpfad hinzufügen"
+#: page-layout-problem.cc:325
+#, c-format
+msgid "cannot fit music on page: overflow is %f"
+msgstr "Noten passen nicht auf die Seite: Überhang ist %f"
 
-#: main.cc:161
-msgid "use FILE as init file"
-msgstr "DATEI als Anfangsdatei verwenden"
+#: page-layout-problem.cc:327
+msgid "compressing music to fit"
+msgstr "Noten werden komprimiert um zu passen"
 
-#: main.cc:163
-msgid "USER, GROUP, JAIL, DIR"
-msgstr "BENUTZER,GRUPPE,KERKER,VERZ"
+#: page-layout-problem.cc:765
+msgid "staff-affinities should only decrease"
+msgstr "staff-affinities sollten nur abnehmen"
 
-#: main.cc:163
-msgid ""
-"chroot to JAIL, become USER:GROUP\n"
-"and cd into DIR"
-msgstr ""
-"chroot in KERKER, wird BENUTZER:GRUPPE\n"
-"und cd in VERZ"
+#: apply-context-iterator.cc:42
+msgid "\\applycontext argument is not a procedure"
+msgstr "Argument für \\applycontext ist keine Prozedur"
 
-#: main.cc:166
-msgid "write output to FILE (suffix will be added)"
-msgstr "Ausgabe in DATEI schreiben (Endung wird hinzugefügt)"
+#. FIXME: constant error message.
+#: mark-engraver.cc:157
+msgid "rehearsalMark must have integer value"
+msgstr "rehearsalMark muss Ganzzahlwert haben"
 
-#: main.cc:167
-msgid "relocate using directory of lilypond program"
-msgstr "wiederfinden mit Hilfe des Lilypond-Programmverzeichnisses"
+#: mark-engraver.cc:163
+msgid "mark label must be a markup object"
+msgstr "Marke muss ein Textbeschriftungsobjekt sein"
 
-#. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:238
+#: new-dynamic-engraver.cc:142
 #, c-format
 msgid ""
-"Copyright (c) %s by\n"
-"%s  and others."
+"unknown crescendo style: %s\n"
+"defaulting to hairpin."
 msgstr ""
-"Copyright (c) %s bei\n"
-"%s und anderen."
+"unbekannter crescendo-Stil: %s\n"
+"wird als spitze Klammer gesetzt."
 
-#. No version number or newline here.  It confuses help2man.
-#: main.cc:265
+#: new-dynamic-engraver.cc:200
 #, c-format
-msgid "Usage: %s [OPTION]... FILE..."
-msgstr "Aufruf: %s [OPTION]... DATEI..."
-
-#: main.cc:267
-msgid "Typeset music and/or produce MIDI from FILE."
-msgstr "Musiksatz und/oder MIDI aus DATEI erzeugen."
+msgid "unterminated %s"
+msgstr "unbegrenzt: »%s«"
 
-#: main.cc:269
-msgid "LilyPond produces beautiful music notation."
-msgstr "LilyPond erzeugt ansprechenden Notensatz."
+#: stem-engraver.cc:103
+msgid "tremolo duration is too long"
+msgstr "Tremolodauer ist zu lang"
 
-#: main.cc:271
+#. FIXME:
+#: stem-engraver.cc:140
 #, c-format
-msgid "For more information, see %s"
-msgstr "Für weitere Informationen siehe %s"
+msgid "adding note head to incompatible stem (type = %d)"
+msgstr "Notenkopf wird zu inkompatiblem Hals (Typ = %d) hinzugefügt"
 
-#: main.cc:273
-msgid "Options:"
-msgstr "Optionen:"
+#: stem-engraver.cc:142
+msgid "maybe input should specify polyphonic voices"
+msgstr "vielleicht sollte die Eingabe mehrere Stimmen erstellen"
 
-#: main.cc:327
-#, c-format
-msgid "expected %d arguments with jail, found: %u"
-msgstr "%d Argumente mit Kerker erwartet, %u gefunden"
+#: lily-lexer.cc:264
+msgid "include files are not allowed in safe mode"
+msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt"
 
-#: main.cc:341
+#: lily-lexer.cc:291
 #, c-format
-msgid "no such user: %s"
-msgstr "kein solcher Benutzer: %s"
+msgid "identifier name is a keyword: `%s'"
+msgstr "Bezeichnername ist ein Schlüsselwort: »%s«"
 
-#: main.cc:343
+#: lily-lexer.cc:312
 #, c-format
-msgid "cannot get user id from user name: %s: %s"
-msgstr "Benutzer-ID von Benutzername kann nicht gefunden werden: %s: %s"
+msgid "error at EOF: %s"
+msgstr "Fehler am Dateiende (EOF): %s"
 
-#: main.cc:358
+#: lyric-combine-music-iterator.cc:337
 #, c-format
-msgid "no such group: %s"
-msgstr "keine solche Gruppe: %s"
+msgid "cannot find Voice `%s'"
+msgstr "Stimme kann nicht gefunden werden: »%s«"
 
-#: main.cc:360
+#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
 #, c-format
-msgid "cannot get group id from group name: %s: %s"
-msgstr "Gruppen-ID kann nicht von Gruppenname ermittelt werden: %s: %s"
+msgid "cannot find file: `%s'"
+msgstr "Datei »%s« kann nicht gefunden werden"
 
-#: main.cc:368
+#: includable-lexer.cc:73 lily-parser-scheme.cc:100
 #, c-format
-msgid "cannot chroot to: %s: %s"
-msgstr "kein chroot möglich nach: %s: %s"
+msgid "(search path: `%s')"
+msgstr "(Suchpfad: »%s«)"
 
-#: main.cc:375
-#, c-format
-msgid "cannot change group id to: %d: %s"
-msgstr "Gruppen-ID kann nicht geändert werden in: %d: %s"
+#: note-column.cc:135
+msgid "cannot have note heads and rests together on a stem"
+msgstr "Notenköpfe und Pausen können nicht zusammen an einem Hals auftreten"
 
-#: main.cc:381
-#, c-format
-msgid "cannot change user id to: %d: %s"
-msgstr "Benutzer-ID kann nicht geändert werden in: %d: %s"
+#: beam.cc:180
+msgid "removing beam with no stems"
+msgstr "Balken ohne Notenhälse wird entfernt"
 
-#: main.cc:387
-#, c-format
-msgid "cannot change working directory to: %s: %s"
-msgstr "aktuelles Verzeichnis kann nicht geändert werden in: %s: %s"
+#. We are completely screwed.
+#: beam.cc:1274
+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"
 
-#: main.cc:628
+#: slur-engraver.cc:93
 #, c-format
-msgid "exception caught: %s"
-msgstr "Ausnahme gefangen: %s"
+msgid "direction of %s invalid: %d"
+msgstr "Richtung von %s ungültig: %d"
 
-#. FIXME: constant error message.
-#: mark-engraver.cc:157
-msgid "rehearsalMark must have integer value"
-msgstr "rehearsalMark muss Ganzzahlwert haben"
+#: slur-engraver.cc:162
+msgid "unterminated slur"
+msgstr "unbegrenzter Legatobogen"
 
-#: mark-engraver.cc:163
-msgid "mark label must be a markup object"
-msgstr "Marke muss ein Textbeschriftungsobjekt sein"
+#: slur-engraver.cc:174
+msgid "cannot end slur"
+msgstr "Legatobogen kann nicht beendet werden"
 
-#: mensural-ligature-engraver.cc:96
-msgid "ligature with less than 2 heads -> skipping"
-msgstr "Ligatur mit weniger als 2 Notenköpfen -> überspringen"
+#: font-config.cc:40
+msgid "Initializing FontConfig..."
+msgstr "FontConfig wird initialisiert..."
 
-#: mensural-ligature-engraver.cc:123
-msgid "cannot determine pitch of ligature primitive -> skipping"
-msgstr "Tonhöhe des Ligaturelements kann nicht ermittelt werden -> überspringen"
+#: font-config.cc:55 font-config-scheme.cc:152
+#, c-format
+msgid "failed adding font directory: %s"
+msgstr "Schriftartverzeichnis konnte nicht hinzugefügt werden: %s"
 
-#: mensural-ligature-engraver.cc:137
-msgid "single note ligature - skipping"
-msgstr "Ligatur mit einer einzelnen Note -> überspringen"
+#: font-config.cc:57 font-config-scheme.cc:154
+#, c-format
+msgid "adding font directory: %s"
+msgstr "Schriftartverzeichnis wird hinzugefügt: %s"
 
-#: mensural-ligature-engraver.cc:149
-msgid "prime interval within ligature -> skipping"
-msgstr "Prime in der Ligatur -> überspringen"
+#: font-config.cc:61
+msgid "Building font database..."
+msgstr "Schriftartendatenbank erstellen..."
 
-#: mensural-ligature-engraver.cc:161
-msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
-msgstr "Mensuralligatur: Dauer weder Mx, L, B noch S -> überspringen"
+#. find out the ideal number of pages
+#: optimal-page-breaking.cc:62
+msgid "Finding the ideal number of pages..."
+msgstr "Ideale Seitenanzahl wird gefunden..."
 
-#: mensural-ligature-engraver.cc:209
-msgid "semibrevis must be followed by another one -> skipping"
-msgstr "Semibrevis muss von einem weiteren gefolgt werden -> überspringen"
+#: optimal-page-breaking.cc:85
+msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page"
+msgstr "konnte nicht systems-per-page und page-count gleichzeitig anwenden, ignoriere systems-per-page"
 
-#: mensural-ligature-engraver.cc:220
-msgid ""
-"semibreves can only appear at the beginning of a ligature,\n"
-"and there may be only zero or two of them"
-msgstr ""
-"Semibrevis kann nur am Anfang einer Ligatur auftreten,\n"
-"und es können nur null oder zwei davon auftreten"
-
-#: mensural-ligature-engraver.cc:247
-msgid ""
-"invalid ligatura ending:\n"
-"when the last note is a descending brevis,\n"
-"the penultimate note must be another one,\n"
-"or the ligatura must be LB or SSB"
-msgstr ""
-"ungültiges Ende der Ligatur:\n"
-"Wenn die letzte Note eine absteigende Brevis ist,\n"
-"muss die vorletzte Note eine weitere sein,\n"
-"oder die Ligatur muss LB oder SSB sein"
-
-#: mensural-ligature-engraver.cc:367
-msgid "unexpected case fall-through"
-msgstr "unerwarteter case-Ausgang"
-
-#: mensural-ligature.cc:152
-msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature: unerwarteter case-Ausgang"
-
-#: mensural-ligature.cc:203
-msgid "Mensural_ligature: (join_right == 0)"
-msgstr "Mensural_ligature: (join_right == 0)"
+#: optimal-page-breaking.cc:105
+msgid "Fitting music on 1 page..."
+msgstr "Musik wird auf eine Seite angepasst..."
 
-#: midi-item.cc:92
+#: optimal-page-breaking.cc:107
 #, c-format
-msgid "no such MIDI instrument: `%s'"
-msgstr "kein MIDI-Instrument: `%s'"
+msgid "Fitting music on %d pages..."
+msgstr "Musik wird auf %d Seiten angepasst..."
 
-#: midi-stream.cc:39
+#: optimal-page-breaking.cc:109
 #, c-format
-msgid "cannot open for write: %s: %s"
-msgstr "Es kann nicht zum Schreiben geöffnet werden: %s: %s"
+msgid "Fitting music on %d or %d pages..."
+msgstr "Musik wird auf %d oder %d Seiten angepasst..."
 
-#: midi-stream.cc:55
+#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173
 #, c-format
-msgid "cannot write to file: `%s'"
-msgstr "Es kann nicht in Datei geschrieben werden: »%s«"
-
-#: minimal-page-breaking.cc:40 paper-score.cc:122
-msgid "Calculating line breaks..."
-msgstr "Zeilenumbrüche werden berechnet..."
-
-#: minimal-page-breaking.cc:44
-msgid "Calculating page breaks..."
-msgstr "Zeilenumbrüche werden berechnet..."
+msgid "trying %d systems"
+msgstr "versuche %d Systeme"
 
-#: music-iterator.cc:182
-msgid "Sending non-event to context"
-msgstr "Nicht-Ereignis wird an Kontext gesendet"
+#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201
+#, c-format
+msgid "best score for this sys-count: %f"
+msgstr "bester Score für dieses sys-count: %f"
 
-#: music.cc:151
+#: accidental.cc:200
 #, c-format
-msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden"
+msgid "Could not find glyph-name for alteration %s"
+msgstr "Glyph-Name für Versetzungszeichen %s konnte nicht gefunden werden"
 
-#: music.cc:219
-msgid "(normalized pitch)"
-msgstr "(normalisierte Tonhöhe)"
+#: accidental.cc:215
+msgid "natural alteration glyph not found"
+msgstr "Auflösungszeichen konnte nicht gefunden werden"
 
-#: music.cc:223
+#: system.cc:197
 #, c-format
-msgid "Transposing %s by %s makes alteration larger than double"
-msgstr "Transponieren von %s um %s erzeugt mehr als ein Doppel-Vorzeichen"
+msgid "Element count %d"
+msgstr "Elementanzahl %d."
 
-#: new-dynamic-engraver.cc:142
+#: system.cc:303
 #, c-format
-msgid ""
-"unknown crescendo style: %s\n"
-"defaulting to hairpin."
-msgstr ""
-"unbekannter crescendo-Stil: %s\n"
-"wird als spitze Klammer gesetzt."
+msgid "Grob count %d"
+msgstr "Anzahl der grafischen Objekte (grob): %d"
 
-#: new-dynamic-engraver.cc:200
+#: slur.cc:362
 #, c-format
-msgid "unterminated %s"
-msgstr "unbegrenzt: »%s«"
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr "Grob für Legatobogen wird ignoriert: %s. avoid-slur nicht gesetzt?"
 
-#: new-fingering-engraver.cc:106
-msgid "cannot add text scripts to individual note heads"
-msgstr "es kann kein Text zu einzelnen Notenköpfen hinzugefügt werden"
+#: font-config-scheme.cc:168
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "Schriftartdatei konnte nicht hinzugefügt werden: %s"
 
-#: new-fingering-engraver.cc:250
-msgid "no placement found for fingerings"
-msgstr "Keine Platzierung für Fingersatz gefunden"
+#: font-config-scheme.cc:170
+#, c-format
+msgid "adding font file: %s"
+msgstr "Schriftartdatei wird hinzugefügt: %s"
 
-#: new-fingering-engraver.cc:251
-msgid "placing below"
-msgstr "Platzierung darunter"
+#: hairpin.cc:186
+msgid "decrescendo too small"
+msgstr "Decrescendo zu kurz"
 
-#: note-collision.cc:497
-msgid "ignoring too many clashing note columns"
-msgstr "zu viele kollidierende Notenspalten werden ignoriert"
+#: extender-engraver.cc:170 extender-engraver.cc:179
+msgid "unterminated extender"
+msgstr "unbegrenzter Textunterstrich"
 
-#: note-column.cc:135
-msgid "cannot have note heads and rests together on a stem"
-msgstr "Notenköpfe und Pausen können nicht zusammen an einem Hals auftreten"
+#: lily-guile.cc:89
+#, c-format
+msgid "(load path: `%s')"
+msgstr "(Lade-Pfad: `%s')"
 
-#: note-head.cc:76
+#: lily-guile.cc:437
 #, c-format
-msgid "none of note heads `%s' or `%s' found"
-msgstr "Keinen der Notenköpfe »%s« und »%s« gefunden"
+msgid "cannot find property type-check for `%s' (%s)."
+msgstr "Eigenschafts-Typprüfung für »%s« (%s) kann nicht gefunden werden."
 
-#: note-heads-engraver.cc:76
-msgid "NoteEvent without pitch"
-msgstr "NoteEvent ohne Tonhöhe"
+#: lily-guile.cc:440
+msgid "perhaps a typing error?"
+msgstr "vielleicht ein Tippfehler?"
 
-#: open-type-font.cc:44
-#, c-format
-msgid "cannot allocate %lu bytes"
-msgstr "es können keine %lu Bytes angefordert werden"
+#: lily-guile.cc:447
+msgid "doing assignment anyway"
+msgstr "Zuweisung wird trotzdem durchgeführt"
 
-#: open-type-font.cc:48
+#: lily-guile.cc:459
 #, c-format
-msgid "cannot load font table: %s"
-msgstr "Schriftarttabelle kann nicht geladen werden: %s"
+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"
 
-#: open-type-font.cc:53
+#: main.cc:109
 #, c-format
-msgid "Free type error: %s"
-msgstr "Freetype-Fehler: %s"
+msgid ""
+"This program is free software.  It is covered by the GNU General Public\n"
+"License and you are welcome to change it and/or distribute copies of it\n"
+"under certain conditions.  Invoke as `%s --warranty' for more\n"
+"information.\n"
+msgstr ""
+"Dieses Programm ist Freie Software. Sie wird von der GNU General Public License\n"
+"geschützt, und Sie können sie gerne ändern und/oder Kopien unter bestimmten\n"
+"Bedingungen weitergeben. Rufen Sie »%s --warranty« für weitere\n"
+"Informationen auf.\n"
 
-#: open-type-font.cc:111
-#, c-format
-msgid "unsupported font format: %s"
-msgstr "nicht unterstütztes Schriftartformat: %s"
+#: main.cc:115
+msgid ""
+"    This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
+"Boston, MA 02111-1307, USA.\n"
+msgstr ""
+"    Dieses Programm ist Freie Software; Sie können es unter den\n"
+"Bedingungen der GNU General Public License Version 2, wie von der\n"
+"Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren.\n"
+"\n"
+"    Dieses Programm wird herausgegeben in der Hoffnung, dass es nützlich sein wird\n"
+"Es wird jedoch KEINE GARANTIE übernommen. Selbst die\n"
+"implizite Garantie der MARKTGÄNGIGKEIT oder TAUGLICHKEIT FÜR EINEN\n"
+"BESTIMMTEN ZWECK kann nicht gewährleistet werden. Siehe GNU General Public\n"
+"License für weitere Details.\n"
+"\n"
+"    Sie sollten eine Kopie der GNU General Public\n"
+"License zusammen mit diesem Programm erhalten haben. Falls nicht, schreiben\n"
+"Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
+"Boston, MA 02111-1307, USA.\n"
 
-#: open-type-font.cc:113
-#, c-format
-msgid "error reading font file %s: %s"
-msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s"
+#: main.cc:146
+msgid "SYM[=VAL]"
+msgstr "SYM[=WERT]"
 
-#: open-type-font.cc:188
-#, c-format
-msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s"
+#: main.cc:147
+msgid ""
+"set Scheme option SYM to VAL (default: #t).\n"
+"Use -dhelp for help."
+msgstr ""
+"Scheme-Option SYM auf WERT setzen (Vorgabe: #t).\n"
+"-dhelp für Hilfe verwenden."
 
-#: open-type-font.cc:250
-msgid "Invalid index for character"
-msgstr "Ungültiger Index für Zeichen"
+#: main.cc:150
+msgid "EXPR"
+msgstr "AUSD"
 
-#: open-type-font.cc:319 pango-font.cc:187
-#, c-format
-msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "FT_Get_Glyph_Name() Fehler: %s"
+#: main.cc:150
+msgid "evaluate scheme code"
+msgstr "Scheme-Code auswerten"
 
-#. find out the ideal number of pages
-#: optimal-page-breaking.cc:60
-msgid "Finding the ideal number of pages..."
-msgstr "Ideale Seitenanzahl wird gefunden..."
+#. Bug in option parser: --output =foe is taken as an abbreviation
+#. for --output-format.
+#: main.cc:153
+msgid "FORMATs"
+msgstr "FORMATe"
 
-#: optimal-page-breaking.cc:87
-msgid "Fitting music on 1 page..."
-msgstr "Musik wird auf eine Seite angepasst..."
+#: main.cc:153
+msgid "dump FORMAT,...  Also as separate options:"
+msgstr "dump FORMAT,... Auch als separate Optionen:"
 
-#: optimal-page-breaking.cc:89
-#, c-format
-msgid "Fitting music on %d pages..."
-msgstr "Musik wird auf %d Seiten angepasst..."
+#: main.cc:154
+msgid "generate PDF (default)"
+msgstr "PDF erzeugen (Standard)"
 
-#: optimal-page-breaking.cc:91
-#, c-format
-msgid "Fitting music on %d or %d pages..."
-msgstr "Musik wird auf %d oder %d Seiten angepasst..."
+#: main.cc:155
+msgid "generate PNG"
+msgstr "PNG erzeugen"
 
-#: optimal-page-breaking.cc:101 optimal-page-breaking.cc:155
-#, c-format
-msgid "trying %d systems"
-msgstr "versuche %d Systeme"
+#: main.cc:156
+msgid "generate PostScript"
+msgstr "PostScript erzeugen"
 
-#: optimal-page-breaking.cc:120 optimal-page-breaking.cc:183
-#, c-format
-msgid "best score for this sys-count: %f"
-msgstr "bester Score für dieses sys-count: %f"
+#: main.cc:158
+msgid "FIELD"
+msgstr "FELD"
 
-#: optimal-page-breaking.cc:190 page-turn-page-breaking.cc:248
-#: paper-score.cc:163
-msgid "Drawing systems..."
-msgstr "Systeme erstellen..."
+#: main.cc:158
+msgid ""
+"dump header field FIELD to file\n"
+"named BASENAME.FIELD"
+msgstr "Header-Feld FELD in Datei BASISNAME.FELD schreiben"
 
-#: output-def.cc:235
-msgid "margins do not fit with line-width, setting default values"
-msgstr "Ränder passen nicht zur Zeilenbreite, setze Standardwerte"
+#: main.cc:160
+msgid "add DIR to search path"
+msgstr "VERZ zum Suchpfad hinzufügen"
 
-#: 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"
+#: main.cc:161
+msgid "use FILE as init file"
+msgstr "DATEI als Anfangsdatei verwenden"
 
-#: page-breaking.cc:194
-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"
+#: main.cc:163
+msgid "USER, GROUP, JAIL, DIR"
+msgstr "BENUTZER,GRUPPE,KERKER,VERZ"
 
-#: page-breaking.cc:199
-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"
+#: main.cc:163
+msgid ""
+"chroot to JAIL, become USER:GROUP\n"
+"and cd into DIR"
+msgstr ""
+"chroot in KERKER, wird BENUTZER:GRUPPE\n"
+"und cd in VERZ"
 
-#: page-layout-problem.cc:315
+#: main.cc:166
+msgid "write output to FILE (suffix will be added)"
+msgstr "Ausgabe in DATEI schreiben (Endung wird hinzugefügt)"
+
+#: main.cc:167
+msgid "relocate using directory of lilypond program"
+msgstr "wiederfinden mit Hilfe des Lilypond-Programmverzeichnisses"
+
+#. Do not update the copyright years here, run `make grand-replace'
+#: main.cc:238
 #, c-format
-msgid "couldn't fit music on page: overflow is %f"
-msgstr "Noten passen nicht auf die Seite: Überhang ist %f"
+msgid ""
+"Copyright (c) %s by\n"
+"%s  and others."
+msgstr ""
+"Copyright (c) %s bei\n"
+"%s und anderen."
 
-#: page-layout-problem.cc:317
-msgid "compressing music to fit"
-msgstr "Noten werden komprimiert um zu passen"
+#. No version number or newline here.  It confuses help2man.
+#: main.cc:265
+#, c-format
+msgid "Usage: %s [OPTION]... FILE..."
+msgstr "Aufruf: %s [OPTION]... DATEI..."
 
-#: page-layout-problem.cc:733
-msgid "staff-affinities should only decrease"
-msgstr "staff-affinities sollten nur abnehmen"
+#: main.cc:267
+msgid "Typeset music and/or produce MIDI from FILE."
+msgstr "Musiksatz und/oder MIDI aus DATEI erzeugen."
 
-#: page-turn-page-breaking.cc:168
+#: main.cc:269
+msgid "LilyPond produces beautiful music notation."
+msgstr "LilyPond erzeugt ansprechenden Notensatz."
+
+#: main.cc:271
 #, c-format
-msgid "page-turn-page-breaking: breaking from %d to %d"
-msgstr "Seitenwechsel-Seitenumbruch: Umbruch von %d zu %d"
+msgid "For more information, see %s"
+msgstr "Für weitere Informationen siehe %s"
 
-#: 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."
+#: main.cc:273
+msgid "Options:"
+msgstr "Optionen:"
 
-#: page-turn-page-breaking.cc:230
+#: main.cc:327
 #, c-format
-msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr "Seiten- und Zeilenumbrüche werden berechnet (%d mögliche Seitenumbrüche)..."
+msgid "expected %d arguments with jail, found: %u"
+msgstr "%d Argumente mit Kerker erwartet, %u gefunden"
+
+#: main.cc:341
+#, c-format
+msgid "no such user: %s"
+msgstr "kein solcher Benutzer: %s"
 
-#: page-turn-page-breaking.cc:297
+#: main.cc:343
 #, c-format
-msgid "break starting at page %d"
-msgstr "Umbruch beginnt auf Seite %d"
+msgid "cannot get user id from user name: %s: %s"
+msgstr "Benutzer-ID von Benutzername kann nicht gefunden werden: %s: %s"
 
-#: page-turn-page-breaking.cc:298
+#: main.cc:358
 #, c-format
-msgid "\tdemerits: %f"
-msgstr "Optimale Bewertung: %f"
+msgid "no such group: %s"
+msgstr "keine solche Gruppe: %s"
 
-#: page-turn-page-breaking.cc:299
+#: main.cc:360
 #, c-format
-msgid "\tsystem count: %d"
-msgstr "\tSystemanzahl: %d"
+msgid "cannot get group id from group name: %s: %s"
+msgstr "Gruppen-ID kann nicht von Gruppenname ermittelt werden: %s: %s"
 
-#: page-turn-page-breaking.cc:300
+#: main.cc:368
 #, c-format
-msgid "\tpage count: %d"
-msgstr "\tSeitenanzahl: %d"
+msgid "cannot chroot to: %s: %s"
+msgstr "kein chroot möglich nach: %s: %s"
 
-#: page-turn-page-breaking.cc:301
+#: main.cc:375
 #, c-format
-msgid "\tprevious break: %d"
-msgstr "\tvorheriger Umbruch: %d"
+msgid "cannot change group id to: %d: %s"
+msgstr "Gruppen-ID kann nicht geändert werden in: %d: %s"
 
-#: pango-font.cc:204
+#: main.cc:381
 #, 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"
+msgid "cannot change user id to: %d: %s"
+msgstr "Benutzer-ID kann nicht geändert werden in: %d: %s"
 
-#: pango-font.cc:241
+#: main.cc:387
 #, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "Kein PostScript-Schriftartname für Schriftart: »%s«"
-
-#: pango-font.cc:290
-msgid "FreeType face has no PostScript font name"
-msgstr "FreeType-Schriftart hat keinen PostScript-Schriftartnamen"
+msgid "cannot change working directory to: %s: %s"
+msgstr "aktuelles Verzeichnis kann nicht geändert werden in: %s: %s"
 
-#: paper-book.cc:214
+#: main.cc:628
 #, c-format
-msgid "program option -dprint-pages not supported by backend `%s'"
-msgstr "Programmoption -dprint-pages nicht von Backend »%s« unterstützt"
+msgid "exception caught: %s"
+msgstr "Ausnahme gefangen: %s"
 
-#: paper-book.cc:233
+#: key-signature-interface.cc:78
 #, c-format
-msgid "program option -dpreview not supported by backend `%s'"
-msgstr "Programmoption -dpreview nicht von »%s« unterstützt"
+msgid "No glyph found for alteration: %s"
+msgstr "Kein Glyph für Vorzeichen gefunden: %s"
 
-#: paper-column-engraver.cc:233
-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?"
+#: key-signature-interface.cc:88
+msgid "alteration not found"
+msgstr "Alterierung nicht gefunden"
 
-#: paper-outputter-scheme.cc:41
+#: dots.cc:48
 #, c-format
-msgid "Layout output to `%s'..."
-msgstr "Layout nach »%s« ausgeben..."
+msgid "dot `%s' not found"
+msgstr "Punkt »%s« nicht gefunden"
 
-#: paper-score.cc:135
+#: translator.cc:359
 #, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Elementanzahl: %d (Klammern: %d)"
-
-#: paper-score.cc:139
-msgid "Preprocessing graphical objects..."
-msgstr "Vorverarbeitung der grafischen Elemente..."
+msgid "Two simultaneous %s events, junking this one"
+msgstr "Zwei gleichzeitige %s-Ereignisse, dieses wird verworfen"
 
-#: parse-scm.cc:101
-msgid "GUILE signaled an error for the expression beginning here"
-msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck"
+#: translator.cc:360
+#, c-format
+msgid "Previous %s event here"
+msgstr "Vorheriges %s-Ereignis hier"
 
-#: 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"
+#: glissando-engraver.cc:105
+msgid "unterminated glissando"
+msgstr "unbegrenztes Glissando."
 
-#: percent-repeat-engraver.cc:213
-msgid "unterminated percent repeat"
-msgstr "unbegrenzte Prozentwiederholung"
+#: text-spanner-engraver.cc:73
+msgid "cannot find start of text spanner"
+msgstr "Anfang der Textklammer kann nicht gefunden werden"
 
-#: performance.cc:54
-msgid "Track..."
-msgstr "Spur..."
+#: text-spanner-engraver.cc:86
+msgid "already have a text spanner"
+msgstr "Textklammer bereits vorhanden"
 
-#: performance.cc:83
-msgid "MIDI channel wrapped around"
-msgstr "MIDI-Kanal zurückgesprungen"
+#: text-spanner-engraver.cc:132
+msgid "unterminated text spanner"
+msgstr "unbegrenzte Textklammer"
 
-#: performance.cc:84
-msgid "remapping modulo 16"
-msgstr "modulo 16 neu zuordnen"
+#: clef.cc:65
+#, c-format
+msgid "clef `%s' not found"
+msgstr "Schlüssel »%s« nicht gefunden"
 
-#: performance.cc:111
+#.
+#. Todo: should make typecheck?
+#.
+#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+#.
+#: time-signature-engraver.cc:75
 #, c-format
-msgid "MIDI output to `%s'..."
-msgstr "MIDI-Ausgabe nach »%s«..."
+msgid "strange time signature found: %d/%d"
+msgstr "seltsame Taktart gefunden: %d/%d"
 
-#: phrasing-slur-engraver.cc:157
-msgid "unterminated phrasing slur"
-msgstr "nicht beendeter Phrasierungsbogen"
+#: lily-parser-scheme.cc:82
+#, c-format
+msgid "Changing working directory to: `%s'"
+msgstr "Aktuelles Verzeichnis wird zu »%s« geändert"
 
-#: piano-pedal-engraver.cc:298
+#: lily-parser-scheme.cc:99
 #, c-format
-msgid "expect 3 strings for piano pedals, found: %ld"
-msgstr "3 Textketten für Piano-Pedal erwartet, %ld gefunden"
+msgid "cannot find init file: `%s'"
+msgstr "Init-Datei kann nicht gefunden werden: »%s«"
 
-#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
-#: piano-pedal-performer.cc:104
+#: lily-parser-scheme.cc:118
 #, c-format
-msgid "cannot find start of piano pedal: `%s'"
-msgstr "es kann kein Anfang für Piano-Pedal gefunden werden: »%s«"
+msgid "Processing `%s'"
+msgstr "»%s« wird verarbeitet"
 
-#: piano-pedal-engraver.cc:359
+#: lily-parser-scheme.cc:204
+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."
+
+#: custos.cc:88
 #, c-format
-msgid "cannot find start of piano pedal bracket: `%s'"
-msgstr "es kann kein Anfang für Piano-Pedal-Klammer gefunden werden: »%s«"
+msgid "custos `%s' not found"
+msgstr "Custos »%s« nicht gefunden"
 
 #: program-option-scheme.cc:237
 #, c-format
 msgid "no such internal option: %s"
 msgstr "keine solche interne Option: %s"
 
-#: property-iterator.cc:85
+#: 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:205
+msgid "too many colliding rests"
+msgstr "zu viele kollidierende Pausen"
+
+#: 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 "not a grob name, `%s'"
-msgstr "Kein Name für grafische Objekte (grob): »%s«"
+msgid "%d: %s"
+msgstr "%d: %s"
 
-#: relative-octave-check.cc:49
-msgid "Failed octave check, got: "
-msgstr "Oktavprüfung gescheitert, Rückgabe: "
+#: grob-property.cc:173
+#, 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:54
 #, c-format
@@ -2561,7 +2527,7 @@ msgstr "Verlagerung: ist absolut: argv0=%s"
 msgid "Relocation: from cwd: argv0=%s"
 msgstr "Verlagerung: von cwd: argv0=%s"
 
-#: relocate.cc:205
+#: relocate.cc:213
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
@@ -2570,71 +2536,146 @@ msgstr ""
 "Verlagerung: von PATH=%s\n"
 "argv0=%s"
 
-#: relocate.cc:239
-msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
-msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden"
+#: relocate.cc:240
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden"
+
+#: relocate.cc:367
+#, c-format
+msgid "Relocation file: %s"
+msgstr "Verlagerungsdatei: %s"
+
+#: relocate.cc:373 source-file.cc:65
+#, c-format
+msgid "cannot open file: `%s'"
+msgstr "Datei kann nicht geöffnet werden: »%s«"
+
+#: relocate.cc:403
+#, c-format
+msgid "Unknown relocation command %s"
+msgstr "Unbekannter Verlagerungsbefehl %s"
+
+#: 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"
+
+#: lyric-engraver.cc:176
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr "Textsilbe hat keine Note. \\lyricsto oder associatedVoice verwenden."
+
+#: page-breaking.cc:248
+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:253
+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:54
+msgid "Track..."
+msgstr "Spur..."
+
+#: performance.cc:83
+msgid "MIDI channel wrapped around"
+msgstr "MIDI-Kanal zurückgesprungen"
+
+#: performance.cc:84
+msgid "remapping modulo 16"
+msgstr "modulo 16 neu zuordnen"
+
+#: performance.cc:111
+#, 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"
+
+#: gregorian-ligature-engraver.cc:70
+#, c-format
+msgid "\\%s ignored"
+msgstr "\\%s ignoriert"
+
+#: gregorian-ligature-engraver.cc:75
+#, c-format
+msgid "implied \\%s added"
+msgstr "implizites \\%s hinzugefügt"
+
+#. ligature may not start with 2nd head of pes or flexa
+#: gregorian-ligature-engraver.cc:224
+msgid "cannot apply `\\~' on first head of ligature"
+msgstr "»\\~« kann nicht auf erste Note der Ligatur angewendet werden"
 
-#: relocate.cc:366
-#, c-format
-msgid "Relocation file: %s"
-msgstr "Verlagerungsdatei: %s"
+#. (pitch == prev_pitch)
+#: gregorian-ligature-engraver.cc:236
+msgid "cannot apply `\\~' on heads with identical pitch"
+msgstr "»\\~« kann nicht auf Noten mit gleicher Tonhöhe angewendet werden"
 
-#: relocate.cc:372 source-file.cc:65
-#, c-format
-msgid "cannot open file: `%s'"
-msgstr "Datei kann nicht geöffnet werden: »%s«"
+#: chord-tremolo-engraver.cc:88
+msgid "No tremolo to end"
+msgstr "Kein Tremolo zu beenden"
 
-#: relocate.cc:402
-#, c-format
-msgid "Unknown relocation command %s"
-msgstr "Unbekannter Verlagerungsbefehl %s"
+#: chord-tremolo-engraver.cc:109
+msgid "unterminated chord tremolo"
+msgstr "unbegrenztes Akkord-Tremolo"
 
-#: 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-engraver.cc:94
+msgid "Axis_group_engraver: vertical group already has a parent"
+msgstr "Axis_group_engraver: vertikale Gruppe hat bereits einen Vater"
 
-#: 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"
+#: axis-group-engraver.cc:95
+msgid "are there two Axis_group_engravers?"
+msgstr "gibt es zwei Axis_group_engravers?"
 
-#: rest-collision.cc:160 rest-collision.cc:205
-msgid "too many colliding rests"
-msgstr "zu viele kollidierende Pausen"
+#: axis-group-engraver.cc:96
+msgid "removing this vertical group"
+msgstr "Entfernen dieser vertikalen Gruppe"
 
-#: rest.cc:159
+#: cluster.cc:120
 #, c-format
-msgid "rest `%s' not found"
-msgstr "Pause »%s« nicht gefunden"
+msgid "unknown cluster style `%s'"
+msgstr "unbekannter Clusterstil: »%s«"
 
-#: score-engraver.cc:78
-#, c-format
-msgid "cannot find `%s'"
-msgstr "»%s« kann nicht gefunden werden"
+#: cluster.cc:157
+msgid "junking empty cluster"
+msgstr "Leeres Cluster wird verworfen"
 
-#: score-engraver.cc:80
-msgid "Music font has not been installed properly."
-msgstr "Musik-Schriftart wurde nicht ordnungsgemäß installiert."
+#: context-property.cc:42
+msgid "need symbol arguments for \\override and \\revert"
+msgstr "Symbol-Argumente für \\override und \\revert benötigt"
 
-#: score-engraver.cc:82
+#: source-file.cc:85
 #, c-format
-msgid "Search path `%s'"
-msgstr "Suchpfad »%s«"
+msgid "expected to read %d characters, got %d"
+msgstr "%d Zeichen erwartet, %d erhalten"
 
-#: score-engraver.cc:84
-msgid "Aborting"
-msgstr "Abbruch"
+#: axis-group-interface.cc:631
+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«"
 
-#: score.cc:178
-msgid "already have music in score"
-msgstr "es sind bereits Noten in der Partitur"
+#: coherent-ligature-engraver.cc:111
+#, c-format
+msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
+msgstr "Coherent_ligature_engraver: setze »spacing-increment=0.01«: ptr=%ul"
 
-#: score.cc:179
-msgid "this is the previous music"
-msgstr "Dies sind die vorhergehenden Noten"
+#: percent-repeat-engraver.cc:148
+msgid "unterminated percent repeat"
+msgstr "unbegrenzte Prozentwiederholung"
 
-#: score.cc:184
-msgid "errors found, ignoring music expression"
-msgstr "Fehler gefunden, musikalischer Ausdruck wird ignoriert"
+#: note-head.cc:76
+#, 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
@@ -2645,101 +2686,144 @@ msgstr "Interpretation für Artikulation unbekannt:"
 msgid " scheme encoding: "
 msgstr " Scheme-Kodierung: "
 
-#: slur-engraver.cc:93
+#: all-font-metrics.cc:156
 #, c-format
-msgid "direction of %s invalid: %d"
-msgstr "Richtung von %s ungültig: %d"
+msgid "cannot find font: `%s'"
+msgstr "Schriftart kann nicht gefunden werden: »%s«"
 
-#: slur-engraver.cc:162
-msgid "unterminated slur"
-msgstr "unbegrenzter Legatobogen"
+#: property-iterator.cc:85
+#, c-format
+msgid "not a grob name, `%s'"
+msgstr "Kein Name für grafische Objekte (grob): »%s«"
 
-#: slur-engraver.cc:174
-msgid "cannot end slur"
-msgstr "Legatobogen kann nicht beendet werden"
+#: bar-check-iterator.cc:84
+#, c-format
+msgid "barcheck failed at: %s"
+msgstr "Taktüberprüfung gescheitert bei: %s"
+
+#: stem.cc:116
+msgid "weird stem size, check for narrow beams"
+msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen"
 
-#: slur.cc:369
+#: stem.cc:657
 #, c-format
-msgid "Ignoring grob for slur: %s. avoid-slur not set?"
-msgstr "Grob für Legatobogen wird ignoriert: %s. avoid-slur nicht gesetzt?"
+msgid "flag `%s' not found"
+msgstr "Fähnchen »%s« nicht gefunden"
 
-#: source-file.cc:85
+#: stem.cc:673
 #, c-format
-msgid "expected to read %d characters, got %d"
-msgstr "%d Zeichen erwartet, %d erhalten"
+msgid "flag stroke `%s' not found"
+msgstr "Fähnchenstrich »%s« nicht gefunden"
 
-#: spaceable-grob.cc:94
+#: global-context-scheme.cc:96 global-context-scheme.cc:114
+msgid "no music found in score"
+msgstr "keine Musik in der Partitur gefunden"
+
+#: global-context-scheme.cc:104
+msgid "Interpreting music... "
+msgstr "Interpretation der Musik..."
+
+#: global-context-scheme.cc:127
 #, c-format
-msgid "No spring between column %d and next one"
-msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger"
+msgid "elapsed time: %.2f seconds"
+msgstr "verstrichene Zeit: %.2f Sekunden"
 
-#: stem-engraver.cc:103
-msgid "tremolo duration is too long"
-msgstr "Tremolodauer ist zu lang"
+#: translator-group-ctors.cc:40
+#, c-format
+msgid "fatal error. Couldn't find type: %s"
+msgstr "schwerwiegender Fehler. Typ konnte nicht gefunden werden: %s"
 
-#. FIXME:
-#: stem-engraver.cc:140
+#: 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 "adding note head to incompatible stem (type = %d)"
-msgstr "Notenkopf wird zu inkompatiblem Hals (Typ = %d) hinzugefügt"
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr "Seitenwechsel-Seitenumbruch: Umbruch von %d zu %d"
 
-#: stem-engraver.cc:142
-msgid "maybe input should specify polyphonic voices"
-msgstr "vielleicht sollte die Eingabe mehrere Stimmen erstellen"
+#: 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."
 
-#: stem.cc:116
-msgid "weird stem size, check for narrow beams"
-msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen"
+#: 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)..."
 
-#: stem.cc:642
+#: page-turn-page-breaking.cc:300
 #, c-format
-msgid "flag `%s' not found"
-msgstr "Fähnchen »%s« nicht gefunden"
+msgid "break starting at page %d"
+msgstr "Umbruch beginnt auf Seite %d"
 
-#: stem.cc:658
+#: page-turn-page-breaking.cc:301
 #, c-format
-msgid "flag stroke `%s' not found"
-msgstr "Fähnchenstrich »%s« nicht gefunden"
+msgid "\tdemerits: %f"
+msgstr "Optimale Bewertung: %f"
 
-#: system.cc:197
+#: page-turn-page-breaking.cc:302
 #, c-format
-msgid "Element count %d"
-msgstr "Elementanzahl %d."
+msgid "\tsystem count: %d"
+msgstr "\tSystemanzahl: %d"
 
-#: system.cc:289
+#: page-turn-page-breaking.cc:303
 #, c-format
-msgid "Grob count %d"
-msgstr "Anzahl der grafischen Objekte (grob): %d"
+msgid "\tpage count: %d"
+msgstr "\tSeitenanzahl: %d"
 
-#: text-spanner-engraver.cc:73
-msgid "cannot find start of text spanner"
-msgstr "Anfang der Textklammer kann nicht gefunden werden"
+#: page-turn-page-breaking.cc:304
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "\tvorheriger Umbruch: %d"
 
-#: text-spanner-engraver.cc:86
-msgid "already have a text spanner"
-msgstr "Textklammer bereits vorhanden"
+#: lily-parser.cc:106
+msgid "Parsing..."
+msgstr "Analysieren..."
 
-#: text-spanner-engraver.cc:132
-msgid "unterminated text spanner"
-msgstr "unbegrenzte Textklammer"
+#: lily-parser.cc:134
+msgid "braces do not match"
+msgstr "Klammern passen nicht zueinander"
 
-#: tie-engraver.cc:116
-msgid "unterminated tie"
-msgstr "unbegrenzter Bindebogen"
+#: score.cc:178
+msgid "already have music in score"
+msgstr "es sind bereits Noten in der Partitur"
 
-#: tie-engraver.cc:312
-msgid "lonely tie"
-msgstr "einsamer Bindebogen"
+#: score.cc:179
+msgid "this is the previous music"
+msgstr "Dies sind die vorhergehenden Noten"
 
+#: score.cc:184
+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.
 #.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:75
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#: change-iterator.cc:102
 #, c-format
-msgid "strange time signature found: %d/%d"
-msgstr "seltsame Taktart gefunden: %d/%d"
+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!)
@@ -2748,121 +2832,94 @@ msgstr "seltsame Taktart gefunden: %d/%d"
 msgid "time signature symbol `%s' not found; reverting to numbered style"
 msgstr "Taktart-Symbol »%s« nicht gefunden; wird in nummerierten Stil umgewandelt"
 
-#: translator-ctors.cc:65
+#: grob-interface.cc:68
 #, c-format
-msgid "unknown translator: `%s'"
-msgstr "unbekannter Übersetzer: »%s«"
+msgid "Unknown interface `%s'"
+msgstr "Unbekannte Schnittstelle »%s«"
 
-#: translator-group-ctors.cc:40
+#: grob-interface.cc:79
 #, c-format
-msgid "fatal error. Couldn't find type: %s"
-msgstr "schwerwiegender Fehler. Typ konnte nicht gefunden werden: %s"
+msgid "Grob `%s' has no interface for property `%s'"
+msgstr "Grob »%s« hat keine Schnittstelle für Eigenschaft »%s«"
 
-#: translator-group.cc:188
+#: open-type-font.cc:44
 #, c-format
-msgid "cannot find: `%s'"
-msgstr "»%s« kann nicht gefunden werden"
+msgid "cannot allocate %lu bytes"
+msgstr "es können keine %lu Bytes angefordert werden"
 
-#: translator.cc:359
+#: open-type-font.cc:48
 #, c-format
-msgid "Two simultaneous %s events, junking this one"
-msgstr "Zwei gleichzeitige %s-Ereignisse, dieses wird verworfen"
+msgid "cannot load font table: %s"
+msgstr "Schriftarttabelle kann nicht geladen werden: %s"
 
-#: translator.cc:360
+#: open-type-font.cc:53
 #, c-format
-msgid "Previous %s event here"
-msgstr "Vorheriges %s-Ereignis hier"
+msgid "FreeType error: %s"
+msgstr "FreeType-Fehler: %s"
 
-#: ttf.cc:481 ttf.cc:530
+#: open-type-font.cc:111
 #, 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:513 ttf.cc:565
-msgid "font index must be non-negative, using index 0"
-msgstr "font-index muss nicht-negativ sein, benutze Index 0"
-
-#: tuplet-engraver.cc:107
-msgid "No tuplet to end"
-msgstr "Keine rhythmische Gruppe zu beenden"
+msgid "unsupported font format: %s"
+msgstr "nicht unterstütztes Schriftartformat: %s"
 
-#: vaticana-ligature-engraver.cc:400
+#: open-type-font.cc:113
 #, c-format
-msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
-msgstr "Präfix(e) »%s« dieses Kopfes gemäß den Einschränkungen des ausgewählten Ligaturstils ignoriert"
+msgid "error reading font file %s: %s"
+msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s"
 
-#: vaticana-ligature-engraver.cc:736
+#: open-type-font.cc:188
 #, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
-msgstr "Vaticana_ligature_engraver: setzen »spacing-increment = %f«: ptr=%ul"
-
-#: 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"
-
-#: vaticana-ligature.cc:188
-msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr "Vaticana_ligature: nichts zusammengefügt (delta_pitch == 0)"
-
-#. fixme: be more verbose.
-#: volta-engraver.cc:111
-msgid "cannot end volta spanner"
-msgstr "Volta-Klammer kann nicht beendet werden"
-
-#: volta-engraver.cc:121
-msgid "already have a volta spanner, ending that one prematurely"
-msgstr "Wiederholungsklammer bereits vorhanden, wird vorzeitig beendet"
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s"
 
-#: volta-engraver.cc:125
-msgid "also already have an ended spanner"
-msgstr "endende Textklammer auch bereits vorhanden"
+#: midi-stream.cc:39
+#, c-format
+msgid "cannot open for write: %s: %s"
+msgstr "Es kann nicht zum Schreiben geöffnet werden: %s: %s"
 
-#: volta-engraver.cc:126
-msgid "giving up"
-msgstr "aufgeben"
+#: midi-stream.cc:55
+#, c-format
+msgid "cannot write to file: `%s'"
+msgstr "Es kann nicht in Datei geschrieben werden: »%s«"
 
-#: parser.yy:816
+#: parser.yy:820
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "\\paper kann nicht in \\source verwendet werden; stattdessen \\layout verwenden"
 
-#: parser.yy:840
+#: parser.yy:844
 msgid "need \\paper for paper block"
 msgstr "Für Papier-Block wird \\paper benötigt"
 
-#: parser.yy:1365
+#: parser.yy:1363
 msgid "only \\consists takes non-string argument."
 msgstr "nur \\consists versteht ein Nicht-Zeichenketten-Argument"
 
-#: parser.yy:1378
+#: parser.yy:1376
 msgid "Grob name should be alphanumeric"
 msgstr "Grob-Name sollte alphanumerisch sein"
 
-#: parser.yy:1687
+#: parser.yy:1685
 msgid "second argument must be pitch list"
 msgstr "zweites Argument muss eine Tonhöhenliste sein"
 
-#: parser.yy:1714 parser.yy:1719 parser.yy:2192
+#: parser.yy:1716 parser.yy:1721 parser.yy:2194
 msgid "have to be in Lyric mode for lyrics"
 msgstr "muss in Liedtextmodus sein um Liedtext setzen zu können"
 
-#: parser.yy:1816
+#: parser.yy:1818
 msgid "expecting string as script definition"
 msgstr "Zeichenkette als Skriptdefinition erwartet"
 
-#: parser.yy:1971 parser.yy:2022
+#: parser.yy:1973 parser.yy:2024
 #, c-format
 msgid "not a duration: %d"
 msgstr "keine gültige Dauer: %d"
 
-#: parser.yy:2146
+#: parser.yy:2148
 msgid "have to be in Note mode for notes"
 msgstr "Muss im Notenmodus sein für Noten"
 
-#: parser.yy:2207
+#: parser.yy:2209
 msgid "have to be in Chord mode for chords"
 msgstr "Muss im Akkordmodus sein für Akkorde"
 
@@ -2941,172 +2998,371 @@ msgstr "Erwägen Sie die Aktualisierung der Eingabe mit dem Skript convert-ly"
 msgid "program too old: %s (file requires: %s)"
 msgstr "Programm zu alt: %s (Datei erfordert: %s)"
 
-#: backend-library.scm:35 ps-to-png.scm:66
+#: 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:198
+#, 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'"
+msgstr "unbekannter Notenschlüsseltyp »~a«"
+
+#: parser-clef.scm:142 parser-clef.scm:182
+#, scheme-format
+msgid "supported clefs: ~a"
+msgstr "unterstützte Notenschlüssel: ~a"
+
+#: document-backend.scm:132
+#, scheme-format
+msgid "pair expected in doc ~s"
+msgstr "Paar erwartet in doc ~s"
+
+#: document-backend.scm:189
+#, scheme-format
+msgid "cannot find interface for property: ~S"
+msgstr "Schnittstelle für Eigenschaft ~S kann nicht gefunden werden"
+
+#: document-backend.scm:199
+#, scheme-format
+msgid "unknown Grob interface: ~S"
+msgstr "Unbekannte Grob-Schnittstelle: ~S"
+
+#: 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
+#, scheme-format
+msgid "symbol ~S redefined"
+msgstr "Symbol ~S redefiniert"
+
+#: paper.scm:115
+msgid "set-global-staff-size: not in toplevel scope"
+msgstr "set-global-staff-size: Nicht auf höchster Ebene im Gültigkeitsbereich"
+
+#: paper.scm:296
+#, scheme-format
+msgid "This is not a \\layout {} object, ~S"
+msgstr "Dies ist kein \\layout {} Objekt, ~S"
+
+#: paper.scm:308
+#, 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:323
+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
+#, scheme-format
+msgid "cannot find: ~A"
+msgstr "~A kann nicht gefunden werden"
+
+#: lily.scm:350
+#, 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:716
+msgid "Compilation successfully completed"
+msgstr "Kompilation erfolgreich beendet"
+
+#: lily.scm:717
+msgid "Compilation completed with warnings or errors"
+msgstr "Kompilation mit Warnungen bzw. Fehlermeldungen beendet"
+
+#: lily.scm:779
+#, scheme-format
+msgid "job ~a terminated with signal: ~a"
+msgstr "Auftrag ~a mit Signal ~a beendet"
+
+#: lily.scm:782
+#, scheme-format
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"Logdatei ~a (Ende ~a):\n"
+"~a"
+
+#: lily.scm:804 lily.scm:882
+#, scheme-format
+msgid "failed files: ~S"
+msgstr "gescheiterte Dateien: ~S"
+
+#: lily.scm:873
+#, scheme-format
+msgid "Redirecting output to ~a..."
+msgstr "Ausgabeumleitung nach ~a..."
+
+#: lily.scm:892
+#, scheme-format
+msgid "Invoking `~a'...\n"
+msgstr "»~a« wird aufgerufen...\n"
+
+#: graphviz.scm:64
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Graph »~a« wird geschrieben..."
+
+#: framework-svg.scm:84
+#, scheme-format
+msgid "Updating font into: ~a"
+msgstr "Schriftart wird nach ~a aktualisiert"
+
+#: layout-beam.scm:40
+#, scheme-format
+msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
+msgstr "Fehler bei Balkenzuschnitt. (~S,~S) erwartet, ~S gefunden."
+
+#: layout-beam.scm:54
+#, scheme-format
+msgid "Error in beam quanting.  Expected ~S 0, found ~S."
+msgstr "Fehler bei Balkenzuschnitt. ~S 0 erwartet, ~S gefunden."
+
+#: modal-transforms.scm:38
+msgid "'from' pitch not in scale; ignoring"
+msgstr "ursprüngliche Tonhöhe, von der ausgegangen wird, nicht in Skala, wird ignoriert"
+
+#: modal-transforms.scm:42 modal-transforms.scm:75
+msgid "'to' pitch not in scale; ignoring"
+msgstr "Tonhöhe, zu der man geht, nicht in Skala, wird ignoriert"
+
+#: modal-transforms.scm:46
+msgid "pitch to be transposed not in scale; ignoring"
+msgstr "zu transponierende Tonhöhe nicht in Skala, wird ignoriert"
+
+#: modal-transforms.scm:71
+msgid "'around' pitch not in scale; ignoring"
+msgstr "Tonhöhe \"in der Nähe\" nicht in Skala, wird ignoriert"
+
+#: modal-transforms.scm:79
+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"
+
+#: backend-library.scm:29 ps-to-png.scm:68
 #, scheme-format
 msgid "Invoking `~a'..."
 msgstr "»~s« wird aufgerufen..."
 
-#: backend-library.scm:45
+#: backend-library.scm:34
 #, scheme-format
 msgid "`~a' failed (~a)"
 msgstr "»~a« gescheitert (~a)"
 
-#: backend-library.scm:130
+#: backend-library.scm:94
 #, scheme-format
 msgid "Converting to `~a'..."
 msgstr "Konvertierung nach »~a«..."
 
 #. Do not try to guess the name of the png file,
 #. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:140
+#: backend-library.scm:104
 #, scheme-format
 msgid "Converting to ~a..."
 msgstr "Konvertierung nach ~a..."
 
-#: backend-library.scm:178
+#: backend-library.scm:142
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "Kopfzeile »~a« wird nach »~a« geschrieben"
 
-#: backend-library.scm:228
+#: backend-library.scm:192
 #, scheme-format
 msgid "missing stencil expression `~S'"
 msgstr "fehlender Stencil-Ausdruck »~S«"
 
-#: chord-entry.scm:50
+#: to-xml.scm:191
+#, scheme-format
+msgid "assertion failed: ~S"
+msgstr "Behauptung gescheitert: ~S"
+
+#: chord-entry.scm:49
 #, scheme-format
 msgid "Spurious garbage following chord: ~A"
 msgstr "Anscheinend sinnloser Text nach Akkord: ~A"
 
-#: define-context-properties.scm:31 define-grob-properties.scm:21
-#: define-music-properties.scm:21
+#: lily-library.scm:758
+msgid ""
+"Find the index between @var{start} and @var{end} (an integer)\n"
+"which produces the closest match to @var{target-val} if\n"
+"applied to function @var{getter}."
+msgstr ""
+"Finde den Index zwischen @var{start} und @var{end} (eine ganze Zahl),\n"
+"die den nächstmöglichen Treffer für @var{target-val} findet,\n"
+"wenn auf die Funktion @var{getter} angewandt."
+
+#: lily-library.scm:832
 #, scheme-format
-msgid "symbol ~S redefined"
-msgstr "Symbol ~S redefiniert"
+msgid "unknown unit: ~S"
+msgstr "unbekannte Einheit: ~S"
 
-#: define-event-classes.scm:78
-msgid "All classes must be the last in their matrilineal line."
-msgstr "Alle Klassen müssen die letzten in ihrer matrilinearen Linie sein"
+#: 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
+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:289 output-svg.scm:550
+#, scheme-format
+msgid "unknown line-cap-style: ~S"
+msgstr "unbekannter line-cap-style: ~S"
 
-#: define-event-classes.scm:82
-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."
+#: output-ps.scm:294 output-svg.scm:556
+#, scheme-format
+msgid "unknown line-join-style: ~S"
+msgstr "unbekannter line-join-style: ~S"
 
-#: define-event-classes.scm:148
+#: output-svg.scm:47
 #, scheme-format
-msgid "event class ~A seems to be unused"
-msgstr "Ereignisklasse ~A scheint ungenutzt zu sein"
+msgid "undefined: ~S"
+msgstr "nicht definiert: ~S"
 
-#. should be programming-error
-#: define-event-classes.scm:154
+#: output-svg.scm:151
 #, scheme-format
-msgid "translator listens to nonexisting event class ~A"
-msgstr "Übersetzer hört auf fehlende Ereignisklasse ~A"
+msgid "cannot decypher Pango description: ~a"
+msgstr "Pango-Beschreibung kann nicht entschlüsselt werden: ~a"
 
-#: define-markup-commands.scm:803
-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?"
+#: output-svg.scm:231
+msgid "Glyph must have a unicode value"
+msgstr "Das Zeichen muss einen Unicode-Wert haben"
 
-#: define-markup-commands.scm:2571
+#: output-svg.scm:283 output-svg.scm:293
 #, scheme-format
-msgid "Cannot find glyph ~a"
-msgstr "Kann kein Zeichen ~a finden"
+msgid "cannot find SVG font ~S"
+msgstr "SVG-Schriftart ~S kann nicht gefunden werden"
 
-#: define-markup-commands.scm:2831
+#: flag-styles.scm:148
 #, scheme-format
-msgid "no brace found for point size ~S "
-msgstr "Keine Klammer in Größe ~S pt gefunden"
+msgid "flag stroke `~a' or `~a' not found"
+msgstr "Fähnchenstrich »~a«·or·»~a« nicht gefunden"
+
+#: define-note-names.scm:962
+msgid "Select note names language."
+msgstr "Wählen Sie die Sprache der Notenbezeichnungen."
 
-#: define-markup-commands.scm:2832
+#: define-note-names.scm:969
 #, scheme-format
-msgid "defaulting to ~S pt"
-msgstr "Setze Standard ~S pt"
+msgid "Using `~a' note names..."
+msgstr "Benutze Notenbezeichnung »~a«..."
 
-#: define-markup-commands.scm:2985
+#: define-note-names.scm:972
 #, scheme-format
-msgid "not a valid duration string: ~a"
-msgstr "keine gültige Dauer: ~a"
+msgid "Could not find language `~a'.  Ignoring."
+msgstr "Konnte Sprache »~a« nicht finden.  Wird ignoriert."
 
-#: define-music-types.scm:725
+#: define-music-types.scm:740
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "Symbol erwartet: ~S"
 
-#: define-music-types.scm:728
+#: define-music-types.scm:743
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "Musikobjekt kann nicht gefunden werden: ~S"
 
-#: define-music-types.scm:747
+#: define-music-types.scm:762
 #, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "unbekannter Wiederholungstyp »~S«"
 
-#: define-music-types.scm:748
+#: define-music-types.scm:763
 msgid "See define-music-types.scm for supported repeats"
 msgstr "Siehe define-music-types.scm für unterstützte Wiederholungen"
 
-#: document-backend.scm:132
-#, scheme-format
-msgid "pair expected in doc ~s"
-msgstr "Paar erwartet in doc ~s"
-
-#: document-backend.scm:189
-#, scheme-format
-msgid "cannot find interface for property: ~S"
-msgstr "Schnittstelle für Eigenschaft ~S kann nicht gefunden werden"
-
-#: document-backend.scm:199
+#: translation-functions.scm:341
 #, scheme-format
-msgid "unknown Grob interface: ~S"
-msgstr "Unbekannte Grob-Schnittstelle: ~S"
+msgid "Negative fret for pitch ~a on string ~a"
+msgstr "Negativer Bund für Tonhöhe ~a auf Saite ~a"
 
-#: documentation-lib.scm:59
+#: translation-functions.scm:385
 #, scheme-format
-msgid "Processing ~S..."
-msgstr "~S wird verarbeitet..."
+msgid "No open string for pitch ~a"
+msgstr "Keine leere Saite für Tonhöhe ~a"
 
-#: documentation-lib.scm:176
+#: translation-functions.scm:400
 #, scheme-format
-msgid "Writing ~S..."
-msgstr "~S wird geschrieben..."
+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"
 
-#: documentation-lib.scm:198
-#, scheme-format
-msgid "cannot find description for property ~S (~S)"
-msgstr "Beschreibung für Eigenschaft ~S (~S) kann nicht gefunden werden"
+#: translation-functions.scm:401
+msgid "Ignoring string request."
+msgstr "Saiten-Anforderung wird ignoriert."
 
-#: flag-styles.scm:142
+#: translation-functions.scm:414
 #, scheme-format
-msgid "flag stroke `~a' or `~a' not found"
-msgstr "Fähnchenstrich »~a«·or·»~a« nicht gefunden"
+msgid "No string for pitch ~a (given frets ~a)"
+msgstr "Keine Saite für Tonhöhe ~a (Bund ~a angegeben)"
 
-#: framework-eps.scm:108
+#: translation-functions.scm:515
 #, scheme-format
-msgid "Writing ~a..."
-msgstr "~a wird geschrieben..."
+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"
 
 #: framework-ps.scm:250
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr "~S=~S kann nicht eingebettet werden"
 
-#: framework-ps.scm:291
+#: framework-ps.scm:293
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr "Eine zu ~a passende Datei kann nicht aus ~a gewonnen werden"
 
-#: framework-ps.scm:309
+#: framework-ps.scm:311
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr "Unbekannte Einbettung ~S=~S"
 
-#: framework-ps.scm:334
+#: framework-ps.scm:336
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr "Unbekannte Schriftsatzeinbettung ~s ~s ~s"
 
-#: framework-ps.scm:639
+#: framework-ps.scm:669
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3135,236 +3391,129 @@ msgstr ""
 "\n"
 "entfernt werden\n"
 
-#: framework-svg.scm:84
-#, scheme-format
-msgid "Updating font into: ~a"
-msgstr "Schriftart wird nach ~a aktualisiert"
-
-#: graphviz.scm:64
-#, scheme-format
-msgid "Writing graph `~a'..."
-msgstr "Graph »~a« wird geschrieben..."
-
-#: layout-beam.scm:38
-#, scheme-format
-msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr "Fehler bei Balkenzuschnitt. (~S,~S) erwartet, ~S gefunden."
-
-#: layout-beam.scm:52
-#, scheme-format
-msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr "Fehler bei Balkenzuschnitt. ~S 0 erwartet, ~S gefunden."
-
-#: lily-library.scm:747
-msgid ""
-"Find the index between @var{start} and @var{end} (an integer)\n"
-"which will produce the closest match to @var{target-val} when\n"
-"applied to function @var{getter}."
-msgstr ""
-"Finde den Index zwischen @var{start} und @var{end} (eine ganze Zahl),\n"
-"die den nächstmöglichen Treffer für @var{target-val} findet,\n"
-"wenn auf die Funktion @var{getter} angewandt."
-
-#: lily-library.scm:821
-#, scheme-format
-msgid "unknown unit: ~S"
-msgstr "unbekannte Einheit: ~S"
-
-#: lily-library.scm:847 lily-library.scm:856
-msgid "warning:"
-msgstr "Warnung:"
-
-#: lily-library.scm:849
-#, 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:857
-msgid "old relative compatibility not used"
-msgstr "alte relative Kompatibilität nicht verwendet"
-
-#: lily.scm:282
-#, scheme-format
-msgid "cannot find: ~A"
-msgstr "~A kann nicht gefunden werden"
-
-#: lily.scm:342
-#, 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:704
-msgid "Compilation successfully completed"
-msgstr "Kompilation erfolgreich beendet"
-
-#: lily.scm:705
-msgid "Compilation completed with warnings or errors"
-msgstr "Kompilation mit Warnungen bzw. Fehlermeldungen beendet"
-
-#: lily.scm:767
-#, scheme-format
-msgid "job ~a terminated with signal: ~a"
-msgstr "Auftrag ~a mit Signal ~a beendet"
-
-#: lily.scm:770
-#, scheme-format
-msgid ""
-"logfile ~a (exit ~a):\n"
-"~a"
-msgstr ""
-"Logdatei ~a (Ende ~a):\n"
-"~a"
-
-#: lily.scm:792 lily.scm:870
-#, scheme-format
-msgid "failed files: ~S"
-msgstr "gescheiterte Dateien: ~S"
-
-#: lily.scm:861
-#, scheme-format
-msgid "Redirecting output to ~a..."
-msgstr "Ausgabeumleitung nach ~a..."
-
-#: lily.scm:880
-#, scheme-format
-msgid "Invoking `~a'...\n"
-msgstr "»~a« wird aufgerufen...\n"
-
-#: ly-syntax-constructors.scm:51
-msgid "Music head function must return Music object"
-msgstr "Musikkopf-Funktion muss Musikobjekt zurückliefern."
-
-#: ly-syntax-constructors.scm:176
-#, scheme-format
-msgid "Invalid property operation ~a"
-msgstr "Ungültige Eigenschaftsoperation ~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"
-
-#: markup.scm:229
-#, scheme-format
-msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
-msgstr "Ungültiges Argument an Position ~A. ~A erwartet, ~S gefunden."
-
-#: markup.scm:292
-#, scheme-format
-msgid "Not a markup command: ~A"
-msgstr "Kein Textbeschriftungsbefehl: ~A"
-
-#: music-functions.scm:265
+#: 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:294
+#: music-functions.scm:297
 #, scheme-format
 msgid "invalid tremolo repeat count: ~a"
 msgstr "ungültige Tremolo-Wiederholung: ~a"
 
-#: music-functions.scm:601
+#: music-functions.scm:618
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "Musik erwartet: ~S"
 
 #. FIXME: uncomprehensable message
-#: music-functions.scm:649
+#: music-functions.scm:662
 #, 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"
 
-#: music-functions.scm:828
+#: music-functions.scm:846
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "zitierte Musik »~S« kann nicht gefunden werden"
 
-#: music-functions.scm:964
+#: music-functions.scm:982
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr "Füge @var{octave-shift} zur Oktave von @var{pitch} hinzu."
 
-#: music-functions.scm:1019
+#: music-functions.scm:1037
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "Unbekannter Oktaven-Typ: »~S«"
 
-#: music-functions.scm:1020
+#: music-functions.scm:1038
 msgid "Defaulting to 'any-octave."
 msgstr "Setze Standard 'any-octave"
 
-#: music-functions.scm:1355
+#: music-functions.scm:1378
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "unbekannter Versetzungszeichenstil: ~S"
 
-#: output-ps.scm:289 output-svg.scm:550
+#: 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."
+
+#: define-event-classes.scm:149
 #, scheme-format
-msgid "unknown line-cap-style: ~S"
-msgstr "unbekannter line-cap-style: ~S"
+msgid "event class ~A seems to be unused"
+msgstr "Ereignisklasse ~A scheint ungenutzt zu sein"
 
-#: output-ps.scm:294 output-svg.scm:556
+#. should be programming-error
+#: define-event-classes.scm:155
 #, scheme-format
-msgid "unknown line-join-style: ~S"
-msgstr "unbekannter line-join-style: ~S"
+msgid "translator listens to nonexisting event class ~A"
+msgstr "Übersetzer hört auf fehlende Ereignisklasse ~A"
 
-#: output-svg.scm:47
+#: markup.scm:223
 #, scheme-format
-msgid "undefined: ~S"
-msgstr "nicht definiert: ~S"
+msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgstr "Falsche Anzahl an Argumenten: ~A erwartet, ~A gefunden: ~S"
 
-#: output-svg.scm:151
+#: markup.scm:229
 #, scheme-format
-msgid "cannot decypher Pango description: ~a"
-msgstr "Pango-Beschreibung kann nicht entschlüsselt werden: ~a"
+msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
+msgstr "Ungültiges Argument an Position ~A. ~A erwartet, ~S gefunden."
 
-#: output-svg.scm:231
-msgid "Glyph must have a unicode value"
-msgstr "Das Zeichen muss einen Unicode-Wert haben"
+#: markup.scm:292
+#, scheme-format
+msgid "Not a markup command: ~A"
+msgstr "Kein Textbeschriftungsbefehl: ~A"
 
-#: output-svg.scm:283 output-svg.scm:293
+#: ps-to-png.scm:74
 #, scheme-format
-msgid "cannot find SVG font ~S"
-msgstr "SVG-Schriftart ~S kann nicht gefunden werden"
+msgid "~a exited with status: ~S"
+msgstr "~a mit Rückgabewert ~S beendet"
 
-#: paper.scm:115
-msgid "set-global-staff-size: not in toplevel scope"
-msgstr "set-global-staff-size: Nicht auf höchster Ebene im Gültigkeitsbereich"
+#: define-markup-commands.scm:803
+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?"
 
-#: paper.scm:296
+#: define-markup-commands.scm:2404
 #, scheme-format
-msgid "This is not a \\layout {} object, ~S"
-msgstr "Dies ist kein \\layout {} Objekt, ~S"
+msgid "Cannot find glyph ~a"
+msgstr "Kann kein Zeichen ~a finden"
 
-#: paper.scm:308
+#: define-markup-commands.scm:2830
 #, 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:323
-msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
-msgstr "#(set-paper-size ..) muss innerhalb von \\paper { ... } verwendet werden"
+msgid "no brace found for point size ~S "
+msgstr "Keine Klammer in Größe ~S pt gefunden"
 
-#: parser-clef.scm:140
+#: define-markup-commands.scm:2831
 #, scheme-format
-msgid "unknown clef type `~a'"
-msgstr "unbekannter Notenschlüsseltyp »~a«"
+msgid "defaulting to ~S pt"
+msgstr "Setze Standard ~S pt"
 
-#: parser-clef.scm:141
+#: define-markup-commands.scm:2984
 #, scheme-format
-msgid "supported clefs: ~a"
-msgstr "unterstützte Notenschlüssel: ~a"
+msgid "not a valid duration string: ~a"
+msgstr "keine gültige Dauer: ~a"
 
-#: ps-to-png.scm:72
-#, scheme-format
-msgid "~a exited with status: ~S"
-msgstr "~a mit Rückgabewert ~S beendet"
+#: ly-syntax-constructors.scm:51
+msgid "Music head function must return Music object"
+msgstr "Musikkopf-Funktion muss Musikobjekt zurückliefern."
 
-#: to-xml.scm:191
+#: ly-syntax-constructors.scm:177
 #, scheme-format
-msgid "assertion failed: ~S"
-msgstr "Behauptung gescheitert: ~S"
+msgid "Invalid property operation ~a"
+msgstr "Ungültige Eigenschaftsoperation ~a"
+
+#~ 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"
+
+#~ msgid "no feasible beam position"
+#~ msgstr "Keine praktikable Balkenposition"
+
+#~ msgid "Invalid index for character"
+#~ msgstr "Ungültiger Index für Zeichen"
 
 #~ 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"
@@ -3912,9 +4061,6 @@ msgstr "Behauptung gescheitert: ~S"
 #~ msgid "use LaTeX for formatting"
 #~ msgstr "LaTeX für Formatierung verwenden"
 
-#~ msgid "print even more output"
-#~ msgstr "noch mehr Ausgabe erzeugen"
-
 #~ msgid "find pfa fonts used in FILE"
 #~ msgstr "PFA-Schriftarten, welche in DATEI verwendet werden, finden"
 
index 3e01893523f7adf34a9b040cab352e559d2275c7..032d2732db91902765ced2561fd3a23715e614b0 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -1,4 +1,4 @@
-# translation of lilypond-2.13.48.po to Español
+# translation of lilypond-2.13.53.po to Español
 # Spanish translation of GNU Lilypond - http://lilypond.org
 # Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 #
 # This file is distributed under the same license as the lilypond package.
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond-2.13.48\n"
+"Project-Id-Version: lilypond-2.13.53\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2010-12-06 22:30+0100\n"
-"PO-Revision-Date: 2011-02-11 11:21+0100\n"
+"POT-Creation-Date: 2011-03-02 10:34+0100\n"
+"PO-Revision-Date: 2011-03-03 15:03+0100\n"
 "Last-Translator: Francisco Vila <francisco.vila@hispalinux.es>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "Language: es\n"
@@ -23,55 +23,57 @@ msgstr ""
 "X-Generator: KBabel 1.11.4\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
-#: book_base.py:24
+#: fontextract.py:25
 #, python-format
-msgid "file not found: %s"
-msgstr "archivo no encontrado: %s"
+msgid "Scanning %s"
+msgstr "Explorando %s"
 
-#: book_base.py:161
-msgid "Output function not implemented"
-msgstr "Función de salida sin implementar"
+#: fontextract.py:70
+#, python-format
+msgid "Extracted %s"
+msgstr "Se ha extraído %s"
 
-#: book_latex.py:156
-msgid "cannot find \\begin{document} in LaTeX document"
-msgstr "no se encuentra \\begin{document} en el documento de LaTeX"
+#: fontextract.py:85
+#, python-format
+msgid "Writing fonts to %s"
+msgstr "Escribiendo las tipografías en %s"
 
-#: book_snippets.py:517
+#: book_snippets.py:519
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "se ha usado una ly-option obsoleta: %s=%s"
 
-#: book_snippets.py:519
+#: book_snippets.py:521
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "traducción en modo de compatibilidad: %s=%s"
 
-#: book_snippets.py:522
+#: book_snippets.py:524
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "se usó una ly-option obsoleta: %s"
 
-#: book_snippets.py:524
+#: book_snippets.py:526
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "traducción en modo compatible: %s"
 
-#: book_snippets.py:542
+#: book_snippets.py:544
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "opción ly desconocida e ignorada: %s"
 
-#: book_snippets.py:728
+#: book_snippets.py:736
 #, python-format
 msgid "Opening filter `%s'\n"
 msgstr "Abriendo el filtro «%s»\n"
 
-#: book_snippets.py:748
+#: book_snippets.py:756
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "«%s» ha fallado (%d)"
 
-#: book_snippets.py:749
+#: book_snippets.py:757
 msgid "The error log is as follows:"
 msgstr "El registro de errores es como sigue:"
 
@@ -630,23 +632,23 @@ msgstr ""
 "Swallow_performer and String_number_engraver.\n"
 "Nuevas variables de espaciado vertical."
 
-#: convertrules.py:2982
-msgid "vertical spacing has been changed; minimum-Y-extent is obsolete.\n"
-msgstr "El espaciado vertical ha cambiado; minimum-Y-extent está obsoleto.\n"
+#: 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:2988
+#: convertrules.py:2995
 msgid "Unify fetaNumber and fetaDynamic encodings"
 msgstr "Unificar las codificaciones fetaNumber y fetaDynamic"
 
-#: convertrules.py:2993
+#: convertrules.py:3000
 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 
-#: convertrules.py:3004
+#: convertrules.py:3011
 msgid "\\cresc etc. are now postfix operators"
 msgstr "\\cresc etc. ahora son operadores posfijos"
 
-#: convertrules.py:3010
+#: convertrules.py:3017
 msgid ""
 "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
@@ -654,27 +656,27 @@ msgstr ""
 "Eliminar beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings y \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 
-#: convertrules.py:3028
+#: convertrules.py:3035
 msgid "\\overrideBeamSettings.  Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
 msgstr "\\overrideBeamSettings.  Use \\set beamExceptions o \\overrideTimeSignatureSettings.\n"
 
-#: convertrules.py:3032
+#: convertrules.py:3039
 msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
 msgstr "\\revertBeamSettings. Use \\set beamExceptions o \\revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3036
+#: convertrules.py:3043
 msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"
 msgstr "beamSettings. Use baseMoment, beatStructure y beamExceptions.\n"
 
-#: convertrules.py:3040
+#: convertrules.py:3047
 msgid "beatLength. Use baseMoment and beatStructure.\n"
 msgstr "beatLength. Use baseMoment y beatStructure.\n"
 
-#: convertrules.py:3044
+#: convertrules.py:3051
 msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
 msgstr "setbeatGrouping. Use baseMoment y beatStructure.\n"
 
-#: convertrules.py:3049
+#: convertrules.py:3056
 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."
@@ -683,13 +685,13 @@ 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:3054
+#: 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:3062
+#: convertrules.py:3069
 msgid ""
 "Rename vertical spacing variables.\n"
 "Add fretboard-table argument to savePredefinedFretboard."
@@ -697,36 +699,76 @@ msgstr ""
 "Renombrado de las variables de espaciado vertical.\n"
 "Añadir argumento de tabla de diagramas de posiciones a savePredefinedFretboard."
 
-#: convertrules.py:3080
+#: convertrules.py:3087
 msgid "Rename vertical spacing grob properties."
 msgstr "Renombrado de las propiedades de grob del espaciado vertical."
 
-#: convertrules.py:3096
+#: convertrules.py:3103
 msgid "Remove \\paper variables head-separation and foot-separation."
 msgstr "Eliminación de las variables de \\paper head-separation y foot-separation."
 
-#: convertrules.py:3101
+#: convertrules.py:3108
 msgid "Adjust settings for top-system-spacing instead.\n"
 msgstr "Ajuste los valores para top-system-spacing en su lugar.\n"
 
-#: convertrules.py:3106
+#: convertrules.py:3113
 msgid "Adjust settings for last-bottom-spacing instead.\n"
 msgstr "Ajuste los valores para last-bottom-spacing en su lugar.\n"
 
-#: fontextract.py:25
-#, python-format
-msgid "Scanning %s"
-msgstr "Explorando %s"
+#: convertrules.py:3119
+msgid ""
+"Rename space to basic-distance in various spacing alists.\n"
+"Remove HarmonicParenthesesItem grob."
+msgstr ""
+"Renombrar space a basic-distance en varias listas-A de espaciado.\n"
+"Eliminar el grob HarmonicParenthesesItem."
 
-#: fontextract.py:70
-#, python-format
-msgid "Extracted %s"
-msgstr "Se ha extraído %s"
+#: convertrules.py:3127
+msgid "HarmonicParenthesesItem has been eliminated.\n"
+msgstr "HarmonicParenthesesItem se ha eliminado.\n"
 
-#: fontextract.py:85
+#: convertrules.py:3128
+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
+msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n"
+msgstr "Eliminar el contexto de overrideTimeSignatureSettings y revertTimeSignatureSettings.\n"
+
+#: convertrules.py:3140
+msgid ""
+"Change stringTunings from a list of semitones to a list of pitches.\n"
+"Change tenor and baritone ukulele names in string tunings.\n"
+"Generate messages for manual conversion of vertical spacing if required."
+msgstr ""
+"Cambiar stringTunings de una lista de semitonos a una lista de notas.\n"
+"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.  "
+msgstr "Los cambios en el espaciado vertical pueden afectar a los contextos definidos por el usuario."
+
+#: convertrules.py:3185
+msgid "Replace bar-size with bar-extent."
+msgstr "Sustituir bar-size con bar-extent."
+
+#: convertrules.py:3197
+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"
+
+#: book_base.py:24
 #, python-format
-msgid "Writing fonts to %s"
-msgstr "Escribiendo las tipografías en %s"
+msgid "file not found: %s"
+msgstr "archivo no encontrado: %s"
+
+#: book_base.py:161
+msgid "Output function not implemented"
+msgstr "Función de salida sin implementar"
 
 #: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115
 #: input.cc:123
@@ -801,184 +843,385 @@ msgstr "¡Se ha proporcionado una octava de alteración de tonalidad para un nú
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "No se ha podido encontrar el instrumento con el ID=%s\n"
 
-#: abc2ly.py:1373 convert-ly.py:87 lilypond-book.py:122 midi2ly.py:860
-#, python-format
-msgid "%s [OPTION]... FILE"
-msgstr "%s [OPCIÓN]... ARCHIVO"
+#: book_latex.py:156
+msgid "cannot find \\begin{document} in LaTeX document"
+msgstr "no se encuentra \\begin{document} en el documento de LaTeX"
 
-#: abc2ly.py:1374
+#: musicxml2ly.py:223
 #, python-format
-msgid ""
-"abc2ly converts ABC music files (see\n"
-"%s) to LilyPond input.\n"
-msgstr ""
-"abc2ly convierte archivos de música de ABC\n"
-"(véase %s) en código de entrada de LilyPond.\n"
-
-#: abc2ly.py:1382 convert-ly.py:94 etf2ly.py:1206 lilypond-book.py:212
-#: midi2ly.py:896 musicxml2ly.py:2683 main.cc:168
-msgid "show version number and exit"
-msgstr "mostrar el número de versión y salir"
-
-#: abc2ly.py:1386 convert-ly.py:98 etf2ly.py:1202 lilypond-book.py:140
-#: midi2ly.py:875 musicxml2ly.py:2665 main.cc:157
-msgid "show this help and exit"
-msgstr "mostrar esta ayuda y salir"
+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á"
 
-#: abc2ly.py:1388 etf2ly.py:1207 midi2ly.py:879
-msgid "write output to FILE"
-msgstr "escribir la salida en el ARCHIVO"
+#: musicxml2ly.py:239 musicxml2ly.py:241
+#, python-format
+msgid "Unprocessed PartGroupInfo %s encountered"
+msgstr "Se ha encontrado el PartGroupInfo sin procesar %s"
 
-#: abc2ly.py:1390
-msgid "be strict about success"
-msgstr "ser estricto respecto al éxito"
+#: musicxml2ly.py:494
+#, 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)"
 
-#: abc2ly.py:1392
-msgid "preserve ABC's notion of beams"
-msgstr "preservar la noción de las barras de ABC"
+#: musicxml2ly.py:514
+#, 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"
 
-#. 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"
-#: abc2ly.py:1395 convert-ly.py:144 etf2ly.py:1216 lilypond-book.py:234
-#: midi2ly.py:909 musicxml2ly.py:2751 main.cc:281
-#, 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:761
+msgid "Unable to extract key signature!"
+msgstr "¡No se ha podido extraer la armadura de la tonalidad!"
 
-#: convert-ly.py:44
-msgid ""
-"Update LilyPond input to newer version.  By default, update from the\n"
-"version taken from the \\version command, to the current LilyPond version."
-msgstr ""
-"Actualizar el código de entrada de LilyPond a una versión más reciente.\n"
-"De manera predeterminada, actualizarlo desde la versión sacada de\n"
-"la instrucción \\version, a la versión actual de LilyPond."
+#: musicxml2ly.py:788
+#, 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!"
 
-#: convert-ly.py:46 lilypond-book.py:82
-msgid "Examples:"
-msgstr "Ejemplos:"
+#: musicxml2ly.py:926
+#, python-format
+msgid "Encountered unprocessed marker %s\n"
+msgstr "Se ha encontrado el marcador sin procesar %s\n"
 
-#: convert-ly.py:81 etf2ly.py:1189 lilypond-book.py:116 midi2ly.py:90
+#: musicxml2ly.py:1020
 #, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s por"
+msgid "unknown span event %s"
+msgstr "evento de extensión %s desconocido"
 
-#: convert-ly.py:83 etf2ly.py:1191 lilypond-book.py:118 midi2ly.py:92
-msgid "Distributed under terms of the GNU General Public License."
-msgstr "Distribuido bajo los términos de la Licencia Pública General de GNU."
+#: musicxml2ly.py:1030
+#, python-format
+msgid "unknown span type %s for %s"
+msgstr "tipo de extensión %s deconocido para %s"
 
-#: convert-ly.py:84 etf2ly.py:1192 lilypond-book.py:119 midi2ly.py:93
-msgid "It comes with NO WARRANTY."
-msgstr "Se distribuye SIN NINGUNA GARANTÍA."
+#: musicxml2ly.py:1450
+msgid "Unknown metronome mark, ignoring"
+msgstr "Marca de metrónomo desconocida, se ignora"
 
-#: convert-ly.py:102 convert-ly.py:135
-msgid "VERSION"
-msgstr "VERSIÓN"
+#. TODO: Implement the other (more complex) way for tempo marks!
+#: musicxml2ly.py:1455
+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."
 
-#: convert-ly.py:104
-msgid "start from VERSION [default: \\version found in file]"
-msgstr "comenzar a partir de VERSIÓN [predeterminado: \\version del archivo]"
+#: musicxml2ly.py:1657
+#, python-format
+msgid "Unable to convert chord type %s to lilypond."
+msgstr "No se pudo convertir el acorde de tipo %s a lilypond."
 
-#: convert-ly.py:107
-msgid "edit in place"
-msgstr "editar in situ"
+#: musicxml2ly.py:1806
+#, 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"
 
-#: convert-ly.py:111
-msgid "do not add \\version command if missing"
-msgstr "no añadir la instrucción \\version si no está presente"
+#: musicxml2ly.py:1810
+msgid "cannot find suitable event"
+msgstr "no se encuentra un evento adecuado"
 
-#: convert-ly.py:117
+#: musicxml2ly.py:1958
 #, 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
-msgid "only update \\version number if file is modified"
-msgstr "actualizar solo el número de \\version si el archivo ha sido modificado"
+msgid "Negative skip %s (from position %s to %s)"
+msgstr "Desplazamiento negativo %s (desde la posición %s hasta la %s)"
 
-#: convert-ly.py:129
+#: musicxml2ly.py:2099
 #, python-format
-msgid "show rules [default: -f 0, -t %s]"
-msgstr "mostrar las reglas [predeterminado: -f 0, -t %s]"
+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"
 
-#: convert-ly.py:134
+#: musicxml2ly.py:2180
 #, python-format
-msgid "convert to VERSION [default: %s]"
-msgstr "convertir a VERSIÓN [predeterminado: %s]"
+msgid "unexpected %s; expected %s or %s or %s"
+msgstr "%s inesperado; se esperaba %s o %s o %s"
 
-#: convert-ly.py:139 etf2ly.py:1210 lilypond-book.py:215 midi2ly.py:897
-#: main.cc:170
-msgid "show warranty and copyright"
-msgstr "mostrar los avisos de garantía y de copyright"
+#: musicxml2ly.py:2286
+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"
 
-#: convert-ly.py:184
-msgid "Applying conversion: "
-msgstr "Aplicando la conversión: "
+#: musicxml2ly.py:2289
+msgid "Cannot have two simultaneous (closing) slurs"
+msgstr "No puede haber dos ligaduras de expresión (cerrándose) simultáneas"
 
-#: convert-ly.py:197
-msgid "Error while converting"
-msgstr "Error al convertir"
+#: musicxml2ly.py:2298
+msgid "Cannot have a slur inside another slur"
+msgstr "No puede haber una ligadura de expresión dentro de otra"
 
-#: convert-ly.py:199
-msgid "Stopping at last successful rule"
-msgstr "Detención en la última regla satisfactoria"
+#: musicxml2ly.py:2301
+msgid "Cannot have two simultaneous slurs"
+msgstr "No puede haber dos ligaduras de expresión simultáneas"
 
-#: convert-ly.py:224
+#: musicxml2ly.py:2435
 #, python-format
-msgid "Processing `%s'... "
-msgstr "Procesando «%s»... "
+msgid "cannot simultaneously have more than one mode: %s"
+msgstr "no puede haber más de un modo al mismo tiempo: %s"
 
-#: convert-ly.py:332
-#, python-format
-msgid "%s: Unable to open file"
-msgstr "%s: No se pudo abrir el archivo"
+#: musicxml2ly.py:2543
+msgid "Converting to LilyPond expressions..."
+msgstr "Conversión a expresiones de LilyPond..."
 
-#: convert-ly.py:339
-#, python-format
-msgid "%s: Unable to determine version.  Skipping"
-msgstr "%s: no se puede determinar la versión.  Se salta"
+#: musicxml2ly.py:2554
+msgid "musicxml2ly [OPTION]... FILE.xml"
+msgstr "musicxml2ly [OPCIÓN]... ARCHIVO.xml"
 
-#: convert-ly.py:344
-#, python-format
+#: musicxml2ly.py:2556
 msgid ""
-"%s: Invalid version string `%s' \n"
-"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
+"Convert MusicXML from FILE.xml to LilyPond input.\n"
+"If the given filename is -, musicxml2ly reads from the command line.\n"
 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'"
+"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"
 
-#: etf2ly.py:1195
-#, python-format
-msgid "%s [OPTION]... ETF-FILE"
-msgstr "%s [OPCIÓN]... ARCHIVO_ETF"
+#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140
+#: convert-ly.py:98 etf2ly.py:1202 main.cc:157
+msgid "show this help and exit"
+msgstr "mostrar esta ayuda y salir"
 
-#: etf2ly.py:1196
+#: musicxml2ly.py:2566
 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"
+"Copyright (c) 2005--2011 by\n"
+"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
+"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
+"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"El formato transportable de Enigma (ETF) es un formato utilizado por el producto\n"
-"Finale de Coda Music Technology.  etf2ly convierte un subconjunto de ETF a un\n"
-"archivo de LilyPond listo para usar.\n"
+"Copyright (c) 2005--2011 por\n"
+"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
+"    Jan Nieuwenhuizen <janneke@gnu.org> y\n"
+"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 
-#: etf2ly.py:1208 midi2ly.py:880 musicxml2ly.py:2743 main.cc:161 main.cc:166
-msgid "FILE"
-msgstr "ARCHIVO"
+#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212
+#: convert-ly.py:94 etf2ly.py:1206 main.cc:168
+msgid "show version number and exit"
+msgstr "mostrar el número de versión y salir"
 
-#: lilypond-book.py:80
-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."
+#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169
+msgid "be verbose"
+msgstr "ser prolijo"
 
-#: lilypond-book.py:87
-msgid "BOOK"
-msgstr "LIBRO"
+#: musicxml2ly.py:2591
+msgid "use lxml.etree; uses less memory and cpu time"
+msgstr "usar lxml.etree; utiliza menos memoria y tiempo de procesador"
 
-#: lilypond-book.py:95
-#, python-format
+#: musicxml2ly.py:2597
+msgid "input file is a zip-compressed MusicXML file"
+msgstr "el archivo de entrada es un archivo MusicXML comprimido en zip"
+
+#: musicxml2ly.py:2603
+msgid "convert pitches in relative mode (default)"
+msgstr "convertir las notas al modo relativo (por omisión)"
+
+#: musicxml2ly.py:2608
+msgid "convert pitches in absolute mode"
+msgstr "convertir las notas al modo absoluto"
+
+#: musicxml2ly.py:2611
+msgid "LANG"
+msgstr "IDIOMA"
+
+#: musicxml2ly.py:2613
+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:2619
+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:2625
+msgid "do not convert exact vertical positions of rests"
+msgstr "no convertir las posiciones verticales exactas de los silencios"
+
+#: musicxml2ly.py:2631
+msgid "do not convert the exact page layout and breaks"
+msgstr "no convertir la disposición y saltos de página exactos"
+
+#: musicxml2ly.py:2637
+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:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208
+#: main.cc:161 main.cc:166
+msgid "FILE"
+msgstr "ARCHIVO"
+
+#: musicxml2ly.py:2645
+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 -"
+
+#. 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:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234
+#: convert-ly.py:144 etf2ly.py:1216 main.cc:281
+#, 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:2728
+#, python-format
+msgid "unknown part in part-list: %s"
+msgstr "parte desconocida en la lista part-list: %s"
+
+#: musicxml2ly.py:2790
+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:2793
+#, 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:2823
+msgid "Reading MusicXML from Standard input ..."
+msgstr "Leyendo MusicXML desde la entrada estándar..."
+
+#: musicxml2ly.py:2825
+#, python-format
+msgid "Reading MusicXML from %s ..."
+msgstr "Leyendo MusicXML desde %s ..."
+
+#: musicxml2ly.py:2858
+#, python-format
+msgid "Output to `%s'"
+msgstr "La salida se dirige hacia `%s'"
+
+#: musicxml2ly.py:2925
+#, python-format
+msgid "Unable to find input file %s"
+msgstr "No se encuentra el archivo de entrada %s"
+
+#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#, python-format
+msgid "Copyright (c) %s by"
+msgstr "Copyright (c) %s por"
+
+#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+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:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+msgid "It comes with NO WARRANTY."
+msgstr "Se distribuye SIN NINGUNA GARANTÍA."
+
+#: midi2ly.py:99
+msgid "warning: "
+msgstr "advertencia: "
+
+#: midi2ly.py:102 midi2ly.py:1041
+msgid "error: "
+msgstr "error: "
+
+#: midi2ly.py:103
+msgid "Exiting... "
+msgstr "Saliendo... "
+
+#: midi2ly.py:960
+#, python-format
+msgid "%s output to `%s'..."
+msgstr "salida de %s hacia «%s»..."
+
+#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#, python-format
+msgid "%s [OPTION]... FILE"
+msgstr "%s [OPCIÓN]... ARCHIVO"
+
+#: midi2ly.py:973
+#, python-format
+msgid "Convert %s to LilyPond input.\n"
+msgstr "Convertir %s a entrada de LilyPond.\n"
+
+#: midi2ly.py:978
+msgid "print absolute pitches"
+msgstr "mostrar las alturas absolutas"
+
+#: midi2ly.py:980 midi2ly.py:1002
+msgid "DUR"
+msgstr "DURACIÓN"
+
+#: midi2ly.py:981
+msgid "quantise note durations on DUR"
+msgstr "cuantizar las duraciones de las notas sobre DURACIÓN"
+
+#: midi2ly.py:984
+msgid "print explicit durations"
+msgstr "mostrar las duraciones explícitas"
+
+#: midi2ly.py:989
+msgid "prepend FILE to output"
+msgstr "anteponer AARCHIVO a la salida"
+
+#: midi2ly.py:993
+msgid "set key: ALT=+sharps|-flats; MINOR=1"
+msgstr "establecer la tonalidad: ALT=+sostenidos|-bemoles; MENOR=1"
+
+#: midi2ly.py:994
+msgid "ALT[:MINOR]"
+msgstr "ALT[:MENOR]"
+
+#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207
+msgid "write output to FILE"
+msgstr "escribir la salida en el ARCHIVO"
+
+#: midi2ly.py:999
+msgid "preview of first 4 bars"
+msgstr "vista previa de los cuatro primeros compases"
+
+#: midi2ly.py:1001
+msgid "quantise note starts on DUR"
+msgstr "cuantizar los comienzos de las notras sobre DURACIÓN"
+
+#: midi2ly.py:1004
+msgid "DUR*NUM/DEN"
+msgstr "DURACIÓN*NUMERADOR/DENOMINADOR"
+
+#: midi2ly.py:1007
+msgid "allow tuplet durations DUR*NUM/DEN"
+msgstr "permitir duraciones de grupos irregulares DURACIÓN*NUMERADOR/DENOMINADOR"
+
+#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210
+#: main.cc:170
+msgid "show warranty and copyright"
+msgstr "mostrar los avisos de garantía y de copyright"
+
+#: midi2ly.py:1019
+msgid "treat every text as a lyric"
+msgstr "tratar todos los textos como letra"
+
+#: midi2ly.py:1022
+msgid "Examples"
+msgstr "Ejemplos"
+
+#: midi2ly.py:1042
+msgid "no files specified on command line."
+msgstr "no se ha especificado ningún archivo en la línea de órdenes."
+
+#: abc2ly.py:1374
+#, python-format
+msgid ""
+"abc2ly converts ABC music files (see\n"
+"%s) to LilyPond input.\n"
+msgstr ""
+"abc2ly convierte archivos de música de ABC\n"
+"(véase %s) en código de entrada de LilyPond.\n"
+
+#: abc2ly.py:1390
+msgid "be strict about success"
+msgstr "ser estricto respecto al éxito"
+
+#: abc2ly.py:1392
+msgid "preserve ABC's notion of beams"
+msgstr "preservar la noción de las barras de ABC"
+
+#: lilypond-book.py:80
+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
+msgid "Examples:"
+msgstr "Ejemplos:"
+
+#: lilypond-book.py:87
+msgid "BOOK"
+msgstr "LIBRO"
+
+#: lilypond-book.py:95
+#, python-format
 msgid "Exiting (%d)..."
 msgstr "Saliendo (%d)..."
 
@@ -1059,10 +1302,6 @@ msgstr "no fracasar si no se encuentra ninguna imagen PNG para los archivos EPS"
 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:204 midi2ly.py:890 musicxml2ly.py:2688 main.cc:169
-msgid "be verbose"
-msgstr "ser prolijo"
-
 #: lilypond-book.py:220
 msgid ""
 "run executable PROG instead of latex, or in\n"
@@ -1134,292 +1373,122 @@ msgstr "Procesando el archivo de inclusión: %s"
 msgid "Removing `%s'"
 msgstr "Suprimiendo «%s»"
 
-#: midi2ly.py:99
-msgid "warning: "
-msgstr "advertencia: "
+#: convert-ly.py:44
+msgid ""
+"Update LilyPond input to newer version.  By default, update from the\n"
+"version taken from the \\version command, to the current LilyPond version."
+msgstr ""
+"Actualizar el código de entrada de LilyPond a una versión más reciente.\n"
+"De manera predeterminada, actualizarlo desde la versión sacada de\n"
+"la instrucción \\version, a la versión actual de LilyPond."
 
-#: midi2ly.py:102 midi2ly.py:922
-msgid "error: "
-msgstr "error: "
+#: convert-ly.py:102 convert-ly.py:135
+msgid "VERSION"
+msgstr "VERSIÓN"
 
-#: midi2ly.py:103
-msgid "Exiting... "
-msgstr "Saliendo... "
+#: convert-ly.py:104
+msgid "start from VERSION [default: \\version found in file]"
+msgstr "comenzar a partir de VERSIÓN [predeterminado: \\version del archivo]"
 
-#: midi2ly.py:848
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "salida de %s hacia «%s»..."
+#: convert-ly.py:107
+msgid "edit in place"
+msgstr "editar in situ"
+
+#: convert-ly.py:111
+msgid "do not add \\version command if missing"
+msgstr "no añadir la instrucción \\version si no está presente"
 
-#: midi2ly.py:861
+#: convert-ly.py:117
 #, python-format
-msgid "Convert %s to LilyPond input.\n"
-msgstr "Convertir %s a entrada de LilyPond.\n"
+msgid "force updating \\version number to %s"
+msgstr "forzar la actualización del número de  \\version a %s"
 
-#: midi2ly.py:866
-msgid "print absolute pitches"
-msgstr "mostrar las alturas absolutas"
+#: convert-ly.py:123
+msgid "only update \\version number if file is modified"
+msgstr "actualizar solo el número de \\version si el archivo ha sido modificado"
 
-#: midi2ly.py:868 midi2ly.py:883
-msgid "DUR"
-msgstr "DURACIÓN"
+#: convert-ly.py:129
+#, python-format
+msgid "show rules [default: -f 0, -t %s]"
+msgstr "mostrar las reglas [predeterminado: -f 0, -t %s]"
 
-#: midi2ly.py:869
-msgid "quantise note durations on DUR"
-msgstr "cuantizar las duraciones de las notas sobre DURACIÓN"
+#: convert-ly.py:134
+#, python-format
+msgid "convert to VERSION [default: %s]"
+msgstr "convertir a VERSIÓN [predeterminado: %s]"
 
-#: midi2ly.py:872
-msgid "print explicit durations"
-msgstr "mostrar las duraciones explícitas"
+#: convert-ly.py:184
+msgid "Applying conversion: "
+msgstr "Aplicando la conversión: "
 
-#: midi2ly.py:876
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "establecer la tonalidad: ALT=+sostenidos|-bemoles; MENOR=1"
+#: convert-ly.py:197
+msgid "Error while converting"
+msgstr "Error al convertir"
 
-#: midi2ly.py:877
-msgid "ALT[:MINOR]"
-msgstr "ALT[:MENOR]"
+#: convert-ly.py:199
+msgid "Stopping at last successful rule"
+msgstr "Detención en la última regla satisfactoria"
 
-#: midi2ly.py:882
-msgid "quantise note starts on DUR"
-msgstr "cuantizar los comienzos de las notras sobre DURACIÓN"
+#: convert-ly.py:224
+#, python-format
+msgid "Processing `%s'... "
+msgstr "Procesando «%s»... "
 
-#: midi2ly.py:885
-msgid "DUR*NUM/DEN"
-msgstr "DURACIÓN*NUMERADOR/DENOMINADOR"
-
-#: midi2ly.py:888
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "permitir duraciones de grupos irregulares DURACIÓN*NUMERADOR/DENOMINADOR"
-
-#: midi2ly.py:900
-msgid "treat every text as a lyric"
-msgstr "tratar todos los textos como letra"
-
-#: midi2ly.py:903
-msgid "Examples"
-msgstr "Ejemplos"
-
-#: midi2ly.py:923
-msgid "no files specified on command line."
-msgstr "no se ha especificado ningún archivo en la línea de órdenes."
-
-#: musicxml2ly.py:324
-#, 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:340 musicxml2ly.py:342
-#, python-format
-msgid "Unprocessed PartGroupInfo %s encountered"
-msgstr "Se ha encontrado el PartGroupInfo sin procesar %s"
-
-#: musicxml2ly.py:595
-#, 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:615
-#, 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:864
-msgid "Unable to extract key signature!"
-msgstr "¡No se ha podido extraer la armadura de la tonalidad!"
-
-#: musicxml2ly.py:891
-#, 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:1029
-#, python-format
-msgid "Encountered unprocessed marker %s\n"
-msgstr "Se ha encontrado el marcador sin procesar %s\n"
-
-#: musicxml2ly.py:1123
-#, python-format
-msgid "unknown span event %s"
-msgstr "evento de extensión %s desconocido"
-
-#: musicxml2ly.py:1133
-#, python-format
-msgid "unknown span type %s for %s"
-msgstr "tipo de extensión %s deconocido para %s"
-
-#: musicxml2ly.py:1553
-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:1558
-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:1760
-#, 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:1909
-#, 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:1913
-msgid "cannot find suitable event"
-msgstr "no se encuentra un evento adecuado"
-
-#: musicxml2ly.py:2061
-#, 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:2202
+#: convert-ly.py:332
 #, 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"
+msgid "%s: Unable to open file"
+msgstr "%s: No se pudo abrir el archivo"
 
-#: musicxml2ly.py:2283
+#: convert-ly.py:339
 #, python-format
-msgid "unexpected %s; expected %s or %s or %s"
-msgstr "%s inesperado; se esperaba %s o %s o %s"
-
-#: musicxml2ly.py:2389
-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:2392
-msgid "Cannot have two simultaneous (closing) slurs"
-msgstr "No puede haber dos ligaduras de expresión (cerrándose) simultáneas"
-
-#: musicxml2ly.py:2401
-msgid "Cannot have a slur inside another slur"
-msgstr "No puede haber una ligadura de expresión dentro de otra"
-
-#: musicxml2ly.py:2404
-msgid "Cannot have two simultaneous slurs"
-msgstr "No puede haber dos ligaduras de expresión simultáneas"
+msgid "%s: Unable to determine version.  Skipping"
+msgstr "%s: no se puede determinar la versión.  Se salta"
 
-#: musicxml2ly.py:2538
+#: convert-ly.py:344
 #, 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:2646
-msgid "Converting to LilyPond expressions..."
-msgstr "Conversión a expresiones de LilyPond..."
-
-#: musicxml2ly.py:2657
-msgid "musicxml2ly [OPTION]... FILE.xml"
-msgstr "musicxml2ly [OPCIÓN]... ARCHIVO.xml"
-
-#: musicxml2ly.py:2659
 msgid ""
-"Convert MusicXML from FILE.xml to LilyPond input.\n"
-"If the given filename is -, musicxml2ly reads from the command line.\n"
-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:2669
-msgid ""
-"Copyright (c) 2005--2011 by\n"
-"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
-"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
-"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
+"%s: Invalid version string `%s' \n"
+"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
 msgstr ""
-"Copyright (c) 2005--2011 por\n"
-"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
-"    Jan Nieuwenhuizen <janneke@gnu.org> y\n"
-"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
-
-#: musicxml2ly.py:2694
-msgid "use lxml.etree; uses less memory and cpu time"
-msgstr "usar lxml.etree; utiliza menos memoria y tiempo de procesador"
-
-#: musicxml2ly.py:2700
-msgid "input file is a zip-compressed MusicXML file"
-msgstr "el archivo de entrada es un archivo MusicXML comprimido en zip"
-
-#: musicxml2ly.py:2706
-msgid "convert pitches in relative mode (default)"
-msgstr "convertir las notas al modo relativo (por omisión)"
-
-#: musicxml2ly.py:2711
-msgid "convert pitches in absolute mode"
-msgstr "convertir las notas al modo absoluto"
-
-#: musicxml2ly.py:2714
-msgid "LANG"
-msgstr "IDIOMA"
-
-#: musicxml2ly.py:2716
-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:2722
-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:2728
-msgid "do not convert exact vertical positions of rests"
-msgstr "no convertir las posiciones verticales exactas de los silencios"
-
-#: musicxml2ly.py:2734
-msgid "do not convert the exact page layout and breaks"
-msgstr "no convertir la disposición y saltos de página exactos"
-
-#: musicxml2ly.py:2740
-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:2748
-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:2831
-#, python-format
-msgid "unknown part in part-list: %s"
-msgstr "parte desconocida en la lista part-list: %s"
-
-#: musicxml2ly.py:2893
-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:2896
-#, 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:2926
-msgid "Reading MusicXML from Standard input ..."
-msgstr "Leyendo MusicXML desde la entrada estándar..."
-
-#: musicxml2ly.py:2928
-#, python-format
-msgid "Reading MusicXML from %s ..."
-msgstr "Leyendo MusicXML desde %s ..."
+"%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'"
 
-#: musicxml2ly.py:2961
+#: etf2ly.py:1195
 #, python-format
-msgid "Output to `%s'"
-msgstr "La salida se dirige hacia `%s'"
+msgid "%s [OPTION]... ETF-FILE"
+msgstr "%s [OPCIÓN]... ARCHIVO_ETF"
 
-#: musicxml2ly.py:3028
-#, python-format
-msgid "Unable to find input file %s"
-msgstr "No se encuentra el archivo de entrada %s"
+#: etf2ly.py:1196
+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"
+msgstr ""
+"El formato transportable de Enigma (ETF) es un formato utilizado por el producto\n"
+"Finale de Coda Music Technology.  etf2ly convierte un subconjunto de ETF a un\n"
+"archivo de LilyPond listo para usar.\n"
 
-#: website_post.py:115
+#: website_post.py:123
 msgid "English"
 msgstr "Inglés"
 
-#: website_post.py:118
+#: website_post.py:126
 msgid "Other languages"
 msgstr "Otros idiomas"
 
+#: warn.cc:59
+#, c-format
+msgid "success: %s"
+msgstr "finalizado correctamente: %s"
+
+#: warn.cc:86 grob.cc:617 input.cc:97
+#, c-format
+msgid "programming error: %s"
+msgstr "error de programación: %s"
+
+#: warn.cc:87 input.cc:98
+msgid "continuing, cross fingers"
+msgstr "continuamos; cruce los dedos"
+
 #: getopt-long.cc:153
 #, c-format
 msgid "option `%s' requires an argument"
@@ -1440,73 +1509,92 @@ msgstr "opción no reconocida: «%s»"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "argumento no válido «%s» para la opción «%s»"
 
-#: warn.cc:59
-#, c-format
-msgid "success: %s"
-msgstr "finalizado correctamente: %s"
+#: grob.cc:286
+msgid "Infinity or NaN encountered"
+msgstr "se ha encontrado Infinito o NaN"
 
-#: warn.cc:86 grob.cc:617 input.cc:97
-#, c-format
-msgid "programming error: %s"
-msgstr "error de programación: %s"
+#: vaticana-ligature.cc:95
+msgid "flexa-height undefined; assuming 0"
+msgstr "la altura flexa-height no está definida; se supone que es 0"
 
-#: warn.cc:87 input.cc:98
-msgid "continuing, cross fingers"
-msgstr "continuamos; cruce los dedos"
+#: vaticana-ligature.cc:100
+msgid "ascending vaticana style flexa"
+msgstr "flexa ascendente de estilo vaticana"
 
-#: accidental-engraver.cc:180
-#, 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"
+#: vaticana-ligature.cc:188
+msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
+msgstr "Vaticana_ligature: unión nula (delta_pitch == 0)"
 
-#: accidental-engraver.cc:210
-#, 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"
+#: parse-scm.cc:101
+msgid "GUILE signaled an error for the expression beginning here"
+msgstr "GUILE ha señalado un error para la expresión que comienza aquí"
 
-#: 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"
+#: 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"
 
-#: accidental.cc:215
-msgid "natural alteration glyph not found"
-msgstr "no se encuentra el glifo del símbolo de becuadro"
+#. if we get to here, just put everything on one line
+#: constrained-breaking.cc:189 constrained-breaking.cc:207
+msgid "cannot find line breaking that satisfies constraints"
+msgstr "no se ecnuentra un salto de línea que cumpla las restricciones"
 
-#: all-font-metrics.cc:156
-#, c-format
-msgid "cannot find font: `%s'"
-msgstr "no se encuentra la tipografía «%s»"
+#: horizontal-bracket-engraver.cc:78
+msgid "do not have that many brackets"
+msgstr "no tiene tantos corchetes"
 
-#: apply-context-iterator.cc:42
-msgid "\\applycontext argument is not a procedure"
-msgstr "el argumento de \\applycontext no es un procedimiento"
+#: horizontal-bracket-engraver.cc:87
+msgid "conflicting note group events"
+msgstr "eventos de grupo de notas en conflicto"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
+#: 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"
+
+#: pango-font.cc:187 open-type-font.cc:319
 #, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "no se puede cambiar, ya está dentro del traductor: %s"
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "error en FT_Get_Glyph_Name (): %s"
 
-#: axis-group-engraver.cc:94
-msgid "Axis_group_engraver: vertical group already has a parent"
-msgstr "Axis_group_engraver: el grupo vertical ya tiene un ancestro"
+#: pango-font.cc:204
+#, 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"
 
-#: axis-group-engraver.cc:95
-msgid "are there two Axis_group_engravers?"
-msgstr "¿hay dos Axis_group_engravers?"
+#: pango-font.cc:241
+#, c-format
+msgid "no PostScript font name for font `%s'"
+msgstr "no hay un nombre de tipografía PostScript para «%s»"
 
-#: axis-group-engraver.cc:96
-msgid "removing this vertical group"
-msgstr "se suprime este grupo vertical"
+#: pango-font.cc:290
+msgid "FreeType face has no PostScript font name"
+msgstr "El tipo FreeType no tiene un nombre de tipografía PostScript"
 
-#: axis-group-interface.cc:611
-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"
+#: midi-item.cc:92
+#, c-format
+msgid "no such MIDI instrument: `%s'"
+msgstr "no existe este instrumento MIDI: «%s»"
 
-#: bar-check-iterator.cc:84
+#: note-heads-engraver.cc:76
+msgid "NoteEvent without pitch"
+msgstr "NoteEvent sin altura"
+
+#: rest.cc:159
 #, c-format
-msgid "barcheck failed at: %s"
-msgstr "la comprobación de compás ha fallado en: %s"
+msgid "rest `%s' not found"
+msgstr "no se ha encontrado el silencio «%s»"
+
+#: 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"
 
 #: beam-engraver.cc:147
 msgid "already have a beam"
@@ -1528,83 +1616,9 @@ msgstr "la plica no cabe dentro de la barra"
 msgid "beam was started here"
 msgstr "la barra comenzó aquí"
 
-#: beam-quanting.cc:314
-msgid "no feasible beam position"
-msgstr "no hay ninguna posición viable para la barra"
-
-#: beam.cc:171
-msgid "removing beam with no stems"
-msgstr "se suprime la barra sin plicas"
-
-#: beam.cc:1116
-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"
-
-#: break-alignment-interface.cc:206
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "no hay un elemento de espaciado desde %s hasta «%s»"
-
-#: 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"
-
-#: chord-tremolo-engraver.cc:88
-msgid "No tremolo to end"
-msgstr "No hay ningún tremolo hasta el final"
-
-#: chord-tremolo-engraver.cc:109
-msgid "unterminated chord tremolo"
-msgstr "trémolo de acorde sin terminar"
-
-#: clef.cc:65
-#, c-format
-msgid "clef `%s' not found"
-msgstr "no se ha encontrado la clave  «%s»"
-
-#: cluster.cc:120
-#, c-format
-msgid "unknown cluster style `%s'"
-msgstr "estilo de cluster (racimo) «%s» desconocido"
-
-#: cluster.cc:157
-msgid "junking empty cluster"
-msgstr "se recorta el racimo (cluster) vacío"
-
-#: coherent-ligature-engraver.cc:111
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
-msgstr "Coherent_ligature_engraver: se establece `spacing-increment=0.01': ptr=%ul"
-
-#. if we get to here, just put everything on one line
-#: constrained-breaking.cc:189 constrained-breaking.cc:207
-msgid "cannot find line breaking that satisfies constraints"
-msgstr "no se ecnuentra un salto de línea que cumpla las restricciones"
-
-#: context-property.cc:42
-msgid "need symbol arguments for \\override and \\revert"
-msgstr "se necesitan argumentos de símbolo para \\override y \\revert"
+#: music-iterator.cc:182
+msgid "Sending non-event to context"
+msgstr "Enviando elemento que no es un evento a un contexto"
 
 #: context.cc:149
 #, c-format
@@ -1626,11 +1640,6 @@ msgstr "evento CreateContext inválido: No se puede crear el contexto %s"
 msgid "cannot find or create: `%s'"
 msgstr "no se encuentra o no se puede crear «%s»"
 
-#: custos.cc:88
-#, c-format
-msgid "custos `%s' not found"
-msgstr "no se encuentran los custos «%s»"
-
 #: dispatcher.cc:82
 msgid "Event class should be a symbol"
 msgstr "La clase del evento debe ser un símbolo"
@@ -1640,10 +1649,17 @@ msgstr "La clase del evento debe ser un símbolo"
 msgid "Unknown event class %s"
 msgstr "Clase de evento %s desconocida"
 
-#: dots.cc:48
-#, c-format
-msgid "dot `%s' not found"
-msgstr "no se encuentra el puntillo «%s»"
+#: 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?"
+
+#: tie-engraver.cc:116
+msgid "unterminated tie"
+msgstr "ligadura de unión sin terminar"
+
+#: tie-engraver.cc:312
+msgid "lonely tie"
+msgstr "ligadura de unión solitaria"
 
 #: dynamic-engraver.cc:197
 msgid "cannot find start of (de)crescendo"
@@ -1665,178 +1681,156 @@ msgstr "el cresc comenzó aquí"
 msgid "unterminated (de)crescendo"
 msgstr "(de)crescendo sin terminar"
 
-#: 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"
-
-#: extender-engraver.cc:170 extender-engraver.cc:179
-msgid "unterminated extender"
-msgstr "prolongación sin terminar"
+#: paper-score.cc:122 minimal-page-breaking.cc:40
+msgid "Calculating line breaks..."
+msgstr "Calculando los saltos de línea..."
 
-#: font-config-scheme.cc:152 font-config.cc:55
+#: paper-score.cc:135
 #, c-format
-msgid "failed adding font directory: %s"
-msgstr "fallo al añadir la carpeta de tipografías: %s"
+msgid "Element count %d (spanners %d) "
+msgstr "Cantidad de elementos: %d (trazadores: %d)"
 
-#: font-config-scheme.cc:154 font-config.cc:57
-#, c-format
-msgid "adding font directory: %s"
-msgstr "añadiendo carpeta de tipografías: %s"
+#: paper-score.cc:139
+msgid "Preprocessing graphical objects..."
+msgstr "Preprocesando los objetos gráficos..."
 
-#: font-config-scheme.cc:168
-#, c-format
-msgid "failed adding font file: %s"
-msgstr "fallo al añadir el archivo de fuente tipográfica: %s"
+#: paper-score.cc:163 optimal-page-breaking.cc:208
+#: page-turn-page-breaking.cc:248
+msgid "Drawing systems..."
+msgstr "Dibujando los sistemas..."
 
-#: font-config-scheme.cc:170
-#, c-format
-msgid "adding font file: %s"
-msgstr "añadiendo archivo de fuente tipográfica: %s"
+#: mensural-ligature-engraver.cc:96
+msgid "ligature with less than 2 heads -> skipping"
+msgstr "ligadura con menos de dos cabezas; se salta"
 
-#: font-config.cc:40
-msgid "Initializing FontConfig..."
-msgstr "Inicializando FontConfig..."
+#: mensural-ligature-engraver.cc:123
+msgid "cannot determine pitch of ligature primitive -> skipping"
+msgstr "no se puede determinar la altura de la primitiva de ligadura; se salta"
 
-#: font-config.cc:61
-msgid "Building font database..."
-msgstr "Construyendo la base de datos de fuentes tipográficas..."
+#: mensural-ligature-engraver.cc:137
+msgid "single note ligature - skipping"
+msgstr "ligadura de una nota; se salta"
 
-#: 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"
+#: mensural-ligature-engraver.cc:148
+msgid "prime interval within ligature -> skipping"
+msgstr "intervalo primo dentro de una ligadura; se salta"
 
-#: general-scheme.cc:306
-msgid "setting to zero"
-msgstr "estableciendo al valor cero"
+#: mensural-ligature-engraver.cc:159
+msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
+msgstr "ligadura mensural: la duración no es Mx, L, B ni S; se salta"
 
-#: general-scheme.cc:542 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"
+#: mensural-ligature-engraver.cc:202
+msgid "semibrevis must be followed by another one -> skipping"
+msgstr "la semibreve debe ir seguida por otra -> se salta"
 
-#: glissando-engraver.cc:105
-msgid "unterminated glissando"
-msgstr "glissando sin terminar"
+#: mensural-ligature-engraver.cc:212
+msgid ""
+"semibreves can only appear at the beginning of a ligature,\n"
+"and there may be only zero or two of them"
+msgstr ""
+"las semibreves sólo pueden aparecer al principio de una ligadura,\n"
+"y sólo puede haber dos o ninguna"
 
-#: global-context-scheme.cc:96 global-context-scheme.cc:114
-msgid "no music found in score"
-msgstr "no se ha encontrado música en la partitura"
+#: mensural-ligature-engraver.cc:232
+msgid ""
+"invalid ligatura ending:\n"
+"when the last note is a descending brevis,\n"
+"the penultimate note must be another one,\n"
+"or the ligatura must be LB or SSB"
+msgstr ""
+"finalización inválida de la ligadura:\n"
+"cuando la última nota es una breve descendente,\n"
+"la penúltima nota debe ser otra breve,\n"
+"o la ligadura debe ser LB o SSB"
 
-#: global-context-scheme.cc:104
-msgid "Interpreting music... "
-msgstr "Interpretando la música... "
+#: mensural-ligature-engraver.cc:386
+msgid "unexpected case fall-through"
+msgstr "opción de caso por defecto inesperada"
 
-#: global-context-scheme.cc:127
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "tiempo transcurrido: %.2f segundos"
-
-#: gregorian-ligature-engraver.cc:70
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignorado(s)"
-
-#: gregorian-ligature-engraver.cc:75
+#: piano-pedal-engraver.cc:298
 #, c-format
-msgid "implied \\%s added"
-msgstr "se ha añadido el \\%s implícito"
-
-#. ligature may not start with 2nd head of pes or flexa
-#: gregorian-ligature-engraver.cc:224
-msgid "cannot apply `\\~' on first head of ligature"
-msgstr "no se puede aplicar `\\~' sobre la primera cabeza de una ligadura"
-
-#. (pitch == prev_pitch)
-#: gregorian-ligature-engraver.cc:236
-msgid "cannot apply `\\~' on heads with identical pitch"
-msgstr "no se puede aplicar `\\~' sobre cabezas de idéntica altura"
+msgid "expect 3 strings for piano pedals, found: %ld"
+msgstr "se eseperaban 3 cadenas para los pedales de piano, se han encontrado: %ld"
 
-#: grob-interface.cc:68
+#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
+#: piano-pedal-performer.cc:104
 #, c-format
-msgid "Unknown interface `%s'"
-msgstr "interfaz desconocido «%s»"
+msgid "cannot find start of piano pedal: `%s'"
+msgstr "no se encuentra el comienzo del pedal de piano «%s»"
 
-#: grob-interface.cc:79
+#: piano-pedal-engraver.cc:359
 #, c-format
-msgid "Grob `%s' has no interface for property `%s'"
-msgstr "El grob «%s» no tiene interfaz para la propiedad «%s»"
+msgid "cannot find start of piano pedal bracket: `%s'"
+msgstr "no se encuentra el comienzo del corchete de pedal de piano «%s»"
 
-#: grob-property.cc:34
-#, c-format
-msgid "%d: %s"
-msgstr "%d: %s"
+#: input.cc:131 source-file.cc:179 source-file.cc:194
+msgid "position unknown"
+msgstr "posición desconocida"
 
-#: grob-property.cc:173
+#: paper-outputter-scheme.cc:41
 #, 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)"
-
-#: grob.cc:286
-msgid "Infinity or NaN encountered"
-msgstr "se ha encontrado Infinito o NaN"
+msgid "Layout output to `%s'..."
+msgstr "Salida de la página hacia «%s»..."
 
-#: hairpin.cc:186
-msgid "decrescendo too small"
-msgstr "decrescendo demasiado pequeño"
+#: general-scheme.cc:306
+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"
 
-#: horizontal-bracket-engraver.cc:78
-msgid "do not have that many brackets"
-msgstr "no tiene tantos corchetes"
+#: general-scheme.cc:307
+msgid "setting to zero"
+msgstr "estableciendo al valor cero"
 
-#: horizontal-bracket-engraver.cc:87
-msgid "conflicting note group events"
-msgstr "eventos de grupo de notas en conflicto"
+#: general-scheme.cc:543
+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"
 
-#: hyphen-engraver.cc:104
-msgid "removing unterminated hyphen"
-msgstr "se suprime el guión separador sin terminación"
+#: music.cc:151
+#, 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\""
 
-#: hyphen-engraver.cc:118
-msgid "unterminated hyphen; removing"
-msgstr "guión separador sin terminar; se suprime"
+#: music.cc:219
+msgid "(normalized pitch)"
+msgstr "(altura normalizada)"
 
-#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
+#: music.cc:223
 #, c-format
-msgid "cannot find file: `%s'"
-msgstr "no se encuentra el archivo: «%s»"
+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"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:100
+#: translator-ctors.cc:65
 #, c-format
-msgid "(search path: `%s')"
-msgstr "(ruta de búsqueda: «%s»)"
+msgid "unknown translator: `%s'"
+msgstr "traductor desconocido: «%s»"
 
-#: input.cc:131 source-file.cc:179 source-file.cc:194
-msgid "position unknown"
-msgstr "posición desconocida"
+#: 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"
 
-#: key-signature-interface.cc:78
-#, c-format
-msgid "No glyph found for alteration: %s"
-msgstr "No se ha encontrado ningún glifo para la alteración: %s"
+#: new-fingering-engraver.cc:106
+msgid "cannot add text scripts to individual note heads"
+msgstr "no se pueden añadir guiones de texto a cabezas de nota individuales"
 
-#: key-signature-interface.cc:88
-msgid "alteration not found"
-msgstr "no se encuentra la alteración"
+#: new-fingering-engraver.cc:250
+msgid "no placement found for fingerings"
+msgstr "no se ha encontrado ninguna ubicación válida para las digitaciones"
+
+#: new-fingering-engraver.cc:251
+msgid "placing below"
+msgstr "se coloca debajo"
 
-#: ligature-bracket-engraver.cc:73 ligature-engraver.cc:104
+#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72
 msgid "cannot find start of ligature"
 msgstr "no se encuentra el comienzo de la ligadura"
 
-#: ligature-bracket-engraver.cc:86 ligature-engraver.cc:131
-msgid "already have a ligature"
-msgstr "ya tiene una ligadura"
-
 #: ligature-engraver.cc:109
 msgid "no right bound"
 msgstr "no hay límite derecho"
 
+#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85
+msgid "already have a ligature"
+msgstr "ya tiene una ligadura"
+
 #: ligature-engraver.cc:140
 msgid "no left bound"
 msgstr "no hay límite izquierdo"
@@ -1854,697 +1848,669 @@ msgstr "se ignora el silencio: la ligadura no puede contener silencios"
 msgid "ligature was started here"
 msgstr "la ligadura comenzó aquí"
 
-#: lily-guile.cc:89
+#: auto-change-iterator.cc:74 change-iterator.cc:72
 #, c-format
-msgid "(load path: `%s')"
-msgstr "(ruta de carga: «%s»)"
+msgid "cannot change, already in translator: %s"
+msgstr "no se puede cambiar, ya está dentro del traductor: %s"
 
-#: lily-guile.cc:439
+#: accidental-engraver.cc:180
 #, 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:442
-msgid "perhaps a typing error?"
-msgstr "¿quizá es un error de tecleo?"
+msgid "accidental typesetting list must begin with context-name: %s"
+msgstr "la lista de tippografiado de alteraciones accidentales debe comenzar con context-name: %s"
 
-#: lily-guile.cc:449
-msgid "doing assignment anyway"
-msgstr "se hace la asignación de todas formas"
+#: accidental-engraver.cc:210
+#, 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"
 
-#: lily-guile.cc:461
+#: ttf.cc:481 ttf.cc:530
 #, 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»"
+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"
 
-#: lily-lexer.cc:264
-msgid "include files are not allowed in safe mode"
-msgstr "no se permiten los archivos de inclusión en el modo seguro"
+#: ttf.cc:513 ttf.cc:565
+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"
 
-#: lily-lexer.cc:291
+#: break-alignment-interface.cc:206
 #, c-format
-msgid "identifier name is a keyword: `%s'"
-msgstr "el nombre del identificativo es una palabra clave: «%s»"
+msgid "No spacing entry from %s to `%s'"
+msgstr "no hay un elemento de espaciado desde %s hasta «%s»"
 
-#: lily-lexer.cc:312
-#, c-format
-msgid "error at EOF: %s"
-msgstr "error al final del archivo (EOF): %s"
+#: minimal-page-breaking.cc:44
+msgid "Calculating page breaks..."
+msgstr "Calculando saltos de página..."
 
-#: lily-parser-scheme.cc:82
+#: vaticana-ligature-engraver.cc:400
 #, c-format
-msgid "Changing working directory to: `%s'"
-msgstr "Se cambia el directorio de trabajo a:  «%s»"
+msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
+msgstr "prefijo(s) `%s' de esta cabeza ignorado(s) de acuerdo a las restricciones del estilo de ligadura seleccionado"
 
-#: lily-parser-scheme.cc:99
+#: vaticana-ligature-engraver.cc:736
 #, c-format
-msgid "cannot find init file: `%s'"
-msgstr "no se encuentra el archivo de inicio: «%s»"
+msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
+msgstr "Vaticana_ligature_engraver: se establece `spacing-increment = %f': ptr =%ul"
 
-#: lily-parser-scheme.cc:118
+#: paper-book.cc:214
 #, c-format
-msgid "Processing `%s'"
-msgstr "Procesando «%s»"
+msgid "program option -dprint-pages not supported by backend `%s'"
+msgstr "la opción de programa -dprint-pages no está contemplada por el backend `%s'"
 
-#: lily-parser-scheme.cc:204
-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."
+#: paper-book.cc:233
+#, c-format
+msgid "program option -dpreview not supported by backend `%s'"
+msgstr "la opción de programa -dpreview no está contemplada por el backend `%s'"
 
-#: lily-parser.cc:106
-msgid "Parsing..."
-msgstr "Analizando..."
+#: 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"
 
-#: lily-parser.cc:134
-msgid "braces do not match"
-msgstr "las llaves no concuerdan"
+#: 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"
 
-#: lyric-combine-music-iterator.cc:337
+#: score-engraver.cc:78
 #, c-format
-msgid "cannot find Voice `%s'"
-msgstr "no se encuentra la Voz «%s»"
+msgid "cannot find `%s'"
+msgstr "No se encuentra «%s»"
 
-#: lyric-engraver.cc:175
-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."
+#: score-engraver.cc:80
+msgid "Music font has not been installed properly."
+msgstr "La tipografía de música no se ha instalado correctamente."
 
-#: main.cc:109
+#: score-engraver.cc:82
 #, c-format
-msgid ""
-"This program is free software.  It is covered by the GNU General Public\n"
-"License and you are welcome to change it and/or distribute copies of it\n"
-"under certain conditions.  Invoke as `%s --warranty' for more\n"
-"information.\n"
-msgstr ""
-"Este software es libre. Está protegido por la Licencia Pública\n"
-"General de GNU, y usted está invitado a modificarlo y/o distribuir copias de\n"
-"él bajo ciertas condiciones. Invóquelo como `%s --warranty' para obtener\n"
-"más información.\n"
+msgid "Search path `%s'"
+msgstr "Ruta de búsqueda «%s»"
 
-#: main.cc:115
-msgid ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
-"Boston, MA 02111-1307, USA.\n"
-msgstr ""
-"    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
-"\n"
-"    This program is distributed in the hope that it will be useful,\n"
-"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-"General Public License for more details.\n"
-"\n"
-"    You should have received a copy of the\n"
-"GNU General Public License along with this program; if not, write to\n"
-"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
-"Boston, MA 02111-1307, USA.\n"
-"\n"
-"    Este programa es software libre; puede redistribuirlo y/o\n"
-"modificarlo bajo los términos de la versión 2 de la Licencia Pública\n"
-"General de GNU tal y como está publicada por la Free Software Foundation.\n"
-"\n"
-"    Este programa se distribuye con la esperanza de que resulte útil,\n"
-"pero SIN NINGUNA GARANTÍA; ni siquiera con la garantía MERCANTIL\n"
-"ni de CONVENIENCIA PARA UN PROPÓSITO PARTICULAR implícitas\n"
-"Consulte la Licencia Pública General de GNU para ver más detalles\n"
-"    Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc.,\n"
-"59 Temple Place - Suite 330,\n"
-"Boston, MA 02111-1307, USA.\n"
-
-#: main.cc:146
-msgid "SYM[=VAL]"
-msgstr "SÍMBOLO[=VALOR]"
-
-#: main.cc:147
-msgid ""
-"set Scheme option SYM to VAL (default: #t).\n"
-"Use -dhelp for help."
-msgstr ""
-"establecer la opción de Scheme SÍMBOLO a VALOR (por omisión: #t).\n"
-"Use -dhelp para obtener ayuda."
-
-#: main.cc:150
-msgid "EXPR"
-msgstr "EXPRESIÓN"
-
-#: main.cc:150
-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:153
-msgid "FORMATs"
-msgstr "FORMATOs"
+#: score-engraver.cc:84
+msgid "Aborting"
+msgstr "Se detiene la ejecución"
 
-#: main.cc:153
-msgid "dump FORMAT,...  Also as separate options:"
-msgstr "volcar FORMATO,...  También como opciones separadas:"
+#: note-collision.cc:497
+msgid "ignoring too many clashing note columns"
+msgstr "demasiadas columnas de notas que chocan entre sí; se ignoran"
 
-#: main.cc:154
-msgid "generate PDF (default)"
-msgstr "generar un PDF (predeterminado)"
+#. fixme: be more verbose.
+#: volta-engraver.cc:111
+msgid "cannot end volta spanner"
+msgstr "no se puede terminar el trazador de volta"
 
-#: main.cc:155
-msgid "generate PNG"
-msgstr "generar un PNG"
+#: volta-engraver.cc:121
+msgid "already have a volta spanner, ending that one prematurely"
+msgstr "ya hay un trazador de volta, se acaba éste de forma prematura"
 
-#: main.cc:156
-msgid "generate PostScript"
-msgstr "generar un PostScript"
+# also...?
+#: volta-engraver.cc:125
+msgid "also already have an ended spanner"
+msgstr "ya hay un trazador finalizado"
 
-#: main.cc:158
-msgid "FIELD"
-msgstr "CAMPO"
+#: volta-engraver.cc:126
+msgid "giving up"
+msgstr "abandonando"
 
-#: main.cc:158
-msgid ""
-"dump header field FIELD to file\n"
-"named BASENAME.FIELD"
-msgstr ""
-"volcar el campo de cabecera CAMPO a un archivo\n"
-"llamado NOMBRE_BASE.CAMPO"
+#: page-layout-problem.cc:322
+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"
 
-#: main.cc:160
-msgid "add DIR to search path"
-msgstr "añadir DIRECTORIO a la ruta de búsqueda"
+#: page-layout-problem.cc:325
+#, 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"
 
-#: main.cc:161
-msgid "use FILE as init file"
-msgstr "usar ARCHIVO como archivo de inicialización"
+#: page-layout-problem.cc:327
+msgid "compressing music to fit"
+msgstr "comprimiendo la música para que quepa"
 
-#: main.cc:163
-msgid "USER, GROUP, JAIL, DIR"
-msgstr "USUARIO, GRUPO, JAULA, DIRECTORIO"
+#: page-layout-problem.cc:765
+msgid "staff-affinities should only decrease"
+msgstr "staff-affinities solo debe disminuir"
 
-#: main.cc:163
-msgid ""
-"chroot to JAIL, become USER:GROUP\n"
-"and cd into DIR"
-msgstr ""
-"chroot a JAULA, convertirse en USUARIO:GRUPO\n"
-"y cd al DIRECTORIO"
+#: apply-context-iterator.cc:42
+msgid "\\applycontext argument is not a procedure"
+msgstr "el argumento de \\applycontext no es un procedimiento"
 
-#: main.cc:166
-msgid "write output to FILE (suffix will be added)"
-msgstr "escribir la salida en el ARCHIVO (se añadirá el sufijo)"
+#. FIXME: constant error message.
+#: mark-engraver.cc:157
+msgid "rehearsalMark must have integer value"
+msgstr "rehearsalMark debe tener un valor entero"
 
-#: main.cc:167
-msgid "relocate using directory of lilypond program"
-msgstr "relocalizar utilizando el directorio del programa lilypond"
+#: mark-engraver.cc:163
+msgid "mark label must be a markup object"
+msgstr "la etiqueta de marcado debe ser un objeto de marcado"
 
-#. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:238
+#: new-dynamic-engraver.cc:142
 #, c-format
 msgid ""
-"Copyright (c) %s by\n"
-"%s  and others."
+"unknown crescendo style: %s\n"
+"defaulting to hairpin."
 msgstr ""
-"Copyright (c) %s by\n"
-"%s y otros."
+"estilo de crescendo desconocido: %s\n"
+"se toma regulador como predeterminado."
 
-#. No version number or newline here.  It confuses help2man.
-#: main.cc:265
+#: new-dynamic-engraver.cc:200
 #, c-format
-msgid "Usage: %s [OPTION]... FILE..."
-msgstr "Uso: %s [OPCIÓN]... ARCHIVO..."
-
-#: main.cc:267
-msgid "Typeset music and/or produce MIDI from FILE."
-msgstr "Componer tipográficamente la música y/o producir MIDI a partir de ARCHIVO."
+msgid "unterminated %s"
+msgstr "%s sin terminar"
 
-#: main.cc:269
-msgid "LilyPond produces beautiful music notation."
-msgstr "LilyPond produce una notación musical bella y hermosa."
+#: stem-engraver.cc:103
+msgid "tremolo duration is too long"
+msgstr "la duración del trémolo es demasiado larga"
 
-#: main.cc:271
+#. FIXME:
+#: stem-engraver.cc:140
 #, c-format
-msgid "For more information, see %s"
-msgstr "Para ver más información, consulte %s"
+msgid "adding note head to incompatible stem (type = %d)"
+msgstr "añadiendo cabeza de nota a una plica incompatible (tipo = %d)"
 
-#: main.cc:273
-msgid "Options:"
-msgstr "Opciones:"
+#: stem-engraver.cc:142
+msgid "maybe input should specify polyphonic voices"
+msgstr "quizá la entrada debiera especificar voces polifónicas"
 
-#: main.cc:327
-#, c-format
-msgid "expected %d arguments with jail, found: %u"
-msgstr "se esperaban %d argumentos con la jaula, se han encontrado: %u"
+#: lily-lexer.cc:264
+msgid "include files are not allowed in safe mode"
+msgstr "no se permiten los archivos de inclusión en el modo seguro"
 
-#: main.cc:341
+#: lily-lexer.cc:291
 #, c-format
-msgid "no such user: %s"
-msgstr "no existe el usuario %s"
+msgid "identifier name is a keyword: `%s'"
+msgstr "el nombre del identificativo es una palabra clave: «%s»"
 
-#: main.cc:343
+#: lily-lexer.cc:312
 #, c-format
-msgid "cannot get user id from user name: %s: %s"
-msgstr "no se puede obtener el identificador de usuario a partir del nombre: %s: %s"
+msgid "error at EOF: %s"
+msgstr "error al final del archivo (EOF): %s"
 
-#: main.cc:358
+#: lyric-combine-music-iterator.cc:337
 #, c-format
-msgid "no such group: %s"
-msgstr "no existe este grupo: %s"
+msgid "cannot find Voice `%s'"
+msgstr "no se encuentra la Voz «%s»"
 
-#: main.cc:360
+#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
 #, c-format
-msgid "cannot get group id from group name: %s: %s"
-msgstr "no se puede obtener el id de grupo a partir del nombre: %s: %s"
+msgid "cannot find file: `%s'"
+msgstr "no se encuentra el archivo: «%s»"
 
-#: main.cc:368
+#: includable-lexer.cc:73 lily-parser-scheme.cc:100
 #, c-format
-msgid "cannot chroot to: %s: %s"
-msgstr "no se puede hacer chroot a: %s: %s"
+msgid "(search path: `%s')"
+msgstr "(ruta de búsqueda: «%s»)"
 
-#: main.cc:375
-#, c-format
-msgid "cannot change group id to: %d: %s"
-msgstr "no se puede cambiar el grupo del usuario a %d: %s"
+#: note-column.cc:135
+msgid "cannot have note heads and rests together on a stem"
+msgstr "no se pueden tener cabezas de nota y silencios en la misma plica"
 
-#: main.cc:381
-#, c-format
-msgid "cannot change user id to: %d: %s"
-msgstr "no se puede cambiar el identificador de usuario a %d: %s"
+#: beam.cc:180
+msgid "removing beam with no stems"
+msgstr "se suprime la barra sin plicas"
 
-#: main.cc:387
-#, c-format
-msgid "cannot change working directory to: %s: %s"
-msgstr "no se puede cambiar el directorio de trabajo a: %s: %s"
+#. We are completely screwed.
+#: beam.cc:1274
+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"
 
-#: main.cc:628
+#: slur-engraver.cc:93
 #, c-format
-msgid "exception caught: %s"
-msgstr "se ha capturado una excepción: %s"
+msgid "direction of %s invalid: %d"
+msgstr "dirección inválida de %s: %d"
 
-#. FIXME: constant error message.
-#: mark-engraver.cc:157
-msgid "rehearsalMark must have integer value"
-msgstr "rehearsalMark debe tener un valor entero"
+#: slur-engraver.cc:162
+msgid "unterminated slur"
+msgstr "ligadura de expresión sin terminar"
 
-#: mark-engraver.cc:163
-msgid "mark label must be a markup object"
-msgstr "la etiqueta de marcado debe ser un objeto de marcado"
+#: slur-engraver.cc:174
+msgid "cannot end slur"
+msgstr "no se puede terminar la ligadura de expresión"
 
-#: mensural-ligature-engraver.cc:96
-msgid "ligature with less than 2 heads -> skipping"
-msgstr "ligadura con menos de dos cabezas; se salta"
+#: font-config.cc:40
+msgid "Initializing FontConfig..."
+msgstr "Inicializando FontConfig..."
 
-#: mensural-ligature-engraver.cc:123
-msgid "cannot determine pitch of ligature primitive -> skipping"
-msgstr "no se puede determinar la altura de la primitiva de ligadura; se salta"
+#: font-config.cc:55 font-config-scheme.cc:152
+#, c-format
+msgid "failed adding font directory: %s"
+msgstr "fallo al añadir la carpeta de tipografías: %s"
 
-#: mensural-ligature-engraver.cc:137
-msgid "single note ligature - skipping"
-msgstr "ligadura de una nota; se salta"
+#: font-config.cc:57 font-config-scheme.cc:154
+#, c-format
+msgid "adding font directory: %s"
+msgstr "añadiendo carpeta de tipografías: %s"
 
-#: mensural-ligature-engraver.cc:149
-msgid "prime interval within ligature -> skipping"
-msgstr "intervalo primo dentro de una ligadura; se salta"
-
-#: mensural-ligature-engraver.cc:161
-msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
-msgstr "ligadura mensural: la duración no es Mx, L, B ni S; se salta"
-
-#: mensural-ligature-engraver.cc:209
-msgid "semibrevis must be followed by another one -> skipping"
-msgstr "la semibreve debe ir seguida por otra -> se salta"
-
-#: mensural-ligature-engraver.cc:220
-msgid ""
-"semibreves can only appear at the beginning of a ligature,\n"
-"and there may be only zero or two of them"
-msgstr ""
-"las semibreves sólo pueden aparecer al principio de una ligadura,\n"
-"y sólo puede haber dos o ninguna"
-
-#: mensural-ligature-engraver.cc:247
-msgid ""
-"invalid ligatura ending:\n"
-"when the last note is a descending brevis,\n"
-"the penultimate note must be another one,\n"
-"or the ligatura must be LB or SSB"
-msgstr ""
-"finalización inválida de la ligadura:\n"
-"cuando la última nota es una breve descendente,\n"
-"la penúltima nota debe ser otra breve,\n"
-"o la ligadura debe ser LB o SSB"
+#: font-config.cc:61
+msgid "Building font database..."
+msgstr "Construyendo la base de datos de fuentes tipográficas..."
 
-#: mensural-ligature-engraver.cc:367
-msgid "unexpected case fall-through"
-msgstr "opción de caso por defecto inesperada"
+#. find out the ideal number of pages
+#: optimal-page-breaking.cc:62
+msgid "Finding the ideal number of pages..."
+msgstr "Buscando el número de páginas ideal..."
 
-#: mensural-ligature.cc:152
-msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature (ligadura mensural): caso por defecto inesperado"
+#: optimal-page-breaking.cc:85
+msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page"
+msgstr "no se pueden satisfacer systems-per-page y page-count al mismo tiempo, se ignora systems-per-page"
 
-#: mensural-ligature.cc:203
-msgid "Mensural_ligature: (join_right == 0)"
-msgstr "Mensural_ligature (ligadura mensural): (join_right == 0)"
+#: optimal-page-breaking.cc:105
+msgid "Fitting music on 1 page..."
+msgstr "Disponiendo la música en una página..."
 
-#: midi-item.cc:92
+#: optimal-page-breaking.cc:107
 #, c-format
-msgid "no such MIDI instrument: `%s'"
-msgstr "no existe este instrumento MIDI: «%s»"
+msgid "Fitting music on %d pages..."
+msgstr "Disponiendo la música en %d páginas..."
 
-#: midi-stream.cc:39
+#: optimal-page-breaking.cc:109
 #, c-format
-msgid "cannot open for write: %s: %s"
-msgstr "no se puede abrir el archivo en modo de escritura: %s: %s"
+msgid "Fitting music on %d or %d pages..."
+msgstr "Disponiendo la música en %d o %d páginas..."
 
-#: midi-stream.cc:55
+#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173
 #, c-format
-msgid "cannot write to file: `%s'"
-msgstr "no se puede escribir el archivo: «%s»"
-
-#: minimal-page-breaking.cc:40 paper-score.cc:122
-msgid "Calculating line breaks..."
-msgstr "Calculando los saltos de línea..."
-
-#: minimal-page-breaking.cc:44
-msgid "Calculating page breaks..."
-msgstr "Calculando saltos de página..."
+msgid "trying %d systems"
+msgstr "probando %d sistemas"
 
-#: music-iterator.cc:182
-msgid "Sending non-event to context"
-msgstr "Enviando elemento que no es un evento a un contexto"
+#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201
+#, c-format
+msgid "best score for this sys-count: %f"
+msgstr "mejor puntuación para este número de sistemas: %f"
 
-#: music.cc:151
+#: accidental.cc:200
 #, 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\""
+msgid "Could not find glyph-name for alteration %s"
+msgstr "No se ha encontrado el nombre de glifo para la alteración %s"
 
-#: music.cc:219
-msgid "(normalized pitch)"
-msgstr "(altura normalizada)"
+#: accidental.cc:215
+msgid "natural alteration glyph not found"
+msgstr "no se encuentra el glifo del símbolo de becuadro"
 
-#: music.cc:223
+#: system.cc:197
 #, 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"
+msgid "Element count %d"
+msgstr "Número total de elementos %d"
 
-#: new-dynamic-engraver.cc:142
+#: system.cc:303
 #, c-format
-msgid ""
-"unknown crescendo style: %s\n"
-"defaulting to hairpin."
-msgstr ""
-"estilo de crescendo desconocido: %s\n"
-"se toma regulador como predeterminado."
+msgid "Grob count %d"
+msgstr "Número de objetos gráficos: %d"
 
-#: new-dynamic-engraver.cc:200
+#: slur.cc:362
 #, c-format
-msgid "unterminated %s"
-msgstr "%s sin terminar"
+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?"
 
-#: new-fingering-engraver.cc:106
-msgid "cannot add text scripts to individual note heads"
-msgstr "no se pueden añadir guiones de texto a cabezas de nota individuales"
+#: font-config-scheme.cc:168
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "fallo al añadir el archivo de fuente tipográfica: %s"
 
-#: new-fingering-engraver.cc:250
-msgid "no placement found for fingerings"
-msgstr "no se ha encontrado ninguna ubicación válida para las digitaciones"
+#: font-config-scheme.cc:170
+#, c-format
+msgid "adding font file: %s"
+msgstr "añadiendo archivo de fuente tipográfica: %s"
 
-#: new-fingering-engraver.cc:251
-msgid "placing below"
-msgstr "se coloca debajo"
+#: hairpin.cc:186
+msgid "decrescendo too small"
+msgstr "decrescendo demasiado pequeño"
 
-#: note-collision.cc:497
-msgid "ignoring too many clashing note columns"
-msgstr "demasiadas columnas de notas que chocan entre sí; se ignoran"
+#: extender-engraver.cc:170 extender-engraver.cc:179
+msgid "unterminated extender"
+msgstr "prolongación sin terminar"
 
-#: note-column.cc:135
-msgid "cannot have note heads and rests together on a stem"
-msgstr "no se pueden tener cabezas de nota y silencios en la misma plica"
+#: lily-guile.cc:89
+#, c-format
+msgid "(load path: `%s')"
+msgstr "(ruta de carga: «%s»)"
 
-#: note-head.cc:76
+#: lily-guile.cc:437
 #, c-format
-msgid "none of note heads `%s' or `%s' found"
-msgstr "no se encuentran las cabezas de nota «%s» ni «%s»"
+msgid "cannot find property type-check for `%s' (%s)."
+msgstr "no se encuentra la comprobación de tipo de propiedad para «%s» (%s)."
 
-#: note-heads-engraver.cc:76
-msgid "NoteEvent without pitch"
-msgstr "NoteEvent sin altura"
+#: lily-guile.cc:440
+msgid "perhaps a typing error?"
+msgstr "¿quizá es un error de tecleo?"
 
-#: open-type-font.cc:44
-#, c-format
-msgid "cannot allocate %lu bytes"
-msgstr "no se peuden reservar %lu bytes"
+#: lily-guile.cc:447
+msgid "doing assignment anyway"
+msgstr "se hace la asignación de todas formas"
 
-#: open-type-font.cc:48
+#: lily-guile.cc:459
 #, c-format
-msgid "cannot load font table: %s"
-msgstr "no se puede cargar la tabla de tipografías: %s"
+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»"
 
-#: open-type-font.cc:53
+#: main.cc:109
 #, c-format
-msgid "Free type error: %s"
-msgstr "error de FreeType: %s"
+msgid ""
+"This program is free software.  It is covered by the GNU General Public\n"
+"License and you are welcome to change it and/or distribute copies of it\n"
+"under certain conditions.  Invoke as `%s --warranty' for more\n"
+"information.\n"
+msgstr ""
+"Este software es libre. Está protegido por la Licencia Pública\n"
+"General de GNU, y usted está invitado a modificarlo y/o distribuir copias de\n"
+"él bajo ciertas condiciones. Invóquelo como `%s --warranty' para obtener\n"
+"más información.\n"
 
-#: open-type-font.cc:111
-#, c-format
-msgid "unsupported font format: %s"
-msgstr "formato de tipografía %s no soportado"
+#: main.cc:115
+msgid ""
+"    This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
+"Boston, MA 02111-1307, USA.\n"
+msgstr ""
+"    This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
+"Boston, MA 02111-1307, USA.\n"
+"\n"
+"    Este programa es software libre; puede redistribuirlo y/o\n"
+"modificarlo bajo los términos de la versión 2 de la Licencia Pública\n"
+"General de GNU tal y como está publicada por la Free Software Foundation.\n"
+"\n"
+"    Este programa se distribuye con la esperanza de que resulte útil,\n"
+"pero SIN NINGUNA GARANTÍA; ni siquiera con la garantía MERCANTIL\n"
+"ni de CONVENIENCIA PARA UN PROPÓSITO PARTICULAR implícitas\n"
+"Consulte la Licencia Pública General de GNU para ver más detalles\n"
+"    Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc.,\n"
+"59 Temple Place - Suite 330,\n"
+"Boston, MA 02111-1307, USA.\n"
 
-#: open-type-font.cc:113
-#, c-format
-msgid "error reading font file %s: %s"
-msgstr "error al leer la tipografía %s: %s"
+#: main.cc:146
+msgid "SYM[=VAL]"
+msgstr "SÍMBOLO[=VALOR]"
 
-#: open-type-font.cc:188
-#, c-format
-msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr "error de Freetype en FT_Get_Glyph_Name (): %s"
+#: main.cc:147
+msgid ""
+"set Scheme option SYM to VAL (default: #t).\n"
+"Use -dhelp for help."
+msgstr ""
+"establecer la opción de Scheme SÍMBOLO a VALOR (por omisión: #t).\n"
+"Use -dhelp para obtener ayuda."
 
-#: open-type-font.cc:250
-msgid "Invalid index for character"
-msgstr "Índice del carácter no válido"
+#: main.cc:150
+msgid "EXPR"
+msgstr "EXPRESIÓN"
 
-#: open-type-font.cc:319 pango-font.cc:187
-#, c-format
-msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "error en FT_Get_Glyph_Name (): %s"
+#: main.cc:150
+msgid "evaluate scheme code"
+msgstr "evaluar código de Scheme"
 
-#. find out the ideal number of pages
-#: optimal-page-breaking.cc:60
-msgid "Finding the ideal number of pages..."
-msgstr "Buscando el número de páginas ideal..."
+#. Bug in option parser: --output =foe is taken as an abbreviation
+#. for --output-format.
+#: main.cc:153
+msgid "FORMATs"
+msgstr "FORMATOs"
 
-#: optimal-page-breaking.cc:87
-msgid "Fitting music on 1 page..."
-msgstr "Disponiendo la música en una página..."
+#: main.cc:153
+msgid "dump FORMAT,...  Also as separate options:"
+msgstr "volcar FORMATO,...  También como opciones separadas:"
 
-#: optimal-page-breaking.cc:89
-#, c-format
-msgid "Fitting music on %d pages..."
-msgstr "Disponiendo la música en %d páginas..."
+#: main.cc:154
+msgid "generate PDF (default)"
+msgstr "generar un PDF (predeterminado)"
 
-#: optimal-page-breaking.cc:91
-#, c-format
-msgid "Fitting music on %d or %d pages..."
-msgstr "Disponiendo la música en %d o %d páginas..."
+#: main.cc:155
+msgid "generate PNG"
+msgstr "generar un PNG"
 
-#: optimal-page-breaking.cc:101 optimal-page-breaking.cc:155
-#, c-format
-msgid "trying %d systems"
-msgstr "probando %d sistemas"
+#: main.cc:156
+msgid "generate PostScript"
+msgstr "generar un PostScript"
 
-#: optimal-page-breaking.cc:120 optimal-page-breaking.cc:183
-#, c-format
-msgid "best score for this sys-count: %f"
-msgstr "mejor puntuación para este número de sistemas: %f"
+#: main.cc:158
+msgid "FIELD"
+msgstr "CAMPO"
 
-#: optimal-page-breaking.cc:190 page-turn-page-breaking.cc:248
-#: paper-score.cc:163
-msgid "Drawing systems..."
-msgstr "Dibujando los sistemas..."
+#: main.cc:158
+msgid ""
+"dump header field FIELD to file\n"
+"named BASENAME.FIELD"
+msgstr ""
+"volcar el campo de cabecera CAMPO a un archivo\n"
+"llamado NOMBRE_BASE.CAMPO"
 
-#: 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"
+#: main.cc:160
+msgid "add DIR to search path"
+msgstr "añadir DIRECTORIO a la ruta de búsqueda"
 
-#: 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"
+#: main.cc:161
+msgid "use FILE as init file"
+msgstr "usar ARCHIVO como archivo de inicialización"
 
-#: page-breaking.cc:194
-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"
+#: main.cc:163
+msgid "USER, GROUP, JAIL, DIR"
+msgstr "USUARIO, GRUPO, JAULA, DIRECTORIO"
 
-#: page-breaking.cc:199
-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"
+#: main.cc:163
+msgid ""
+"chroot to JAIL, become USER:GROUP\n"
+"and cd into DIR"
+msgstr ""
+"chroot a JAULA, convertirse en USUARIO:GRUPO\n"
+"y cd al DIRECTORIO"
+
+#: main.cc:166
+msgid "write output to FILE (suffix will be added)"
+msgstr "escribir la salida en el ARCHIVO (se añadirá el sufijo)"
+
+#: main.cc:167
+msgid "relocate using directory of lilypond program"
+msgstr "relocalizar utilizando el directorio del programa lilypond"
 
-#: page-layout-problem.cc:315
+#. Do not update the copyright years here, run `make grand-replace'
+#: main.cc:238
 #, c-format
-msgid "couldn't fit music on page: overflow is %f"
-msgstr "la música no cabe en la página: el exceso es %f"
+msgid ""
+"Copyright (c) %s by\n"
+"%s  and others."
+msgstr ""
+"Copyright (c) %s by\n"
+"%s y otros."
 
-#: page-layout-problem.cc:317
-msgid "compressing music to fit"
-msgstr "comprimiendo la música para que quepa"
+#. No version number or newline here.  It confuses help2man.
+#: main.cc:265
+#, c-format
+msgid "Usage: %s [OPTION]... FILE..."
+msgstr "Uso: %s [OPCIÓN]... ARCHIVO..."
 
-#: page-layout-problem.cc:733
-msgid "staff-affinities should only decrease"
-msgstr "staff-affinities solo debe disminuir"
+#: main.cc:267
+msgid "Typeset music and/or produce MIDI from FILE."
+msgstr "Componer tipográficamente la música y/o producir MIDI a partir de ARCHIVO."
 
-#: page-turn-page-breaking.cc:168
+#: main.cc:269
+msgid "LilyPond produces beautiful music notation."
+msgstr "LilyPond produce una notación musical bella y hermosa."
+
+#: main.cc:271
 #, c-format
-msgid "page-turn-page-breaking: breaking from %d to %d"
-msgstr "page-turn-page-breaking: saltando desde %d hasta %d"
+msgid "For more information, see %s"
+msgstr "Para ver más información, consulte %s"
 
-#: 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."
+#: main.cc:273
+msgid "Options:"
+msgstr "Opciones:"
 
-#: page-turn-page-breaking.cc:230
+#: main.cc:327
 #, 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)..."
+msgid "expected %d arguments with jail, found: %u"
+msgstr "se esperaban %d argumentos con la jaula, se han encontrado: %u"
 
-#: page-turn-page-breaking.cc:297
+#: main.cc:341
 #, c-format
-msgid "break starting at page %d"
-msgstr "el salto comienza en la página %d"
+msgid "no such user: %s"
+msgstr "no existe el usuario %s"
 
-#: page-turn-page-breaking.cc:298
+#: main.cc:343
 #, c-format
-msgid "\tdemerits: %f"
-msgstr "\tpuntuación: %f"
+msgid "cannot get user id from user name: %s: %s"
+msgstr "no se puede obtener el identificador de usuario a partir del nombre: %s: %s"
 
-#: page-turn-page-breaking.cc:299
+#: main.cc:358
 #, c-format
-msgid "\tsystem count: %d"
-msgstr "número total de \tsistemas: %d"
+msgid "no such group: %s"
+msgstr "no existe este grupo: %s"
 
-#: page-turn-page-breaking.cc:300
+#: main.cc:360
 #, c-format
-msgid "\tpage count: %d"
-msgstr "número total de \tpáginas: %d"
+msgid "cannot get group id from group name: %s: %s"
+msgstr "no se puede obtener el id de grupo a partir del nombre: %s: %s"
 
-#: page-turn-page-breaking.cc:301
+#: main.cc:368
 #, c-format
-msgid "\tprevious break: %d"
-msgstr "\tsalto anterior: %d"
+msgid "cannot chroot to: %s: %s"
+msgstr "no se puede hacer chroot a: %s: %s"
 
-#: pango-font.cc:204
+#: main.cc:375
 #, 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"
+msgid "cannot change group id to: %d: %s"
+msgstr "no se puede cambiar el grupo del usuario a %d: %s"
 
-#: pango-font.cc:241
+#: main.cc:381
 #, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "no hay un nombre de tipografía PostScript para «%s»"
+msgid "cannot change user id to: %d: %s"
+msgstr "no se puede cambiar el identificador de usuario a %d: %s"
 
-#: pango-font.cc:290
-msgid "FreeType face has no PostScript font name"
-msgstr "El tipo FreeType no tiene un nombre de tipografía PostScript"
+#: main.cc:387
+#, c-format
+msgid "cannot change working directory to: %s: %s"
+msgstr "no se puede cambiar el directorio de trabajo a: %s: %s"
 
-#: paper-book.cc:214
+#: main.cc:628
 #, c-format
-msgid "program option -dprint-pages not supported by backend `%s'"
-msgstr "la opción de programa -dprint-pages no está contemplada por el backend `%s'"
+msgid "exception caught: %s"
+msgstr "se ha capturado una excepción: %s"
 
-#: paper-book.cc:233
+#: key-signature-interface.cc:78
 #, c-format
-msgid "program option -dpreview not supported by backend `%s'"
-msgstr "la opción de programa -dpreview no está contemplada por el backend `%s'"
+msgid "No glyph found for alteration: %s"
+msgstr "No se ha encontrado ningún glifo para la alteración: %s"
 
-#: paper-column-engraver.cc:233
-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?"
+#: key-signature-interface.cc:88
+msgid "alteration not found"
+msgstr "no se encuentra la alteración"
 
-#: paper-outputter-scheme.cc:41
+#: dots.cc:48
 #, c-format
-msgid "Layout output to `%s'..."
-msgstr "Salida de la página hacia «%s»..."
+msgid "dot `%s' not found"
+msgstr "no se encuentra el puntillo «%s»"
 
-#: paper-score.cc:135
+#: translator.cc:359
 #, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "Cantidad de elementos: %d (trazadores: %d)"
-
-#: paper-score.cc:139
-msgid "Preprocessing graphical objects..."
-msgstr "Preprocesando los objetos gráficos..."
+msgid "Two simultaneous %s events, junking this one"
+msgstr "Dos eventos %s simultáneos, se recorta éste"
 
-#: parse-scm.cc:101
-msgid "GUILE signaled an error for the expression beginning here"
-msgstr "GUILE ha señalado un error para la expresión que comienza aquí"
+#: translator.cc:360
+#, c-format
+msgid "Previous %s event here"
+msgstr "El evento %s previo está aquí"
 
-#: 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"
+#: glissando-engraver.cc:105
+msgid "unterminated glissando"
+msgstr "glissando sin terminar"
 
-#: percent-repeat-engraver.cc:213
-msgid "unterminated percent repeat"
-msgstr "repetición de porcentaje sin terminar"
+#: text-spanner-engraver.cc:73
+msgid "cannot find start of text spanner"
+msgstr "no se encuentra el principio del trazador de texto"
 
-#: performance.cc:54
-msgid "Track..."
-msgstr "Pista..."
+#: text-spanner-engraver.cc:86
+msgid "already have a text spanner"
+msgstr "ya hay un trazador de texto"
 
-#: performance.cc:83
-msgid "MIDI channel wrapped around"
-msgstr "ha dado la vuelta el número de canal MIDI"
+#: text-spanner-engraver.cc:132
+msgid "unterminated text spanner"
+msgstr "trazador de texto sin terminar"
 
-#: performance.cc:84
-msgid "remapping modulo 16"
-msgstr "se reasigna módulo 16"
+#: clef.cc:65
+#, c-format
+msgid "clef `%s' not found"
+msgstr "no se ha encontrado la clave  «%s»"
 
-#: performance.cc:111
+#.
+#. Todo: should make typecheck?
+#.
+#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+#.
+#: time-signature-engraver.cc:75
 #, c-format
-msgid "MIDI output to `%s'..."
-msgstr "Salida MIDI hacia «%s»..."
+msgid "strange time signature found: %d/%d"
+msgstr "se ha encontrado una indicación extraña de compás: %d/%d"
 
-#: phrasing-slur-engraver.cc:157
-msgid "unterminated phrasing slur"
-msgstr "ligadura de fraseo sin terminar"
+#: lily-parser-scheme.cc:82
+#, c-format
+msgid "Changing working directory to: `%s'"
+msgstr "Se cambia el directorio de trabajo a:  «%s»"
 
-#: piano-pedal-engraver.cc:298
+#: lily-parser-scheme.cc:99
 #, 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"
+msgid "cannot find init file: `%s'"
+msgstr "no se encuentra el archivo de inicio: «%s»"
 
-#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
-#: piano-pedal-performer.cc:104
+#: lily-parser-scheme.cc:118
 #, c-format
-msgid "cannot find start of piano pedal: `%s'"
-msgstr "no se encuentra el comienzo del pedal de piano «%s»"
+msgid "Processing `%s'"
+msgstr "Procesando «%s»"
 
-#: piano-pedal-engraver.cc:359
+#: lily-parser-scheme.cc:204
+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."
+
+#: custos.cc:88
 #, c-format
-msgid "cannot find start of piano pedal bracket: `%s'"
-msgstr "no se encuentra el comienzo del corchete de pedal de piano «%s»"
+msgid "custos `%s' not found"
+msgstr "no se encuentran los custos «%s»"
 
 #: program-option-scheme.cc:237
 #, c-format
 msgid "no such internal option: %s"
 msgstr "no existe la opción interna %s"
 
-#: property-iterator.cc:85
+#: 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:205
+msgid "too many colliding rests"
+msgstr "demasiados silencios en colisión"
+
+#: 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 "not a grob name, `%s'"
-msgstr "no es un nombre de objeto gráfico: «%s»"
+msgid "%d: %s"
+msgstr "%d: %s"
 
-#: relative-octave-check.cc:49
-msgid "Failed octave check, got: "
-msgstr "La comprobación de octaba ha fallado, se ha obtenido: "
+#: grob-property.cc:173
+#, 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:54
 #, c-format
@@ -2591,7 +2557,7 @@ msgstr "Relocalización: es absoluto: argv0=%s"
 msgid "Relocation: from cwd: argv0=%s"
 msgstr "Relocalización: desde cwd: argv0=%s"
 
-#: relocate.cc:205
+#: relocate.cc:213
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
@@ -2600,71 +2566,146 @@ msgstr ""
 "Relocalización: desde PATH=%s\n"
 "argv0=%s"
 
-#: relocate.cc:239
-msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
-msgstr "LILYPONDPREFIX está obsoleto, utilice LILYPOND_DATADIR"
+#: relocate.cc:240
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr "LILYPONDPREFIX está obsoleto, utilice LILYPOND_DATADIR"
+
+#: relocate.cc:367
+#, c-format
+msgid "Relocation file: %s"
+msgstr "Archivo de relocalización: %s"
+
+#: relocate.cc:373 source-file.cc:65
+#, c-format
+msgid "cannot open file: `%s'"
+msgstr "no se puede abrir el archivo: «%s»"
+
+#: relocate.cc:403
+#, c-format
+msgid "Unknown relocation command %s"
+msgstr "instrucción de relocalización %s desconocida"
+
+#: translator-group.cc:188
+#, c-format
+msgid "cannot find: `%s'"
+msgstr "no se encuentra «%s»"
+
+#: phrasing-slur-engraver.cc:157
+msgid "unterminated phrasing slur"
+msgstr "ligadura de fraseo sin terminar"
+
+#: lyric-engraver.cc:176
+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:248
+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:253
+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:54
+msgid "Track..."
+msgstr "Pista..."
+
+#: performance.cc:83
+msgid "MIDI channel wrapped around"
+msgstr "ha dado la vuelta el número de canal MIDI"
+
+#: performance.cc:84
+msgid "remapping modulo 16"
+msgstr "se reasigna módulo 16"
+
+#: performance.cc:111
+#, 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"
+
+#: gregorian-ligature-engraver.cc:70
+#, c-format
+msgid "\\%s ignored"
+msgstr "\\%s ignorado(s)"
+
+#: gregorian-ligature-engraver.cc:75
+#, c-format
+msgid "implied \\%s added"
+msgstr "se ha añadido el \\%s implícito"
+
+#. ligature may not start with 2nd head of pes or flexa
+#: gregorian-ligature-engraver.cc:224
+msgid "cannot apply `\\~' on first head of ligature"
+msgstr "no se puede aplicar `\\~' sobre la primera cabeza de una ligadura"
 
-#: relocate.cc:366
-#, c-format
-msgid "Relocation file: %s"
-msgstr "Archivo de relocalización: %s"
+#. (pitch == prev_pitch)
+#: gregorian-ligature-engraver.cc:236
+msgid "cannot apply `\\~' on heads with identical pitch"
+msgstr "no se puede aplicar `\\~' sobre cabezas de idéntica altura"
 
-#: relocate.cc:372 source-file.cc:65
-#, c-format
-msgid "cannot open file: `%s'"
-msgstr "no se puede abrir el archivo: «%s»"
+#: chord-tremolo-engraver.cc:88
+msgid "No tremolo to end"
+msgstr "No hay ningún tremolo hasta el final"
 
-#: relocate.cc:402
-#, c-format
-msgid "Unknown relocation command %s"
-msgstr "instrucción de relocalización %s desconocida"
+#: chord-tremolo-engraver.cc:109
+msgid "unterminated chord tremolo"
+msgstr "trémolo de acorde sin terminar"
 
-#: 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-engraver.cc:94
+msgid "Axis_group_engraver: vertical group already has a parent"
+msgstr "Axis_group_engraver: el grupo vertical ya tiene un ancestro"
 
-#: 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"
+#: axis-group-engraver.cc:95
+msgid "are there two Axis_group_engravers?"
+msgstr "¿hay dos Axis_group_engravers?"
 
-#: rest-collision.cc:160 rest-collision.cc:205
-msgid "too many colliding rests"
-msgstr "demasiados silencios en colisión"
+#: axis-group-engraver.cc:96
+msgid "removing this vertical group"
+msgstr "se suprime este grupo vertical"
 
-#: rest.cc:159
+#: cluster.cc:120
 #, c-format
-msgid "rest `%s' not found"
-msgstr "no se ha encontrado el silencio «%s»"
+msgid "unknown cluster style `%s'"
+msgstr "estilo de cluster (racimo) «%s» desconocido"
 
-#: score-engraver.cc:78
-#, c-format
-msgid "cannot find `%s'"
-msgstr "No se encuentra «%s»"
+#: cluster.cc:157
+msgid "junking empty cluster"
+msgstr "se recorta el racimo (cluster) vacío"
 
-#: score-engraver.cc:80
-msgid "Music font has not been installed properly."
-msgstr "La tipografía de música no se ha instalado correctamente."
+#: context-property.cc:42
+msgid "need symbol arguments for \\override and \\revert"
+msgstr "se necesitan argumentos de símbolo para \\override y \\revert"
 
-#: score-engraver.cc:82
+#: source-file.cc:85
 #, c-format
-msgid "Search path `%s'"
-msgstr "Ruta de búsqueda «%s»"
+msgid "expected to read %d characters, got %d"
+msgstr "se esperaba leer %d caracteres, se han obtenido %d"
 
-#: score-engraver.cc:84
-msgid "Aborting"
-msgstr "Se detiene la ejecución"
+#: axis-group-interface.cc:631
+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"
 
-#: score.cc:178
-msgid "already have music in score"
-msgstr "ya tiene música en la partitura"
+#: coherent-ligature-engraver.cc:111
+#, c-format
+msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
+msgstr "Coherent_ligature_engraver: se establece `spacing-increment=0.01': ptr=%ul"
 
-#: score.cc:179
-msgid "this is the previous music"
-msgstr "esta es la música precedente"
+#: percent-repeat-engraver.cc:148
+msgid "unterminated percent repeat"
+msgstr "repetición de porcentaje sin terminar"
 
-#: score.cc:184
-msgid "errors found, ignoring music expression"
-msgstr "se han encontrado errores, se ignora la expresión musical"
+#: note-head.cc:76
+#, 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
@@ -2675,101 +2716,144 @@ msgstr "no sabemos cómo interpretar la articulación:"
 msgid " scheme encoding: "
 msgstr " codificación de Scheme: "
 
-#: slur-engraver.cc:93
+#: all-font-metrics.cc:156
 #, c-format
-msgid "direction of %s invalid: %d"
-msgstr "dirección inválida de %s: %d"
+msgid "cannot find font: `%s'"
+msgstr "no se encuentra la tipografía «%s»"
 
-#: slur-engraver.cc:162
-msgid "unterminated slur"
-msgstr "ligadura de expresión sin terminar"
+#: property-iterator.cc:85
+#, c-format
+msgid "not a grob name, `%s'"
+msgstr "no es un nombre de objeto gráfico: «%s»"
 
-#: slur-engraver.cc:174
-msgid "cannot end slur"
-msgstr "no se puede terminar la ligadura de expresión"
+#: 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:116
+msgid "weird stem size, check for narrow beams"
+msgstr "tamaño de plica extraño, compruebe que no haya barras estrechas"
 
-#: slur.cc:369
+#: stem.cc:657
 #, 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?"
+msgid "flag `%s' not found"
+msgstr "no se encuentra el indicador «%s»"
 
-#: source-file.cc:85
+#: stem.cc:673
 #, c-format
-msgid "expected to read %d characters, got %d"
-msgstr "se esperaba leer %d caracteres, se han obtenido %d"
+msgid "flag stroke `%s' not found"
+msgstr "no se encuentra la forma del glifo del corchete «%s»"
 
-#: spaceable-grob.cc:94
+#: global-context-scheme.cc:96 global-context-scheme.cc:114
+msgid "no music found in score"
+msgstr "no se ha encontrado música en la partitura"
+
+#: global-context-scheme.cc:104
+msgid "Interpreting music... "
+msgstr "Interpretando la música... "
+
+#: global-context-scheme.cc:127
 #, c-format
-msgid "No spring between column %d and next one"
-msgstr "No hay separación entre la columna %d y la siguiente"
+msgid "elapsed time: %.2f seconds"
+msgstr "tiempo transcurrido: %.2f segundos"
 
-#: stem-engraver.cc:103
-msgid "tremolo duration is too long"
-msgstr "la duración del trémolo es demasiado larga"
+#: translator-group-ctors.cc:40
+#, c-format
+msgid "fatal error. Couldn't find type: %s"
+msgstr "error fatal. No se ha encontrado el tipo: %s"
 
-#. FIXME:
-#: stem-engraver.cc:140
+#: 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 "adding note head to incompatible stem (type = %d)"
-msgstr "añadiendo cabeza de nota a una plica incompatible (tipo = %d)"
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr "page-turn-page-breaking: saltando desde %d hasta %d"
 
-#: stem-engraver.cc:142
-msgid "maybe input should specify polyphonic voices"
-msgstr "quizá la entrada debiera especificar voces polifónicas"
+#: 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."
 
-#: stem.cc:116
-msgid "weird stem size, check for narrow beams"
-msgstr "tamaño de plica extraño, compruebe que no haya barras estrechas"
+#: 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)..."
 
-#: stem.cc:642
+#: page-turn-page-breaking.cc:300
 #, c-format
-msgid "flag `%s' not found"
-msgstr "no se encuentra el indicador «%s»"
+msgid "break starting at page %d"
+msgstr "el salto comienza en la página %d"
 
-#: stem.cc:658
+#: page-turn-page-breaking.cc:301
 #, c-format
-msgid "flag stroke `%s' not found"
-msgstr "no se encuentra la forma del glifo del corchete «%s»"
+msgid "\tdemerits: %f"
+msgstr "\tpuntuación: %f"
 
-#: system.cc:197
+#: page-turn-page-breaking.cc:302
 #, c-format
-msgid "Element count %d"
-msgstr "Número total de elementos %d"
+msgid "\tsystem count: %d"
+msgstr "número total de \tsistemas: %d"
 
-#: system.cc:289
+#: page-turn-page-breaking.cc:303
 #, c-format
-msgid "Grob count %d"
-msgstr "Número de objetos gráficos: %d"
+msgid "\tpage count: %d"
+msgstr "número total de \tpáginas: %d"
 
-#: text-spanner-engraver.cc:73
-msgid "cannot find start of text spanner"
-msgstr "no se encuentra el principio del trazador de texto"
+#: page-turn-page-breaking.cc:304
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "\tsalto anterior: %d"
 
-#: text-spanner-engraver.cc:86
-msgid "already have a text spanner"
-msgstr "ya hay un trazador de texto"
+#: lily-parser.cc:106
+msgid "Parsing..."
+msgstr "Analizando..."
 
-#: text-spanner-engraver.cc:132
-msgid "unterminated text spanner"
-msgstr "trazador de texto sin terminar"
+#: lily-parser.cc:134
+msgid "braces do not match"
+msgstr "las llaves no concuerdan"
 
-#: tie-engraver.cc:116
-msgid "unterminated tie"
-msgstr "ligadura de unión sin terminar"
+#: score.cc:178
+msgid "already have music in score"
+msgstr "ya tiene música en la partitura"
 
-#: tie-engraver.cc:312
-msgid "lonely tie"
-msgstr "ligadura de unión solitaria"
+#: score.cc:179
+msgid "this is the previous music"
+msgstr "esta es la música precedente"
 
+#: score.cc:184
+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.
 #.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:75
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#: change-iterator.cc:102
 #, c-format
-msgid "strange time signature found: %d/%d"
-msgstr "se ha encontrado una indicación extraña de compás: %d/%d"
+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!)
@@ -2778,122 +2862,94 @@ msgstr "se ha encontrado una indicación extraña de compás: %d/%d"
 msgid "time signature symbol `%s' not found; reverting to numbered style"
 msgstr "no se encuentra el símbolo de compás «%s»; se vuelve al estilo numerado"
 
-#: translator-ctors.cc:65
+#: grob-interface.cc:68
 #, c-format
-msgid "unknown translator: `%s'"
-msgstr "traductor desconocido: «%s»"
+msgid "Unknown interface `%s'"
+msgstr "interfaz desconocido «%s»"
 
-#: translator-group-ctors.cc:40
+#: grob-interface.cc:79
 #, c-format
-msgid "fatal error. Couldn't find type: %s"
-msgstr "error fatal. No se ha encontrado el tipo: %s"
+msgid "Grob `%s' has no interface for property `%s'"
+msgstr "El grob «%s» no tiene interfaz para la propiedad «%s»"
 
-#: translator-group.cc:188
+#: open-type-font.cc:44
 #, c-format
-msgid "cannot find: `%s'"
-msgstr "no se encuentra «%s»"
+msgid "cannot allocate %lu bytes"
+msgstr "no se peuden reservar %lu bytes"
 
-#: translator.cc:359
+#: open-type-font.cc:48
 #, c-format
-msgid "Two simultaneous %s events, junking this one"
-msgstr "Dos eventos %s simultáneos, se recorta éste"
+msgid "cannot load font table: %s"
+msgstr "no se puede cargar la tabla de tipografías: %s"
 
-#: translator.cc:360
+#: open-type-font.cc:53
 #, c-format
-msgid "Previous %s event here"
-msgstr "El evento %s previo está aquí"
+msgid "FreeType error: %s"
+msgstr "error de FreeType: %s"
 
-#: ttf.cc:481 ttf.cc:530
+#: open-type-font.cc:111
 #, 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:513 ttf.cc:565
-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"
-
-#: tuplet-engraver.cc:107
-msgid "No tuplet to end"
-msgstr "no hay ningún grupo especial que terminar"
+msgid "unsupported font format: %s"
+msgstr "formato de tipografía %s no soportado"
 
-#: vaticana-ligature-engraver.cc:400
+#: open-type-font.cc:113
 #, c-format
-msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
-msgstr "prefijo(s) `%s' de esta cabeza ignorado(s) de acuerdo a las restricciones del estilo de ligadura seleccionado"
+msgid "error reading font file %s: %s"
+msgstr "error al leer la tipografía %s: %s"
 
-#: vaticana-ligature-engraver.cc:736
+#: open-type-font.cc:188
 #, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
-msgstr "Vaticana_ligature_engraver: se establece `spacing-increment = %f': ptr =%ul"
-
-#: 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"
-
-#: vaticana-ligature.cc:188
-msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr "Vaticana_ligature: unión nula (delta_pitch == 0)"
-
-#. fixme: be more verbose.
-#: volta-engraver.cc:111
-msgid "cannot end volta spanner"
-msgstr "no se puede terminar el trazador de volta"
-
-#: volta-engraver.cc:121
-msgid "already have a volta spanner, ending that one prematurely"
-msgstr "ya hay un trazador de volta, se acaba éste de forma prematura"
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "error de Freetype en FT_Get_Glyph_Name (): %s"
 
-# also...?
-#: volta-engraver.cc:125
-msgid "also already have an ended spanner"
-msgstr "ya hay un trazador finalizado"
+#: midi-stream.cc:39
+#, c-format
+msgid "cannot open for write: %s: %s"
+msgstr "no se puede abrir el archivo en modo de escritura: %s: %s"
 
-#: volta-engraver.cc:126
-msgid "giving up"
-msgstr "abandonando"
+#: midi-stream.cc:55
+#, c-format
+msgid "cannot write to file: `%s'"
+msgstr "no se puede escribir el archivo: «%s»"
 
-#: parser.yy:816
+#: parser.yy:820
 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:840
+#: parser.yy:844
 msgid "need \\paper for paper block"
 msgstr "es necesario \\paper para el bloque 'paper'"
 
-#: parser.yy:1365
+#: parser.yy:1363
 msgid "only \\consists takes non-string argument."
 msgstr "solo \\consists admite un argumento no de cadena."
 
-#: parser.yy:1378
+#: parser.yy:1376
 msgid "Grob name should be alphanumeric"
 msgstr "El nombre del objeto gráfico ha de ser alfanumérico"
 
-#: parser.yy:1687
+#: parser.yy:1685
 msgid "second argument must be pitch list"
 msgstr "el segundo argumento debe ser una lista de notas"
 
-#: parser.yy:1714 parser.yy:1719 parser.yy:2192
+#: parser.yy:1716 parser.yy:1721 parser.yy:2194
 msgid "have to be in Lyric mode for lyrics"
 msgstr "para la letra se debe estar en el modo Lyric"
 
-#: parser.yy:1816
+#: parser.yy:1818
 msgid "expecting string as script definition"
 msgstr "se espera una cadena como definición del guión"
 
-#: parser.yy:1971 parser.yy:2022
+#: parser.yy:1973 parser.yy:2024
 #, c-format
 msgid "not a duration: %d"
 msgstr "no es una duración: %d"
 
-#: parser.yy:2146
+#: parser.yy:2148
 msgid "have to be in Note mode for notes"
 msgstr "para las notas se debe estar en el modo Note"
 
-#: parser.yy:2207
+#: parser.yy:2209
 msgid "have to be in Chord mode for chords"
 msgstr "para los acordes se debe estar en el modo Chord"
 
@@ -2973,172 +3029,371 @@ msgstr "considere la actualización de la entrada mediante el guión (script) co
 msgid "program too old: %s (file requires: %s)"
 msgstr "el programa es demasiado antiguo: %s (el archivo necesita: %s)"
 
-#: backend-library.scm:35 ps-to-png.scm:66
+#: 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:198
+#, 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'"
+msgstr "tipo de clave desconocido: «~a» "
+
+#: parser-clef.scm:142 parser-clef.scm:182
+#, scheme-format
+msgid "supported clefs: ~a"
+msgstr "claves soportadas: ~a"
+
+#: document-backend.scm:132
+#, scheme-format
+msgid "pair expected in doc ~s"
+msgstr "se esperaba una pareja en el documento ~s"
+
+#: document-backend.scm:189
+#, scheme-format
+msgid "cannot find interface for property: ~S"
+msgstr "no se encuentra un interface para la propiedad ~S"
+
+#: document-backend.scm:199
+#, scheme-format
+msgid "unknown Grob interface: ~S"
+msgstr "interfaz de Objeto gráfico desconocido: ~S"
+
+#: 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
+#, scheme-format
+msgid "symbol ~S redefined"
+msgstr "redefinido el símbolo ~S"
+
+#: paper.scm:115
+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:296
+#, scheme-format
+msgid "This is not a \\layout {} object, ~S"
+msgstr "Esto no es un objeto de \\layout {} , ~S"
+
+#: paper.scm:308
+#, 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:323
+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
+#, scheme-format
+msgid "cannot find: ~A"
+msgstr "no se encuentra: ~A"
+
+#: lily.scm:350
+#, 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"
+
+#: lily.scm:716
+msgid "Compilation successfully completed"
+msgstr "Compiación completada satisfactoriamente"
+
+#: lily.scm:717
+msgid "Compilation completed with warnings or errors"
+msgstr "Compilación completada con advertencias o errores"
+
+#: lily.scm:779
+#, scheme-format
+msgid "job ~a terminated with signal: ~a"
+msgstr "la tarea ~a ha terminado con la señal: ~a"
+
+#: lily.scm:782
+#, scheme-format
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"archivo de registro ~a (salida ~a):\n"
+"~a"
+
+#: lily.scm:804 lily.scm:882
+#, scheme-format
+msgid "failed files: ~S"
+msgstr "archivos que han fallado: ~S"
+
+#: lily.scm:873
+#, scheme-format
+msgid "Redirecting output to ~a..."
+msgstr "Redirigiendo la salida hacia ~a..."
+
+#: lily.scm:892
+#, scheme-format
+msgid "Invoking `~a'...\n"
+msgstr "Invocando «~a»...\n"
+
+#: graphviz.scm:64
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Escribiendo el gráfico «~a»..."
+
+#: framework-svg.scm:84
+#, scheme-format
+msgid "Updating font into: ~a"
+msgstr "Actualizando la fuente tipográfica en: ~a"
+
+#: layout-beam.scm:40
+#, 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."
+
+#: layout-beam.scm:54
+#, 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."
+
+#: modal-transforms.scm:38
+msgid "'from' pitch not in scale; ignoring"
+msgstr "la nota 'origen' no está en la escala; se ignora"
+
+#: modal-transforms.scm:42 modal-transforms.scm:75
+msgid "'to' pitch not in scale; ignoring"
+msgstr "la nota 'destino' no está en la escala; se ignora"
+
+#: modal-transforms.scm:46
+msgid "pitch to be transposed not in scale; ignoring"
+msgstr "la nota a transportar no está en la escala; se ignora"
+
+#: modal-transforms.scm:71
+msgid "'around' pitch not in scale; ignoring"
+msgstr "la nota pivote no está en la escala; se ignora"
+
+#: modal-transforms.scm:79
+msgid "pitch to be inverted not in scale; ignoring"
+msgstr "la nota a invertir no está en la escala; se ignora"
+
+#: modal-transforms.scm:95
+msgid "negative replication count; ignoring"
+msgstr "número de replicaciones negativo; se ignora"
+
+#: backend-library.scm:29 ps-to-png.scm:68
 #, scheme-format
 msgid "Invoking `~a'..."
 msgstr "Invocando «~a»..."
 
-#: backend-library.scm:45
+#: backend-library.scm:34
 #, scheme-format
 msgid "`~a' failed (~a)"
 msgstr "«~a» ha fallado (~a)"
 
-#: backend-library.scm:130
+#: backend-library.scm:94
 #, scheme-format
 msgid "Converting to `~a'..."
 msgstr "Convirtiendo en «~a»..."
 
 #. Do not try to guess the name of the png file,
 #. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:140
+#: backend-library.scm:104
 #, scheme-format
 msgid "Converting to ~a..."
 msgstr "Convirtiendo en ~a..."
 
-#: backend-library.scm:178
+#: backend-library.scm:142
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "Escribiendo el campo de encabezamiento «~a» en «~a»..."
 
-#: backend-library.scm:228
+#: backend-library.scm:192
 #, scheme-format
 msgid "missing stencil expression `~S'"
 msgstr "falta la expresión del sello `~S'"
 
-#: chord-entry.scm:50
+#: to-xml.scm:191
+#, scheme-format
+msgid "assertion failed: ~S"
+msgstr "el aserto no se cumple: ~S"
+
+#: chord-entry.scm:49
 #, scheme-format
 msgid "Spurious garbage following chord: ~A"
 msgstr "Basurilla espúrea después del acorde: ~A"
 
-#: define-context-properties.scm:31 define-grob-properties.scm:21
-#: define-music-properties.scm:21
+#: lily-library.scm:758
+msgid ""
+"Find the index between @var{start} and @var{end} (an integer)\n"
+"which produces the closest match to @var{target-val} if\n"
+"applied to function @var{getter}."
+msgstr ""
+"Encontrar el índice entre @var{start} y @var{end} (entero)\n"
+"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
 #, scheme-format
-msgid "symbol ~S redefined"
-msgstr "redefinido el símbolo ~S"
+msgid "unknown unit: ~S"
+msgstr "unidad desconocida: ~S "
 
-#: define-event-classes.scm:78
-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."
+#: 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
+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:289 output-svg.scm:550
+#, scheme-format
+msgid "unknown line-cap-style: ~S"
+msgstr "estilo de extremo de línea line-cap-style desconocido: ~S"
 
-#: define-event-classes.scm:82
-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."
+#: output-ps.scm:294 output-svg.scm:556
+#, scheme-format
+msgid "unknown line-join-style: ~S"
+msgstr "estilo de unión de líneas line-join-style desconocido: ~S"
 
-#: define-event-classes.scm:148
+#: output-svg.scm:47
 #, scheme-format
-msgid "event class ~A seems to be unused"
-msgstr "parece que la clase de evento ~A está sin usar"
+msgid "undefined: ~S"
+msgstr "no definido: ~S"
 
-#. should be programming-error
-#: define-event-classes.scm:154
+#: output-svg.scm:151
 #, 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 "cannot decypher Pango description: ~a"
+msgstr "no se puede descifrar la descripción de Pango: ~a"
 
-#: define-markup-commands.scm:803
-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?"
+#: output-svg.scm:231
+msgid "Glyph must have a unicode value"
+msgstr "El glifo debe tener un valor de Unicode"
 
-#: define-markup-commands.scm:2571
+#: output-svg.scm:283 output-svg.scm:293
 #, scheme-format
-msgid "Cannot find glyph ~a"
-msgstr "No se encuentra el glifo ~a"
+msgid "cannot find SVG font ~S"
+msgstr "no se encuentra la fuente tipográfica de SVG ~S"
 
-#: define-markup-commands.scm:2831
+#: flag-styles.scm:148
 #, scheme-format
-msgid "no brace found for point size ~S "
-msgstr "no se ha encontrado ninguna llave para el tamaño en puntos ~S "
+msgid "flag stroke `~a' or `~a' not found"
+msgstr "no se encuentra el impacto `~a' o `~a' de indicador"
+
+#: define-note-names.scm:962
+msgid "Select note names language."
+msgstr "Seleccione el idioma para los nombres de las notas."
 
-#: define-markup-commands.scm:2832
+#: define-note-names.scm:969
 #, scheme-format
-msgid "defaulting to ~S pt"
-msgstr "fijando al valor predeterminado ~S pt"
+msgid "Using `~a' note names..."
+msgstr "Usando los nombres de notas de `~a' ..."
 
-#: define-markup-commands.scm:2985
+#: define-note-names.scm:972
 #, scheme-format
-msgid "not a valid duration string: ~a"
-msgstr "no es una cadena válida de duración: ~a"
+msgid "Could not find language `~a'.  Ignoring."
+msgstr "No se encuentra el idioma `~a'.  Se ignora."
 
-#: define-music-types.scm:725
+#: define-music-types.scm:740
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "se esperaba un símbolo: ~S"
 
-#: define-music-types.scm:728
+#: define-music-types.scm:743
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "no se encuentra el objeto musical ~S"
 
-#: define-music-types.scm:747
+#: define-music-types.scm:762
 #, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "tipo de repetición «~S» desconocido"
 
-#: define-music-types.scm:748
+#: define-music-types.scm:763
 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"
 
-#: document-backend.scm:132
-#, scheme-format
-msgid "pair expected in doc ~s"
-msgstr "se esperaba una pareja en el documento ~s"
-
-#: document-backend.scm:189
-#, scheme-format
-msgid "cannot find interface for property: ~S"
-msgstr "no se encuentra un interface para la propiedad ~S"
-
-#: document-backend.scm:199
+#: translation-functions.scm:341
 #, scheme-format
-msgid "unknown Grob interface: ~S"
-msgstr "interfaz de Objeto gráfico desconocido: ~S"
+msgid "Negative fret for pitch ~a on string ~a"
+msgstr "Traste negativo para la nota ~a de la cuerda ~a"
 
-#: documentation-lib.scm:59
+#: translation-functions.scm:385
 #, scheme-format
-msgid "Processing ~S..."
-msgstr "Procesando ~S..."
+msgid "No open string for pitch ~a"
+msgstr "No hay cuerda al aire para la nota ~a"
 
-#: documentation-lib.scm:176
+#: translation-functions.scm:400
 #, scheme-format
-msgid "Writing ~S..."
-msgstr "Escribiendo ~S..."
+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"
 
-#: documentation-lib.scm:198
-#, scheme-format
-msgid "cannot find description for property ~S (~S)"
-msgstr "no se encuentra la descripción de la propiedad ~S (~S)"
+#: translation-functions.scm:401
+msgid "Ignoring string request."
+msgstr "Se ignora la solicitud de cuerda."
 
-#: flag-styles.scm:142
+#: translation-functions.scm:414
 #, scheme-format
-msgid "flag stroke `~a' or `~a' not found"
-msgstr "no se encuentra el impacto `~a' o `~a' de indicador"
+msgid "No string for pitch ~a (given frets ~a)"
+msgstr "No hay ninguna cuerda para la nota ~a (dados los trastes ~a)"
 
-#: framework-eps.scm:108
+#: translation-functions.scm:515
 #, scheme-format
-msgid "Writing ~a..."
-msgstr "Escribiendo «~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"
 
 #: framework-ps.scm:250
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr "no se puede empotrar ~S=~S"
 
-#: framework-ps.scm:291
+#: framework-ps.scm:293
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr "no se puede extraer la coincidencia de archivos ~a a partir de ~a"
 
-#: framework-ps.scm:309
+#: framework-ps.scm:311
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr "no sabemos cómo empotrar ~S=~S"
 
-#: framework-ps.scm:334
+#: framework-ps.scm:336
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr "no sabemos cómo empotrar la tipografía ~s ~s ~s"
 
-#: framework-ps.scm:639
+#: framework-ps.scm:669
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3166,233 +3421,117 @@ msgstr ""
 "  %% Start cut-&-pastable-section\n"
 "  %% ****************************************************************\n"
 
-#: framework-svg.scm:84
-#, scheme-format
-msgid "Updating font into: ~a"
-msgstr "Actualizando la fuente tipográfica en: ~a"
-
-#: graphviz.scm:64
-#, scheme-format
-msgid "Writing graph `~a'..."
-msgstr "Escribiendo el gráfico «~a»..."
-
-#: layout-beam.scm:38
-#, 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."
-
-#: layout-beam.scm:52
-#, 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."
-
-#: lily-library.scm:747
-msgid ""
-"Find the index between @var{start} and @var{end} (an integer)\n"
-"which will produce the closest match to @var{target-val} when\n"
-"applied to function @var{getter}."
-msgstr ""
-"Encontrar el índice entre @var{start} y @var{end} (entero)\n"
-"que produce la correspondencia más cercana a @var{target-val} cuando\n"
-"se aplica a la función @var{getter}."
-
-#: lily-library.scm:821
-#, scheme-format
-msgid "unknown unit: ~S"
-msgstr "unidad desconocida: ~S "
-
-#: lily-library.scm:847 lily-library.scm:856
-msgid "warning:"
-msgstr "advertencia:"
-
-#: lily-library.scm:849
-#, 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:857
-msgid "old relative compatibility not used"
-msgstr "no se ha usado la compatibilidad con el modo relativo antiguo"
-
-#: lily.scm:282
-#, scheme-format
-msgid "cannot find: ~A"
-msgstr "no se encuentra: ~A"
-
-#: lily.scm:342
-#, 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"
-
-#: lily.scm:704
-msgid "Compilation successfully completed"
-msgstr "Compiación completada satisfactoriamente"
-
-#: lily.scm:705
-msgid "Compilation completed with warnings or errors"
-msgstr "Compilación completada con advertencias o errores"
-
-#: lily.scm:767
-#, scheme-format
-msgid "job ~a terminated with signal: ~a"
-msgstr "la tarea ~a ha terminado con la señal: ~a"
-
-#: lily.scm:770
-#, scheme-format
-msgid ""
-"logfile ~a (exit ~a):\n"
-"~a"
-msgstr ""
-"archivo de registro ~a (salida ~a):\n"
-"~a"
-
-#: lily.scm:792 lily.scm:870
-#, scheme-format
-msgid "failed files: ~S"
-msgstr "archivos que han fallado: ~S"
-
-#: lily.scm:861
-#, scheme-format
-msgid "Redirecting output to ~a..."
-msgstr "Redirigiendo la salida hacia ~a..."
-
-#: lily.scm:880
-#, scheme-format
-msgid "Invoking `~a'...\n"
-msgstr "Invocando «~a»...\n"
-
-#: 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"
-
-#: ly-syntax-constructors.scm:176
-#, scheme-format
-msgid "Invalid property operation ~a"
-msgstr "Operación de propiedad ~a inválida"
-
-#: 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"
-
-#: markup.scm:229
-#, 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."
-
-#: markup.scm:292
-#, scheme-format
-msgid "Not a markup command: ~A"
-msgstr "No es una instrucción de marcado: ~A"
-
-#: music-functions.scm:265
+#: 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:294
+#: music-functions.scm:297
 #, scheme-format
 msgid "invalid tremolo repeat count: ~a"
 msgstr "número de repeticiones no válido para el trémolo: ~a"
 
-#: music-functions.scm:601
+#: music-functions.scm:618
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "se esperaba algo de música: ~S"
 
 #. FIXME: uncomprehensable message
-#: music-functions.scm:649
+#: music-functions.scm:662
 #, 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"
 
-#: music-functions.scm:828
+#: music-functions.scm:846
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "no se encuentra la música citada: «~S»"
 
-#: music-functions.scm:964
+#: music-functions.scm:982
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr "Añadir @var{octave-shift} a la octava de @var{pitch}."
 
-#: music-functions.scm:1019
+#: music-functions.scm:1037
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "Tipo de octavación desconocido: ~S "
 
-#: music-functions.scm:1020
+#: music-functions.scm:1038
 msgid "Defaulting to 'any-octave."
 msgstr "Fijando al valor predeterminado 'any-octave."
 
-#: music-functions.scm:1355
+#: music-functions.scm:1378
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "estilo de alteración ~S desconocido"
 
-#: output-ps.scm:289 output-svg.scm:550
+#: 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."
+
+#: define-event-classes.scm:149
 #, scheme-format
-msgid "unknown line-cap-style: ~S"
-msgstr "estilo de extremo de línea line-cap-style desconocido: ~S"
+msgid "event class ~A seems to be unused"
+msgstr "parece que la clase de evento ~A está sin usar"
 
-#: output-ps.scm:294 output-svg.scm:556
+#. should be programming-error
+#: define-event-classes.scm:155
 #, scheme-format
-msgid "unknown line-join-style: ~S"
-msgstr "estilo de unión de líneas line-join-style desconocido: ~S"
+msgid "translator listens to nonexisting event class ~A"
+msgstr "el traductor está escuchando a una clase de evento ~A que no existe"
 
-#: output-svg.scm:47
+#: markup.scm:223
 #, scheme-format
-msgid "undefined: ~S"
-msgstr "no definido: ~S"
+msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgstr "Número de agumentos equivocado.  Se esperaban: ~A, se han encontrado ~A: ~S"
 
-#: output-svg.scm:151
+#: markup.scm:229
 #, scheme-format
-msgid "cannot decypher Pango description: ~a"
-msgstr "no se puede descifrar la descripción de Pango: ~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."
 
-#: output-svg.scm:231
-msgid "Glyph must have a unicode value"
-msgstr "El glifo debe tener un valor de Unicode"
+#: markup.scm:292
+#, scheme-format
+msgid "Not a markup command: ~A"
+msgstr "No es una instrucción de marcado: ~A"
 
-#: output-svg.scm:283 output-svg.scm:293
+#: ps-to-png.scm:74
 #, scheme-format
-msgid "cannot find SVG font ~S"
-msgstr "no se encuentra la fuente tipográfica de SVG ~S"
+msgid "~a exited with status: ~S"
+msgstr "~a salió con el estado: ~S"
 
-#: paper.scm:115
-msgid "set-global-staff-size: not in toplevel scope"
-msgstr "set-global-staff-size: no está en el ámbito de nivel más alto"
+#: define-markup-commands.scm:803
+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?"
 
-#: paper.scm:296
+#: define-markup-commands.scm:2404
 #, scheme-format
-msgid "This is not a \\layout {} object, ~S"
-msgstr "Esto no es un objeto de \\layout {} , ~S"
+msgid "Cannot find glyph ~a"
+msgstr "No se encuentra el glifo ~a"
 
-#: paper.scm:308
+#: define-markup-commands.scm:2830
 #, 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:323
-msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
-msgstr "Debe usar #(set-paper-size .. ) dentro de \\paper { ... }"
+msgid "no brace found for point size ~S "
+msgstr "no se ha encontrado ninguna llave para el tamaño en puntos ~S "
 
-#: parser-clef.scm:140
+#: define-markup-commands.scm:2831
 #, scheme-format
-msgid "unknown clef type `~a'"
-msgstr "tipo de clave desconocido: «~a» "
+msgid "defaulting to ~S pt"
+msgstr "fijando al valor predeterminado ~S pt"
 
-#: parser-clef.scm:141
+#: define-markup-commands.scm:2984
 #, scheme-format
-msgid "supported clefs: ~a"
-msgstr "claves soportadas: ~a"
+msgid "not a valid duration string: ~a"
+msgstr "no es una cadena válida de duración: ~a"
 
-#: ps-to-png.scm:72
-#, scheme-format
-msgid "~a exited with status: ~S"
-msgstr "~a salió con el estado: ~S"
+#: 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"
 
-#: to-xml.scm:191
+#: ly-syntax-constructors.scm:177
 #, scheme-format
-msgid "assertion failed: ~S"
-msgstr "el aserto no se cumple: ~S"
+msgid "Invalid property operation ~a"
+msgstr "Operación de propiedad ~a inválida"
index 6e276050c4f407e6c84409a1a42baf48645cb6bd..a2fd5a257fa56ed46887abb159cf934f9321063e 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,10 +7,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.13.48\n"
+"Project-Id-Version: lilypond 2.13.53\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2010-12-06 22:30+0100\n"
-"PO-Revision-Date: 2011-02-13 15:12+0100\n"
+"POT-Creation-Date: 2011-03-02 10:34+0100\n"
+"PO-Revision-Date: 2011-03-03 16:06+0100\n"
 "Last-Translator: Jean-Charles Malahieude <lilyfan@orange.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "Language: fr\n"
@@ -19,55 +19,57 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: book_base.py:24
+#: fontextract.py:25
 #, python-format
-msgid "file not found: %s"
-msgstr "fichier non trouvé : %s"
+msgid "Scanning %s"
+msgstr "Scannage de %s"
 
-#: book_base.py:161
-msgid "Output function not implemented"
-msgstr "Fonction de production non implémentée."
+#: fontextract.py:70
+#, python-format
+msgid "Extracted %s"
+msgstr "Extraction de %s"
 
-#: book_latex.py:156
-msgid "cannot find \\begin{document} in LaTeX document"
-msgstr "Impossible de trouver \\begin{document} dans le document LaTeX."
+#: fontextract.py:85
+#, python-format
+msgid "Writing fonts to %s"
+msgstr "Écriture des fontes vers %s"
 
-#: book_snippets.py:517
+#: book_snippets.py:519
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "option ly-option obsolète : %s=%s"
 
-#: book_snippets.py:519
+#: book_snippets.py:521
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "bascule en mode de compatibilité : %s=%s"
 
-#: book_snippets.py:522
+#: book_snippets.py:524
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "option ly-option obsolète : %s"
 
-#: book_snippets.py:524
+#: book_snippets.py:526
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "bascule en mode de compatibilité : %s"
 
-#: book_snippets.py:542
+#: book_snippets.py:544
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "option ly inconnue et ignorée : %s"
 
-#: book_snippets.py:728
+#: book_snippets.py:736
 #, python-format
 msgid "Opening filter `%s'\n"
 msgstr "Ouverture du filtre « %s »\n"
 
-#: book_snippets.py:748
+#: book_snippets.py:756
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "« %s » a échoué (%d)"
 
-#: book_snippets.py:749
+#: book_snippets.py:757
 msgid "The error log is as follows:"
 msgstr "Voici le journal d'erreurs :"
 
@@ -628,23 +630,23 @@ msgstr ""
 "Swallow_performer et String_number_engraver.\n"
 "Apparition de nouvelles variables pour l'espacement vertical."
 
-#: convertrules.py:2982
-msgid "vertical spacing has been changed; minimum-Y-extent is obsolete.\n"
-msgstr "l'espacement vertical a été revu ; minimum-Y-extent est obsolète.\n"
+#: 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:2988
+#: convertrules.py:2995
 msgid "Unify fetaNumber and fetaDynamic encodings"
 msgstr "Uniformisation des encodages de fetaNumber et fetaDynamic."
 
-#: convertrules.py:2993
+#: convertrules.py:3000
 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 
-#: convertrules.py:3004
+#: convertrules.py:3011
 msgid "\\cresc etc. are now postfix operators"
 msgstr "\\cresc etc. sont désormais des opérateurs postfix"
 
-#: convertrules.py:3010
+#: convertrules.py:3017
 msgid ""
 "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
@@ -653,37 +655,37 @@ msgstr ""
 "\\overrideBeamSettings et \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 
-#: convertrules.py:3028
+#: convertrules.py:3035
 msgid "\\overrideBeamSettings.  Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
 msgstr ""
 "\\overrideBeamSettings.\n"
 "Utiliser \\set beamExceptions ou \\overrideTimeSignatureSettings.\n"
 
-#: convertrules.py:3032
+#: convertrules.py:3039
 msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
 msgstr ""
 "\\revertBeamSettings.\n"
 "Utiliser \\set beamExceptions ou \\revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3036
+#: convertrules.py:3043
 msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"
 msgstr ""
 "beamSettings.\n"
 "Utiliser baseMoment, beatStructure et beamExceptions.\n"
 
-#: convertrules.py:3040
+#: convertrules.py:3047
 msgid "beatLength. Use baseMoment and beatStructure.\n"
 msgstr ""
 "beatLength.\n"
 "Utiliser baseMoment et beatStructure.\n"
 
-#: convertrules.py:3044
+#: convertrules.py:3051
 msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
 msgstr ""
 "setbeatGrouping.\n"
 "Utiliser baseMoment et beatStructure.\n"
 
-#: convertrules.py:3049
+#: convertrules.py:3056
 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."
@@ -693,13 +695,13 @@ msgstr ""
 "Dépréciation des longueurs de tiret négatives pour des lignes masquées ;\n"
 "utiliser désormais #'style = #'none"
 
-#: convertrules.py:3054
+#: convertrules.py:3061
 msgid "woodwind-diagrams.  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"
 
-#: convertrules.py:3062
+#: convertrules.py:3069
 msgid ""
 "Rename vertical spacing variables.\n"
 "Add fretboard-table argument to savePredefinedFretboard."
@@ -707,36 +709,78 @@ msgstr ""
 "Renommage des variables d'espacement vertical.\n"
 "Ajout de l'argument fretboard-table à savePredefinedFretboard."
 
-#: convertrules.py:3080
+#: convertrules.py:3087
 msgid "Rename vertical spacing grob properties."
 msgstr "Renommage des propriétés d'objet en matière d'espacement vertical."
 
-#: convertrules.py:3096
+#: convertrules.py:3103
 msgid "Remove \\paper variables head-separation and foot-separation."
 msgstr "Suppression des variables de \\paper head-separation et foot-separation."
 
-#: convertrules.py:3101
+#: convertrules.py:3108
 msgid "Adjust settings for top-system-spacing instead.\n"
 msgstr "Ajustez plutôt le réglage de top-system-spacing.\n"
 
-#: convertrules.py:3106
+#: convertrules.py:3113
 msgid "Adjust settings for last-bottom-spacing instead.\n"
 msgstr "Ajustez plutôt le réglage de last-bottom-spacing.\n"
 
-#: fontextract.py:25
-#, python-format
-msgid "Scanning %s"
-msgstr "Scannage de %s"
+#: convertrules.py:3119
+msgid ""
+"Rename space to basic-distance in various spacing alists.\n"
+"Remove HarmonicParenthesesItem grob."
+msgstr ""
+"space est renommé basic-distance dans diverses variables liées à l'espacement.\n"
+"Suppression du grob HarmonicParenthesesItem."
 
-#: fontextract.py:70
-#, python-format
-msgid "Extracted %s"
-msgstr "Extraction de %s"
+#: convertrules.py:3127
+msgid "HarmonicParenthesesItem has been eliminated.\n"
+msgstr "Élimination de HarmonicParenthesesItem.\n"
 
-#: fontextract.py:85
+#: convertrules.py:3128
+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
+msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n"
+msgstr "Suppression du contexte dans overrideTimeSignatureSettings et revertTimeSignatureSettings.\n"
+
+#: convertrules.py:3140
+msgid ""
+"Change stringTunings from a list of semitones to a list of pitches.\n"
+"Change tenor and baritone ukulele names in string tunings.\n"
+"Generate messages for manual conversion of vertical spacing if required."
+msgstr ""
+"stringTunings : d'une liste de demi-tons, devient une liste de hauteurs.\n"
+"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.  "
+msgstr ""
+"Les modifications apportées à l'espacement vertical peuvent mettre en\n"
+"péril les contextes personnalisés."
+
+#: convertrules.py:3185
+msgid "Replace bar-size with bar-extent."
+msgstr "bar-size devient bar-extent."
+
+#: convertrules.py:3197
+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"
+
+#: book_base.py:24
 #, python-format
-msgid "Writing fonts to %s"
-msgstr "Écriture des fontes vers %s"
+msgid "file not found: %s"
+msgstr "fichier non trouvé : %s"
+
+#: book_base.py:161
+msgid "Output function not implemented"
+msgstr "Fonction de production non implémentée."
 
 #: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115
 #: input.cc:123
@@ -813,183 +857,404 @@ msgstr ""
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "Aucun instrument ne correspond à l'ID %s\n"
 
-#: abc2ly.py:1373 convert-ly.py:87 lilypond-book.py:122 midi2ly.py:860
-#, python-format
-msgid "%s [OPTION]... FILE"
-msgstr "%s [OPTIONS]... FICHIER"
+#: book_latex.py:156
+msgid "cannot find \\begin{document} in LaTeX document"
+msgstr "Impossible de trouver \\begin{document} dans le document LaTeX."
 
-#: abc2ly.py:1374
+#: musicxml2ly.py:223
 #, python-format
-msgid ""
-"abc2ly converts ABC music files (see\n"
-"%s) to LilyPond input.\n"
+msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
 msgstr ""
-"abc2ly convertit les fichiers musicaux ABC (voir\n"
-"%s) au format LilyPond.\n"
-
-#: abc2ly.py:1382 convert-ly.py:94 etf2ly.py:1206 lilypond-book.py:212
-#: midi2ly.py:896 musicxml2ly.py:2683 main.cc:168
-msgid "show version number and exit"
-msgstr "afficher le numéro de version et quitter"
-
-#: abc2ly.py:1386 convert-ly.py:98 etf2ly.py:1202 lilypond-book.py:140
-#: midi2ly.py:875 musicxml2ly.py:2665 main.cc:157
-msgid "show this help and exit"
-msgstr "visualiser cette aide et quitter"
-
-#: abc2ly.py:1388 etf2ly.py:1207 midi2ly.py:879
-msgid "write output to FILE"
-msgstr "produire la sortie dans le FICHIER"
+"Détection d'un fichier créé par %s et contenant des informations de ligature\n"
+"erronées. Toutes les informations de ligature du fichier MusicXML seront\n"
+"ignorées."
 
-#: abc2ly.py:1390
-msgid "be strict about success"
-msgstr "être strict sur la réussite"
+#: musicxml2ly.py:239 musicxml2ly.py:241
+#, python-format
+msgid "Unprocessed PartGroupInfo %s encountered"
+msgstr "PartGroupInfo %s détecté, mais non traité"
 
-#: abc2ly.py:1392
-msgid "preserve ABC's notion of beams"
-msgstr "préserver la notion de ligature propre à ABC"
+#: musicxml2ly.py:494
+#, 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)"
 
-#. 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"
-#: abc2ly.py:1395 convert-ly.py:144 etf2ly.py:1216 lilypond-book.py:234
-#: midi2ly.py:909 musicxml2ly.py:2751 main.cc:281
-#, c-format, python-format
-msgid "Report bugs via %s"
+#: musicxml2ly.py:514
+#, python-format
+msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
 msgstr ""
-"Signalez tout bogue, en français à\n"
-" http://lilypond-french-users.1298960.n2.nabble.com/\n"
-"ou en anglais à\n"
-"%s"
+"Durée rationnelle au dénominateur de %s détectée ;\n"
+"impossible de traduire en durée LilyPond"
 
-#: convert-ly.py:44
-msgid ""
-"Update LilyPond input to newer version.  By default, update from the\n"
-"version taken from the \\version command, to the current LilyPond version."
+#: musicxml2ly.py:761
+msgid "Unable to extract key signature!"
+msgstr "Impossible de déterminer l'armure."
+
+#: musicxml2ly.py:788
+#, python-format
+msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
 msgstr ""
-"Mettre à jour le fichier source vers une version plus récente.\n"
-"Par défaut, de la version indiquée par la commande \\version \n"
-"vers la version courante de LilyPond."
+"%s : mode inconnu.\n"
+"Devrait être « majeur », « mineur » ou « mode d'église »"
 
-#: convert-ly.py:46 lilypond-book.py:82
-msgid "Examples:"
-msgstr "Exemples :"
+#: musicxml2ly.py:926
+#, python-format
+msgid "Encountered unprocessed marker %s\n"
+msgstr "Détection d'un marqueur non traité : %s\n"
 
-#: convert-ly.py:81 etf2ly.py:1189 lilypond-book.py:116 midi2ly.py:90
+#: musicxml2ly.py:1020
 #, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s détenu par"
+msgid "unknown span event %s"
+msgstr "Événement de prolongation inconnu : « %s »"
 
-#: convert-ly.py:83 etf2ly.py:1191 lilypond-book.py:118 midi2ly.py:92
-msgid "Distributed under terms of the GNU General Public License."
-msgstr "Distribué selon les termes de la GNU General Public License."
+#: musicxml2ly.py:1030
+#, python-format
+msgid "unknown span type %s for %s"
+msgstr "%s n'est pas un type de prolongateur reconnu pour %s"
 
-#: convert-ly.py:84 etf2ly.py:1192 lilypond-book.py:119 midi2ly.py:93
-msgid "It comes with NO WARRANTY."
-msgstr "Le logiciel est distribué SANS GARANTIE."
+#: musicxml2ly.py:1450
+msgid "Unknown metronome mark, ignoring"
+msgstr "Indication métronomique inconnue et ignorée."
 
-#: convert-ly.py:102 convert-ly.py:135
-msgid "VERSION"
-msgstr "VERSION"
+#. TODO: Implement the other (more complex) way for tempo marks!
+#: musicxml2ly.py:1455
+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"
+"MusicXML) n'ont pas encore été implémentées."
 
-#: convert-ly.py:104
-msgid "start from VERSION [default: \\version found in file]"
-msgstr "partir de la VERSION [par défaut : \\version trouvée dans le fichier]"
+#: musicxml2ly.py:1657
+#, python-format
+msgid "Unable to convert chord type %s to lilypond."
+msgstr "Impossible de convertir le type d'accord %s au format LilyPond"
 
-#: convert-ly.py:107
-msgid "edit in place"
-msgstr "éditer le fichier d'origine"
+#: musicxml2ly.py:1806
+#, 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"
 
-#: convert-ly.py:111
-msgid "do not add \\version command if missing"
-msgstr "ne pas ajouter la commande \\version si elle est absente"
+#: musicxml2ly.py:1810
+msgid "cannot find suitable event"
+msgstr "Aucun événement correspondant"
 
-#: convert-ly.py:117
+#: musicxml2ly.py:1958
 #, python-format
-msgid "force updating \\version number to %s"
-msgstr "forcer la mise à jour de \\version à %s"
-
-#: convert-ly.py:123
-msgid "only update \\version number if file is modified"
-msgstr "ne changer le numéro de \\version que si le fichier est modifié"
+msgid "Negative skip %s (from position %s to %s)"
+msgstr "Retour en arrière de %s (partant de %s et jusqu'à %s)"
 
-#: convert-ly.py:129
+#: musicxml2ly.py:2099
 #, python-format
-msgid "show rules [default: -f 0, -t %s]"
-msgstr "afficher les règles [par défaut : -f 0, -t %s]"
+msgid "Negative skip found: from %s to %s, difference is %s"
+msgstr "Retour en arrière, de %s à %s ; différence = %s"
 
-#: convert-ly.py:134
+#: musicxml2ly.py:2180
 #, python-format
-msgid "convert to VERSION [default: %s]"
-msgstr "convertir jusqu'à la VERSION [par défaut : %s]"
+msgid "unexpected %s; expected %s or %s or %s"
+msgstr "%s détecté, au lieu de %s, %s ou %s"
 
-#: convert-ly.py:139 etf2ly.py:1210 lilypond-book.py:215 midi2ly.py:897
-#: main.cc:170
-msgid "show warranty and copyright"
-msgstr "afficher les notices de garantie et du droit d'auteur"
+#: musicxml2ly.py:2286
+msgid "Encountered closing slur, but no slur is open"
+msgstr "Terminaison d'une liaison qui n'a pas été débutée"
 
-#: convert-ly.py:184
-msgid "Applying conversion: "
-msgstr "Conversion en cours : "
+#: musicxml2ly.py:2289
+msgid "Cannot have two simultaneous (closing) slurs"
+msgstr "deux liaisons ne peuvent se terminer simultanément"
 
-#: convert-ly.py:197
-msgid "Error while converting"
-msgstr "Erreur lors de la conversion"
+#: musicxml2ly.py:2298
+msgid "Cannot have a slur inside another slur"
+msgstr "des liaisons ne peuvent s'imbriquer"
 
-#: convert-ly.py:199
-msgid "Stopping at last successful rule"
-msgstr "Arrêt à la dernière règle appliquée avec succès"
+#: musicxml2ly.py:2301
+msgid "Cannot have two simultaneous slurs"
+msgstr "deux liaisons ne peuvent intervenir simultanément"
 
-#: convert-ly.py:224
+#: musicxml2ly.py:2435
 #, python-format
-msgid "Processing `%s'... "
-msgstr "Traitement de « %s »..."
+msgid "cannot simultaneously have more than one mode: %s"
+msgstr "SVP, un seul mode à la fois : %s"
 
-#: convert-ly.py:332
-#, python-format
-msgid "%s: Unable to open file"
-msgstr "impossible d'ouvrir le fichier « %s »"
+#: musicxml2ly.py:2543
+msgid "Converting to LilyPond expressions..."
+msgstr "Conversion en expressions LilyPond..."
 
-#: convert-ly.py:339
-#, python-format
-msgid "%s: Unable to determine version.  Skipping"
-msgstr "impossible de déterminer la version  de « %s ». Au suivant !"
+#: musicxml2ly.py:2554
+msgid "musicxml2ly [OPTION]... FILE.xml"
+msgstr "musicxml2ly [options]... FICHIER.xml"
 
-#: convert-ly.py:344
-#, python-format
+#: musicxml2ly.py:2556
 msgid ""
-"%s: Invalid version string `%s' \n"
-"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
+"Convert MusicXML from FILE.xml to LilyPond input.\n"
+"If the given filename is -, musicxml2ly reads from the command line.\n"
 msgstr ""
-"%s porte un numéro de version invalide : %s \n"
-"Un numéro de version valide est formé de trois nombres séparés par un point,\n"
-"comme par exemple « 2.8.12 »"
+"Convertit FICHIER.xml (MusicXML) au format LilyPond.\n"
+"Si le nom du fichier est « - », musicxml2ly lira la ligne de commande.\n"
 
-#: etf2ly.py:1195
-#, python-format
-msgid "%s [OPTION]... ETF-FILE"
-msgstr "%s [OPTIONS]... FICHIER-ETF"
+#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140
+#: convert-ly.py:98 etf2ly.py:1202 main.cc:157
+msgid "show this help and exit"
+msgstr "visualiser cette aide et quitter"
 
-#: etf2ly.py:1196
+#: musicxml2ly.py:2566
 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"
+"Copyright (c) 2005--2011 by\n"
+"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
+"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
+"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Enigma Transport Format est utilisé par Finale, de Coda Music Technology.\n"
-"etf2ly convertit partiellement un fichier ETF en un fichier LilyPond\n"
-"exploitable.\n"
+"Copyright (c) 2005--2011 by\n"
+"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
+"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
+"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 
-#: etf2ly.py:1208 midi2ly.py:880 musicxml2ly.py:2743 main.cc:161 main.cc:166
-msgid "FILE"
-msgstr "FICHIER"
+#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212
+#: convert-ly.py:94 etf2ly.py:1206 main.cc:168
+msgid "show version number and exit"
+msgstr "afficher le numéro de version et quitter"
 
-#: lilypond-book.py:80
+#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169
+msgid "be verbose"
+msgstr "Passe en mode verbeux"
+
+#: musicxml2ly.py:2591
+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:2597
+msgid "input file is a zip-compressed MusicXML file"
+msgstr "le fichier d'entrée est un fichier MusicXML compressé"
+
+#: musicxml2ly.py:2603
+msgid "convert pitches in relative mode (default)"
+msgstr "convertit les hauteurs en mode relatif (par défaut)"
+
+#: musicxml2ly.py:2608
+msgid "convert pitches in absolute mode"
+msgstr "convertit les hauteurs en mode absolu"
+
+#: musicxml2ly.py:2611
+msgid "LANG"
+msgstr "LANG"
+
+#: musicxml2ly.py:2613
+msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
+msgstr "utilise une autre définition linguistique (LANG), p.ex. deutsch l'allemand"
+
+#: musicxml2ly.py:2619
+msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
+msgstr ""
+"ne convertit pas les emplacements (^, _ ou -) des articulations, \n"
+"nuances, etc."
+
+#: musicxml2ly.py:2625
+msgid "do not convert exact vertical positions of rests"
+msgstr "ne convertit pas le positionnement absolu des silences"
+
+#: musicxml2ly.py:2631
+msgid "do not convert the exact page layout and breaks"
+msgstr "ne convertit pas les sauts et la mise en page"
+
+#: musicxml2ly.py:2637
+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:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208
+#: main.cc:161 main.cc:166
+msgid "FILE"
+msgstr "FICHIER"
+
+#: musicxml2ly.py:2645
+msgid "set output filename to FILE, stdout if -"
+msgstr "produit la sortie dans FICHIER (stdout si -)"
+
+#. 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:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234
+#: convert-ly.py:144 etf2ly.py:1216 main.cc:281
+#, c-format, python-format
+msgid "Report bugs via %s"
+msgstr ""
+"Signalez tout bogue, en français à\n"
+" http://lilypond-french-users.1298960.n2.nabble.com/\n"
+"ou en anglais à\n"
+"%s"
+
+#: musicxml2ly.py:2728
+#, python-format
+msgid "unknown part in part-list: %s"
+msgstr "la partie %s n'est pas mentionnée dans part-list"
+
+#: musicxml2ly.py:2790
+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:2793
+#, 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:2823
+msgid "Reading MusicXML from Standard input ..."
+msgstr "Lecture du fichier MusicXML à partir de l'entrée standard..."
+
+#: musicxml2ly.py:2825
+#, python-format
+msgid "Reading MusicXML from %s ..."
+msgstr "Lecture du fichier MusicXML %s..."
+
+#: musicxml2ly.py:2858
+#, python-format
+msgid "Output to `%s'"
+msgstr "Fichier de sortie : « %s »"
+
+#: musicxml2ly.py:2925
+#, python-format
+msgid "Unable to find input file %s"
+msgstr "Impossible de trouver le fichier d'entrée : « %s »"
+
+#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#, python-format
+msgid "Copyright (c) %s by"
+msgstr "Copyright (c) %s détenu par"
+
+#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+msgid "Distributed under terms of the GNU General Public License."
+msgstr "Distribué selon les termes de la GNU General Public License."
+
+#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+msgid "It comes with NO WARRANTY."
+msgstr "Le logiciel est distribué SANS GARANTIE."
+
+#: midi2ly.py:99
+msgid "warning: "
+msgstr "Avertissement : "
+
+#: midi2ly.py:102 midi2ly.py:1041
+msgid "error: "
+msgstr "Erreur : "
+
+#: midi2ly.py:103
+msgid "Exiting... "
+msgstr "Fin d'exécution... "
+
+#: midi2ly.py:960
+#, python-format
+msgid "%s output to `%s'..."
+msgstr "%s reproduit dans « %s »..."
+
+#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#, python-format
+msgid "%s [OPTION]... FILE"
+msgstr "%s [OPTIONS]... FICHIER"
+
+#: midi2ly.py:973
+#, python-format
+msgid "Convert %s to LilyPond input.\n"
+msgstr "Convertir %s au format source LilyPond.\n"
+
+#: midi2ly.py:978
+msgid "print absolute pitches"
+msgstr "Afficher des hauteurs absolues"
+
+#: midi2ly.py:980 midi2ly.py:1002
+msgid "DUR"
+msgstr "DUR"
+
+#: midi2ly.py:981
+msgid "quantise note durations on DUR"
+msgstr "Quantifier les durées de note d'après DUR"
+
+#: midi2ly.py:984
+msgid "print explicit durations"
+msgstr "Écrit des durées explicites"
+
+#: midi2ly.py:989
+msgid "prepend FILE to output"
+msgstr "ajout de FICHIER à la sortie"
+
+#: midi2ly.py:993
+msgid "set key: ALT=+sharps|-flats; MINOR=1"
+msgstr "Définit l'armure : ALT=+dièse|-bémol; MINEUR=1"
+
+#: midi2ly.py:994
+msgid "ALT[:MINOR]"
+msgstr "ALT[:MINEUR]"
+
+#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207
+msgid "write output to FILE"
+msgstr "produire la sortie dans le FICHIER"
+
+#: midi2ly.py:999
+msgid "preview of first 4 bars"
+msgstr "prévisualisation des quatre premières mesures"
+
+#: midi2ly.py:1001
+msgid "quantise note starts on DUR"
+msgstr "Quantifie les débuts de note sur DUR"
+
+#: midi2ly.py:1004
+msgid "DUR*NUM/DEN"
+msgstr "DUR*NUM/DEN"
+
+#: midi2ly.py:1007
+msgid "allow tuplet durations DUR*NUM/DEN"
+msgstr "Permet des n-olets de durée DUR*NUM/DEN"
+
+#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210
+#: main.cc:170
+msgid "show warranty and copyright"
+msgstr "afficher les notices de garantie et du droit d'auteur"
+
+#: midi2ly.py:1019
+msgid "treat every text as a lyric"
+msgstr "Traite tout texte comme étant des paroles"
+
+#: midi2ly.py:1022
+msgid "Examples"
+msgstr "Exemples"
+
+#: midi2ly.py:1042
+msgid "no files specified on command line."
+msgstr "aucun fichier spéficié sur la ligne de commande."
+
+#: abc2ly.py:1374
+#, python-format
+msgid ""
+"abc2ly converts ABC music files (see\n"
+"%s) to LilyPond input.\n"
+msgstr ""
+"abc2ly convertit les fichiers musicaux ABC (voir\n"
+"%s) au format LilyPond.\n"
+
+#: abc2ly.py:1390
+msgid "be strict about success"
+msgstr "être strict sur la réussite"
+
+#: abc2ly.py:1392
+msgid "preserve ABC's notion of beams"
+msgstr "préserver la notion de ligature propre à ABC"
+
+#: lilypond-book.py:80
 msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
 msgstr ""
 "Traite les extraits LilyPond dans un document HTML hybride, LaTeX,\n"
 "texinfo ou Docbook."
 
+#: lilypond-book.py:82 convert-ly.py:46
+msgid "Examples:"
+msgstr "Exemples :"
+
 #: lilypond-book.py:87
 msgid "BOOK"
 msgstr "LIVRE"
@@ -1088,10 +1353,6 @@ msgstr ""
 "Affecte au résultat des extraits la même racine\n"
 "que celle des fichiers source"
 
-#: lilypond-book.py:204 midi2ly.py:890 musicxml2ly.py:2688 main.cc:169
-msgid "be verbose"
-msgstr "Passe en mode verbeux"
-
 #: lilypond-book.py:220
 msgid ""
 "run executable PROG instead of latex, or in\n"
@@ -1163,313 +1424,123 @@ msgstr "Traitement d'inclusion : %s"
 msgid "Removing `%s'"
 msgstr "Suppression de « %s »"
 
-#: midi2ly.py:99
-msgid "warning: "
-msgstr "Avertissement : "
+#: convert-ly.py:44
+msgid ""
+"Update LilyPond input to newer version.  By default, update from the\n"
+"version taken from the \\version command, to the current LilyPond version."
+msgstr ""
+"Mettre à jour le fichier source vers une version plus récente.\n"
+"Par défaut, de la version indiquée par la commande \\version \n"
+"vers la version courante de LilyPond."
 
-#: midi2ly.py:102 midi2ly.py:922
-msgid "error: "
-msgstr "Erreur : "
+#: convert-ly.py:102 convert-ly.py:135
+msgid "VERSION"
+msgstr "VERSION"
 
-#: midi2ly.py:103
-msgid "Exiting... "
-msgstr "Fin d'exécution... "
+#: convert-ly.py:104
+msgid "start from VERSION [default: \\version found in file]"
+msgstr "partir de la VERSION [par défaut : \\version trouvée dans le fichier]"
 
-#: midi2ly.py:848
-#, python-format
-msgid "%s output to `%s'..."
-msgstr "%s reproduit dans « %s »..."
+#: convert-ly.py:107
+msgid "edit in place"
+msgstr "éditer le fichier d'origine"
+
+#: convert-ly.py:111
+msgid "do not add \\version command if missing"
+msgstr "ne pas ajouter la commande \\version si elle est absente"
 
-#: midi2ly.py:861
+#: convert-ly.py:117
 #, python-format
-msgid "Convert %s to LilyPond input.\n"
-msgstr "Convertir %s au format source LilyPond.\n"
+msgid "force updating \\version number to %s"
+msgstr "forcer la mise à jour de \\version à %s"
 
-#: midi2ly.py:866
-msgid "print absolute pitches"
-msgstr "Afficher des hauteurs absolues"
+#: convert-ly.py:123
+msgid "only update \\version number if file is modified"
+msgstr "ne changer le numéro de \\version que si le fichier est modifié"
 
-#: midi2ly.py:868 midi2ly.py:883
-msgid "DUR"
-msgstr "DUR"
+#: convert-ly.py:129
+#, python-format
+msgid "show rules [default: -f 0, -t %s]"
+msgstr "afficher les règles [par défaut : -f 0, -t %s]"
 
-#: midi2ly.py:869
-msgid "quantise note durations on DUR"
-msgstr "Quantifier les durées de note d'après DUR"
+#: convert-ly.py:134
+#, python-format
+msgid "convert to VERSION [default: %s]"
+msgstr "convertir jusqu'à la VERSION [par défaut : %s]"
 
-#: midi2ly.py:872
-msgid "print explicit durations"
-msgstr "Écrit des durées explicites"
+#: convert-ly.py:184
+msgid "Applying conversion: "
+msgstr "Conversion en cours : "
 
-#: midi2ly.py:876
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "Définit l'armure : ALT=+dièse|-bémol; MINEUR=1"
+#: convert-ly.py:197
+msgid "Error while converting"
+msgstr "Erreur lors de la conversion"
 
-#: midi2ly.py:877
-msgid "ALT[:MINOR]"
-msgstr "ALT[:MINEUR]"
-
-#: midi2ly.py:882
-msgid "quantise note starts on DUR"
-msgstr "Quantifie les débuts de note sur DUR"
-
-#: midi2ly.py:885
-msgid "DUR*NUM/DEN"
-msgstr "DUR*NUM/DEN"
-
-#: midi2ly.py:888
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "Permet des n-olets de durée DUR*NUM/DEN"
-
-#: midi2ly.py:900
-msgid "treat every text as a lyric"
-msgstr "Traite tout texte comme étant des paroles"
-
-#: midi2ly.py:903
-msgid "Examples"
-msgstr "Exemples"
-
-#: midi2ly.py:923
-msgid "no files specified on command line."
-msgstr "aucun fichier spéficié sur la ligne de commande."
-
-#: musicxml2ly.py:324
-#, python-format
-msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
-msgstr ""
-"Détection d'un fichier créé par %s et contenant des informations de ligature\n"
-"erronées. Toutes les informations de ligature du fichier MusicXML seront\n"
-"ignorées."
-
-#: musicxml2ly.py:340 musicxml2ly.py:342
-#, python-format
-msgid "Unprocessed PartGroupInfo %s encountered"
-msgstr "PartGroupInfo %s détecté, mais non traité"
-
-#: musicxml2ly.py:595
-#, 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:615
-#, 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:864
-msgid "Unable to extract key signature!"
-msgstr "Impossible de déterminer l'armure."
-
-#: musicxml2ly.py:891
-#, 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 »"
-
-#: musicxml2ly.py:1029
-#, python-format
-msgid "Encountered unprocessed marker %s\n"
-msgstr "Détection d'un marqueur non traité : %s\n"
-
-#: musicxml2ly.py:1123
-#, python-format
-msgid "unknown span event %s"
-msgstr "Événement de prolongation inconnu : « %s »"
-
-#: musicxml2ly.py:1133
-#, python-format
-msgid "unknown span type %s for %s"
-msgstr "%s n'est pas un type de prolongateur reconnu pour %s"
-
-#: musicxml2ly.py:1553
-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:1558
-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"
-"MusicXML) n'ont pas encore été implémentées."
-
-#: musicxml2ly.py:1760
-#, 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:1909
-#, 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:1913
-msgid "cannot find suitable event"
-msgstr "Aucun événement correspondant"
+#: convert-ly.py:199
+msgid "Stopping at last successful rule"
+msgstr "Arrêt à la dernière règle appliquée avec succès"
 
-#: musicxml2ly.py:2061
+#: convert-ly.py:224
 #, python-format
-msgid "Negative skip %s (from position %s to %s)"
-msgstr "Retour en arrière de %s (partant de %s et jusqu'à %s)"
+msgid "Processing `%s'... "
+msgstr "Traitement de « %s »..."
 
-#: musicxml2ly.py:2202
+#: convert-ly.py:332
 #, python-format
-msgid "Negative skip found: from %s to %s, difference is %s"
-msgstr "Retour en arrière, de %s à %s ; différence = %s"
+msgid "%s: Unable to open file"
+msgstr "impossible d'ouvrir le fichier « %s »"
 
-#: musicxml2ly.py:2283
+#: convert-ly.py:339
 #, python-format
-msgid "unexpected %s; expected %s or %s or %s"
-msgstr "%s détecté, au lieu de %s, %s ou %s"
-
-#: musicxml2ly.py:2389
-msgid "Encountered closing slur, but no slur is open"
-msgstr "Terminaison d'une liaison qui n'a pas été débutée"
-
-#: musicxml2ly.py:2392
-msgid "Cannot have two simultaneous (closing) slurs"
-msgstr "deux liaisons ne peuvent se terminer simultanément"
-
-#: musicxml2ly.py:2401
-msgid "Cannot have a slur inside another slur"
-msgstr "des liaisons ne peuvent s'imbriquer"
-
-#: musicxml2ly.py:2404
-msgid "Cannot have two simultaneous slurs"
-msgstr "deux liaisons ne peuvent intervenir simultanément"
+msgid "%s: Unable to determine version.  Skipping"
+msgstr "impossible de déterminer la version  de « %s ». Au suivant !"
 
-#: musicxml2ly.py:2538
+#: convert-ly.py:344
 #, python-format
-msgid "cannot simultaneously have more than one mode: %s"
-msgstr "SVP, un seul mode à la fois : %s"
-
-#: musicxml2ly.py:2646
-msgid "Converting to LilyPond expressions..."
-msgstr "Conversion en expressions LilyPond..."
-
-#: musicxml2ly.py:2657
-msgid "musicxml2ly [OPTION]... FILE.xml"
-msgstr "musicxml2ly [options]... FICHIER.xml"
-
-#: musicxml2ly.py:2659
-msgid ""
-"Convert MusicXML from FILE.xml to LilyPond input.\n"
-"If the given filename is -, musicxml2ly reads from the command line.\n"
-msgstr ""
-"Convertit FICHIER.xml (MusicXML) au format LilyPond.\n"
-"Si le nom du fichier est « - », musicxml2ly lira la ligne de commande.\n"
-
-#: musicxml2ly.py:2669
 msgid ""
-"Copyright (c) 2005--2011 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--2011 by\n"
-"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
-"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
-"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
-
-#: musicxml2ly.py:2694
-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:2700
-msgid "input file is a zip-compressed MusicXML file"
-msgstr "le fichier d'entrée est un fichier MusicXML compressé"
-
-#: musicxml2ly.py:2706
-msgid "convert pitches in relative mode (default)"
-msgstr "convertit les hauteurs en mode relatif (par défaut)"
-
-#: musicxml2ly.py:2711
-msgid "convert pitches in absolute mode"
-msgstr "convertit les hauteurs en mode absolu"
-
-#: musicxml2ly.py:2714
-msgid "LANG"
-msgstr "LANG"
-
-#: musicxml2ly.py:2716
-msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
-msgstr "utilise une autre définition linguistique (LANG), p.ex. deutsch l'allemand"
-
-#: musicxml2ly.py:2722
-msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
-msgstr ""
-"ne convertit pas les emplacements (^, _ ou -) des articulations, \n"
-"nuances, etc."
-
-#: musicxml2ly.py:2728
-msgid "do not convert exact vertical positions of rests"
-msgstr "ne convertit pas le positionnement absolu des silences"
-
-#: musicxml2ly.py:2734
-msgid "do not convert the exact page layout and breaks"
-msgstr "ne convertit pas les sauts et la mise en page"
-
-#: musicxml2ly.py:2740
-msgid "do not convert beaming information, use lilypond's automatic beaming instead"
+"%s: Invalid version string `%s' \n"
+"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
 msgstr ""
-"ne convertit pas les informations de ligature ; \n"
-"laisse LilyPond gérer les ligatures automatiques"
-
-#: musicxml2ly.py:2748
-msgid "set output filename to FILE, stdout if -"
-msgstr "produit la sortie dans FICHIER (stdout si -)"
+"%s porte un numéro de version invalide : %s \n"
+"Un numéro de version valide est formé de trois nombres séparés par un point,\n"
+"comme par exemple « 2.8.12 »"
 
-#: musicxml2ly.py:2831
+#: etf2ly.py:1195
 #, python-format
-msgid "unknown part in part-list: %s"
-msgstr "la partie %s n'est pas mentionnée dans part-list"
-
-#: musicxml2ly.py:2893
-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"
+msgid "%s [OPTION]... ETF-FILE"
+msgstr "%s [OPTIONS]... FICHIER-ETF"
 
-#: musicxml2ly.py:2896
-#, python-format
-msgid "Input file %s is compressed, extracting raw MusicXML data"
+#: etf2ly.py:1196
+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"
 msgstr ""
-"Le fichier d'entrée (%s) est compressé.\n"
-"Extraction des données MusicXML brutes"
-
-#: musicxml2ly.py:2926
-msgid "Reading MusicXML from Standard input ..."
-msgstr "Lecture du fichier MusicXML à partir de l'entrée standard..."
-
-#: musicxml2ly.py:2928
-#, python-format
-msgid "Reading MusicXML from %s ..."
-msgstr "Lecture du fichier MusicXML %s..."
-
-#: musicxml2ly.py:2961
-#, python-format
-msgid "Output to `%s'"
-msgstr "Fichier de sortie : « %s »"
-
-#: musicxml2ly.py:3028
-#, python-format
-msgid "Unable to find input file %s"
-msgstr "Impossible de trouver le fichier d'entrée : « %s »"
+"Enigma Transport Format est utilisé par Finale, de Coda Music Technology.\n"
+"etf2ly convertit partiellement un fichier ETF en un fichier LilyPond\n"
+"exploitable.\n"
 
-#: website_post.py:115
+#: website_post.py:123
 msgid "English"
 msgstr "Anglais"
 
-#: website_post.py:118
+#: website_post.py:126
 msgid "Other languages"
 msgstr "Autres langues"
 
+#: warn.cc:59
+#, c-format
+msgid "success: %s"
+msgstr "%s mené(e) à terme avec succès"
+
+#: warn.cc:86 grob.cc:617 input.cc:97
+#, c-format
+msgid "programming error: %s"
+msgstr "erreur de programmation : %s"
+
+#: warn.cc:87 input.cc:98
+msgid "continuing, cross fingers"
+msgstr "poursuite ; croisons les doigts."
+
 #: getopt-long.cc:153
 #, c-format
 msgid "option `%s' requires an argument"
@@ -1490,79 +1561,92 @@ msgstr "option non reconnue : « %s »"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "argument « %s » invalide pour l'option « %s »"
 
-#: warn.cc:59
-#, c-format
-msgid "success: %s"
-msgstr "%s mené(e) à terme avec succè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"
 
-#: warn.cc:86 grob.cc:617 input.cc:97
-#, c-format
-msgid "programming error: %s"
-msgstr "erreur de programmation : %s"
+#: vaticana-ligature.cc:95
+msgid "flexa-height undefined; assuming 0"
+msgstr "Vaticana_ligature : décalage en X indéfini ; ramené à 0"
 
-#: warn.cc:87 input.cc:98
-msgid "continuing, cross fingers"
-msgstr "poursuite ; croisons les doigts."
+#: vaticana-ligature.cc:100
+msgid "ascending vaticana style flexa"
+msgstr "flexe de style vaticana ascendant"
 
-#: accidental-engraver.cc:180
-#, 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"
+#: vaticana-ligature.cc:188
+msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
+msgstr "Vaticana_ligature: aucun joint (delta_pitch == 0)"
 
-#: accidental-engraver.cc:210
-#, 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é"
+#: parse-scm.cc:101
+msgid "GUILE signaled an error for the expression beginning here"
+msgstr "GUILE a signalé une erreur pour l'expression débutant ici"
 
-#: 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"
+#: 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"
 
-#: accidental.cc:215
-msgid "natural alteration glyph not found"
-msgstr "pas de glyphe correspondant au bécarre"
+#. if we get to here, just put everything on one line
+#: constrained-breaking.cc:189 constrained-breaking.cc:207
+msgid "cannot find line breaking that satisfies constraints"
+msgstr "impossible de trouver un saut de ligne qui satisfasse aux contraintes"
 
-#: all-font-metrics.cc:156
+#: horizontal-bracket-engraver.cc:78
+msgid "do not have that many brackets"
+msgstr "n'a pas autant de crochets"
+
+#: horizontal-bracket-engraver.cc:87
+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é"
+
+#: pango-font.cc:187 open-type-font.cc:319
 #, c-format
-msgid "cannot find font: `%s'"
-msgstr "fonte « %s » introuvable"
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "Erreur FT_Get_Glyph_Name () : %s"
 
-#: apply-context-iterator.cc:42
-msgid "\\applycontext argument is not a procedure"
-msgstr "l'argument \\applycontext n'est pas une procédure"
+#: pango-font.cc:204
+#, 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"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
+#: pango-font.cc:241
 #, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "modification impossible, c'est déjà dans le translateur : %s"
+msgid "no PostScript font name for font `%s'"
+msgstr "« %s » n'est pas un fichier de fonte PostScript"
 
-#: 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"
+#: pango-font.cc:290
+msgid "FreeType face has no PostScript font name"
+msgstr "Caractère FreeType sans nom de police PostScript"
 
-#: axis-group-engraver.cc:95
-msgid "are there two Axis_group_engravers?"
-msgstr "Axis_group_engraver redondant"
+#: midi-item.cc:92
+#, c-format
+msgid "no such MIDI instrument: `%s'"
+msgstr "instrument MIDI non répertorié : « %s »"
 
-#: axis-group-engraver.cc:96
-msgid "removing this vertical group"
-msgstr "retrait de ce groupe vertical"
+#: note-heads-engraver.cc:76
+msgid "NoteEvent without pitch"
+msgstr "NoteEvent sans hauteur"
 
-#: axis-group-interface.cc:611
-msgid "an outside-staff object should have a direction, defaulting to up"
-msgstr ""
-"un objet externe à la portée devrait avoir un positionnement.\n"
-"Placé par défaut au-dessus."
+#: rest.cc:159
+#, c-format
+msgid "rest `%s' not found"
+msgstr "silence « %s » inconnu"
 
-#: bar-check-iterator.cc:84
+#: spaceable-grob.cc:94
 #, c-format
-msgid "barcheck failed at: %s"
-msgstr "échec du contrôle de mesure (barcheck) à : %s"
+msgid "No spring between column %d and next one"
+msgstr "Pas de tension entre la colonne %d et la suivante"
 
 #: beam-engraver.cc:147
 msgid "already have a beam"
@@ -1584,85 +1668,9 @@ msgstr "la hampe ne s'insère pas dans la ligature"
 msgid "beam was started here"
 msgstr "la ligature a débuté ici"
 
-#: beam-quanting.cc:314
-msgid "no feasible beam position"
-msgstr "nulle part où positionner une ligature"
-
-#: beam.cc:171
-msgid "removing beam with no stems"
-msgstr "suppression d'une ligature ayant moins de deux hampes"
-
-#: beam.cc:1116
-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."
-
-#: break-alignment-interface.cc:206
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Pas d'espacement entre %s et « %s »"
-
-#: 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"
-
-#: chord-tremolo-engraver.cc:88
-msgid "No tremolo to end"
-msgstr "Il n'y a aucun trémolo à terminer"
-
-#: chord-tremolo-engraver.cc:109
-msgid "unterminated chord tremolo"
-msgstr "accord en tremolo non terminé"
-
-#: clef.cc:65
-#, c-format
-msgid "clef `%s' not found"
-msgstr "clé `%s' introuvable"
-
-#: cluster.cc:120
-#, c-format
-msgid "unknown cluster style `%s'"
-msgstr "style de cluster inconnu : « %s »"
-
-#: cluster.cc:157
-msgid "junking empty cluster"
-msgstr "mise au rebut d'un cluster vide"
-
-#: coherent-ligature-engraver.cc:111
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
-msgstr "Coherent_ligature_engraver : initialise `spacing-increment=0.01': ptr=%ul"
-
-#. if we get to here, just put everything on one line
-#: constrained-breaking.cc:189 constrained-breaking.cc:207
-msgid "cannot find line breaking that satisfies constraints"
-msgstr "impossible de trouver un saut de ligne qui satisfasse aux contraintes"
-
-#: context-property.cc:42
-msgid "need symbol arguments for \\override and \\revert"
-msgstr "\\override et \\revert requièrent des arguments symboliques"
+#: music-iterator.cc:182
+msgid "Sending non-event to context"
+msgstr "Envoi d'un non-événement au contexte"
 
 #: context.cc:149
 #, c-format
@@ -1684,11 +1692,6 @@ msgstr "Événement CreateContext invalide : impossible de créer le contexte %s
 msgid "cannot find or create: `%s'"
 msgstr "impossible de trouver ou créer « %s »"
 
-#: custos.cc:88
-#, c-format
-msgid "custos `%s' not found"
-msgstr "custode « %s » introuvable"
-
 #: dispatcher.cc:82
 msgid "Event class should be a symbol"
 msgstr "La classe Event devrait être un symbole"
@@ -1698,10 +1701,19 @@ msgstr "La classe Event devrait être un symbole"
 msgid "Unknown event class %s"
 msgstr "Classe d'événement inconnue : « %s »"
 
-#: dots.cc:48
-#, c-format
-msgid "dot `%s' not found"
-msgstr "point « %s » introuvable"
+#: 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."
+
+#: tie-engraver.cc:116
+msgid "unterminated tie"
+msgstr "liaison de prolongation non terminée"
+
+#: tie-engraver.cc:312
+msgid "lonely tie"
+msgstr "liaison de prolongation orpheline"
 
 #: dynamic-engraver.cc:197
 msgid "cannot find start of (de)crescendo"
@@ -1723,180 +1735,160 @@ msgstr "le crescendo débute ici"
 msgid "unterminated (de)crescendo"
 msgstr "(de)crescendo non terminé"
 
-#: episema-engraver.cc:75
-msgid "already have an episema"
-msgstr "épisème déjà présent"
+#: paper-score.cc:122 minimal-page-breaking.cc:40
+msgid "Calculating line breaks..."
+msgstr "Calcul des sauts de ligne..."
 
-#: episema-engraver.cc:88
-msgid "cannot find start of episema"
-msgstr "impossible de trouver le début de l'épisème"
+#: paper-score.cc:135
+#, c-format
+msgid "Element count %d (spanners %d) "
+msgstr "%d éléments dénombrés (%d extensions)"
 
-#: episema-engraver.cc:137
-msgid "unterminated episema"
-msgstr "épisème non terminé"
+#: paper-score.cc:139
+msgid "Preprocessing graphical objects..."
+msgstr "Pré-traitement des éléments graphiques..."
 
-#: extender-engraver.cc:170 extender-engraver.cc:179
-msgid "unterminated extender"
-msgstr "prolongation ou extenseur non terminé"
+#: paper-score.cc:163 optimal-page-breaking.cc:208
+#: page-turn-page-breaking.cc:248
+msgid "Drawing systems..."
+msgstr "Dessin des systèmes..."
 
-#: font-config-scheme.cc:152 font-config.cc:55
-#, c-format
-msgid "failed adding font directory: %s"
-msgstr "échec lors de l'ajout d'un répertoire de fontes : « %s »"
+#: mensural-ligature-engraver.cc:96
+msgid "ligature with less than 2 heads -> skipping"
+msgstr "ligature avec moins de 2 têtes -> escamotage"
 
-#: font-config-scheme.cc:154 font-config.cc:57
-#, c-format
-msgid "adding font directory: %s"
-msgstr "ajout d'un répertoire de fontes : « %s »"
+#: mensural-ligature-engraver.cc:123
+msgid "cannot determine pitch of ligature primitive -> skipping"
+msgstr "impossible de déterminer la hauteur de la primitive de ligature -> escamotage"
 
-#: font-config-scheme.cc:168
-#, c-format
-msgid "failed adding font file: %s"
-msgstr "échec lors de l'ajout d'un fichier de fontes : « %s »"
+#: mensural-ligature-engraver.cc:137
+msgid "single note ligature - skipping"
+msgstr "ligature sur note unique -> escamotage"
 
-#: font-config-scheme.cc:170
-#, c-format
-msgid "adding font file: %s"
-msgstr "ajout d'un fichier de fontes : « %s »"
+#: mensural-ligature-engraver.cc:148
+msgid "prime interval within ligature -> skipping"
+msgstr "intervale de prime dans la ligature -> escamotage"
 
-#: font-config.cc:40
-msgid "Initializing FontConfig..."
-msgstr "Initialisation de FontConfig..."
+#: mensural-ligature-engraver.cc:159
+msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
+msgstr "ligature mensurale : aucune durée parmi Mx, L, B, S -> escamotage"
 
-#: font-config.cc:61
-msgid "Building font database..."
-msgstr "Construction de la base de donnée des fontes..."
+#: mensural-ligature-engraver.cc:202
+msgid "semibrevis must be followed by another one -> skipping"
+msgstr "une ronde doit être suivie d'une autre -> escamotage"
 
-#: 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"
-
-#: general-scheme.cc:306
-msgid "setting to zero"
-msgstr "initialisation à zéro"
-
-#: general-scheme.cc:542 output-ps.scm:48
-msgid "Found infinity or nan in output. Substituting 0.0"
+#: mensural-ligature-engraver.cc:212
+msgid ""
+"semibreves can only appear at the beginning of a ligature,\n"
+"and there may be only zero or two of them"
 msgstr ""
-"La sortie contient l'infini ou une valeur non numérique.\n"
-"Substitution par 0.0"
-
-#: glissando-engraver.cc:105
-msgid "unterminated glissando"
-msgstr "glissando non terminé"
-
-#: global-context-scheme.cc:96 global-context-scheme.cc:114
-msgid "no music found in score"
-msgstr "Il n'y a pas de musique dans cette partition"
-
-#: global-context-scheme.cc:104
-msgid "Interpreting music... "
-msgstr "Interprétation en cours de la musique..."
+"les rondes ne peuvent apparaître qu'en début de ligature,\n"
+"et il ne peut y en avoir que zéro ou deux"
 
-#: global-context-scheme.cc:127
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "temps écoulé : %.2f secondes"
+#: mensural-ligature-engraver.cc:232
+msgid ""
+"invalid ligatura ending:\n"
+"when the last note is a descending brevis,\n"
+"the penultimate note must be another one,\n"
+"or the ligatura must be LB or SSB"
+msgstr ""
+"terminaison de ligature invalide :\n"
+"lorsque la dernière note est une brève descendante,\n"
+"l'avant dernière note doit en être une autre,\n"
+"sinon la ligature doit être LB ou SSB"
 
-#: gregorian-ligature-engraver.cc:70
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignoré(e)"
+#: mensural-ligature-engraver.cc:386
+msgid "unexpected case fall-through"
+msgstr "cas inattendu et non interprétable"
 
-#: gregorian-ligature-engraver.cc:75
+#: piano-pedal-engraver.cc:298
 #, c-format
-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
-msgid "cannot apply `\\~' on first head of ligature"
-msgstr "Impossible d'appliquer « \\~ » à la première tête de ligature"
-
-#. (pitch == prev_pitch)
-#: gregorian-ligature-engraver.cc:236
-msgid "cannot apply `\\~' on heads with identical pitch"
-msgstr "Impossible d'appliquer « \\~ » à des têtes ayant la même hauteur"
+msgid "expect 3 strings for piano pedals, found: %ld"
+msgstr "Les pédales de piano nécessitent 3 cordes. Il y en a %ld"
 
-#: grob-interface.cc:68
+#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
+#: piano-pedal-performer.cc:104
 #, c-format
-msgid "Unknown interface `%s'"
-msgstr "Interface inconnue : « %s »"
+msgid "cannot find start of piano pedal: `%s'"
+msgstr "début de la pédale de piano indéterminé : « %s »"
 
-#: grob-interface.cc:79
+#: piano-pedal-engraver.cc:359
 #, c-format
-msgid "Grob `%s' has no interface for property `%s'"
-msgstr "L'objet graphique (Grob) « %s » n'a pas d'interface pour la propriété « %s »"
+msgid "cannot find start of piano pedal bracket: `%s'"
+msgstr "début du crochet de la pédale de piano indéterminé : « %s »"
 
-#: grob-property.cc:34
-#, c-format
-msgid "%d: %s"
-msgstr "%d : %s"
+#: input.cc:131 source-file.cc:179 source-file.cc:194
+msgid "position unknown"
+msgstr "position inconnue"
 
-#: grob-property.cc:173
+#: paper-outputter-scheme.cc:41
 #, c-format
-msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
-msgstr "dépendance circulaire : calculation-in-progress rencontrée pour #'%s (%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"
+msgid "Layout output to `%s'..."
+msgstr "Sortie mise en page vers « %s »..."
 
-#: hairpin.cc:186
-msgid "decrescendo too small"
-msgstr "decrescendo trop petit"
+#: general-scheme.cc:306
+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"
 
-#: horizontal-bracket-engraver.cc:78
-msgid "do not have that many brackets"
-msgstr "n'a pas autant de crochets"
+#: general-scheme.cc:307
+msgid "setting to zero"
+msgstr "initialisation à zéro"
 
-#: horizontal-bracket-engraver.cc:87
-msgid "conflicting note group events"
-msgstr "événements de groupe de notes conflictuels"
+#: general-scheme.cc:543
+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"
 
-#: hyphen-engraver.cc:104
-msgid "removing unterminated hyphen"
-msgstr "retrait du trait d'union sans suite"
+#: music.cc:151
+#, c-format
+msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgstr ""
+"Échec de vérification d'octave.\n"
+"Aurait dû être \"%s\", \"%s\" obtenu"
 
-#: hyphen-engraver.cc:118
-msgid "unterminated hyphen; removing"
-msgstr "trait d'union sans suite ; escamoté"
+#: music.cc:219
+msgid "(normalized pitch)"
+msgstr "(hauteur normalisée)"
 
-#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
+#: music.cc:223
 #, c-format
-msgid "cannot find file: `%s'"
-msgstr "fichier non trouvé : « %s »"
+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"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:100
+#: translator-ctors.cc:65
 #, c-format
-msgid "(search path: `%s')"
-msgstr "(chemin de recherche : « %s »)"
+msgid "unknown translator: `%s'"
+msgstr "translateur inconnu : « %s »"
 
-#: input.cc:131 source-file.cc:179 source-file.cc:194
-msgid "position unknown"
-msgstr "position inconnue"
+#: 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"
 
-#: key-signature-interface.cc:78
-#, c-format
-msgid "No glyph found for alteration: %s"
-msgstr "Pas de glyphe pour l'altération « %s »"
+#: new-fingering-engraver.cc:106
+msgid "cannot add text scripts to individual note heads"
+msgstr "impossible d'ajouter du texte à des têtes de notes individuelles"
 
-#: key-signature-interface.cc:88
-msgid "alteration not found"
-msgstr "altération non trouvée"
+#: new-fingering-engraver.cc:250
+msgid "no placement found for fingerings"
+msgstr "nulle part où positionner des doigtés"
+
+#: new-fingering-engraver.cc:251
+msgid "placing below"
+msgstr "on les place en dessous"
 
-#: ligature-bracket-engraver.cc:73 ligature-engraver.cc:104
+#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72
 msgid "cannot find start of ligature"
 msgstr "impossible de trouver le début d'une ligature"
 
-#: ligature-bracket-engraver.cc:86 ligature-engraver.cc:131
-msgid "already have a ligature"
-msgstr "a déjà une ligature"
-
 #: ligature-engraver.cc:109
 msgid "no right bound"
 msgstr "pas de borne à droite"
 
+#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85
+msgid "already have a ligature"
+msgstr "a déjà une ligature"
+
 #: ligature-engraver.cc:140
 msgid "no left bound"
 msgstr "pas de borne à gauche"
@@ -1913,82 +1905,354 @@ msgstr "le silence est ignoré : une ligature ne peut contenir de silence"
 msgid "ligature was started here"
 msgstr "la ligature a débuté ici"
 
-#: lily-guile.cc:89
+#: auto-change-iterator.cc:74 change-iterator.cc:72
 #, c-format
-msgid "(load path: `%s')"
-msgstr "(chemin de chargement : « %s »)"
+msgid "cannot change, already in translator: %s"
+msgstr "modification impossible, c'est déjà dans le translateur : %s"
 
-#: lily-guile.cc:439
+#: accidental-engraver.cc:180
 #, 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:442
-msgid "perhaps a typing error?"
-msgstr "Probable faute de frappe"
+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"
 
-#: lily-guile.cc:449
-msgid "doing assignment anyway"
-msgstr "affectation faite malgré tout"
+#: accidental-engraver.cc:210
+#, 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é"
 
-#: lily-guile.cc:461
+#: ttf.cc:481 ttf.cc:530
 #, c-format
-msgid "type check for `%s' failed; value `%s' must be of type `%s'"
+msgid "font index %d too large for font `%s', using index 0"
 msgstr ""
-"la vérification du type de « %s » a échoué ; \n"
-"   la valeur « %s » doit être du type « %s »"
+"index %d trop grand pour la fonte « %s » ;\n"
+"réindexé sur 0"
 
-#: lily-lexer.cc:264
-msgid "include files are not allowed in safe mode"
-msgstr "l'inclusion de fichiers n'est pas permise en mode sans échec"
+#: ttf.cc:513 ttf.cc:565
+msgid "font index must be non-negative, using index 0"
+msgstr "l'index de fonte ne peut être négatif ; réindexé sur 0"
 
-#: lily-lexer.cc:291
+#: break-alignment-interface.cc:206
 #, c-format
-msgid "identifier name is a keyword: `%s'"
-msgstr "Le nom de l'identificateur est un mot clé : « %s »"
+msgid "No spacing entry from %s to `%s'"
+msgstr "Pas d'espacement entre %s et « %s »"
 
-#: lily-lexer.cc:312
+#: minimal-page-breaking.cc:44
+msgid "Calculating page breaks..."
+msgstr "Calcul des sauts de page..."
+
+#: vaticana-ligature-engraver.cc:400
 #, c-format
-msgid "error at EOF: %s"
-msgstr "erreur à la fin du fichier (EOF) : %s"
+msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
+msgstr ""
+"préfixe(s) « %s » ignoré(s) pour la tête de note, \n"
+"selon les restrictions du style de ligature sélectionné"
 
-#: lily-parser-scheme.cc:82
+#: vaticana-ligature-engraver.cc:736
 #, c-format
-msgid "Changing working directory to: `%s'"
-msgstr "Modification du répertoire de travail pour « %s »"
+msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
+msgstr "Vaticana_ligature_engraver : fixé `spacing-increment = %f': ptr=%ul"
 
-#: lily-parser-scheme.cc:99
+#: paper-book.cc:214
 #, c-format
-msgid "cannot find init file: `%s'"
-msgstr "impossible de trouver le fichier d'initialisation « %s »"
+msgid "program option -dprint-pages not supported by backend `%s'"
+msgstr "l'option -dprint-pages n'est pas opérationnelle avec le moteur %s"
 
-#: lily-parser-scheme.cc:118
+#: paper-book.cc:233
 #, c-format
-msgid "Processing `%s'"
-msgstr "Traitement de « %s »"
+msgid "program option -dpreview not supported by backend `%s'"
+msgstr "l'option -dpreview n'est pas opérationnelle avec le moteur %s"
 
-#: lily-parser-scheme.cc:204
-msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
+#: output-def.cc:235
+msgid "margins do not fit with line-width, setting default values"
 msgstr ""
-"ly:parser-parse-string ne peut foncionner qu'avec un nouvel analyseur.\n"
-"Utilisez plutôt ly:parser-include-string"
+"les marges ne sont pas en cohérence avec la longueur de ligne ;\n"
+"retour aux valeurs par défaut"
 
-#: lily-parser.cc:106
-msgid "Parsing..."
-msgstr "Analyse..."
+#: 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"
 
-#: lily-parser.cc:134
-msgid "braces do not match"
-msgstr "accolades non pairées"
+#: score-engraver.cc:78
+#, c-format
+msgid "cannot find `%s'"
+msgstr "impossible de trouver « %s »"
+
+#: score-engraver.cc:80
+msgid "Music font has not been installed properly."
+msgstr "Les fontes musicales n'ont pas été installées correctement."
+
+#: score-engraver.cc:82
+#, c-format
+msgid "Search path `%s'"
+msgstr "Chemin de recherche : « %s »"
+
+#: score-engraver.cc:84
+msgid "Aborting"
+msgstr "Abandon"
+
+#: note-collision.cc:497
+msgid "ignoring too many clashing note columns"
+msgstr "trop d'empilements de notes se chevauchent. On fera au mieux."
+
+#. fixme: be more verbose.
+#: volta-engraver.cc:111
+msgid "cannot end volta spanner"
+msgstr "extension de reprise sans terminaison"
+
+#: volta-engraver.cc:121
+msgid "already have a volta spanner, ending that one prematurely"
+msgstr "extension de reprise déjà présente, fin prématurée de celle-ci"
+
+#: volta-engraver.cc:125
+msgid "also already have an ended spanner"
+msgstr "a déjà une extension terminée"
+
+#: volta-engraver.cc:126
+msgid "giving up"
+msgstr "abandon"
+
+#: page-layout-problem.cc:322
+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:325
+#, 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:327
+msgid "compressing music to fit"
+msgstr "compression de la musique pour que cela tienne"
+
+#: page-layout-problem.cc:765
+msgid "staff-affinities should only decrease"
+msgstr "staff-affinities devraient aller en ordre décroissant"
+
+#: apply-context-iterator.cc:42
+msgid "\\applycontext argument is not a procedure"
+msgstr "l'argument \\applycontext n'est pas une procédure"
+
+#. FIXME: constant error message.
+#: mark-engraver.cc:157
+msgid "rehearsalMark must have integer value"
+msgstr "rehearsalMark doit être un entier"
+
+#: mark-engraver.cc:163
+msgid "mark label must be a markup object"
+msgstr "les étiquettes de marque doivent être des objets de type \"markup\""
+
+#: new-dynamic-engraver.cc:142
+#, 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:200
+#, c-format
+msgid "unterminated %s"
+msgstr "%s non terminé(e)"
+
+#: stem-engraver.cc:103
+msgid "tremolo duration is too long"
+msgstr "durée du tremolo trop longue"
+
+#. FIXME:
+#: stem-engraver.cc:140
+#, c-format
+msgid "adding note head to incompatible stem (type = %d)"
+msgstr "Ajout d'une tête de note à une hampe incompatible (type = %d)"
+
+#: stem-engraver.cc:142
+msgid "maybe input should specify polyphonic voices"
+msgstr "la source devrait spécifier des voix polyphoniques"
+
+#: lily-lexer.cc:264
+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:291
+#, c-format
+msgid "identifier name is a keyword: `%s'"
+msgstr "Le nom de l'identificateur est un mot clé : « %s »"
+
+#: lily-lexer.cc:312
+#, c-format
+msgid "error at EOF: %s"
+msgstr "erreur à la fin du fichier (EOF) : %s"
 
 #: lyric-combine-music-iterator.cc:337
 #, c-format
 msgid "cannot find Voice `%s'"
 msgstr "impossible de repérer la voix (Voice) « %s »"
 
-#: lyric-engraver.cc:175
-msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr "Syllabe sans note de rattachement. Utiliser \\lyricsto ou associatedVoice."
+#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
+#, c-format
+msgid "cannot find file: `%s'"
+msgstr "fichier non trouvé : « %s »"
+
+#: includable-lexer.cc:73 lily-parser-scheme.cc:100
+#, c-format
+msgid "(search path: `%s')"
+msgstr "(chemin de recherche : « %s »)"
+
+#: note-column.cc:135
+msgid "cannot have note heads and rests together on a stem"
+msgstr "impossible de superposer une note et un silence sur une même hampe"
+
+#: beam.cc:180
+msgid "removing beam with no stems"
+msgstr "suppression d'une ligature ayant moins de deux hampes"
+
+#. We are completely screwed.
+#: beam.cc:1274
+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."
+
+#: slur-engraver.cc:93
+#, c-format
+msgid "direction of %s invalid: %d"
+msgstr "l'orientation de %s n'est pas valide : %d"
+
+#: slur-engraver.cc:162
+msgid "unterminated slur"
+msgstr "liaison non terminée"
+
+#: slur-engraver.cc:174
+msgid "cannot end slur"
+msgstr "impossible de terminer la liaison"
+
+#: font-config.cc:40
+msgid "Initializing FontConfig..."
+msgstr "Initialisation de FontConfig..."
+
+#: font-config.cc:55 font-config-scheme.cc:152
+#, c-format
+msgid "failed adding font directory: %s"
+msgstr "échec lors de l'ajout d'un répertoire de fontes : « %s »"
+
+#: font-config.cc:57 font-config-scheme.cc:154
+#, c-format
+msgid "adding font directory: %s"
+msgstr "ajout d'un répertoire de fontes : « %s »"
+
+#: font-config.cc:61
+msgid "Building font database..."
+msgstr "Construction de la base de donnée des fontes..."
+
+#. find out the ideal number of pages
+#: optimal-page-breaking.cc:62
+msgid "Finding the ideal number of pages..."
+msgstr "Détermination du nombre optimal de pages..."
+
+#: optimal-page-breaking.cc:85
+msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page"
+msgstr "incompatilité entre systems-per-page et page-count ; systems-per-page ignoré"
+
+#: optimal-page-breaking.cc:105
+msgid "Fitting music on 1 page..."
+msgstr "Répartition de la musique sur une page..."
+
+#: optimal-page-breaking.cc:107
+#, c-format
+msgid "Fitting music on %d pages..."
+msgstr "Répartition de la musique sur %d pages..."
+
+#: optimal-page-breaking.cc:109
+#, c-format
+msgid "Fitting music on %d or %d pages..."
+msgstr "Répartition de la musique sur %d à %d pages..."
+
+#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173
+#, c-format
+msgid "trying %d systems"
+msgstr "tentative pour %d systèmes"
+
+#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201
+#, c-format
+msgid "best score for this sys-count: %f"
+msgstr "meilleur résultat pour cette configuration « sys-count » : %f"
+
+#: 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"
+
+#: accidental.cc:215
+msgid "natural alteration glyph not found"
+msgstr "pas de glyphe correspondant au bécarre"
+
+#: system.cc:197
+#, c-format
+msgid "Element count %d"
+msgstr "%d éléments dénombrés."
+
+#: system.cc:303
+#, c-format
+msgid "Grob count %d"
+msgstr "%d objet graphiques (grob) dénombrés"
+
+#: slur.cc:362
+#, 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 ?"
+
+#: font-config-scheme.cc:168
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "échec lors de l'ajout d'un fichier de fontes : « %s »"
+
+#: font-config-scheme.cc:170
+#, 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:170 extender-engraver.cc:179
+msgid "unterminated extender"
+msgstr "prolongation ou extenseur non terminé"
+
+#: lily-guile.cc:89
+#, c-format
+msgid "(load path: `%s')"
+msgstr "(chemin de chargement : « %s »)"
+
+#: lily-guile.cc:437
+#, 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:440
+msgid "perhaps a typing error?"
+msgstr "Probable faute de frappe"
+
+#: lily-guile.cc:447
+msgid "doing assignment anyway"
+msgstr "affectation faite malgré tout"
+
+#: lily-guile.cc:459
+#, 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:109
 #, c-format
@@ -2177,454 +2441,155 @@ msgstr ""
 #: main.cc:358
 #, c-format
 msgid "no such group: %s"
-msgstr "groupe inconnu : %s"
-
-#: main.cc:360
-#, c-format
-msgid "cannot get group id from group name: %s: %s"
-msgstr ""
-"impossible de repérer l'identifiant groupe à partir du nom de groupe :\n"
-"%s : %s "
-
-#: main.cc:368
-#, c-format
-msgid "cannot chroot to: %s: %s"
-msgstr "impossible de chrooter vers : %s : %s"
-
-#: main.cc:375
-#, c-format
-msgid "cannot change group id to: %d: %s"
-msgstr "impossible de changer l'identifiant de groupe en %d : %s"
-
-#: main.cc:381
-#, c-format
-msgid "cannot change user id to: %d: %s"
-msgstr "impossible de changer l'identifiant utilisateur en %d : %s"
-
-#: main.cc:387
-#, c-format
-msgid "cannot change working directory to: %s: %s"
-msgstr "impossible de changer le répertoire de travail en %s : %s"
-
-#: main.cc:628
-#, c-format
-msgid "exception caught: %s"
-msgstr "exception capturée : %s"
-
-#. FIXME: constant error message.
-#: mark-engraver.cc:157
-msgid "rehearsalMark must have integer value"
-msgstr "rehearsalMark doit être un entier"
-
-#: mark-engraver.cc:163
-msgid "mark label must be a markup object"
-msgstr "les étiquettes de marque doivent être des objets de type \"markup\""
-
-#: mensural-ligature-engraver.cc:96
-msgid "ligature with less than 2 heads -> skipping"
-msgstr "ligature avec moins de 2 têtes -> escamotage"
-
-#: mensural-ligature-engraver.cc:123
-msgid "cannot determine pitch of ligature primitive -> skipping"
-msgstr "impossible de déterminer la hauteur de la primitive de ligature -> escamotage"
-
-#: mensural-ligature-engraver.cc:137
-msgid "single note ligature - skipping"
-msgstr "ligature sur note unique -> escamotage"
-
-#: mensural-ligature-engraver.cc:149
-msgid "prime interval within ligature -> skipping"
-msgstr "intervale de prime dans la ligature -> escamotage"
-
-#: mensural-ligature-engraver.cc:161
-msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
-msgstr "ligature mensurale : aucune durée parmi Mx, L, B, S -> escamotage"
-
-#: mensural-ligature-engraver.cc:209
-msgid "semibrevis must be followed by another one -> skipping"
-msgstr "une ronde doit être suivie d'une autre -> escamotage"
-
-#: mensural-ligature-engraver.cc:220
-msgid ""
-"semibreves can only appear at the beginning of a ligature,\n"
-"and there may be only zero or two of them"
-msgstr ""
-"les rondes ne peuvent apparaître qu'en début de ligature,\n"
-"et il ne peut y en avoir que zéro ou deux"
-
-#: mensural-ligature-engraver.cc:247
-msgid ""
-"invalid ligatura ending:\n"
-"when the last note is a descending brevis,\n"
-"the penultimate note must be another one,\n"
-"or the ligatura must be LB or SSB"
-msgstr ""
-"terminaison de ligature invalide :\n"
-"lorsque la dernière note est une brève descendante,\n"
-"l'avant dernière note doit en être une autre,\n"
-"sinon la ligature doit être LB ou SSB"
-
-#: mensural-ligature-engraver.cc:367
-msgid "unexpected case fall-through"
-msgstr "cas inattendu et non interprétable"
-
-#: mensural-ligature.cc:152
-msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature : cas inattendu et non interprétable"
-
-#: mensural-ligature.cc:203
-msgid "Mensural_ligature: (join_right == 0)"
-msgstr "Mensural_ligature : (joint_right == 0)"
-
-#: midi-item.cc:92
-#, c-format
-msgid "no such MIDI instrument: `%s'"
-msgstr "instrument MIDI non répertorié : « %s »"
-
-#: midi-stream.cc:39
-#, c-format
-msgid "cannot open for write: %s: %s"
-msgstr "impossible d'ouvrir le fichier en écriture : %s : %s"
-
-#: midi-stream.cc:55
-#, c-format
-msgid "cannot write to file: `%s'"
-msgstr "impossible d'écrire dans le fichier « %s »"
-
-#: minimal-page-breaking.cc:40 paper-score.cc:122
-msgid "Calculating line breaks..."
-msgstr "Calcul des sauts de ligne..."
-
-#: minimal-page-breaking.cc:44
-msgid "Calculating page breaks..."
-msgstr "Calcul des sauts de page..."
-
-#: music-iterator.cc:182
-msgid "Sending non-event to context"
-msgstr "Envoi d'un non-événement au contexte"
-
-#: music.cc:151
-#, 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: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"
-
-#: new-dynamic-engraver.cc:142
-#, 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:200
-#, c-format
-msgid "unterminated %s"
-msgstr "%s non terminé(e)"
-
-#: new-fingering-engraver.cc:106
-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:250
-msgid "no placement found for fingerings"
-msgstr "nulle part où positionner des doigtés"
-
-#: new-fingering-engraver.cc:251
-msgid "placing below"
-msgstr "on les place en dessous"
-
-#: note-collision.cc:497
-msgid "ignoring too many clashing note columns"
-msgstr "trop d'empilements de notes se chevauchent. On fera au mieux."
-
-#: note-column.cc:135
-msgid "cannot have note heads and rests together on a stem"
-msgstr "impossible de superposer une note et un silence sur une même hampe"
-
-#: note-head.cc:76
-#, c-format
-msgid "none of note heads `%s' or `%s' found"
-msgstr "tête de note « %s » ou « %s » non trouvée"
-
-#: note-heads-engraver.cc:76
-msgid "NoteEvent without pitch"
-msgstr "NoteEvent sans hauteur"
-
-#: 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 "Free type error: %s"
-msgstr "Erreur Free type : %s"
-
-#: open-type-font.cc:111
-#, c-format
-msgid "unsupported font format: %s"
-msgstr "format de police non supporté : %s"
-
-#: open-type-font.cc:113
-#, c-format
-msgid "error reading font file %s: %s"
-msgstr "erreur de lecture du fichier de fontes %s : %s"
-
-#: open-type-font.cc:188
-#, c-format
-msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr "erreur Freetype FT_Get_Glyph_Name () : %s"
-
-#: open-type-font.cc:250
-msgid "Invalid index for character"
-msgstr "Index de caractère invalide"
-
-#: open-type-font.cc:319 pango-font.cc:187
-#, c-format
-msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "Erreur FT_Get_Glyph_Name () : %s"
-
-#. find out the ideal number of pages
-#: optimal-page-breaking.cc:60
-msgid "Finding the ideal number of pages..."
-msgstr "Détermination du nombre optimal de pages..."
-
-#: optimal-page-breaking.cc:87
-msgid "Fitting music on 1 page..."
-msgstr "Répartition de la musique sur une page..."
-
-#: optimal-page-breaking.cc:89
-#, c-format
-msgid "Fitting music on %d pages..."
-msgstr "Répartition de la musique sur %d pages..."
-
-#: optimal-page-breaking.cc:91
-#, c-format
-msgid "Fitting music on %d or %d pages..."
-msgstr "Répartition de la musique sur %d à %d pages..."
-
-#: optimal-page-breaking.cc:101 optimal-page-breaking.cc:155
-#, c-format
-msgid "trying %d systems"
-msgstr "tentative pour %d systèmes"
-
-#: optimal-page-breaking.cc:120 optimal-page-breaking.cc:183
-#, c-format
-msgid "best score for this sys-count: %f"
-msgstr "meilleur résultat pour cette configuration « sys-count » : %f"
-
-#: optimal-page-breaking.cc:190 page-turn-page-breaking.cc:248
-#: paper-score.cc:163
-msgid "Drawing systems..."
-msgstr "Dessin des systèmes..."
-
-#: 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"
-
-#: 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"
-
-#: page-breaking.cc:194
-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:199
-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"
-
-#: page-layout-problem.cc:315
-#, c-format
-msgid "couldn't 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:317
-msgid "compressing music to fit"
-msgstr "compression de la musique pour que cela tienne"
-
-#: page-layout-problem.cc:733
-msgid "staff-affinities should only decrease"
-msgstr "staff-affinities devraient aller en ordre décroissant"
-
-#: 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:297
-#, c-format
-msgid "break starting at page %d"
-msgstr "saut intervenant à la page %d"
-
-#: page-turn-page-breaking.cc:298
-#, c-format
-msgid "\tdemerits: %f"
-msgstr "        démérites : %f"
+msgstr "groupe inconnu : %s"
 
-#: page-turn-page-breaking.cc:299
+#: main.cc:360
 #, c-format
-msgid "\tsystem count: %d"
-msgstr "        nombre de systèmes : %d"
+msgid "cannot get group id from group name: %s: %s"
+msgstr ""
+"impossible de repérer l'identifiant groupe à partir du nom de groupe :\n"
+"%s : %s "
 
-#: page-turn-page-breaking.cc:300
+#: main.cc:368
 #, c-format
-msgid "\tpage count: %d"
-msgstr "        nombre de pages : %d"
+msgid "cannot chroot to: %s: %s"
+msgstr "impossible de chrooter vers : %s : %s"
 
-#: page-turn-page-breaking.cc:301
+#: main.cc:375
 #, c-format
-msgid "\tprevious break: %d"
-msgstr "        coupure précédente : %d"
+msgid "cannot change group id to: %d: %s"
+msgstr "impossible de changer l'identifiant de groupe en %d : %s"
 
-#: pango-font.cc:204
+#: main.cc:381
 #, 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"
+msgid "cannot change user id to: %d: %s"
+msgstr "impossible de changer l'identifiant utilisateur en %d : %s"
 
-#: pango-font.cc:241
+#: main.cc:387
 #, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "« %s » n'est pas un fichier de fonte PostScript"
-
-#: pango-font.cc:290
-msgid "FreeType face has no PostScript font name"
-msgstr "Caractère FreeType sans nom de police PostScript"
+msgid "cannot change working directory to: %s: %s"
+msgstr "impossible de changer le répertoire de travail en %s : %s"
 
-#: paper-book.cc:214
+#: main.cc:628
 #, c-format
-msgid "program option -dprint-pages not supported by backend `%s'"
-msgstr "l'option -dprint-pages n'est pas opérationnelle avec le moteur %s"
+msgid "exception caught: %s"
+msgstr "exception capturée : %s"
 
-#: paper-book.cc:233
+#: key-signature-interface.cc:78
 #, c-format
-msgid "program option -dpreview not supported by backend `%s'"
-msgstr "l'option -dpreview n'est pas opérationnelle avec le moteur %s"
+msgid "No glyph found for alteration: %s"
+msgstr "Pas de glyphe pour l'altération « %s »"
 
-#: paper-column-engraver.cc:233
-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."
+#: key-signature-interface.cc:88
+msgid "alteration not found"
+msgstr "altération non trouvée"
 
-#: paper-outputter-scheme.cc:41
+#: dots.cc:48
 #, c-format
-msgid "Layout output to `%s'..."
-msgstr "Sortie mise en page vers « %s »..."
+msgid "dot `%s' not found"
+msgstr "point « %s » introuvable"
 
-#: paper-score.cc:135
+#: translator.cc:359
 #, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "%d éléments dénombrés (%d extensions)"
-
-#: paper-score.cc:139
-msgid "Preprocessing graphical objects..."
-msgstr "Pré-traitement des éléments graphiques..."
+msgid "Two simultaneous %s events, junking this one"
+msgstr "Deux événements %s simultanés, rejet de celui-ci"
 
-#: parse-scm.cc:101
-msgid "GUILE signaled an error for the expression beginning here"
-msgstr "GUILE a signalé une erreur pour l'expression débutant ici"
+#: translator.cc:360
+#, c-format
+msgid "Previous %s event here"
+msgstr "Événement %s précédent ici"
 
-#: 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"
+#: glissando-engraver.cc:105
+msgid "unterminated glissando"
+msgstr "glissando non terminé"
 
-#: percent-repeat-engraver.cc:213
-msgid "unterminated percent repeat"
-msgstr "répétition en pourcent non terminée"
+#: text-spanner-engraver.cc:73
+msgid "cannot find start of text spanner"
+msgstr "impossible de repérer le point de départ de l'extension de texte"
 
-#: performance.cc:54
-msgid "Track..."
-msgstr "Piste..."
+#: text-spanner-engraver.cc:86
+msgid "already have a text spanner"
+msgstr "a déjà une extension de texte"
 
-#: performance.cc:83
-msgid "MIDI channel wrapped around"
-msgstr "Bouclage du canal MIDI"
+#: text-spanner-engraver.cc:132
+msgid "unterminated text spanner"
+msgstr "extension de texte non terminée"
 
-#: performance.cc:84
-msgid "remapping modulo 16"
-msgstr "réaffectation modulo 16"
+#: clef.cc:65
+#, c-format
+msgid "clef `%s' not found"
+msgstr "clé `%s' introuvable"
 
-#: performance.cc:111
+#.
+#. Todo: should make typecheck?
+#.
+#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+#.
+#: time-signature-engraver.cc:75
 #, c-format
-msgid "MIDI output to `%s'..."
-msgstr "Sortie MIDI vers « %s »..."
+msgid "strange time signature found: %d/%d"
+msgstr "Chiffrage de mesure inhabituel : %d/%d"
 
-#: phrasing-slur-engraver.cc:157
-msgid "unterminated phrasing slur"
-msgstr "liaison de phrasé non terminée"
+#: lily-parser-scheme.cc:82
+#, c-format
+msgid "Changing working directory to: `%s'"
+msgstr "Modification du répertoire de travail pour « %s »"
 
-#: piano-pedal-engraver.cc:298
+#: lily-parser-scheme.cc:99
 #, 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"
+msgid "cannot find init file: `%s'"
+msgstr "impossible de trouver le fichier d'initialisation « %s »"
 
-#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
-#: piano-pedal-performer.cc:104
+#: lily-parser-scheme.cc:118
 #, c-format
-msgid "cannot find start of piano pedal: `%s'"
-msgstr "début de la pédale de piano indéterminé : « %s »"
+msgid "Processing `%s'"
+msgstr "Traitement de « %s »"
 
-#: piano-pedal-engraver.cc:359
+#: lily-parser-scheme.cc:204
+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"
+
+#: custos.cc:88
 #, 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 »"
+msgid "custos `%s' not found"
+msgstr "custode « %s » introuvable"
 
 #: program-option-scheme.cc:237
 #, c-format
 msgid "no such internal option: %s"
 msgstr "option interne inconnue : %s"
 
-#: property-iterator.cc:85
+#: 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:205
+msgid "too many colliding rests"
+msgstr "trop de silences se chevauchent"
+
+#: episema-engraver.cc:75
+msgid "already have an episema"
+msgstr "épisème déjà présent"
+
+#: 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é"
+
+#: grob-property.cc:34
 #, c-format
-msgid "not a grob name, `%s'"
-msgstr " « %s » n'est pas un nom d'objet graphique (grob)"
+msgid "%d: %s"
+msgstr "%d : %s"
 
-#: relative-octave-check.cc:49
-msgid "Failed octave check, got: "
-msgstr "échec de la vérification d'octave, a obtenu : "
+#: grob-property.cc:173
+#, c-format
+msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
+msgstr "dépendance circulaire : calculation-in-progress rencontrée pour #'%s (%s)"
 
 #: relocate.cc:54
 #, c-format
@@ -2671,7 +2636,7 @@ msgstr "Relocalisation : argv0=%s est absolu"
 msgid "Relocation: from cwd: argv0=%s"
 msgstr "Relocalisation : argv0=%s à partir du répertoire courant"
 
-#: relocate.cc:205
+#: relocate.cc:213
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
@@ -2680,71 +2645,152 @@ msgstr ""
 "Relocalisation : à partir de PATH=%s\n"
 "argv0=%s"
 
-#: relocate.cc:239
+#: relocate.cc:240
 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
 msgstr "LILYPONDPREFIX est obsolète, utiliser LILYPOND_DATADIR"
 
-#: relocate.cc:366
+#: relocate.cc:367
 #, c-format
 msgid "Relocation file: %s"
 msgstr "Fichier de relocalisation : %s"
 
-#: relocate.cc:372 source-file.cc:65
+#: relocate.cc:373 source-file.cc:65
 #, c-format
 msgid "cannot open file: `%s'"
 msgstr "Impossible d'ouvrir le fichier « %s »"
 
-#: relocate.cc:402
+#: relocate.cc:403
 #, c-format
 msgid "Unknown relocation command %s"
 msgstr "Commande de relocalisation inconnue : %s"
 
-#: 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"
+#: 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"
+
+#: lyric-engraver.cc:176
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr "Syllabe sans note de rattachement. Utiliser \\lyricsto ou associatedVoice."
+
+#: page-breaking.cc:248
+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:253
+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:54
+msgid "Track..."
+msgstr "Piste..."
+
+#: performance.cc:83
+msgid "MIDI channel wrapped around"
+msgstr "Bouclage du canal MIDI"
+
+#: performance.cc:84
+msgid "remapping modulo 16"
+msgstr "réaffectation modulo 16"
+
+#: performance.cc:111
+#, 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"
+
+#: 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)"
+
+#. ligature may not start with 2nd head of pes or flexa
+#: gregorian-ligature-engraver.cc:224
+msgid "cannot apply `\\~' on first head of ligature"
+msgstr "Impossible d'appliquer « \\~ » à la première tête de ligature"
+
+#. (pitch == prev_pitch)
+#: gregorian-ligature-engraver.cc:236
+msgid "cannot apply `\\~' on heads with identical pitch"
+msgstr "Impossible d'appliquer « \\~ » à des têtes ayant la même hauteur"
+
+#: chord-tremolo-engraver.cc:88
+msgid "No tremolo to end"
+msgstr "Il n'y a aucun trémolo à terminer"
+
+#: chord-tremolo-engraver.cc:109
+msgid "unterminated chord tremolo"
+msgstr "accord en tremolo non terminé"
+
+#: 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"
 
-#: rest-collision.cc:146
-msgid "cannot resolve rest collision: rest direction not set"
-msgstr "collision de silences insoluble : positionnement du silence indéterminée"
+#: axis-group-engraver.cc:95
+msgid "are there two Axis_group_engravers?"
+msgstr "Axis_group_engraver redondant"
 
-#: rest-collision.cc:160 rest-collision.cc:205
-msgid "too many colliding rests"
-msgstr "trop de silences se chevauchent"
+#: axis-group-engraver.cc:96
+msgid "removing this vertical group"
+msgstr "retrait de ce groupe vertical"
 
-#: rest.cc:159
+#: cluster.cc:120
 #, c-format
-msgid "rest `%s' not found"
-msgstr "silence « %s » inconnu"
+msgid "unknown cluster style `%s'"
+msgstr "style de cluster inconnu : « %s »"
 
-#: score-engraver.cc:78
-#, c-format
-msgid "cannot find `%s'"
-msgstr "impossible de trouver « %s »"
+#: cluster.cc:157
+msgid "junking empty cluster"
+msgstr "mise au rebut d'un cluster vide"
 
-#: score-engraver.cc:80
-msgid "Music font has not been installed properly."
-msgstr "Les fontes musicales n'ont pas été installées correctement."
+#: context-property.cc:42
+msgid "need symbol arguments for \\override and \\revert"
+msgstr "\\override et \\revert requièrent des arguments symboliques"
 
-#: score-engraver.cc:82
+#: source-file.cc:85
 #, c-format
-msgid "Search path `%s'"
-msgstr "Chemin de recherche : « %s »"
+msgid "expected to read %d characters, got %d"
+msgstr "au lieu de %d caractères à lire, il y en a %d"
 
-#: score-engraver.cc:84
-msgid "Aborting"
-msgstr "Abandon"
+#: axis-group-interface.cc:631
+msgid "an outside-staff object should have a direction, defaulting to up"
+msgstr ""
+"un objet externe à la portée devrait avoir un positionnement.\n"
+"Placé par défaut au-dessus."
 
-#: score.cc:178
-msgid "already have music in score"
-msgstr "il y a déjà de la musique dans la partition"
+#: coherent-ligature-engraver.cc:111
+#, c-format
+msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
+msgstr "Coherent_ligature_engraver : initialise `spacing-increment=0.01': ptr=%ul"
 
-#: score.cc:179
-msgid "this is the previous music"
-msgstr "voici la musique précédente"
+#: percent-repeat-engraver.cc:148
+msgid "unterminated percent repeat"
+msgstr "répétition en pourcent non terminée"
 
-#: score.cc:184
-msgid "errors found, ignoring music expression"
-msgstr "suite à des erreurs répétées, l'expression musicale sera ignorée"
+#: note-head.cc:76
+#, 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
@@ -2755,103 +2801,148 @@ msgstr "ne sait comment interpréter l'articulation"
 msgid " scheme encoding: "
 msgstr "encodage Scheme : "
 
-#: slur-engraver.cc:93
+#: all-font-metrics.cc:156
 #, c-format
-msgid "direction of %s invalid: %d"
-msgstr "l'orientation de %s n'est pas valide : %d"
+msgid "cannot find font: `%s'"
+msgstr "fonte « %s » introuvable"
 
-#: slur-engraver.cc:162
-msgid "unterminated slur"
-msgstr "liaison non terminée"
+#: property-iterator.cc:85
+#, c-format
+msgid "not a grob name, `%s'"
+msgstr " « %s » n'est pas un nom d'objet graphique (grob)"
 
-#: slur-engraver.cc:174
-msgid "cannot end slur"
-msgstr "impossible de terminer la liaison"
+#: bar-check-iterator.cc:84
+#, c-format
+msgid "barcheck failed at: %s"
+msgstr "échec du contrôle de mesure (barcheck) à : %s"
 
-#: slur.cc:369
+#: stem.cc:116
+msgid "weird stem size, check for narrow beams"
+msgstr "taille de hampe bizarre ; vérifier la présence de liens étroits"
+
+#: stem.cc:657
 #, 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 ?"
+msgid "flag `%s' not found"
+msgstr "crochet inconnu : « %s »"
 
-#: source-file.cc:85
+#: stem.cc:673
 #, c-format
-msgid "expected to read %d characters, got %d"
-msgstr "au lieu de %d caractères à lire, il y en a %d"
+msgid "flag stroke `%s' not found"
+msgstr "type de crochet inconnu : « %s »"
 
-#: spaceable-grob.cc:94
+#: global-context-scheme.cc:96 global-context-scheme.cc:114
+msgid "no music found in score"
+msgstr "Il n'y a pas de musique dans cette partition"
+
+#: global-context-scheme.cc:104
+msgid "Interpreting music... "
+msgstr "Interprétation en cours de la musique..."
+
+#: global-context-scheme.cc:127
 #, c-format
-msgid "No spring between column %d and next one"
-msgstr "Pas de tension entre la colonne %d et la suivante"
+msgid "elapsed time: %.2f seconds"
+msgstr "temps écoulé : %.2f secondes"
 
-#: stem-engraver.cc:103
-msgid "tremolo duration is too long"
-msgstr "durée du tremolo trop longue"
+#: translator-group-ctors.cc:40
+#, c-format
+msgid "fatal error. Couldn't find type: %s"
+msgstr "Erreur fatale. Type inconnu : %s"
 
-#. FIXME:
-#: stem-engraver.cc:140
+#: 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 "adding note head to incompatible stem (type = %d)"
-msgstr "Ajout d'une tête de note à une hampe incompatible (type = %d)"
+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"
 
-#: stem-engraver.cc:142
-msgid "maybe input should specify polyphonic voices"
-msgstr "la source devrait spécifier des voix polyphoniques"
+#: 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."
 
-#: stem.cc:116
-msgid "weird stem size, check for narrow beams"
-msgstr "taille de hampe bizarre ; vérifier la présence de liens étroits"
+#: 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)..."
 
-#: stem.cc:642
+#: page-turn-page-breaking.cc:300
 #, c-format
-msgid "flag `%s' not found"
-msgstr "crochet inconnu : « %s »"
+msgid "break starting at page %d"
+msgstr "saut intervenant à la page %d"
 
-#: stem.cc:658
+#: page-turn-page-breaking.cc:301
 #, c-format
-msgid "flag stroke `%s' not found"
-msgstr "type de crochet inconnu : « %s »"
+msgid "\tdemerits: %f"
+msgstr "        démérites : %f"
 
-#: system.cc:197
+#: page-turn-page-breaking.cc:302
 #, c-format
-msgid "Element count %d"
-msgstr "%d éléments dénombrés."
+msgid "\tsystem count: %d"
+msgstr "        nombre de systèmes : %d"
 
-#: system.cc:289
+#: page-turn-page-breaking.cc:303
 #, c-format
-msgid "Grob count %d"
-msgstr "%d objet graphiques (grob) dénombrés"
+msgid "\tpage count: %d"
+msgstr "        nombre de pages : %d"
 
-#: text-spanner-engraver.cc:73
-msgid "cannot find start of text spanner"
-msgstr "impossible de repérer le point de départ de l'extension de texte"
+#: page-turn-page-breaking.cc:304
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "        coupure précédente : %d"
 
-#: text-spanner-engraver.cc:86
-msgid "already have a text spanner"
-msgstr "a déjà une extension de texte"
+#: lily-parser.cc:106
+msgid "Parsing..."
+msgstr "Analyse..."
 
-#: text-spanner-engraver.cc:132
-msgid "unterminated text spanner"
-msgstr "extension de texte non terminée"
+#: lily-parser.cc:134
+msgid "braces do not match"
+msgstr "accolades non pairées"
 
-#: tie-engraver.cc:116
-msgid "unterminated tie"
-msgstr "liaison de prolongation non terminée"
+#: score.cc:178
+msgid "already have music in score"
+msgstr "il y a déjà de la musique dans la partition"
 
-#: tie-engraver.cc:312
-msgid "lonely tie"
-msgstr "liaison de prolongation orpheline"
+#: score.cc:179
+msgid "this is the previous music"
+msgstr "voici la musique précédente"
 
+#: score.cc:184
+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.
 #.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:75
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#: change-iterator.cc:102
 #, c-format
-msgid "strange time signature found: %d/%d"
-msgstr "Chiffrage de mesure inhabituel : %d/%d"
+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!)
@@ -2859,128 +2950,97 @@ msgstr "Chiffrage de mesure inhabituel : %d/%d"
 #, c-format
 msgid "time signature symbol `%s' not found; reverting to numbered style"
 msgstr ""
-"symbole de chiffrage de mesure « %s » inconnu ;\n"
-"retour à un style numérique"
-
-#: translator-ctors.cc:65
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "translateur inconnu : « %s »"
-
-#: translator-group-ctors.cc:40
-#, c-format
-msgid "fatal error. Couldn't find type: %s"
-msgstr "Erreur fatale. Type inconnu : %s"
+"symbole de chiffrage de mesure « %s » inconnu ;\n"
+"retour à un style numérique"
 
-#: translator-group.cc:188
+#: grob-interface.cc:68
 #, c-format
-msgid "cannot find: `%s'"
-msgstr " « %s » inconnu(e)"
+msgid "Unknown interface `%s'"
+msgstr "Interface inconnue : « %s »"
 
-#: translator.cc:359
+#: grob-interface.cc:79
 #, c-format
-msgid "Two simultaneous %s events, junking this one"
-msgstr "Deux événements %s simultanés, rejet de celui-ci"
+msgid "Grob `%s' has no interface for property `%s'"
+msgstr "L'objet graphique (Grob) « %s » n'a pas d'interface pour la propriété « %s »"
 
-#: translator.cc:360
+#: open-type-font.cc:44
 #, c-format
-msgid "Previous %s event here"
-msgstr "Événement %s précédent ici"
+msgid "cannot allocate %lu bytes"
+msgstr "impossible d'allouer %lu octets"
 
-#: ttf.cc:481 ttf.cc:530
+#: open-type-font.cc:48
 #, 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:513 ttf.cc:565
-msgid "font index must be non-negative, using index 0"
-msgstr "l'index de fonte ne peut être négatif ; réindexé sur 0"
-
-#: tuplet-engraver.cc:107
-msgid "No tuplet to end"
-msgstr "Aucun n-olet à terminer"
+msgid "cannot load font table: %s"
+msgstr "impossible de charger la table des fontes : %s"
 
-#: vaticana-ligature-engraver.cc:400
+#: open-type-font.cc:53
 #, c-format
-msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
-msgstr ""
-"préfixe(s) « %s » ignoré(s) pour la tête de note, \n"
-"selon les restrictions du style de ligature sélectionné"
+msgid "FreeType error: %s"
+msgstr "Erreur FreeType : %s"
 
-#: vaticana-ligature-engraver.cc:736
+#: open-type-font.cc:111
 #, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
-msgstr "Vaticana_ligature_engraver : fixé `spacing-increment = %f': ptr=%ul"
-
-#: 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"
-
-#: vaticana-ligature.cc:188
-msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr "Vaticana_ligature: aucun joint (delta_pitch == 0)"
+msgid "unsupported font format: %s"
+msgstr "format de police non supporté : %s"
 
-#. fixme: be more verbose.
-#: volta-engraver.cc:111
-msgid "cannot end volta spanner"
-msgstr "extension de reprise sans terminaison"
+#: open-type-font.cc:113
+#, c-format
+msgid "error reading font file %s: %s"
+msgstr "erreur de lecture du fichier de fontes %s : %s"
 
-#: volta-engraver.cc:121
-msgid "already have a volta spanner, ending that one prematurely"
-msgstr "extension de reprise déjà présente, fin prématurée de celle-ci"
+#: open-type-font.cc:188
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "erreur Freetype FT_Get_Glyph_Name () : %s"
 
-#: volta-engraver.cc:125
-msgid "also already have an ended spanner"
-msgstr "a déjà une extension terminée"
+#: midi-stream.cc:39
+#, c-format
+msgid "cannot open for write: %s: %s"
+msgstr "impossible d'ouvrir le fichier en écriture : %s : %s"
 
-#: volta-engraver.cc:126
-msgid "giving up"
-msgstr "abandon"
+#: midi-stream.cc:55
+#, c-format
+msgid "cannot write to file: `%s'"
+msgstr "impossible d'écrire dans le fichier « %s »"
 
-#: parser.yy:816
+#: parser.yy:820
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "dans la section \\score, utiliser \\layout au lieu de \\paper"
 
-#: parser.yy:840
+#: parser.yy:844
 msgid "need \\paper for paper block"
 msgstr "\\paper est nécessaire pour définir les paramètres de la page"
 
-#: parser.yy:1365
+#: parser.yy:1363
 msgid "only \\consists takes non-string argument."
 msgstr "seul \\consists peut prendre un argument autre qu'une chaîne"
 
-#: parser.yy:1378
+#: parser.yy:1376
 msgid "Grob name should be alphanumeric"
 msgstr "Un nom de Grob devrait être alphanumérique"
 
-#: parser.yy:1687
+#: parser.yy:1685
 msgid "second argument must be pitch list"
 msgstr "le second argument doit être une liste de hauteurs"
 
-#: parser.yy:1714 parser.yy:1719 parser.yy:2192
+#: parser.yy:1716 parser.yy:1721 parser.yy:2194
 msgid "have to be in Lyric mode for lyrics"
 msgstr "doit être en mode Lyric pour des paroles"
 
-#: parser.yy:1816
+#: parser.yy:1818
 msgid "expecting string as script definition"
 msgstr "chaîne requise pour définir un script"
 
-#: parser.yy:1971 parser.yy:2022
+#: parser.yy:1973 parser.yy:2024
 #, c-format
 msgid "not a duration: %d"
 msgstr "%d n'est pas une durée"
 
-#: parser.yy:2146
+#: parser.yy:2148
 msgid "have to be in Note mode for notes"
 msgstr "doit être en mode Note pour des notes"
 
-#: parser.yy:2207
+#: parser.yy:2209
 msgid "have to be in Chord mode for chords"
 msgstr "doit être en mode Chord pour des accords"
 
@@ -3061,174 +3121,373 @@ msgstr "Envisagez la mise à jour de la source à l'aide du script convert-ly"
 msgid "program too old: %s (file requires: %s)"
 msgstr "Programme plus qu'obsolète : %s (le fichier requiert %s)"
 
-#: backend-library.scm:35 ps-to-png.scm:66
+#: 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:198
+#, scheme-format
+msgid "cannot find description for property ~S (~S)"
+msgstr "impossible de trouver une description de la propriété ~S (~S)"
+
+#: parser-clef.scm:141 parser-clef.scm:181
+#, scheme-format
+msgid "unknown clef type `~a'"
+msgstr "type de clef inconnu : « ~a »"
+
+#: parser-clef.scm:142 parser-clef.scm:182
+#, scheme-format
+msgid "supported clefs: ~a"
+msgstr "clefs reconnues : ~a"
+
+#: document-backend.scm:132
+#, scheme-format
+msgid "pair expected in doc ~s"
+msgstr "le document ~s devrait contenir une paire"
+
+#: document-backend.scm:189
+#, scheme-format
+msgid "cannot find interface for property: ~S"
+msgstr "impossible de trouver l'interface pour la propriété ~S"
+
+#: document-backend.scm:199
+#, scheme-format
+msgid "unknown Grob interface: ~S"
+msgstr "interface d'objet graphique (Grob) inconnue : ~S"
+
+#: 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
+#, scheme-format
+msgid "symbol ~S redefined"
+msgstr "symbole « ~S » redéfini"
+
+#: paper.scm:115
+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:296
+#, scheme-format
+msgid "This is not a \\layout {} object, ~S"
+msgstr "~S n'est pas un objet de \\layout {}"
+
+#: paper.scm:308
+#, 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:323
+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
+#, scheme-format
+msgid "cannot find: ~A"
+msgstr "impossible de trouver ~A"
+
+#: lily.scm:350
+#, scheme-format
+msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
+msgstr "type d'argument erroné pour ~a. Attendait ~a, ~s trouvé"
+
+#: lily.scm:716
+msgid "Compilation successfully completed"
+msgstr "Compilation menée à son terme, avec succès."
+
+#: lily.scm:717
+msgid "Compilation completed with warnings or errors"
+msgstr "Compilation menée à son terme, avec des avertissements ou erreurs."
+
+#: lily.scm:779
+#, scheme-format
+msgid "job ~a terminated with signal: ~a"
+msgstr "le travail ~a s'est terminé avec le signal ~a"
+
+#: lily.scm:782
+#, scheme-format
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"fichier journal ~a (sortie ~a) :\n"
+"~a"
+
+#: lily.scm:804 lily.scm:882
+#, scheme-format
+msgid "failed files: ~S"
+msgstr "erreur sur les fichiers ~S"
+
+#: lily.scm:873
+#, scheme-format
+msgid "Redirecting output to ~a..."
+msgstr "Redirection de la sortie vers ~a..."
+
+#: lily.scm:892
+#, scheme-format
+msgid "Invoking `~a'...\n"
+msgstr "Appel de « ~a »...\n"
+
+#: graphviz.scm:64
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Écriture du graphique « ~a »..."
+
+#: framework-svg.scm:84
+#, scheme-format
+msgid "Updating font into: ~a"
+msgstr "Actualisation de la fonte dans ~a"
+
+#: layout-beam.scm:40
+#, scheme-format
+msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
+msgstr "Erreur de définition de ligature : attendait (~S,~S), ~S trouvé."
+
+#: layout-beam.scm:54
+#, 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."
+
+#: modal-transforms.scm:38
+msgid "'from' pitch not in scale; ignoring"
+msgstr "hauteur de départ (from) absente de la gamme ; rien à transposer"
+
+#: modal-transforms.scm:42 modal-transforms.scm:75
+msgid "'to' pitch not in scale; ignoring"
+msgstr "hauteur d'arrivée (to) absente de la gamme ; rien à transposer"
+
+#: modal-transforms.scm:46
+msgid "pitch to be transposed not in scale; ignoring"
+msgstr "hauteur à laquelle transposer absente de la gamme ; ignorée"
+
+#: modal-transforms.scm:71
+msgid "'around' pitch not in scale; ignoring"
+msgstr "hauteur pivot (around) absente de la gamme : rien à transposer"
+
+#: modal-transforms.scm:79
+msgid "pitch to be inverted not in scale; ignoring"
+msgstr "hauteur d'inversion absente de la gamme : ignorée"
+
+#: modal-transforms.scm:95
+msgid "negative replication count; ignoring"
+msgstr "compteur de réplication négatif : rien à transposer"
+
+#: backend-library.scm:29 ps-to-png.scm:68
 #, scheme-format
 msgid "Invoking `~a'..."
 msgstr "Appel de « ~a »..."
 
-#: backend-library.scm:45
+#: backend-library.scm:34
 #, scheme-format
 msgid "`~a' failed (~a)"
 msgstr "échec de « ~a » (~a)"
 
-#: backend-library.scm:130
+#: backend-library.scm:94
 #, scheme-format
 msgid "Converting to `~a'..."
 msgstr "Conversion à « ~a »..."
 
 #. Do not try to guess the name of the png file,
 #. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:140
+#: backend-library.scm:104
 #, scheme-format
 msgid "Converting to ~a..."
 msgstr "Conversion à ~a..."
 
-#: backend-library.scm:178
+#: backend-library.scm:142
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "écriture du champ d'entête « ~a » dans « ~a »..."
 
-#: backend-library.scm:228
+#: backend-library.scm:192
 #, scheme-format
 msgid "missing stencil expression `~S'"
 msgstr "absence d'expression stencil « ~S »"
 
-#: chord-entry.scm:50
+#: to-xml.scm:191
+#, scheme-format
+msgid "assertion failed: ~S"
+msgstr "erreur d'assertion : ~S"
+
+#: chord-entry.scm:49
 #, scheme-format
 msgid "Spurious garbage following chord: ~A"
 msgstr "Information incompréhensible à la suite de l'accord « ~A »"
 
-#: define-context-properties.scm:31 define-grob-properties.scm:21
-#: define-music-properties.scm:21
+#: lily-library.scm:758
+msgid ""
+"Find the index between @var{start} and @var{end} (an integer)\n"
+"which produces the closest match to @var{target-val} if\n"
+"applied to function @var{getter}."
+msgstr ""
+"Recherche un index compris entre @var{début} et @var{fin}\n"
+"(nombre entier) qui soit le plus proche de @var{valeur-cible}\n"
+"lorsqu'appliqué à la fonction @var{appelant}."
+
+#: lily-library.scm:832
 #, scheme-format
-msgid "symbol ~S redefined"
-msgstr "symbole « ~S » redéfini"
+msgid "unknown unit: ~S"
+msgstr "unité inconnue : ~S"
 
-#: define-event-classes.scm:78
-msgid "All classes must be the last in their matrilineal line."
-msgstr "Toute classe doit être la dernière de sa lignée."
+#: lily-library.scm:858 lily-library.scm:867
+msgid "warning:"
+msgstr "Avertissement :"
 
-#: define-event-classes.scm:82
-msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
+#: lily-library.scm:860
+#, scheme-format
+msgid "no \\version statement found, please add~afor future compatibility"
 msgstr ""
-"Chaque classe requiert que son pédigrée soit correctement défini\n"
-"dans la hiérarchie de la classe existante."
+"déclaration de \\version absente ;\n"
+"ajoutez ~a pour une compatibilité future"
+
+#: lily-library.scm:868
+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:289 output-svg.scm:550
+#, scheme-format
+msgid "unknown line-cap-style: ~S"
+msgstr "line-cap-style inconnu : ~S"
 
-#: define-event-classes.scm:148
+#: output-ps.scm:294 output-svg.scm:556
 #, scheme-format
-msgid "event class ~A seems to be unused"
-msgstr "la classe d'événement ~A semble être inutilisée"
+msgid "unknown line-join-style: ~S"
+msgstr "line-join-style inconnu : ~S"
 
-#. should be programming-error
-#: define-event-classes.scm:154
+#: output-svg.scm:47
 #, scheme-format
-msgid "translator listens to nonexisting event class ~A"
-msgstr "le traducteur écoute la classe d'événements ~A inexistante"
+msgid "undefined: ~S"
+msgstr "~S indéfini(e)"
 
-#: define-markup-commands.scm:803
-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 ?"
+#: output-svg.scm:151
+#, scheme-format
+msgid "cannot decypher Pango description: ~a"
+msgstr "la description de Pango ne peut être déchiffrée : ~a"
+
+#: output-svg.scm:231
+msgid "Glyph must have a unicode value"
+msgstr "Un glyphe doit avoir une valeur unicode"
 
-#: define-markup-commands.scm:2571
+#: output-svg.scm:283 output-svg.scm:293
 #, scheme-format
-msgid "Cannot find glyph ~a"
-msgstr "impossible de trouver le glyphe ~a"
+msgid "cannot find SVG font ~S"
+msgstr "fonte SVG ~S introuvable"
 
-#: define-markup-commands.scm:2831
+#: flag-styles.scm:148
 #, scheme-format
-msgid "no brace found for point size ~S "
-msgstr "il n'y a pas d'accolade qui fasse ~S points"
+msgid "flag stroke `~a' or `~a' not found"
+msgstr "type de crochet inconnu : « ~a » ou « ~a »"
+
+#: define-note-names.scm:962
+msgid "Select note names language."
+msgstr "Sélection de la langue des noms de note."
 
-#: define-markup-commands.scm:2832
+#: define-note-names.scm:969
 #, scheme-format
-msgid "defaulting to ~S pt"
-msgstr "application de la taille par défaut (~S pt)"
+msgid "Using `~a' note names..."
+msgstr "Utilisation de `~a' pour le nom des notes..."
 
-#: define-markup-commands.scm:2985
+#: define-note-names.scm:972
 #, scheme-format
-msgid "not a valid duration string: ~a"
-msgstr "chaîne de durée invalide : ~a"
+msgid "Could not find language `~a'.  Ignoring."
+msgstr "`~a' n'est pas une langue reconnue pour les noms de note. Abandon."
 
-#: define-music-types.scm:725
+#: define-music-types.scm:740
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "symbole requis : ~S"
 
-#: define-music-types.scm:728
+#: define-music-types.scm:743
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "impossible de trouver l'objet de type musique : ~S"
 
-#: define-music-types.scm:747
+#: define-music-types.scm:762
 #, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "type de répétition inconnu : « ~S »"
 
-#: define-music-types.scm:748
+#: define-music-types.scm:763
 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"
 
-#: document-backend.scm:132
-#, scheme-format
-msgid "pair expected in doc ~s"
-msgstr "le document ~s devrait contenir une paire"
-
-#: document-backend.scm:189
-#, scheme-format
-msgid "cannot find interface for property: ~S"
-msgstr "impossible de trouver l'interface pour la propriété ~S"
-
-#: document-backend.scm:199
+#: translation-functions.scm:341
 #, scheme-format
-msgid "unknown Grob interface: ~S"
-msgstr "interface d'objet graphique (Grob) inconnue : ~S"
+msgid "Negative fret for pitch ~a on string ~a"
+msgstr "La hauteur ~a sur la corde ~a donne un fret négatif"
 
-#: documentation-lib.scm:59
+#: translation-functions.scm:385
 #, scheme-format
-msgid "Processing ~S..."
-msgstr "Traitement de ~S..."
+msgid "No open string for pitch ~a"
+msgstr "Pas de corde à vide pour la hauteur ~a"
 
-#: documentation-lib.scm:176
+#: translation-functions.scm:400
 #, scheme-format
-msgid "Writing ~S..."
-msgstr "Écriture de ~S..."
+msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
+msgstr "Hauteur et corde requises demandent un fret négatif : corde ~a hauteur ~a"
 
-#: documentation-lib.scm:198
-#, scheme-format
-msgid "cannot find description for property ~S (~S)"
-msgstr "impossible de trouver une description de la propriété ~S (~S)"
+#: translation-functions.scm:401
+msgid "Ignoring string request."
+msgstr "Cette corde sera ignorée"
 
-#: flag-styles.scm:142
+#: translation-functions.scm:414
 #, scheme-format
-msgid "flag stroke `~a' or `~a' not found"
-msgstr "type de crochet inconnu : « ~a » ou « ~a »"
+msgid "No string for pitch ~a (given frets ~a)"
+msgstr "Aucune corde ne contient la hauteur ~a avec un fret ~a"
 
-#: framework-eps.scm:108
+#: translation-functions.scm:515
 #, scheme-format
-msgid "Writing ~a..."
-msgstr "Écriture de ~a..."
+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"
 
 #: framework-ps.scm:250
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr "intégration impossible : ~S=~S"
 
-#: framework-ps.scm:291
+#: framework-ps.scm:293
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr "impossible d'extraire le fichier ~a à partir de ~a"
 
-#: framework-ps.scm:309
+#: framework-ps.scm:311
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr "imposible de réaliser l'intégration ~S=~S"
 
-#: framework-ps.scm:334
+#: framework-ps.scm:336
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr "impossible d'intégrer les fontes ~s ~s ~s"
 
-#: framework-ps.scm:639
+#: framework-ps.scm:669
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3256,239 +3515,123 @@ msgstr ""
 "  %% Start cut-&-pastable-section\n"
 "  %% ****************************************************************\n"
 
-#: framework-svg.scm:84
-#, scheme-format
-msgid "Updating font into: ~a"
-msgstr "Actualisation de la fonte dans ~a"
-
-#: graphviz.scm:64
-#, scheme-format
-msgid "Writing graph `~a'..."
-msgstr "Écriture du graphique « ~a »..."
-
-#: layout-beam.scm:38
-#, scheme-format
-msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr "Erreur de définition de ligature : attendait (~S,~S), ~S trouvé."
-
-#: layout-beam.scm:52
-#, 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."
-
-#: lily-library.scm:747
-msgid ""
-"Find the index between @var{start} and @var{end} (an integer)\n"
-"which will produce the closest match to @var{target-val} when\n"
-"applied to function @var{getter}."
-msgstr ""
-"Recherche un index compris entre @var{début} et @var{fin}\n"
-"(nombre entier) qui soit le plus proche de @var{valeur-cible}\n"
-"lorsqu'appliqué à la fonction @var{appelant}."
-
-#: lily-library.scm:821
-#, scheme-format
-msgid "unknown unit: ~S"
-msgstr "unité inconnue : ~S"
-
-#: lily-library.scm:847 lily-library.scm:856
-msgid "warning:"
-msgstr "Avertissement :"
-
-#: lily-library.scm:849
-#, scheme-format
-msgid "no \\version statement found, please add~afor future compatibility"
-msgstr ""
-"déclaration de \\version absente ;\n"
-"ajoutez ~a pour une compatibilité future"
-
-#: lily-library.scm:857
-msgid "old relative compatibility not used"
-msgstr "compatibilité avec l'ancien mode relatif non utilisée"
-
-#: lily.scm:282
-#, scheme-format
-msgid "cannot find: ~A"
-msgstr "impossible de trouver ~A"
-
-#: lily.scm:342
-#, scheme-format
-msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr "type d'argument erroné pour ~a. Attendait ~a, ~s trouvé"
-
-#: lily.scm:704
-msgid "Compilation successfully completed"
-msgstr "Compilation menée à son terme, avec succès."
-
-#: lily.scm:705
-msgid "Compilation completed with warnings or errors"
-msgstr "Compilation menée à son terme, avec des avertissements ou erreurs."
-
-#: lily.scm:767
-#, scheme-format
-msgid "job ~a terminated with signal: ~a"
-msgstr "le travail ~a s'est terminé avec le signal ~a"
-
-#: lily.scm:770
-#, scheme-format
-msgid ""
-"logfile ~a (exit ~a):\n"
-"~a"
-msgstr ""
-"fichier journal ~a (sortie ~a) :\n"
-"~a"
-
-#: lily.scm:792 lily.scm:870
-#, scheme-format
-msgid "failed files: ~S"
-msgstr "erreur sur les fichiers ~S"
-
-#: lily.scm:861
-#, scheme-format
-msgid "Redirecting output to ~a..."
-msgstr "Redirection de la sortie vers ~a..."
-
-#: lily.scm:880
-#, scheme-format
-msgid "Invoking `~a'...\n"
-msgstr "Appel de « ~a »...\n"
-
-#: ly-syntax-constructors.scm:51
-msgid "Music head function must return Music object"
-msgstr "Une fonction musicale primitive devrait renvoyer un objet Music"
-
-#: ly-syntax-constructors.scm:176
-#, scheme-format
-msgid "Invalid property operation ~a"
-msgstr "Opération de propriété invalide : ~a"
-
-#: markup.scm:223
-#, scheme-format
-msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
-msgstr "Nombre d'arguments erroné. Requis : ~A, présent(s) ~A : ~S"
-
-#: markup.scm:229
-#, scheme-format
-msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
-msgstr "Argument invalide à la position ~A. ~A attendu, ~S trouvé."
-
-#: markup.scm:292
-#, scheme-format
-msgid "Not a markup command: ~A"
-msgstr "~A n'est pas une commande de type « markup»"
-
-#: music-functions.scm:265
+#: 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:294
+#: 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:601
+#: music-functions.scm:618
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "~S requiert de la musique"
 
 #. FIXME: uncomprehensable message
-#: music-functions.scm:649
+#: music-functions.scm:662
 #, 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"
 
-#: music-functions.scm:828
+#: music-functions.scm:846
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "impossible de trouver la citation de musique « ~S »"
 
-#: music-functions.scm:964
+#: music-functions.scm:982
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr "Ajoute @var{octave-shift} à l'octave de @var{hauteur}."
 
-#: music-functions.scm:1019
+#: music-functions.scm:1037
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "Octave inconnue : « ~S »"
 
-#: music-functions.scm:1020
+#: music-functions.scm:1038
 msgid "Defaulting to 'any-octave."
 msgstr "Application de la valeur par défaut 'any-octave."
 
-#: music-functions.scm:1355
+#: music-functions.scm:1378
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "style d'altération inconnu : ~S"
 
-#: output-ps.scm:289 output-svg.scm:550
+#: 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."
+
+#: define-event-classes.scm:83
+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-event-classes.scm:149
 #, scheme-format
-msgid "unknown line-cap-style: ~S"
-msgstr "line-cap-style inconnu : ~S"
+msgid "event class ~A seems to be unused"
+msgstr "la classe d'événement ~A semble être inutilisée"
 
-#: output-ps.scm:294 output-svg.scm:556
+#. should be programming-error
+#: define-event-classes.scm:155
 #, scheme-format
-msgid "unknown line-join-style: ~S"
-msgstr "line-join-style inconnu : ~S"
+msgid "translator listens to nonexisting event class ~A"
+msgstr "le traducteur écoute la classe d'événements ~A inexistante"
 
-#: output-svg.scm:47
+#: markup.scm:223
 #, scheme-format
-msgid "undefined: ~S"
-msgstr "~S indéfini(e)"
+msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgstr "Nombre d'arguments erroné. Requis : ~A, présent(s) ~A : ~S"
 
-#: output-svg.scm:151
+#: markup.scm:229
 #, scheme-format
-msgid "cannot decypher Pango description: ~a"
-msgstr "la description de Pango ne peut être déchiffrée : ~a"
+msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
+msgstr "Argument invalide à la position ~A. ~A attendu, ~S trouvé."
 
-#: output-svg.scm:231
-msgid "Glyph must have a unicode value"
-msgstr "Un glyphe doit avoir une valeur unicode"
+#: markup.scm:292
+#, scheme-format
+msgid "Not a markup command: ~A"
+msgstr "~A n'est pas une commande de type « markup»"
 
-#: output-svg.scm:283 output-svg.scm:293
+#: ps-to-png.scm:74
 #, scheme-format
-msgid "cannot find SVG font ~S"
-msgstr "fonte SVG ~S introuvable"
+msgid "~a exited with status: ~S"
+msgstr "~a s'est terminé avec le statut ~S"
 
-#: paper.scm:115
-msgid "set-global-staff-size: not in toplevel scope"
-msgstr "set-global-staff-size n'est pas à un niveau de portée globale"
+#: define-markup-commands.scm:803
+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 ?"
 
-#: paper.scm:296
+#: define-markup-commands.scm:2404
 #, scheme-format
-msgid "This is not a \\layout {} object, ~S"
-msgstr "~S n'est pas un objet de \\layout {}"
+msgid "Cannot find glyph ~a"
+msgstr "impossible de trouver le glyphe ~a"
 
-#: paper.scm:308
+#: define-markup-commands.scm:2830
 #, 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:323
-msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
-msgstr "#(set-paper-size ..) doit être dans la section \\paper { ... }"
+msgid "no brace found for point size ~S "
+msgstr "il n'y a pas d'accolade qui fasse ~S points"
 
-#: parser-clef.scm:140
+#: define-markup-commands.scm:2831
 #, scheme-format
-msgid "unknown clef type `~a'"
-msgstr "type de clef inconnu : « ~a »"
+msgid "defaulting to ~S pt"
+msgstr "application de la taille par défaut (~S pt)"
 
-#: parser-clef.scm:141
+#: define-markup-commands.scm:2984
 #, scheme-format
-msgid "supported clefs: ~a"
-msgstr "clefs reconnues : ~a"
+msgid "not a valid duration string: ~a"
+msgstr "chaîne de durée invalide : ~a"
 
-#: ps-to-png.scm:72
-#, scheme-format
-msgid "~a exited with status: ~S"
-msgstr "~a s'est terminé avec le statut ~S"
+#: ly-syntax-constructors.scm:51
+msgid "Music head function must return Music object"
+msgstr "Une fonction musicale primitive devrait renvoyer un objet Music"
 
-#: to-xml.scm:191
+#: ly-syntax-constructors.scm:177
 #, scheme-format
-msgid "assertion failed: ~S"
-msgstr "erreur d'assertion : ~S"
+msgid "Invalid property operation ~a"
+msgstr "Opération de propriété invalide : ~a"
index 34099734f589c1a4fc4facf416a767a64a1a1991..bbfe73a9a0c77600c4dda0fb91e4f817a93b3c46 100644 (file)
@@ -3196,7 +3196,7 @@ def conv(str):
 @rule ((2, 13, 51),
     _ ("Woodwind diagrams: Changes to the clarinet diagram."))
 def conv(str):
-    if re.search(r'woodwind-diagram', str):
+    if re.search(r'\\woodwind-diagram\s*#[^#]*clarinet\s', str):
         stderr_write("\n")
         stderr_write(NOT_SMART % _("woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"))
         stderr_write(UPDATE_MANUALLY)
index de702c3f6fdd96c2263ac86d07c60601df5e748a..3b3f369c872228795e439f49217d8f1f957c5d7c 100644 (file)
@@ -145,7 +145,7 @@ exceptions.  Contains @code{(@var{chord} . (@var{prefix-markup}
 @var{suffix-markup}))} entries.")
      (chordNameFunction ,procedure? "The function that converts lists
 of pitches to chord names.")
-        (chordNameLowercaseMinor ,boolean? "Downcase roots of minor chords?")
+     (chordNameLowercaseMinor ,boolean? "Downcase roots of minor chords?")
      (chordNameSeparator ,markup? "The markup object used to
 separate parts of a chord name.")
      (chordNoteNamer ,procedure? "A function that converts from a pitch
@@ -413,6 +413,7 @@ of the form @code{(list 'volta @var{x})}, where @var{x} is a string or
 arguments an integer and context, returning whether the corresponding
 percent repeat number should be printed when @code{countPercentRepeats}
 is set.")
+     (restCompletionBusy ,boolean? "Signal whether a completion-rest is active.")
      (restNumberThreshold ,number? "If a multimeasure rest has more
 measures than this, a number is printed.")
 
index 022ae640e1f208b82292ae682b88c72e274f502b..c632e430a95f37a1dd184e8a8cdef5e4906ce132 100644 (file)
@@ -25,7 +25,7 @@
                 (RemoveContext ChangeParent Override Revert UnsetProperty
                                SetProperty music-event OldMusicEvent CreateContext Prepare
                                OneTimeStep Finish))
-    (music-event . (annotate-output-event
+    (music-event . (annotate-output-event footnote-event
                    arpeggio-event breathing-event extender-event span-event
       rhythmic-event dynamic-event break-event label-event percent-event
       key-change-event string-number-event stroke-finger-event tie-event
index 23e5f4a0a9575a07c3fd34fd09050dc1fec74e2e..223cdafcf62f88a1a840401916883936b81bc793 100644 (file)
@@ -81,6 +81,16 @@ note)."
  "A fingering instruction."
  '())
 
+(ly:add-interface
+ 'footnote-interface
+ "Make a footnote."
+ '(footnote-text))
+
+(ly:add-interface
+ 'footnote-spanner-interface
+ "Make a footnote spanner."
+ '(footnote-text spanner-placement))
+
 (ly:add-interface
  'fret-diagram-interface
  "A fret diagram"
index b47a7bfc39fa7e06e7ba5a8b684857d85b8da458..aa6ce82cb7ff1c2bad24b65a9f06369ae50959a4 100644 (file)
@@ -48,6 +48,9 @@ be created below this bar line.")
      (alteration-alist ,list? "List of @code{(@var{pitch}
 . @var{accidental})} pairs for key signature.")
      (annotation ,string? "Annotate a grob for debug purposes.")
+     (annotation-balloon ,boolean? "Print the balloon around an annotation.")
+     (annotation-line ,boolean? "Print the line from an annotation to the
+grob that it annotates.")
      (arpeggio-direction ,ly:dir? "If set, put an arrow on the
 arpeggio squiggly line.")
      (arrow-length ,number? "Arrow length.")
@@ -293,6 +296,7 @@ include @code{upright}, @code{italic}, @code{caps}.")
 @code{-1} is smaller, @code{+1} is bigger.  Each step of@tie{}1 is
 approximately 12% larger; 6@tie{}steps are exactly a factor@tie{}2
 larger.  Fractional values are allowed.")
+     (footnote-text ,markup? "A footnote for the grob.")
      (force-hshift ,number? "This specifies a manual shift for notes
 in collisions.  The unit is the note head width of the first voice
 note.  This is used by @rinternals{note-collision-interface}.")
@@ -1029,6 +1033,16 @@ grobs.")
      (spacing-wishes ,ly:grob-array? "An array of note spacing or staff spacing
 objects.")
      (span-start ,boolean? "Is the note head at the start of a spanner?")
+     (spanner-placement ,number? "The place of an annotation on a spanner.
+Note that this number must be between -1 and 1, with -1 representing the
+beginning of the spanner and 1 representing the end.  The annotation will
+still be placed at the left or right extremity of the spanner, but this
+number ensures that when line breaking happens, the annotation is assigned
+to the correct broken piece and the footnote is put on the correct page.
+An important caveat is that this number applies to column ranks, not staff
+space.  For example, 0 will place the annotation at the middle column of
+its parent's span, which may be to the right or left of the physical middle
+of the spanner.")
      (staff-grouper ,ly:grob? "The staff grouper we belong to.")
      (staff-symbol ,ly:grob? "The staff symbol grob that we are in.")
      (stem ,ly:grob? "A pointer to a @code{Stem} object.")
index 7b2f1c1e87b852c681110a0ecb940c91fb5face3..e5658a8384d4c2745f709ea49917d440196048c8 100644 (file)
 
     (BalloonTextItem
      . (
+       (annotation-balloon . #t)
+       (annotation-line . #t)
        (stencil . ,ly:balloon-interface::print)
        (text . ,(grob::calc-property-by-copy 'text))
        (X-offset . ,(grob::calc-property-by-copy 'X-offset))
                                text-interface
                                text-script-interface))))))
 
+    (FootnoteItem
+     . (
+       (annotation-balloon . #f)
+       (annotation-line . #t)
+       (break-visibility . ,inherit-y-parent-visibility)
+       (footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
+       (stencil . ,ly:balloon-interface::print)
+       (text . ,(grob::calc-property-by-copy 'text))
+       (Y-extent . #f)
+       (X-offset . ,(grob::calc-property-by-copy 'X-offset))
+       (Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
+       (meta . ((class . Item)
+                (interfaces . (balloon-interface
+                               footnote-interface
+                               font-interface
+                               text-interface))))))
+
+    (FootnoteSpanner
+     . (
+       (annotation-balloon . #f)
+       (annotation-line . #t)
+       (footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
+       (spanner-placement . -1.0)
+       (stencil . ,ly:balloon-interface::print-spanner)
+       (text . ,(grob::calc-property-by-copy 'text))
+       (Y-extent . #f)
+       (X-offset . ,(grob::calc-property-by-copy 'X-offset))
+       (Y-offset . ,(grob::calc-property-by-copy 'Y-offset))
+       (meta . ((class . Spanner)
+                (interfaces . (balloon-interface
+                                footnote-interface
+                               footnote-spanner-interface
+                               font-interface
+                               text-interface))))))
+
     (FretBoard
      . (
        (after-line-breaking . ,ly:chord-name::after-line-breaking)
index 3e7c69429c8be25c07fd736449305201c1492301..9a576439fbd1386b35cf71c7eb85de52cf659b01 100644 (file)
@@ -139,6 +139,22 @@ A simple line.
         (y (cdr dest)))
     (make-line-stencil th 0 0 x y)))
 
+(define-markup-command (draw-hline layout props)
+  ()
+  #:category graphic
+  #:properties ((draw-line-markup)
+                (line-width))
+  "
+@cindex drawing a line across a page
+
+Draws a line across a page.
+@lilypond[verbatim,quote]
+\\markup {
+  \\draw-hline
+}
+@end lilypond"
+  (interpret-markup layout props (make-draw-line-markup (cons line-width 0))))
+
 (define-markup-command (draw-circle layout props radius thickness filled)
   (number? number? boolean?)
   #:category graphic
@@ -1812,6 +1828,20 @@ returns an empty markup.
                          (list markup?))
     (interpret-markup layout props (list anonymous-with-signature arg))))
 
+(define-markup-command (footnote layout props mkup note)
+  (markup? markup?)
+  #:category other
+  "Have footnote @var{note} act as an annotation to the markup @var{mkup}."
+  (ly:stencil-combine-at-edge
+    (interpret-markup layout props mkup)
+    X
+    RIGHT
+    (ly:make-stencil
+      `(footnote ,(interpret-markup layout props note))
+      '(0 . 0)
+      '(0 . 0))
+    0.0))
+
 (define-markup-command (override layout props new-prop arg)
   (pair? markup?)
   #:category other
index b18a10f3adf551cdd0d6fd4adb8ec020fa31b2c0..78a2dec6e1b71a89dd4624e9850180088e04b36b 100644 (file)
@@ -82,6 +82,7 @@ a sequential iterator.  Takes a single music parameter.")
                  "If true, a parsing error was found in this expression.")
 
      (figure ,integer? "A bass figure.")
+     (footnote-text ,markup? "Text to appear in a footnote.")
      (force-accidental ,boolean? "If set, a cautionary accidental should
 always be printed on this note.")
      (forced-type ,symbol? "Override for the part-combiner.")
index cdf5c0a6a1e1e92b5a8ef2f301894e0a53a5f031..d57cba811816f44214c150b8e781ae403eac8f95 100644 (file)
@@ -209,6 +209,11 @@ An alternative syntax is @var{note}@code{\\decr} @dots{}
        (types . (general-music fingering-event event))
        ))
 
+    (FootnoteEvent
+     . ((description . "Footnote a grob.")
+       (types . (general-music event footnote-event))
+       ))
+
     (GlissandoEvent
      . ((description . "Start a glissando on this note.")
        (types . (general-music glissando-event event))
index eb7f85ddc1dc137a7538348888bcbe5f2af4627f..4191a855329da164e231811e84aaa6e6525cfba7 100644 (file)
@@ -67,6 +67,7 @@ are used internally in @file{lily/stencil-interpret.cc}."
   '(color
     combine-stencil
     delay-stencil-evaluation
+    footnote
     rotate-stencil
     scale-stencil
     translate-stencil
index f00273add6e236028ade8dffbe917d4f7d8d21d2..27c69fdfbe82eba10f1d3dcc20fe8156863c0926 100644 (file)
@@ -244,6 +244,9 @@ and duration-log @var{log}."
 (define-public (inherit-x-parent-visibility grob)
   (let ((parent (ly:grob-parent grob X)))
     (ly:grob-property parent 'break-visibility all-invisible)))
+(define-public (inherit-y-parent-visibility grob)
+  (let ((parent (ly:grob-parent grob X)))
+    (ly:grob-property parent 'break-visibility)))
 
 
 (define-public spanbar-begin-of-line-invisible #(#t #f #f))
index f831123c3e81ba640aa83c8f7b79085ece799b65..c1f3543b88f6429135e8f7eef0f5301a90259c6b 100644 (file)
@@ -56,7 +56,7 @@ global_options = None
 clocks_per_1 = 1536
 clocks_per_4 = 0
 
-time = 0
+time = None
 reference_note = 0
 start_quant_clocks = 0
 
@@ -103,7 +103,7 @@ def error (s):
     raise Exception (_ ("Exiting... "))
 
 def debug (s):
-    if 0:
+    if global_options.debug:
         progress ("debug: " + s)
 
 def system (cmd, ignore_error = 0):
@@ -181,7 +181,11 @@ class Note:
         n = self.names[(self.pitch) % 12]
         a = self.alterations[(self.pitch) % 12]
 
-        if a and global_options.key.flats:
+        key = global_options.key
+        if not key:
+            key = Key (0, 0, 0)
+
+        if a and key.flats:
             a = - self.alterations[(self.pitch) % 12]
             n = (n - a) % 7
 
@@ -213,7 +217,6 @@ class Note:
 
         o = self.pitch / 12 - 4
 
-        key = global_options.key
         if key.minor:
             # as -> gis
             if (key.sharps == 0 and key.flats == 0
@@ -398,6 +401,7 @@ class Text:
 
     def dump (self):
         # urg, we should be sure that we're in a lyrics staff
+        s = ''
         if self.type == midi.LYRIC:
             s = '"%s"' % self.text
             d = Duration (self.clocks)
@@ -405,11 +409,13 @@ class Text:
                 or d.compare (reference_note.duration)):
                 s = s + Duration (self.clocks).dump ()
             s = s + ' '
-        elif self.text and self.type == midi.SEQUENCE_TRACK_NAME:
+        elif (self.text.strip ()
+              and self.type == midi.SEQUENCE_TRACK_NAME
+              and not self.text == 'control track'):
             text = self.text.replace ('(MIDI)', '').strip ()
             if text:
                 s = '\n  \\set Staff.instrumentName = "%(text)s"\n  ' % locals ()
-        else:
+        elif self.text.strip ():
             s = '\n  % [' + self.text_types[self.type] + '] ' + self.text + '\n  '
         return s
 
@@ -432,12 +438,13 @@ def split_track (track):
         else:
             chs[0].append (e)
 
-    for i in range (16):
-        if chs[i] == []:
-            del chs[i]
-
     threads = []
+    i = 0
     for v in chs.values ():
+        i += 1
+        if not v:
+            continue
+        debug ('channel: %d\n' % i)
         events = events_on_channel (v)
         t = unthread_notes (events)
         if len (t):
@@ -536,6 +543,9 @@ def events_on_channel (channel):
                     flats = 256 - alterations
 
                 k = Key (sharps, flats, minor)
+                if not t and global_options.key:
+                    # At t == 0, a set --key overrides us
+                    k = global_options.key
                 events.append ((t, k))
 
                 # ugh, must set key while parsing
@@ -653,7 +663,7 @@ def dump_bar_line (last_bar_t, t, bar_count):
         bar_count = bar_count + (t - last_bar_t) / bar_t
 
         if t - last_bar_t == bar_t:
-            s = '|\n  %% %d\n  ' % bar_count
+            s = '\n  | %% %(bar_count)d\n  ' % locals ()
             last_bar_t = t
         else:
             # urg, this will barf at meter changes
@@ -665,8 +675,6 @@ def dump_bar_line (last_bar_t, t, bar_count):
 def dump_voice (thread, skip):
     global reference_note, time
 
-    global_options.key = Key (0, 0, 0)
-    time = Time (4, 4)
     # urg LilyPond doesn't start at c4, but
     # remembers from previous tracks!
     # reference_note = Note (clocks_per_4, 4*12, 0)
@@ -751,8 +759,8 @@ def get_track_name (i):
 def get_channel_name (i):
     return 'channel' + number2ascii (i)
 
-def get_voice_name (i):
-    if True: #i:
+def get_voice_name (i, zero_too_p=False):
+    if i or zero_too_p:
         return 'voice' + number2ascii (i)
     return ''
 
@@ -781,8 +789,9 @@ def dump_track (track, n):
     clef = get_best_clef (average_pitch[0])
 
     c = 0
-    v = 0
+    vv = 0
     for channel in track:
+        v = 0
         channel_name = get_channel_name (c)
         c += 1
         for voice in channel:
@@ -791,7 +800,9 @@ def dump_track (track, n):
             item = voice_first_item (voice)
 
             if item and item.__class__ == Note:
-                skip = 's'
+                skip = 'r'
+                if global_options.skip:
+                    skip = 's'
                 s += '%(voice_id)s = ' % locals ()
                 if not global_options.absolute_pitches:
                     s += '\\relative c '
@@ -802,11 +813,14 @@ def dump_track (track, n):
                 skip = '\\skip '
                 s += '%(voice_id)s = ' % locals ()
             s += '{\n'
-            if average_pitch[v+1] and voices > 1:
-                s += '  \\voice' + get_voice_layout (average_pitch[1:])[v] + '\n'
+            if not n and not vv and global_options.key:
+                s += global_options.key.dump ()
+            if average_pitch[vv+1] and voices > 1:
+                s += '  \\voice' + get_voice_layout (average_pitch[1:])[vv] + '\n'
             s += '  ' + dump_voice (voice, skip)
             s += '}\n\n'
             v += 1
+            vv += 1
 
     s += '%(track_name)s = <<\n' % locals ()
 
@@ -814,19 +828,22 @@ def dump_track (track, n):
         s += clef.dump () + '\n'
 
     c = 0
-    v = 0
+    vv = 0
     for channel in track:
+        v = 0
         channel_name = get_channel_name (c)
         c += 1
         for voice in channel:
+            voice_context_name = get_voice_name (vv, zero_too_p=True)
             voice_name = get_voice_name (v)
             v += 1
+            vv += 1
             voice_id = track_name + channel_name + voice_name
             item = voice_first_item (voice)
             context = 'Voice'
             if item and item.__class__ == Text:
                 context = 'Lyrics'
-            s += '  \\context %(context)s = %(voice_name)s \\%(voice_id)s\n' % locals ()
+            s += '  \\context %(context)s = %(voice_context_name)s \\%(voice_id)s\n' % locals ()
     s += '>>\n\n'
     return s
 
@@ -888,6 +905,7 @@ def convert_midi (in_file, out_file):
     global start_quant_clocks
     global duration_quant_clocks
     global allowed_tuplet_clocks
+    global time
 
     str = open (in_file, 'rb').read ()
     clocks_max = bar_max * clocks_per_1 * 2
@@ -895,6 +913,7 @@ def convert_midi (in_file, out_file):
 
     clocks_per_1 = midi_dump[0][1]
     clocks_per_4 = clocks_per_1 / 4
+    time = Time (4, 4)
 
     if global_options.start_quant:
         start_quant_clocks = clocks_per_1 / global_options.start_quant
@@ -911,7 +930,6 @@ def convert_midi (in_file, out_file):
 
     tracks = []
     for t in midi_dump[1]:
-        global_options.key = Key (0, 0, 0)
         tracks.append (split_track (t))
 
     tag = '%% Lily was here -- automatically converted by %s from %s' % ( program_name, in_file)
@@ -928,6 +946,8 @@ def convert_midi (in_file, out_file):
     \Voice
     \remove "Note_heads_engraver"
     \consists "Completion_heads_engraver"
+    \remove "Rest_engraver"
+    \consists "Completion_rest_engraver"
   }
 }
 '''
@@ -948,12 +968,18 @@ def convert_midi (in_file, out_file):
     for t in tracks:
         track_name = get_track_name (i)
         item = track_first_item (t)
-
-        if item and item.__class__ == Note:
-            s += '    \\context Staff=%(track_name)s \\%(track_name)s\n' % locals ()
+        staff_name = track_name
+        context = None
+        if not i and not item and len (tracks) > 1:
+            # control track
+            staff_name = get_track_name (1)
+            context = 'Staff'
+        elif (item and item.__class__ == Note):
+            context = 'Staff'
         elif item and item.__class__ == Text:
-            s += '    \\context Lyrics=%(track_name)s \\%(track_name)s\n' % locals ()
-
+            context = 'Lyrics'
+        if context:
+            s += '    \\context %(context)s=%(staff_name)s \\%(track_name)s\n' % locals ()
         i += 1
     s = s + '  >>\n}\n'
 
@@ -979,6 +1005,9 @@ def get_option_parser ():
     p.add_option ('-d', '--duration-quant',
            metavar=_ ('DUR'),
            help=_ ('quantise note durations on DUR'))
+    p.add_option ('-D', '--debug',
+                  action='store_true',
+                  help=_ ('debug printing'))
     p.add_option ('-e', '--explicit-durations',
            action='store_true',
            help=_ ('print explicit durations'))
@@ -992,7 +1021,7 @@ def get_option_parser ():
                  metavar=_ ('FILE'))
     p.add_option('-k', '--key', help=_ ('set key: ALT=+sharps|-flats; MINOR=1'),
           metavar=_ ('ALT[:MINOR]'),
-          default='0'),
+          default=None),
     p.add_option ('-o', '--output', help=_ ('write output to FILE'),
            metavar=_ ('FILE'),
            action='store')
@@ -1000,6 +1029,9 @@ def get_option_parser ():
            action='store_true')
     p.add_option ('-s', '--start-quant',help= _ ('quantise note starts on DUR'),
            metavar=_ ('DUR'))
+    p.add_option ('-S', '--skip',
+           action = "store_true",
+           help =_ ("use s instead of r for rests"))
     p.add_option ('-t', '--allow-tuplet',
            metavar=_ ('DUR*NUM/DEN'),
            action = 'append',
@@ -1036,6 +1068,10 @@ def do_options ():
     opt_parser = get_option_parser ()
     (options, args) = opt_parser.parse_args ()
 
+    if options.warranty:
+        warranty ()
+        sys.exit (0)
+
     if not args or args[0] == '-':
         opt_parser.print_help ()
         ly.stderr_write ('\n%s: %s %s\n' % (program_name, _ ('error: '),
@@ -1045,10 +1081,7 @@ def do_options ():
     if options.duration_quant:
         options.duration_quant = int (options.duration_quant)
 
-    if options.warranty:
-        warranty ()
-        sys.exit (0)
-    if 1:
+    if options.key:
         (alterations, minor) = map (int, (options.key + ':0').split (':'))[0:2]
         sharps = 0
         flats = 0
@@ -1056,7 +1089,6 @@ def do_options ():
             sharps = alterations
         else:
             flats = - alterations
-
         options.key = Key (sharps, flats, minor)
 
     if options.start_quant:
@@ -1080,30 +1112,33 @@ def do_options ():
 def main ():
     files = do_options ()
 
+    exts = ['.midi', '.mid', '.MID']
     for f in files:
         g = f
-        g = strip_extension (g, '.midi')
-        g = strip_extension (g, '.mid')
-        g = strip_extension (g, '.MID')
-        (outdir, outbase) = ('','')
+        for e in exts:
+            g = strip_extension (g, e)
+        if not os.path.exists (f):
+            for e in exts:
+                n = g + e
+                if os.path.exists (n):
+                    f = n
+                    break
 
         if not global_options.output:
             outdir = '.'
             outbase = os.path.basename (g)
-            o = os.path.join (outdir, outbase + '-midi.ly')
-        elif global_options.output[-1] == os.sep:
+            o = outbase + '-midi.ly'
+        elif (global_options.output[-1] == os.sep
+              or os.path.isdir (global_options.output)):
             outdir = global_options.output
             outbase = os.path.basename (g)
-            os.path.join (outdir, outbase + '-gen.ly')
+            o = os.path.join (outdir, outbase + '-midi.ly')
         else:
             o = global_options.output
             (outdir, outbase) = os.path.split (o)
 
-        if outdir != '.' and outdir != '':
-            try:
-                os.mkdir (outdir, 0777)
-            except OSError:
-                pass
+        if outdir and outdir != '.' and not os.path.exists (outdir):
+            os.mkdir (outdir, 0777)
 
         convert_midi (f, o)