]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of /home/jcharles/GIT/Lily/. into translation
authorJean-Charles Malahieude <lilyfan@orange.fr>
Sat, 26 Sep 2015 16:22:44 +0000 (18:22 +0200)
committerJean-Charles Malahieude <lilyfan@orange.fr>
Sat, 26 Sep 2015 16:22:44 +0000 (18:22 +0200)
71 files changed:
Documentation/changes.tely
Documentation/contributor/build-notes.itexi
Documentation/de/notation/chords.itely
Documentation/de/notation/fretted-strings.itely
Documentation/de/notation/notation-appendices.itely
Documentation/de/notation/text.itely
Documentation/es/notation/chords.itely
Documentation/es/notation/fretted-strings.itely
Documentation/es/notation/notation-appendices.itely
Documentation/es/notation/text.itely
Documentation/fr/notation/chords.itely
Documentation/fr/notation/fretted-strings.itely
Documentation/fr/notation/notation-appendices.itely
Documentation/fr/notation/text.itely
Documentation/included/authors.itexi
Documentation/it/notation/text.itely
Documentation/ja/notation/chords.itely
Documentation/ja/notation/fretted-strings.itely
Documentation/ja/notation/text.itely
Documentation/learning/templates.itely
Documentation/learning/tweaks.itely
Documentation/notation/changing-defaults.itely
Documentation/notation/chords.itely
Documentation/notation/fretted-strings.itely
Documentation/notation/notation-appendices.itely
Documentation/notation/text.itely
Documentation/snippets/changing-stanza-fonts.ly
Documentation/snippets/changing-the-default-text-font-family.ly
Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly
Documentation/snippets/new/changing-stanza-fonts.ly [new file with mode: 0644]
Documentation/snippets/new/changing-the-default-text-font-family.ly [new file with mode: 0644]
Documentation/snippets/new/defining-an-engraver-in-scheme--ambitus-engraver.ly [new file with mode: 0644]
Documentation/snippets/new/single-staff-template-with-notes-and-chords.ly [new file with mode: 0644]
Documentation/snippets/new/unfretted-headword.ly
Documentation/snippets/single-staff-template-with-notes-and-chords.ly
Documentation/snippets/unfretted-headword.ly
Documentation/usage/running.itely
input/regression/font-family-override.ly
input/regression/font-name.ly
input/regression/font-postscript.ly
input/regression/markup-music-glyph.ly
input/regression/metronome-mark-formatter.ly
input/regression/part-combine-unequal-lengths.ly [new file with mode: 0644]
input/regression/repeat-tie-parenthesize.ly [new file with mode: 0644]
input/regression/revert-once.ly [new file with mode: 0644]
lily/accidental-placement.cc
lily/axis-group-interface.cc
lily/context-property.cc
lily/context-scheme.cc
lily/context.cc
lily/engraver-group.cc
lily/include/context.hh
lily/include/grob-properties.hh
lily/include/property-iterator.hh
lily/multi-measure-rest-engraver.cc
lily/nested-property.cc
lily/property-iterator.cc
lily/repeat-tie-engraver.cc
ly/music-functions-init.ly
po/de.po
po/nl.po
python/convertrules.py
scm/chord-entry.scm
scm/define-grobs.scm
scm/define-markup-commands.scm
scm/define-music-display-methods.scm
scm/font.scm
scm/music-functions.scm
scm/paper.scm
scm/part-combiner.scm
scm/translation-functions.scm

index ca142c3286fc8bbe11b116ac05ddbdbd52e8da45..7ba1fa281bee1eff0d4d02ce6a4079250b596efd 100644 (file)
@@ -61,6 +61,24 @@ which scares away people.
 
 @end ignore
 
+@item
+All of @code{\override}, @code{\revert}, @code{\set}, and
+@code{\unset} now work with the @code{\once} prefix for making
+one-time settings.
+@lilypond[quote,verbatim]
+\relative {
+  c'4 d
+  \override NoteHead.color = #red
+  e4 f |
+  \once \override NoteHead.color = #green
+  g4 a
+  \once \revert NoteHead.color
+  b c |
+  \revert NoteHead.color
+  f2 c |
+}
+@end lilypond
+
 @item
 When outputting MIDI, LilyPond will now store the @code{title}
 defined in a score's @code{\header} block (or, if there is no
index b8dff79c1fae6f26dc8fff54e3da40e19946efe0..a5f8c2ccc0b00acc39df6983675bc03c57db2f54 100644 (file)
@@ -14,7 +14,6 @@ chapter.}
 * General build system notes::
 * Doc build::
 * Website build::
-* Building an Ubuntu distro::
 @end menu
 
 
@@ -1447,66 +1446,3 @@ website:
     runs website_post.py
   Then some file copying
 @end example
-
-@node Building an Ubuntu distro
-@section Building an Ubuntu distro
-
-
-Here's the short instruction on how to create lilybuntu iso image
-(Jonathan Kulp did this on a spare drive,
-but he supposes it can be done in a VM too):
-
-@enumerate
-
-@item
-Install ubuntu, reboot.
-@item
-Run all updates, reboot if asked.
-@item
-Enable src repos, refresh package lists.
-@item
-Install LilyPond build deps:
-@example
-sudo apt-get build-dep lilypond
-@end example
-@item
-Install git and autoconf:
-@example
-sudo apt-get install git-core gitk autoconf
-@end example
-
-@item
-Test to see whether everything works fine now:
-@enumerate
-@item
-use @command{lily-git.tcl} to grab source files
-@item
-go to source dir and do
-@example
-"./autogen.sh" ; make ; make doc
-@end example
-@item
-if all compiles, move on to iso creation...
-@end enumerate
-
-@item
-Download & install "remastersys":
-@uref{http://sourceforge.net/projects/remastersys/, http://sourceforge.net/projects/remastersys/}
-@item
-Copy @command{lily-git.tcl} script file into @file{/etc/skel/}.
-@item
-Modify @file{/etc/remastersys.conf} as desired (change @code{.iso} name,
-default live session username, etc).
-@item
-Remove non-essential desktop software as desired.
-@item
-Create iso:
-@example
-sudo remastersys dist
-@end example
-New iso is in @file{/home/remastersys/remastersys/}.
-@item
-Test iso by installing in VM and repeating steps above for
-getting source files and building lp and docs.
-
-@end enumerate
index 60d05574a92c1d4cc52b2a9e99c5d5e1342a2b83..224ce8f5369123cc08dd63fa666e90147b65e1cc 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @c Translators: Till Paala
 
@@ -326,7 +326,7 @@ die große.
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c1:5.6 c:3.7.8 c:3.6.13
+  c1:3.5.6 c:3.7.8 c:3.6.13
 }
 @end lilypond
 
@@ -335,7 +335,7 @@ Hinzugefügte Stufen können beliebig groß sein:
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c4:5.15 c:5.20 c:5.25 c:5.30
+  c4:3.5.15 c:3.5.20 c:3.5.25 c:3.5.30
 }
 @end lilypond
 
@@ -380,7 +380,7 @@ einer @code{4} die vierte Stufe hinzugefügt.  @code{sus} entspricht
 
 @lilypond[quote,ragged-right,verbatim]
 \chordmode {
-  c1:sus c:sus2 c:sus4 c:5.4^3
+  c1:5 c:sus2 c:sus4 c:5.4
 }
 @end lilypond
 
@@ -430,7 +430,7 @@ weil @code{5+} zuletzt gelesen wird.
 
 @cindex Cluster
 @lilypond[quote,ragged-right,verbatim]
-\chordmode { c1:5.5-.5+ }
+\chordmode { c1:3.5.5-.5+ }
 @end lilypond
 
 Nur die zweite Umkehrung kann erstellt werden, indem eine
index c95560d0e6a7c5064a6158297cb3d23bafe9b95f..c421085d9aff7559d5c307df6c455d72772ebdee 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @c Translators: Till Paala
 
@@ -1833,11 +1833,11 @@ gesetzt werden:
 ChordsAndSymbols = {
   \chordmode {
     \powerChords
-    e,,1:1.5
-    a,,1:1.5.8
+    e,,1:5
+    a,,1:5.8
     \set minimumFret = #8
-    c,1:1.5
-    f,1:1.5.8
+    c,1:5
+    f,1:5.8
   }
   \set minimumFret = #5
   <a, e>1
@@ -1866,8 +1866,8 @@ normalen Akkord-Modifikatoren verwendet wird:
 mixedChords = \chordmode {
   c,1
   \powerChords
-  b,,1:1.5
-  fis,,1:1.5.8
+  b,,1:5
+  fis,,1:5.8
   g,,1:m
 }
 \score {
index 25594288e3c1854d0970f1f1be9b86a7dee64cb5..a0e4c30173e8eb378f6b678a7a5b8dcc7620ac42 100644 (file)
@@ -10,7 +10,7 @@
 
 @c Translators: Till Paala
 
-@c \version "2.16.0"
+@c \version "2.19.28"
 
 @node Notationsübersicht
 @appendix Notationsübersicht
@@ -405,7 +405,7 @@ Perfekte Quinte
 @lilypond[line-width=3\cm,noragged-right, notime]
 \chordmode {
   \powerChords
-  c1:1.5
+  c1:5
 }
 @end lilypond
 
@@ -419,7 +419,7 @@ Perfekte Quinte, Oktave
 @lilypond[line-width=3\cm,noragged-right, notime]
 \chordmode {
   \powerChords
-  c1:1.5.8
+  c1:5.8
 }
 @end lilypond
 
index fedd9bf80717118fa4fe98ce6bdcfbe23811a2ac..9179e508fac7243b16f90b208fd85ecf63a89250 100644 (file)
@@ -1593,8 +1593,8 @@ verwendet man folgende Syntax:
 \time 3/4
 
 a'1_\markup {
-  \override #'(font-name . "Vera Bold")
-    { Vera Bold }
+  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
+    { Vera Oblique Bold }
 }
 @end lilypond
 
@@ -1643,7 +1643,7 @@ Schriftarten in @ref{Was sind Schriftarten}.
   myStaffSize = #20
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
                            (/ myStaffSize 20)))
 }
index 480b590f8b80f2498e1577b87203cf744a3b8a21..3d26feb860eb3f35efae6c43f902f216571d9fd6 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @node Notación de acordes
 @section Notación de acordes
@@ -314,7 +314,7 @@ que se añade a un acorde es la séptima menor, no mayor.
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c1:5.6 c:3.7.8 c:3.6.13
+  c1:3.5.6 c:3.7.8 c:3.6.13
 }
 @end lilypond
 
@@ -322,7 +322,7 @@ Las notas añadidas pueden ser tan agudas como se desee.
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c4:5.15 c:5.20 c:5.25 c:5.30
+  c4:3.5.15 c:3.5.20 c:3.5.25 c:3.5.30
 }
 @end lilypond
 
@@ -364,7 +364,7 @@ al acorde, respectivamente.  @code{sus} equivale a @code{^3};
 
 @lilypond[quote,ragged-right,verbatim]
 \chordmode {
-  c1:sus c:sus2 c:sus4 c:5.4^3
+  c1:5 c:sus2 c:sus4 c:5.4
 }
 @end lilypond
 
@@ -411,7 +411,7 @@ sigue produce simplemente el acorde aumentado, porque @code{5+} se
 interpreta en último lugar.
 
 @lilypond[quote,ragged-right,verbatim]
-\chordmode { c1:5.5-.5+ }
+\chordmode { c1:3.5.5-.5+ }
 @end lilypond
 
 Sólo se puede crear la segunda inversión mediante la adición de un
index 1db5f7a9f718a03b4516f8066c9c75d28ea7748a..34b753260171f1c34197265be082b882a44eabec 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @node Instrumentos de cuerda con trastes
 @section Instrumentos de cuerda con trastes
@@ -1849,11 +1849,11 @@ en el modo de acordes o como construcciones de acorde normales:
 ChordsAndSymbols = {
   \chordmode {
     \powerChords
-    e,,1:1.5
-    a,,1:1.5.8
+    e,,1:5
+    a,,1:5.8
     \set minimumFret = #8
-    c,1:1.5
-    f,1:1.5.8
+    c,1:5
+    f,1:5.8
   }
   \set minimumFret = #5
   <a, e>1
@@ -1883,8 +1883,8 @@ acorde:
 mixedChords = \chordmode {
   c,1
   \powerChords
-  b,,1:1.5
-  fis,,1:1.5.8
+  b,,1:5
+  fis,,1:5.8
   g,,1:m
 }
 \score {
index 89bf5835698598d0feb3e28766f01bb7df963cf2..3611fc38ab8a122864313acc392a5549b96814e5 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.16.0"
+@c \version "2.19.28"
 
 @node Tablas del manual sobre notación
 @appendix Tablas del manual sobre notación
@@ -478,10 +478,10 @@ Quinta justa
 @tab
 @code{1.5}
 @tab
-@code{\powerChords c1:1.5}
+@code{\powerChords c1:5}
 @tab
 @lilypond[line-width=2.1\cm,noragged-right,notime]
-\chordmode { \powerChords c1:1.5 }
+\chordmode { \powerChords c1:5 }
 @end lilypond
 
 @item
@@ -491,10 +491,10 @@ Quinta justa, @*octava
 @tab
 @code{1.5.8}
 @tab
-@code{\powerChords c1:1.5.8}
+@code{\powerChords c1:5.8}
 @tab
 @lilypond[line-width=2.1\cm,noragged-right,notime]
-  \chordmode { \powerChords c1:1.5.8 }
+  \chordmode { \powerChords c1:5.8 }
 @end lilypond
 
 @end multitable
index 2a55ec7252360db7d95ba797a97601b7fcb3b5c3..368e8e1f998acb94e3584741669f8007cd145878 100644 (file)
@@ -1576,8 +1576,8 @@ FontConfig, usando la siguiente sintaxis:
 \time 3/4
 
 a'1_\markup {
-  \override #'(font-name . "Vera Bold")
-    { Vera Bold }
+  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
+    { Vera Oblique Bold }
 }
 @end lilypond
 
@@ -1629,7 +1629,7 @@ sobre las fuentes tipográficas, consulte @ref{Explicación de las fuentes tipog
 \paper  {
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
                           (/ staff-height pt 20)))
 }
index b6665d56258ae10678b91ff431c3ad2832418002..fc79bfd75c3a21736006269a8bdb8aa006f242f4 100644 (file)
@@ -8,7 +8,7 @@
    Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @c Translators: Valentin Villenave,Jean-Charles Malahieude
 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
@@ -293,7 +293,7 @@ que si l'on y ajoute une septième, celle-ci sera minorée et non majeure.
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c1:5.6 c:3.7.8 c:3.6.13
+  c1:3.5.6 c:3.7.8 c:3.6.13
 }
 @end lilypond
 
@@ -301,7 +301,7 @@ Les notes ajoutées peuvent monter aussi haut que de besoin.
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c4:5.15 c:5.20 c:5.25 c:5.30
+  c4:3.5.15 c:3.5.20 c:3.5.25 c:3.5.30
 }
 @end lilypond
 
@@ -342,7 +342,7 @@ quarte.  @code{sus} est équivalent à @code{^3} ; @code{sus4} est
 
 @lilypond[quote,ragged-right,verbatim]
 \chordmode {
-  c1:sus c:sus2 c:sus4 c:5.4^3
+  c1:5 c:sus2 c:sus4 c:5.4
 }
 @end lilypond
 
@@ -388,7 +388,7 @@ dans l'accord suivant, seule la quinte augmentée est prise en compte,
 parce qu'elle est indiquée en dernier :
 
 @lilypond[quote,ragged-right,verbatim]
-\chordmode { c1:5.5-.5+ }
+\chordmode { c1:3.5.5-.5+ }
 @end lilypond
 
 
index c72b696cb7ac9b5f13efc5747434ce228d753606..5b679de75bcf452cc74af016066d1b902d6b5325 100644 (file)
@@ -8,7 +8,7 @@
    Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @c Translators: Matthieu Jacquot
 @c Translation checkers: Jean-Charles Malahieude
@@ -1867,11 +1867,11 @@ dans une construction en accord :
 ChordsAndSymbols = {
   \chordmode {
     \powerChords
-    e,,1:1.5
-    a,,1:1.5.8
+    e,,1:5
+    a,,1:5.8
     \set minimumFret = #8
-    c,1:1.5
-    f,1:1.5.8
+    c,1:5
+    f,1:5.8
   }
   \set minimumFret = #5
   <a, e>1
@@ -1900,8 +1900,8 @@ accord traditionnel :
 mixedChords = \chordmode {
   c,1
   \powerChords
-  b,,1:1.5
-  fis,,1:1.5.8
+  b,,1:5
+  fis,,1:5.8
   g,,1:m
 }
 \score {
index 90cf236fde37e9eafcc8c8265f04d37785bc5436..48c6fb176d760db5a98fffe723965ebe9fbc6216 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.16.0"
+@c \version "2.19.28"
 
 @c Translators: Frédéric Chiasson, Jean-Charles Malahieude
 
@@ -480,10 +480,10 @@ Quinte juste
 @tab
 @code{1.5}
 @tab
-@code{\powerChords c1:1.5}
+@code{\powerChords c1:5}
 @tab
 @lilypond[line-width=2.1\cm,noragged-right,notime]
-\chordmode { \powerChords c1:1.5 }
+\chordmode { \powerChords c1:5 }
 @end lilypond
 
 @item
@@ -493,10 +493,10 @@ Quinte juste @*et octave
 @tab
 @code{1.5.8}
 @tab
-@code{\powerChords c1:1.5.8}
+@code{\powerChords c1:5.8}
 @tab
 @lilypond[line-width=2.1\cm,noragged-right,notime]
-  \chordmode { \powerChords c1:1.5.8 }
+  \chordmode { \powerChords c1:5.8 }
 @end lilypond
 
 @end multitable
index 56f08f8538bc7657e3c05fa031b5f0f6807a5266..4d095ff7cb06ce4842250d2c8662e5a2c6b9744c 100644 (file)
@@ -1600,8 +1600,8 @@ respectez la syntaxe suivante :
 \time 3/4
 
 a'1_\markup {
-  \override #'(font-name . "Vera Bold")
-    { Vera Bold }
+  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
+    { Vera Oblique Bold }
 }
 @end lilypond
 
@@ -1653,7 +1653,7 @@ portées.  Pour plus d'explications sur les fontes, relisez
 \paper  {
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
                            (/ staff-height pt 20)))
 }
index 7eb505986503ba96096a35a2fc7bc6b89cfef1cf..fd79a8aed50c712c72f8067b9145f31dbb685e96 100644 (file)
@@ -57,9 +57,6 @@ Bug meister
 @uref{http://www.philholmes.net}
 Build unentangler, Bug squad member
 
-@item Ian Hulin:
-Core developer
-
 @item David Kastrup:
 @email{dak@@gnu.org},
 hard core developer, user and programming interfaces, bug squashing and
@@ -69,9 +66,6 @@ swamp drainage.
 @email{wl@@gnu.org},
 Fonts, bug squasher
 
-@item Joe Neeman:
-Core developer
-
 @item Han-Wen Nienhuys:
 @email{hanwen@@xs4all.nl},
 @uref{http://www.xs4all.nl/~hanwen/},
@@ -86,10 +80,6 @@ Main author
 @item Mark Polesky:
 Documentation, Code cleanup
 
-@item Mike Solomon:
-@email{mike@@mikesolomon.org},
-Core developer, Frog meister
-
 @item Carl Sorensen:
 @email{c_sorensen@@byu.edu},
 Core developer
@@ -121,6 +111,9 @@ Support guru
 @email{bordage.bertrand@@gmail.com},
 Core developer, font designer
 
+@item Ian Hulin:
+Core developer
+
 @item Reinhold Kainhofer:
 @email{reinhold@@kainhofer.com},
 @uref{http://reinhold.kainhofer.com},
@@ -132,6 +125,9 @@ Build meister
 @item Jonathan Kulp:
 Assistant documentation editor
 
+@item Joe Neeman:
+Core developer
+
 @item John Mandereau:
 @email{john.mandereau@@free.fr},
 Translation meister
@@ -151,6 +147,10 @@ Core developer
 @uref{http://www.juergen-reuter.de},
 Ancient notation
 
+@item Mike Solomon:
+@email{mike@@mikesolomon.org},
+Core developer, Frog meister
+
 @item Erik Sandberg:
 Bug meister
 
@@ -170,20 +170,18 @@ LSR editor and Bug squad member
 
 @c use commas not colons
 
+Federico Bruni,
 Dan Eble,
-Rutger Hofmann,
 Marc Hohl,
-Felix Janda,
-Thomas Klausner,
+Masamichi Hosoda,
 James Lowe,
-Andrew Main,
 Thomas Morley,
+Paul Morris,
 David Nalesnik,
 Keith OHara,
 Benkő Pál,
 Julien Rioux,
 Devon Schudy,
-Adam Spiers,
 Heikki Tauriainen
 
 @c no comma for last entry
@@ -196,8 +194,10 @@ Heikki Tauriainen
 
 @c use commas not colons
 
+Masamichi Hosoda,
 Abraham Lee
 
+
 @c no comma for last entry
 
 @end macro
@@ -227,11 +227,10 @@ Martin Tarenskeen
 
 @c use commas not colons
 
+Simon Albrecht,
 Federico Bruni,
 Colin Campbell,
-Eluze,
 Phil Holmes,
-Marek Klein,
 Ralph Palmer
 
 @c no comma for last entry
@@ -247,11 +246,13 @@ Simon Albrecht,
 Colin Campbell,
 Eluze,
 Marc Hohl,
+Phil Holmes,
 Marek Klein,
 Alex Loomis,
 Kieren MacMillan,
+Thomas Morley,
 Tim McNamara,
-Paul Morris
+Paul Morris,
 David Nalesnik,
 Urs Liska,
 Ralph Palmer,
@@ -313,18 +314,22 @@ Yuval Harel,
 Andrew Hawryluk,
 Christian Hitz,
 Karin Hoethker,
+Rutger Hofmann,
 Marc Hohl,
 Bernard Hurley,
 Yoshinobu Ishizaki,
 Chris Jackson,
+Felix Janda,
 David Jedlinsky,
 Heikki Junes,
 Michael Käppler,
+Thomas Klausner,
 Marek Klein,
 Michael Krause,
 Jean-Baptiste Lamy,
 Jonatan Liljedahl,
 Peter Lutek,
+Andrew Main,
 Kieren MacMillan,
 Hendrik Maryns,
 Thomas Morgan,
@@ -376,6 +381,7 @@ Tom Cato Amundsen,
 Marc Hohl,
 Chris Jackson,
 Alexander Kobel,
+Abraham Lee,
 Keith OHara,
 Carsten Steger,
 Arno Waschk,
index 672a17dec3a96c0e70ac3b8d6b903c0317dc3c2b..d668f48031bf02964b9cf85d499e1b323b697dcf 100644 (file)
@@ -1539,8 +1539,8 @@ sintassi:
 \time 3/4
 
 a'1_\markup {
-  \override #'(font-name . "Vera Bold")
-    { Vera Bold }
+  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
+    { Vera Oblique Bold }
 }
 @end lilypond
 
@@ -1590,7 +1590,7 @@ del rigo.  I tipi di carattere  sono spiegati in @ref{Fonts explained}.
 \paper  {
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
                           (/ staff-height pt 20)))
 }
index ca86cbeff5611640cc40ece9ce1615770c66c8e1..1af7a8bd7a0cd7cbea4b194da8448f9031746681 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -313,7 +313,7 @@ C の長三和音を作り出すということに注意してください。
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c1:5.6 c:3.7.8 c:3.6.13
+  c1:3.5.6 c:3.7.8 c:3.6.13
 }
 @end lilypond
 
@@ -321,7 +321,7 @@ C の長三和音を作り出すということに注意してください。
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c4:5.15 c:5.20 c:5.25 c:5.30
+  c4:3.5.15 c:3.5.20 c:3.5.25 c:3.5.30
 }
 @end lilypond
 
@@ -365,7 +365,7 @@ C の長三和音を作り出すということに注意してください。
 
 @lilypond[quote,ragged-right,verbatim]
 \chordmode {
-  c1:sus c:sus2 c:sus4 c:5.4^3
+  c1:5 c:sus2 c:sus4 c:5.4
 }
 @end lilypond
 
@@ -409,7 +409,7 @@ C の長三和音を作り出すということに注意してください。
 増和音が作り出されます。
 
 @lilypond[quote,ragged-right,verbatim]
-\chordmode { c1:5.5-.5+ }
+\chordmode { c1:3.5.5-.5+ }
 @end lilypond
 
 第二転回和音を作り出すには、低音を追加するしかありません。@c
index 1e3dddddfe50d6027320c54cfb8cd93667979501..f4b7d0abf98d0cfedd0c4b76d31e4fa76baad974 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -1814,11 +1814,11 @@ LilyPond は、符頭を三角形に変更することで、@c
 ChordsAndSymbols = {
   \chordmode {
     \powerChords
-    e,,1:1.5
-    a,,1:1.5.8
+    e,,1:5
+    a,,1:5.8
     \set minimumFret = #8
-    c,1:1.5
-    f,1:1.5.8
+    c,1:5
+    f,1:5.8
   }
   \set minimumFret = #5
   <a, e>1
@@ -1847,8 +1847,8 @@ ChordsAndSymbols = {
 mixedChords = \chordmode {
   c,1
   \powerChords
-  b,,1:1.5
-  fis,,1:1.5.8
+  b,,1:5
+  fis,,1:5.8
   g,,1:m
 }
 \score {
index 72d31153cd36c57e7ed3c10b9d36df8d00ea4f5e..02f80edc3fa24ba609b756e139a9622632d4311f 100644 (file)
@@ -1554,8 +1554,8 @@ FontConfig に認識されている任意のフォントを@c
 \time 3/4
 
 a'1_\markup {
-  \override #'(font-name . "Vera Bold")
-    { Vera Bold }
+  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
+    { Vera Oblique Bold }
 }
 @end lilypond
 
@@ -1606,7 +1606,7 @@ lilypond -dshow-available-fonts x
 \paper  {
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
                           (/ staff-height pt 20)))
 }
index a874d97e272dd09a1554d7c585d3cea4574a3437..ee148cc23ffcb40e8fa263f4c5118e936be3c0a7 100644 (file)
@@ -553,7 +553,7 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print
 
 @ The `line-width' is for \header.
 @li lypond[quote,verbatim,ragged-right,line-width]
-\version "2.19.2"
+\version "2.19.25"
 \header {
   dedication = "dedication"
   title = "Title"
index c1e2cc20f35786139ac13340708577cc8f04c185..cd8df5c91289d2a5b44f7f88b2f15661ea5eea7d 100644 (file)
@@ -310,9 +310,9 @@ of the note head to the default value for the final two notes:
 @funindex \once
 @funindex once
 
-Both the @code{\override} and the @code{\set} commands may be prefixed
-by @code{\once}.  This causes the following @code{\override} or
-@code{\set} command to be effective only during the current musical
+@code{\override}, @code{\revert}. @code{\set}, and @code{\unset}
+commands may be prefixed with @code{\once}.  This causes such a
+command to be effective only during the current musical
 moment before the property reverts back to its previous value (this can
 be different from the default if another @code{\override} is still in
 effect).  Using the same example, we can change the color of a single
@@ -328,8 +328,10 @@ note like this:
   e4 f |
   \once \override NoteHead.color = #green
   g4 a
-  \revert NoteHead.color
+  \once \revert NoteHead.color
   b c |
+  \revert NoteHead.color
+  f2 c |
 }
 @end lilypond
 
@@ -347,12 +349,6 @@ predefined commands to limit their effect to one musical moment:
 }
 @end lilypond
 
-However, predefined commands of the form @code{\@dots{}Neutral},
-@code{\@dots{}Off} and @code{\un@dots{}} use @code{\revert} internally
-rather than @code{\override} so prefixing these with @code{\once} has no
-effect.
-
-
 @node The overrideProperty command
 @unnumberedsubsubsec The @code{@bs{}overrideProperty} command
 
index efcf8549b3d35ac6e152a64874eed1cabfbf00f7..bb5a2c2b60fb443ce0c07f462884647e820cc785 100644 (file)
@@ -2050,8 +2050,8 @@ are equivalent if the current bottom context is @code{Voice}.
 
 
 @cindex \once
-Preceding a @code{\set} command by @code{\once} makes the
-setting apply to only a single time-step:
+Preceding a @code{\set} or @code{\unset} command by @code{\once}
+makes the setting apply to only a single time-step:
 
 @lilypond[quote,fragment,verbatim]
 c''4
@@ -2181,7 +2181,7 @@ grobs in the affected context from the current time forward:
 @funindex \once
 @cindex overriding for only one moment
 
-@code{\once} can be used with @code{\override}
+@code{\once} can be used with @code{\override} or @code{\revert}
 to affect only the current time step:
 
 @lilypond[quote,verbatim]
index bd396425a410ef976cf7b1c8da788cf1bf6953a0..7e2e1e3544d563c7e67d218aa5013506e95fd9f2 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 
 @node Chord notation
@@ -258,7 +258,8 @@ larger value is interpreted as 13.
 @end lilypond
 
 @noindent
-Note that both @code{c:5} and @code{c} produce a C major triad.
+As a special exception, @code{c:5} produces a @q{power chord} only
+consisting of root and fifth.
 
 Since an unaltered 11 does not sound good when combined with an
 unaltered 13, the 11 is removed from a @code{:13} chord (unless it
@@ -279,7 +280,7 @@ the major seventh.
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c1:5.6 c:3.7.8 c:3.6.13
+  c1:3.5.6 c:3.7.8 c:3.6.13
 }
 @end lilypond
 
@@ -287,7 +288,7 @@ Added steps can be as high as desired.
 
 @lilypond[quote,verbatim]
 \chordmode {
-  c4:5.15 c:5.20 c:5.25 c:5.30
+  c4:3.5.15 c:3.5.20 c:3.5.25 c:3.5.30
 }
 @end lilypond
 
@@ -322,14 +323,15 @@ initial @code{^}.
 @funindex sus
 
 The modifier @code{sus} can be added to the modifier string to
-create suspended chords.  This removes the 3rd step from the chord.
-Append either @code{2} or @code{4} to add the 2nd or 4th step to the
-chord.  @code{sus} is equivalent to @code{^3}; @code{sus4} is
-equivalent to @code{.4^3}.
+create suspended chords.  This removes the 3rd step from the
+chord.  Append either @code{2} or @code{4} to add the 2nd or 4th
+step to the chord.  When @code{sus} is followed by either a 2nd or
+4th step, it is equivalent to @code{^3}, otherwise to @code{sus4},
+namely @code{5.4}.
 
 @lilypond[quote,ragged-right,verbatim]
 \chordmode {
-  c1:sus c:sus2 c:sus4 c:5.4^3
+  c1:sus c:sus2 c:sus4 c:5.4
 }
 @end lilypond
 
@@ -375,7 +377,7 @@ simply produces the augmented chord, since @code{5+} is
 interpreted last.
 
 @lilypond[quote,ragged-right,verbatim]
-\chordmode { c1:5.5-.5+ }
+\chordmode { c1:3.5.5-.5+ }
 @end lilypond
 
 
index 7e2d18725b57cbc90dae0092e3b4ff6b354d6d8d..3e0a52ae4017b565715353c7fa374c054b054077 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.19.21"
+@c \version "2.19.28"
 
 @node Fretted string instruments
 @section Fretted string instruments
@@ -1843,11 +1843,11 @@ constructs:
 ChordsAndSymbols = {
   \chordmode {
     \powerChords
-    e,,1:1.5
-    a,,1:1.5.8
+    e,,1:5
+    a,,1:5.8
     \set minimumFret = #8
-    c,1:1.5
-    f,1:1.5.8
+    c,1:5
+    f,1:5.8
   }
   \set minimumFret = #5
   <a, e>1
@@ -1876,8 +1876,8 @@ other common chord modifier is used:
 mixedChords = \chordmode {
   c,1
   \powerChords
-  b,,1:1.5
-  fis,,1:1.5.8
+  b,,1:5
+  fis,,1:5.8
   g,,1:m
 }
 \score {
index ae2e671b5bd51a51cc538832da2e41a44062ec3f..68f5cb717967868e317e9a87f9d2dcc47f2859a0 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.16.0"
+@c \version "2.19.28"
 
 @node Notation manual tables
 @appendix Notation manual tables
@@ -476,10 +476,10 @@ Perfect fifth
 @tab
 @code{1.5}
 @tab
-@code{\powerChords c1:1.5}
+@code{\powerChords c1:5}
 @tab
 @lilypond[line-width=2.1\cm,noragged-right,notime]
-\chordmode { \powerChords c1:1.5 }
+\chordmode { \powerChords c1:5 }
 @end lilypond
 
 @item
@@ -489,10 +489,10 @@ Perfect fifth, @*octave
 @tab
 @code{1.5.8}
 @tab
-@code{\powerChords c1:1.5.8}
+@code{\powerChords c1:5.8}
 @tab
 @lilypond[line-width=2.1\cm,noragged-right,notime]
-  \chordmode { \powerChords c1:1.5.8 }
+  \chordmode { \powerChords c1:5.8 }
 @end lilypond
 
 @end multitable
index 53de078dbb780699edc7ee5cb6cf709e3e588663..e708d3a097e8149a740ae07874ec6917853889ac 100644 (file)
@@ -1451,18 +1451,18 @@ value must be determined by trial and error.  These glyphs are all
 left braces; right braces may be obtained by rotation, see
 @ref{Rotating objects}.
 
-Three families of text fonts are made available: the @emph{roman}
-(serif) font, that defaults to New Century Schoolbook, the
-@emph{sans} font and the monospaced @emph{typewriter} font -- these
-last two families are determined by the Pango installation.
-
-@warning{There are no default fonts associated with the @emph{sans}
-and @emph{typewriter} font-families.  An input file that specifies
-either of these can lead to different output on different computers.
-To ensure consistent output among multiple platforms, fonts must be
-specified by name, and those fonts must be available on any system
-that processes the file.  See @ref{Single entry fonts} and
-@ref{Entire document fonts}.}
+Three families of text fonts are made available:
+@itemize
+@item
+The @emph{roman} (serif) font,
+which defaults to LilyPond Serif (an alias of TeX Gyre Schola).
+@item
+The @emph{sans} font,
+which defaults to LilyPond Sans Serif (an alias of TeX Gyre Heros).
+@item
+The @emph{typewriter} (monospaced) font,
+which defaults to LilyPond Monospace (an alias of TeX Gyre Cursor).
+@end itemize
 
 Each family may include different shapes and series.  The following
 example demonstrates the ability to select alternate families, shapes,
@@ -1531,8 +1531,8 @@ FontConfig may be used in a score, using the following syntax:
 \time 3/4
 
 a'1_\markup {
-  \override #'(font-name . "Vera Bold")
-    { Vera Bold }
+  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
+    { Vera Oblique Bold }
 }
 @end lilypond
 
@@ -1541,6 +1541,12 @@ a'1_\markup {
 @cindex listing available fonts
 @cindex available fonts, listing
 
+@var{font-name} can be described using a comma-separated list of @q{fonts}
+and a white-space separated list of @q{styles}.
+As long as the @q{font} in the list is installed
+and contains requested glyph, it will be used,
+otherwise the @emph{next} font in the list will be used instead.
+
 @funindex show-available-fonts
 
 Running lilypond with the following option displays a list of all
@@ -1570,7 +1576,9 @@ It is possible to change the fonts to be used as the default fonts in
 the @emph{roman}, @emph{sans} and @emph{typewriter} font families by
 specifying them, in that order, as shown in the example below, which
 automatically scales the fonts with the value set for the global staff
-size.  For an explanation of fonts, see @ref{Fonts explained}.
+size. Similar to @ref{Single entry fonts}, it can be described using a
+comma-separated list of @q{fonts}. However, font @q{styles} can not be
+described. For an explanation of fonts, see @ref{Fonts explained}.
 
 @cindex font families, setting
 @cindex fonts, changing for entire document
@@ -1581,7 +1589,7 @@ size.  For an explanation of fonts, see @ref{Fonts explained}.
 \paper  {
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
                           (/ staff-height pt 20)))
 }
index 38581bb551b3cec0340ba7fb444b68e4479ecc58..3c0beb9ac23476e51f1ed23b01b21bb645a89c5b 100644 (file)
@@ -1,9 +1,10 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.di.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
+% 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.18.0
 \version "2.18.0"
 
 \header {
@@ -22,13 +23,14 @@ used for printing the stanza number.
   g2 e4
   a2 f4
   g2.
-}
+} % begin verbatim
+
 \addlyrics {
   \set stanza = #"1. "
   Hi, my name is Bert.
 }
 \addlyrics {
-  \override StanzaNumber.font-name = #"DejaVu"
+  \override StanzaNumber.font-name = #"DejaVu Sans"
   \set stanza = #"2. "
   \override LyricText.font-family = #'typewriter
   Oh, ché -- ri, je t'aime
index e5608cf69e4d7125df72633f7b1fded541d63517..125f0dd1dbaf25e0c95272d08b656998b761fdff 100644 (file)
@@ -1,9 +1,10 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.di.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
+% 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.18.0
 \version "2.18.0"
 
 \header {
@@ -24,11 +25,12 @@ The default font families for text can be overridden with
      run
          lilypond -dshow-available-fonts blabla
      to show all fonts available in the process log.
-  %}
+  %} % begin verbatim
+
 
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
 ;;                        "Helvetica"
 ;;                        "Courier"
index 1e9e48026139d28cc6b1082d0a45a66e9e4907a2..f6f6672e2ce669a8085db006695cb9eb27338252 100644 (file)
@@ -1,10 +1,11 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.di.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.18.0"
+% 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.19.28
+\version "2.19.28"
 
 \header {
   lsrtags = "contexts-and-engravers"
@@ -45,8 +46,6 @@ grob.
 Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}."
    (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob)))
      (set! (ly:grob-parent accidental-grob X) grob)
-     (set! (ly:grob-property accidental-grob 'X-offset)
-           ly:grob::x-parent-positioning)
      (let* ((accidentals (ly:grob-object grob 'accidental-grobs))
             (handle (assq (ly:pitch-notename pitch) accidentals))
             (entry (if handle (cdr handle) '())))
diff --git a/Documentation/snippets/new/changing-stanza-fonts.ly b/Documentation/snippets/new/changing-stanza-fonts.ly
new file mode 100644 (file)
index 0000000..3988ec6
--- /dev/null
@@ -0,0 +1,29 @@
+\version "2.18.0"
+
+\header {
+  lsrtags = "really-simple, vocal-music"
+
+  texidoc = "
+Fonts can be changed independently for each stanza, including the font
+used for printing the stanza number.
+
+"
+  doctitle = "Changing stanza fonts"
+} % begin verbatim
+
+\new Voice {
+  \time 3/4
+  g2 e4
+  a2 f4
+  g2.
+}
+\addlyrics {
+  \set stanza = #"1. "
+  Hi, my name is Bert.
+}
+\addlyrics {
+  \override StanzaNumber.font-name = #"DejaVu Sans"
+  \set stanza = #"2. "
+  \override LyricText.font-family = #'typewriter
+  Oh, ché -- ri, je t'aime
+}
diff --git a/Documentation/snippets/new/changing-the-default-text-font-family.ly b/Documentation/snippets/new/changing-the-default-text-font-family.ly
new file mode 100644 (file)
index 0000000..b4ab595
--- /dev/null
@@ -0,0 +1,48 @@
+\version "2.18.0"
+
+\header {
+  lsrtags = "text, tweaks-and-overrides"
+
+  texidoc = "
+The default font families for text can be overridden with
+@code{make-pango-font-tree}.
+
+"
+  doctitle = "Changing the default text font family"
+} % begin verbatim
+
+\paper {
+  % change for other default global staff size.
+  myStaffSize = #20
+  %{
+     run
+         lilypond -dshow-available-fonts blabla
+     to show all fonts available in the process log.
+  %}
+
+  #(define fonts
+    (make-pango-font-tree "Times New Roman"
+                          "Nimbus Sans,Nimbus Sans L"
+                          "Luxi Mono"
+;;                        "Helvetica"
+;;                        "Courier"
+     (/ myStaffSize 20)))
+}
+
+\relative c'' {
+  c4^\markup {
+    roman: foo \bold bla \italic bar \italic \bold baz
+  }
+  c'4_\markup {
+    \override #'(font-family . sans)
+    {
+      sans: foo \bold bla \italic bar \italic \bold baz
+    }
+  }
+  c'2^\markup {
+    \override #'(font-family . typewriter)
+    {
+      mono: foo \bold bla \italic bar \italic \bold baz
+    }
+  }
+}
diff --git a/Documentation/snippets/new/defining-an-engraver-in-scheme--ambitus-engraver.ly b/Documentation/snippets/new/defining-an-engraver-in-scheme--ambitus-engraver.ly
new file mode 100644 (file)
index 0000000..cb19340
--- /dev/null
@@ -0,0 +1,316 @@
+\version "2.19.28"
+
+\header {
+  lsrtags = "contexts-and-engravers"
+
+  texidoc = "
+This example demonstrates how the ambitus engraver may be defined on
+the user side, with a Scheme engraver.
+
+This is basically a rewrite in Scheme of the code from
+@code{lily/ambitus-engraver.cc}.
+
+"
+  doctitle = "Defining an engraver in Scheme: ambitus engraver"
+}
+#(use-modules (oop goops))
+
+%%%
+%%% Grob utilities
+%%%
+%%% These are literal rewrites of some C++ methods used by the ambitus engraver.
+
+#(define (ly:separation-item::add-conditional-item grob grob-item)
+   "Add @var{grob-item} to the array of conditional elements of @var{grob}.
+Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}."
+   (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item))
+
+#(define (ly:accidental-placement::accidental-pitch accidental-grob)
+   "Get the pitch from the grob cause of @var{accidental-grob}.
+Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}."
+   (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause)
+                      'pitch))
+
+#(define (ly:accidental-placement::add-accidental grob accidental-grob)
+   "Add @var{accidental-grob}, an @code{Accidental} grob, to the
+list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement}
+grob.
+Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}."
+   (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob)))
+     (set! (ly:grob-parent accidental-grob X) grob)
+     (let* ((accidentals (ly:grob-object grob 'accidental-grobs))
+            (handle (assq (ly:pitch-notename pitch) accidentals))
+            (entry (if handle (cdr handle) '())))
+       (set! (ly:grob-object grob 'accidental-grobs)
+             (assq-set! accidentals
+                        (ly:pitch-notename pitch)
+                        (cons accidental-grob entry))))))
+
+%%%
+%%% Ambitus data structure
+%%%
+
+%%% The <ambitus> class holds the various grobs that are created
+%%% to print an ambitus:
+%%% - ambitus-group: the grob that groups all the components of an ambitus
+%%% (Ambitus grob);
+%%% - ambitus-line: the vertical line between the upper and lower ambitus
+%%% notes (AmbitusLine grob);
+%%% - ambitus-up-note and ambitus-down-note: the note head and accidental
+%%% for the lower and upper note of the ambitus (see <ambitus-note> class
+%%% below).
+%%% The other slots define the key and clef context of the engraver:
+%%% - start-c0: position of middle c at the beginning of the piece.  It
+%%% is used to place the ambitus notes according to their pitch;
+%%% - start-key-sig: the key signature at the beginning of the piece.  It
+%%% is used to determine if accidentals shall be printed next to ambitus
+%%% notes.
+
+#(define-class <ambitus> ()
+   (ambitus-group #:accessor ambitus-group)
+   (ambitus-line #:accessor ambitus-line)
+   (ambitus-up-note #:getter ambitus-up-note
+                    #:init-form (make <ambitus-note>))
+   (ambitus-down-note #:getter ambitus-down-note
+                      #:init-form (make <ambitus-note>))
+   (start-c0 #:accessor ambitus-start-c0
+             #:init-value #f)
+   (start-key-sig #:accessor ambitus-start-key-sig
+                  #:init-value '()))
+
+%%% Accessor for the lower and upper note data of an ambitus
+#(define-method (ambitus-note (ambitus <ambitus>) direction)
+   "If @var{direction} is @code{UP}, then return the upper ambitus note
+of @var{ambitus}, otherwise return the lower ambitus note."
+   (if (= direction UP)
+       (ambitus-up-note ambitus)
+       (ambitus-down-note ambitus)))
+
+%%% The <ambitus-note> class holds the grobs that are specific to ambitus
+%%% (lower and upper) notes:
+%%% - head: an AmbitusNoteHead grob;
+%%% - accidental: an AmbitusAccidental grob, to be possibly printed next
+%%% to the ambitus note head.
+%%% Moreover:
+%%% - pitch is the absolute pitch of the note
+%%% - cause is the note event that causes this ambitus note, i.e. the lower
+%%% or upper note of the considered music sequence.
+
+#(define-class <ambitus-note> ()
+   (head #:accessor ambitus-note-head
+         #:init-value #f)
+   (accidental #:accessor ambitus-note-accidental
+               #:init-value #f)
+   (cause #:accessor ambitus-note-cause
+          #:init-value #f)
+   (pitch #:accessor ambitus-note-pitch
+          #:init-value #f))
+
+%%%
+%%% Ambitus engraving logics
+%%%
+%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}.
+
+#(define (make-ambitus translator)
+   "Build an ambitus object: initialize all the grobs and their relations.
+
+The Ambitus grob contain all other grobs:
+ Ambitus
+  |- AmbitusLine
+  |- AmbitusNoteHead   for upper note
+  |- AmbitusAccidental for upper note
+  |- AmbitusNoteHead   for lower note
+  |- AmbitusAccidental for lower note
+
+The parent of an accidental is the corresponding note head,
+and the accidental is set as the 'accidental-grob of the note head
+so that is printed by the function that prints notes."
+   ;; make the ambitus object
+   (let ((ambitus (make <ambitus>)))
+     ;; build the Ambitus grob, which will contain all other grobs
+     (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '()))
+     ;; build the AmbitusLine grob (line between lower and upper note)
+     (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '()))
+     ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental
+     (for-each (lambda (direction)
+                 (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '()))
+                       (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '()))
+                       (group (ambitus-group ambitus)))
+                   ;; The parent of the AmbitusAccidental grob is the
+                   ;; AmbitusNoteHead grob
+                   (set! (ly:grob-parent accidental Y) head)
+                   ;; The AmbitusAccidental grob is set as the accidental-grob
+                   ;; object of the AmbitusNoteHead.  This is later used by the
+                   ;; function that prints notes.
+                   (set! (ly:grob-object head 'accidental-grob) accidental)
+                   ;; both the note head and the accidental grobs are added
+                   ;; to the main ambitus grob.
+                   (ly:axis-group-interface::add-element group head)
+                   (ly:axis-group-interface::add-element group accidental)
+                   ;; the note head and the accidental grobs are added to the
+                   ;; ambitus object
+                   (set! (ambitus-note-head (ambitus-note ambitus direction))
+                         head)
+                   (set! (ambitus-note-accidental (ambitus-note ambitus direction))
+                         accidental)))
+               (list DOWN UP))
+     ;; The parent of the ambitus line is the lower ambitus note head
+     (set! (ly:grob-parent (ambitus-line ambitus) X)
+           (ambitus-note-head (ambitus-note ambitus DOWN)))
+     ;; the ambitus line is added to the ambitus main grob
+     (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus))
+     ambitus))
+
+#(define-method (initialize-ambitus-state (ambitus <ambitus>) translator)
+   "Initialize the state of @var{ambitus}, by getting the starting
+position of middle C and key signature from @var{translator}'s context."
+   (if (not (ambitus-start-c0 ambitus))
+       (begin
+         (set! (ambitus-start-c0 ambitus)
+               (ly:context-property (ly:translator-context translator)
+                                    'middleCPosition
+                                    0))
+         (set! (ambitus-start-key-sig ambitus)
+               (ly:context-property (ly:translator-context translator)
+                                    'keyAlterations)))))
+
+#(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
+   "Update the upper and lower ambitus pithes of @var{ambitus}, using
+@var{note-grob}."
+   ;; Get the event that caused the note-grob creation
+   ;; and check that it is a note-event.
+   (let ((note-event (ly:grob-property note-grob 'cause)))
+     (if (ly:in-event-class? note-event 'note-event)
+         ;; get the pitch from the note event
+         (let ((pitch (ly:event-property note-event 'pitch)))
+           ;; if this pitch is lower than the current ambitus lower
+           ;; note pitch (or it has not been initialized yet),
+           ;; then this pitch is the new ambitus lower pitch,
+           ;; and conversely for upper pitch.
+           (for-each (lambda (direction pitch-compare)
+                       (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction)))
+                               (pitch-compare pitch
+                                              (ambitus-note-pitch (ambitus-note ambitus direction))))
+                           (begin
+                             (set! (ambitus-note-pitch (ambitus-note ambitus direction))
+                                   pitch)
+                             (set! (ambitus-note-cause (ambitus-note ambitus direction))
+                                   note-event))))
+                     (list DOWN UP)
+                     (list ly:pitch<? (lambda (p1 p2)
+                                        (ly:pitch<? p2 p1))))))))
+
+#(define-method (typeset-ambitus (ambitus <ambitus>) translator)
+   "Typeset the ambitus:
+- place the lower and upper ambitus notes according to their pitch and
+  the position of the middle C;
+- typeset or delete the note accidentals, according to the key signature.
+  An accidental, if it is to be printed, is added to an AccidentalPlacement
+  grob (a grob dedicated to the placement of accidentals near a chord);
+- both note heads are added to the ambitus line grob, so that a line should
+  be printed between them."
+   ;; check if there are lower and upper pitches
+   (if (and (ambitus-note-pitch (ambitus-note ambitus UP))
+            (ambitus-note-pitch (ambitus-note ambitus DOWN)))
+       ;; make an AccidentalPlacement grob, for placement of note accidentals
+       (let ((accidental-placement (ly:engraver-make-grob
+                                    translator
+                                    'AccidentalPlacement
+                                    (ambitus-note-accidental (ambitus-note ambitus DOWN)))))
+         ;; For lower and upper ambitus notes:
+         (for-each (lambda (direction)
+                     (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction))))
+                       ;; set the cause and the staff position of the ambitus note
+                       ;; according to the associated pitch
+                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
+                                               'cause)
+                             (ambitus-note-cause (ambitus-note ambitus direction)))
+                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
+                                               'staff-position)
+                             (+ (ambitus-start-c0 ambitus)
+                                (ly:pitch-steps pitch)))
+                       ;; determine if an accidental shall be printed for this note,
+                       ;; according to the key signature
+                       (let* ((handle (or (assoc (cons (ly:pitch-octave pitch)
+                                                       (ly:pitch-notename pitch))
+                                                 (ambitus-start-key-sig ambitus))
+                                          (assoc (ly:pitch-notename pitch)
+                                                 (ambitus-start-key-sig ambitus))))
+                              (sig-alter (if handle (cdr handle) 0)))
+                         (cond ((= (ly:pitch-alteration pitch) sig-alter)
+                                ;; the note alteration is in the key signature
+                                ;; => it does not have to be printed
+                                (ly:grob-suicide!
+                                 (ambitus-note-accidental (ambitus-note ambitus direction)))
+                                (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction))
+                                                      'accidental-grob)
+                                      '()))
+                               (else
+                                ;; otherwise, the accidental shall be printed
+                                (set! (ly:grob-property (ambitus-note-accidental
+                                                         (ambitus-note ambitus direction))
+                                                        'alteration)
+                                      (ly:pitch-alteration pitch)))))
+                       ;; add the AccidentalPlacement grob to the
+                       ;; conditional items of the AmbitusNoteHead
+                       (ly:separation-item::add-conditional-item
+                        (ambitus-note-head (ambitus-note ambitus direction))
+                        accidental-placement)
+                       ;; add the AmbitusAccidental to the list of the
+                       ;; AccidentalPlacement grob accidentals
+                       (ly:accidental-placement::add-accidental
+                        accidental-placement
+                        (ambitus-note-accidental (ambitus-note ambitus direction)))
+                       ;; add the AmbitusNoteHead grob to the AmbitusLine grob
+                       (ly:pointer-group-interface::add-grob
+                        (ambitus-line ambitus)
+                        'note-heads
+                        (ambitus-note-head (ambitus-note ambitus direction)))))
+                   (list DOWN UP))
+         ;; add the AccidentalPlacement grob to the main Ambitus grob
+         (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement))
+       ;; no notes ==> suicide the grobs
+       (begin
+         (for-each (lambda (direction)
+                     (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction)))
+                     (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction))))
+                   (list DOWN UP))
+         (ly:grob-suicide! ambitus-line))))
+
+%%%
+%%% Ambitus engraver definition
+%%%
+#(define ambitus-engraver
+   (lambda (context)
+     (let ((ambitus #f))
+       ;; when music is processed: make the ambitus object, if not already built
+       (make-engraver
+    ((process-music translator)
+     (if (not ambitus)
+         (set! ambitus (make-ambitus translator))))
+    ;; set the ambitus clef and key signature state
+    ((stop-translation-timestep translator)
+     (if ambitus
+         (initialize-ambitus-state ambitus translator)))
+    ;; when a note-head grob is built, update the ambitus notes
+    (acknowledgers
+          ((note-head-interface engraver grob source-engraver)
+       (if ambitus
+           (update-ambitus-notes ambitus grob))))
+    ;; finally, typeset the ambitus according to its upper and lower notes
+    ;; (if any).
+    ((finalize translator)
+     (if ambitus
+         (typeset-ambitus ambitus translator)))))))
+
+%%%
+%%% Example
+%%%
+
+\score {
+  \new StaffGroup <<
+    \new Staff { c'4 des' e' fis' gis' }
+    \new Staff { \clef "bass" c4 des ~ des ees b, }
+  >>
+  \layout { \context { \Staff \consists #ambitus-engraver } }
+}
diff --git a/Documentation/snippets/new/single-staff-template-with-notes-and-chords.ly b/Documentation/snippets/new/single-staff-template-with-notes-and-chords.ly
new file mode 100644 (file)
index 0000000..598f0b9
--- /dev/null
@@ -0,0 +1,37 @@
+\version "2.19.28"
+
+\header {
+  lsrtags = "chords, really-simple, template"
+
+  texidoc = "
+Want to prepare a lead sheet with a melody and chords? Look no further!
+
+
+"
+  doctitle = "Single staff template with notes and chords"
+}
+melody = \relative c' {
+  \clef treble
+  \key c \major
+  \time 4/4
+
+  f4 e8[ c] d4 g
+  a2 ~ a
+}
+
+harmonies = \chordmode {
+  c4:m f:min7 g:maj c:aug
+  d2:dim b4:5 e:sus
+}
+
+\score {
+  <<
+    \new ChordNames {
+      \set chordChanges = ##t
+      \harmonies
+    }
+    \new Staff \melody
+  >>
+  \layout{ }
+  \midi { }
+}
index 34397fb8e20bd5e96f758446d072702ab60dd613..19de559c1266f83c91bb260d8c676d5b14f50dfa 100644 (file)
@@ -116,10 +116,10 @@ ViolinSolo = \relative c' {
 
   \voiceOne
 
-  \set Score.markFormatter      #format-mark-box-numbers
-  \override Score.VoltaBracket.font-name                  = #"sans"
-  \override Score.VoltaBracket.extra-offset               = #'(0 . 1)
-  \override SpacingSpanner.uniform-stretching         = ##t
+  \set Score.markFormatter                    = #format-mark-box-numbers
+  \override Score.VoltaBracket.font-name      = #"LilyPond Sans Serif"
+  \override Score.VoltaBracket.extra-offset   = #'(0 . 1)
+  \override SpacingSpanner.uniform-stretching = ##t
 
 
   %% Measure 1
index d63414442e63b0c077e10f735de97dcda18b28d3..28531686469a62ac62ca302de47a8421ec987698 100644 (file)
@@ -1,10 +1,11 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.di.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.18.0"
+% 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.19.28
+\version "2.19.28"
 
 \header {
   lsrtags = "chords, really-simple, template"
@@ -28,7 +29,7 @@ melody = \relative c' {
 
 harmonies = \chordmode {
   c4:m f:min7 g:maj c:aug
-  d2:dim b:sus
+  d2:dim b4:5 e:sus
 }
 
 \score {
index 99e129afbf5ad387ad81463e299ba368c52c5c1e..eb02136cc8df6d4557efa2d5b2272123e6a1eb1e 100644 (file)
@@ -124,10 +124,10 @@ ViolinSolo = \relative c' {
 
   \voiceOne
 
-  \set Score.markFormatter      #format-mark-box-numbers
-  \override Score.VoltaBracket.font-name                  = #"sans"
-  \override Score.VoltaBracket.extra-offset               = #'(0 . 1)
-  \override SpacingSpanner.uniform-stretching         = ##t
+  \set Score.markFormatter                    = #format-mark-box-numbers
+  \override Score.VoltaBracket.font-name      = #"LilyPond Sans Serif"
+  \override Score.VoltaBracket.extra-offset   = #'(0 . 1)
+  \override SpacingSpanner.uniform-stretching = ##t
 
 
   %% Measure 1
index 864f90555fccbba691a4057bf51c17d78c841ffa..f072d3648e74734f5a3815706702c9e07beb6995 100644 (file)
@@ -471,21 +471,43 @@ file with all pages (systems) including fonts.  Used as default by
 @tab Do not output a printed score; has the same effect as
 @code{-dno-print-pages}.
 
-@item
-@tab @code{svg}
-@tab Scalable Vector Graphics.  This creates a single SVG file,
-without embedded fonts, for every page of output.  It is recommended to
-install the Century Schoolbook fonts, included with your LilyPond
-installation, for optimal rendering.  Under UNIX, simply copy these
-fonts from the LilyPond directory (typically
-@file{/usr/share/lilypond/VERSION/fonts/otf/}) to @file{~/.fonts/}.
-There is also an option @code{svg-woff} (below) for use of woff font
-files in the SVG backend.
-
 @item
 @tab @code{scm}
 @tab Dump of the raw, internal Scheme-based drawing commands.
 
+@item
+@tab @code{svg}
+@tab Scalable Vector Graphics.
+This creates a single SVG file for every page of output.
+Font information is not embedded so the SVG viewer will require
+the fonts be available for optimal rendering.
+It is recommended that you do not use @q{font aliases}
+or @q{font lists} in case your SVG viewer is not able to handle them.
+Also see the @code{svg-woff} option.
+@end multitable
+
+@noindent
+@strong{Note for svg backend:}
+LilyPond's default fonts (@code{LilyPond Serif}, @code{LilyPond Sans Serif}
+and @code{LilyPond Monospace}) are just @emph{local} font aliases;
+so when using the @code{svg} backend command it is required that
+you explicitly set the default fonts;
+
+@quotation
+@verbatim
+\paper  {
+  #(define fonts
+    (make-pango-font-tree "TeX Gyre Schola"
+                          "TeX Gyre Heros"
+                          "TeX Gyre Cursor"
+                          (/ staff-height pt 20)))
+}
+@end verbatim
+@end quotation
+
+Also see @ruser{Entire document fonts}.
+
+@multitable @columnfractions .33 .16 .51
 @item @code{check-internal-types}
 @tab @code{#f}
 @tab Check every property assignment for types.
@@ -752,6 +774,11 @@ size increases in PDF files.
 @item @code{svg-woff}
 @tab @code{#f}
 @tab Use woff font files in SVG backend.
+By using the woff file properly,
+you do not have to install the fonts which are used by SVG files
+to SVG viewer environment.
+However, LilyPond does not contain woff font file for text.
+woff font file is required.
 
 @item @code{trace-memory-frequency}
 @tab @code{#f}
index cc7fe81033c18bf459866652722b95336e16c735..b738142a35a4b624e2f6984b6ddf3483d591a2a6 100644 (file)
@@ -25,7 +25,7 @@
 
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
 
 ;;     "Helvetica"
index d0e9a472c51c0e08f0a31c64015a38395773d383..f2a05774a658dd48278c4aad27a44076424eacbd 100644 (file)
@@ -14,14 +14,19 @@ without size specification."
 
 {
   \override Score.PaperColumn.keep-inside-line = ##f
-  \override Staff.TimeSignature.font-name = #"Times New Roman"
+
+  % A comma is required
+  % for font name "Times New Roman"'s explicit termination.
+  % If there is no comma, Pango interpret "Times New Roman" as
+  % "Times New" family with "Roman" style.
+  \override Staff.TimeSignature.font-name = #"Times New Roman,"
   \time 3/4
   \set Score.skipBars = ##t
-  \override Staff.MultiMeasureRestText.font-name = #"LuxiMono"
-  R1*21^"Rest in LuxiMono"
+  \override Staff.MultiMeasureRestText.font-name = #"Luxi Mono"
+  R1*21^"Rest in Luxi Mono"
 
   c'1_\markup {
-    \override #'(font-name . "Vera Bold")
+    \override #'(font-name . "Bitstream Vera Sans, Bold")
       \override #'(font-size . 4)
         { This text is in large Vera Bold }
   }
index 54f4607628980fe2d43a2a914dc27d1984b968f9..bac53496081a445f0013738234a0fa4253c5c5e9 100644 (file)
@@ -1,7 +1,7 @@
 \header {
   texidoc = "This file demonstrates how to load different (postscript)
 fonts.  The file @file{font.scm} shows how to define the scheme-function
-@code{make-century-schoolbook-tree}."
+@code{make-default-fonts-tree}."
 }
 
 \version "2.16.0"
@@ -12,7 +12,7 @@ fonts.  The file @file{font.scm} shows how to define the scheme-function
       (baseline-skip . 2)
       (word-space . 0.6)))
 
-  #(set! fonts (make-century-schoolbook-tree 1.0))
+  #(set! fonts (make-default-fonts-tree 1.0))
 }
 
 \layout {
index 4dda8b175401dc9cddcddf284a0a3153b43d3c8b..9e3051c926b9f7b0b9efa83b9ee9f393c9ebe22f 100644 (file)
@@ -11,7 +11,7 @@ For unknown glyphs, we print a warning."
 
 {
   c'^\markup {
-    \override #'(font-name . "Sans") {
+    \override #'(font-name . "LilyPond Sans Serif") {
       c'est un B \flat \musicglyph #"UNKNOWN-GLYPH"
     }
     % to get \flat, do:
index 480429f30ef89f4743229581feaed3a691163ab0..a288c91ced20fd8d3a77f69a72fd14bd0824acab 100644 (file)
@@ -16,7 +16,12 @@ mus =
 \relative c'' {
         \tempo "Allegro" 8=120-140
         a8 b c d a b c d
-        \override Score.MetronomeMark.font-name = "Times New Roman"
+
+        % A comma is required
+        % for font name "Times New Roman"'s explicit termination.
+        % If there is no comma, Pango interpret "Times New Roman" as
+        % "Times New" family with "Roman" style.
+        \override Score.MetronomeMark.font-name = "Times New Roman,"
         \tempo "Allegro" 8=140
         a b c d a b c d
 }
diff --git a/input/regression/part-combine-unequal-lengths.ly b/input/regression/part-combine-unequal-lengths.ly
new file mode 100644 (file)
index 0000000..b21a2aa
--- /dev/null
@@ -0,0 +1,14 @@
+\version "2.19.28"
+
+\header {
+  texidoc ="The part combiner can combine parts of unequal lengths."
+}
+
+\layout { ragged-right = ##t }
+
+\new Staff { %% based on the example in Issue 913
+  c'1
+  \partcombine { e' r } { c' }
+  \partcombine { b' } {}
+  \partcombine {} { f' }
+}
diff --git a/input/regression/repeat-tie-parenthesize.ly b/input/regression/repeat-tie-parenthesize.ly
new file mode 100644 (file)
index 0000000..1d71c47
--- /dev/null
@@ -0,0 +1,11 @@
+\version "2.19.28"
+
+\header {
+  texidoc = "A @code{\\repeatTie} may be parenthesized."
+}
+
+\layout {
+  ragged-right = ##t
+}
+
+{ c'1-\parenthesize \repeatTie }
diff --git a/input/regression/revert-once.ly b/input/regression/revert-once.ly
new file mode 100644 (file)
index 0000000..e8cad6c
--- /dev/null
@@ -0,0 +1,30 @@
+\version "2.19.28"
+
+\header {
+  texidoc = "@code{\\once \\revert} can be used for reverting a property
+once rather than permanently."
+}
+
+\layout {
+  ragged-right = ##t
+}
+
+\relative {
+  c'4-"b" d-"b"
+  \override NoteHead.color = #red
+  e4-"r" f-"r" |
+  \once \override NoteHead.color = #green
+  g4-"g" a-"r"
+  \once \revert NoteHead.color
+  b-"b" c-"r" |
+  \temporary \override NoteHead.color = #yellow
+  g-"y" e-"y"
+  \once \revert NoteHead.color
+  d-"r" c-"y" |
+  \revert NoteHead.color
+  d-"r" e-"r"
+  \once \revert NoteHead.color
+  f-"b" d-"r" |
+  \revert NoteHead.color
+  c1-"b"
+}
index f8a0967954c8e106a8a218daa41052ff37cfc29a..1a557101223e510aafd382ad91642cb94fdce67d 100644 (file)
@@ -54,7 +54,6 @@ Accidental_placement::add_accidental (Grob *me, Grob *a, bool stagger, long cont
     return;
 
   a->set_parent (me, X_AXIS);
-  a->set_property ("X-offset", Grob::x_parent_positioning_proc);
   long n = p->get_notename ();
 
   SCM accs = me->get_object ("accidental-grobs");
index c9c56858a17a071bb38a7038820bee6812b8c4f3..e842cb6d804a9bb70454ff1b6db6c9a7f5791dd0 100644 (file)
@@ -797,7 +797,7 @@ add_grobs_of_one_priority (Grob *me,
           last_end[dir] = x_extent[RIGHT];
 
           Skyline_pair *v_orig = unsmob<Skyline_pair> (elt->get_property ("vertical-skylines"));
-          if (v_orig->is_empty ())
+          if (!v_orig || v_orig->is_empty ())
             continue;
 
           // Find the riders associated with this grob, and merge their
index 99b16f669b116d3028c738e2532918ae01ae265c..87bfbc5b9d842d9fe0771da958b0054c85e4a4d4 100644 (file)
@@ -82,7 +82,11 @@ private:
   // cooked_from_ is the value of alist_ from which the expansion has
   // been done
   SCM cooked_from_;
-  // nested_ is a count of nested overrides in alist_
+  // nested_ is a count of nested overrides in alist_ Or rather: of
+  // entries that must not appear in the cooked list and are
+  // identified by having a "key" that is not a symbol.  Temporary
+  // overrides and reverts also meet that description and have a
+  // nominal key of #t/#f and a value of the original cons cell.
   int nested_;
 
   Grob_properties (SCM alist, SCM based_on) :
@@ -234,6 +238,59 @@ Grob_property_info::push (SCM grob_property_path, SCM new_value)
   return SCM_EOL;
 }
 
+// Used for \once \override, returns a token for matched_pop
+SCM
+Grob_property_info::temporary_override (SCM grob_property_path, SCM new_value)
+{
+  SCM cell = push (grob_property_path, new_value);
+  if (!scm_is_pair (cell))
+    return cell;
+  if (scm_is_symbol (scm_car (cell)))
+    props_->nested_++;
+  cell = scm_cons (SCM_BOOL_T, cell);
+  props_->alist_ = scm_cons (cell, scm_cdr (props_->alist_));
+  return cell;
+}
+
+// Used for \once \revert, returns a token for matched_pop
+SCM
+Grob_property_info::temporary_revert (SCM grob_property_path)
+{
+  if (!check ())
+    return SCM_EOL;
+
+  SCM current_alist = props_->alist_;
+  SCM daddy = props_->based_on_;
+  SCM tail = SCM_EOL;
+
+  if (!scm_is_pair (grob_property_path)
+      || !scm_is_symbol (scm_car (grob_property_path)))
+    {
+      programming_error ("Grob property path should be list of symbols.");
+      return SCM_EOL;
+    }
+
+  if (scm_is_pair (scm_cdr (grob_property_path)))
+    {
+      tail = assoc_tail (grob_property_path, current_alist, daddy);
+      if (scm_is_false (tail))
+        return SCM_EOL;
+    }
+  else
+    {
+      tail = assq_tail (scm_car (grob_property_path), current_alist, daddy);
+      if (scm_is_false (tail))
+        return SCM_EOL;
+      ++props_->nested_;
+    }
+
+  SCM cell = scm_cons (SCM_BOOL_F, scm_car (tail));
+  props_->alist_ = partial_list_copy (current_alist, tail,
+                                      scm_cons (cell, scm_cdr (tail)));
+  return cell;
+}
+
+
 void
 Grob_property_info::matched_pop (SCM cell)
 {
@@ -247,7 +304,18 @@ Grob_property_info::matched_pop (SCM cell)
     {
       if (scm_is_eq (scm_car (p), cell))
         {
-          if (scm_is_pair (scm_car (cell)))
+          SCM key = scm_car (cell);
+          if (scm_is_false (key))
+            {
+              // temporary revert, reactivate
+              cell = scm_cdr (cell);
+              if (scm_is_symbol (scm_car (cell)))
+                props_->nested_--;
+              props_->alist_ = partial_list_copy (current_alist, p,
+                                                  scm_cons (cell, scm_cdr (p)));
+              return;
+            }
+          if (!scm_is_symbol (key))
             props_->nested_--;
           props_->alist_ = partial_list_copy (current_alist, p, scm_cdr (p));
           return;
@@ -337,7 +405,7 @@ apply_property_operations (Context *tg, SCM pre_init_ops)
       else if (scm_is_eq (type, ly_symbol2scm ("assign")))
         tg->set_property (scm_car (entry), scm_cadr (entry));
       else if (scm_is_eq (type, ly_symbol2scm ("apply")))
-       scm_apply_1 (scm_car (entry), tg->self_scm (), scm_cdr (entry));
+        scm_apply_1 (scm_car (entry), tg->self_scm (), scm_cdr (entry));
       else if (scm_is_eq (type, ly_symbol2scm ("unset")))
         tg->unset_property (scm_car (entry));
     }
index a26c168faccb2e073959d240f390a7a651d3613e..169d0b7b3d66ade4fd6d437e3434714c214b57df 100644 (file)
@@ -92,6 +92,19 @@ LY_DEFINE (ly_context_pushpop_property, "ly:context-pushpop-property",
   return SCM_UNSPECIFIED;
 }
 
+LY_DEFINE (ly_context_matched_pop_property, "ly:context-matched-pop-property",
+           3, 0, 0, (SCM context, SCM grob, SCM cell),
+           "This undoes a particular @code{\\override},"
+           " @code{\\once \\override} or @code{\\once \\revert}"
+           " when given the specific alist pair to undo.")
+{
+  Context *tg = LY_ASSERT_SMOB (Context, context, 1);
+  LY_ASSERT_TYPE (ly_is_symbol, grob, 2);
+  Grob_property_info (tg, grob).matched_pop (cell);
+  return SCM_UNSPECIFIED;
+}
+
+
 LY_DEFINE (ly_context_property, "ly:context-property",
            2, 1, 0, (SCM context, SCM sym, SCM def),
            "Return the value for property @var{sym} in @var{context}."
index 7e3c646a6f7e2569ea7451213e6ab9fe6b58c10c..ef6fecf4b1aa123e566d858c4a576f2c3f45951e 100644 (file)
@@ -252,7 +252,25 @@ Context::set_property_from_event (SCM sev)
       ok = type_check_assignment (sym, val, ly_symbol2scm ("translation-type?"));
 
       if (ok)
-        set_property (sym, val);
+        {
+          if (to_boolean (ev->get_property ("once")))
+            {
+              if (Global_context *g = get_global_context ())
+                {
+                  SCM old_val = SCM_UNDEFINED;
+                  if (here_defined (sym, &old_val))
+                    g->add_finalization (scm_list_4 (ly_context_set_property_x_proc,
+                                                     self_scm (),
+                                                     sym,
+                                                     old_val));
+                  else
+                    g->add_finalization (scm_list_3 (ly_context_unset_property_proc,
+                                                     self_scm (),
+                                                     sym));
+                }
+            }
+          set_property (sym, val);
+        }
     }
 }
 
@@ -262,8 +280,28 @@ Context::unset_property_from_event (SCM sev)
   Stream_event *ev = unsmob<Stream_event> (sev);
 
   SCM sym = ev->get_property ("symbol");
-  type_check_assignment (sym, SCM_EOL, ly_symbol2scm ("translation-type?"));
-  unset_property (sym);
+  bool ok = type_check_assignment (sym, SCM_EOL, ly_symbol2scm ("translation-type?"));
+
+  if (ok)
+    {
+      if (to_boolean (ev->get_property ("once")))
+        {
+          if (Global_context *g = get_global_context ())
+            {
+              SCM old_val = SCM_UNDEFINED;
+              if (here_defined (sym, &old_val))
+                g->add_finalization (scm_list_4 (ly_context_set_property_x_proc,
+                                                 self_scm (),
+                                                 sym,
+                                                 old_val));
+              else
+                g->add_finalization (scm_list_3 (ly_context_unset_property_proc,
+                                                 self_scm (),
+                                                 sym));
+            }
+        }
+      unset_property (sym);
+    }
 }
 
 /*
index c69b974a69631aba681068aaadf91bae9789fa1a..cf1832fe1fb73dd25f93e621e7a20d077485bbd0 100644 (file)
@@ -20,6 +20,7 @@
 #include "context.hh"
 #include "dispatcher.hh"
 #include "engraver-group.hh"
+#include "global-context.hh"
 #include "grob.hh"
 #include "grob-properties.hh"
 #include "paper-score.hh"
@@ -30,19 +31,48 @@ void
 Engraver_group::override (SCM sev)
 {
   Stream_event *ev = unsmob<Stream_event> (sev);
+  SCM sym = ev->get_property ("symbol");
+  Grob_property_info gpi (context (), sym);
 
-  Grob_property_info (context (), ev->get_property ("symbol"))
-    .push (ev->get_property ("property-path"),
-           ev->get_property ("value"));
+  if (to_boolean (ev->get_property ("once")))
+    {
+      SCM token = gpi.temporary_override (ev->get_property ("property-path"),
+                                          ev->get_property ("value"));
+      if (scm_is_pair (token))
+        if (Global_context *g = context ()->get_global_context ())
+          {
+            g->add_finalization (scm_list_4 (ly_context_matched_pop_property_proc,
+                                             context ()->self_scm (),
+                                             sym,
+                                             token));
+          }
+    }
+  else
+    gpi.push (ev->get_property ("property-path"),
+              ev->get_property ("value"));
 }
 
 void
 Engraver_group::revert (SCM sev)
 {
   Stream_event *ev = unsmob<Stream_event> (sev);
+  SCM sym = ev->get_property ("symbol");
+  Grob_property_info gpi (context (), sym);
 
-  Grob_property_info (context (), ev->get_property ("symbol"))
-    .pop (ev->get_property ("property-path"));
+  if (to_boolean (ev->get_property ("once")))
+    {
+      SCM token = gpi.temporary_revert (ev->get_property ("property-path"));
+      if (scm_is_pair (token))
+        if (Global_context *g = context ()->get_global_context ())
+          {
+            g->add_finalization (scm_list_4 (ly_context_matched_pop_property_proc,
+                                             context ()->self_scm (),
+                                             sym,
+                                             token));
+          }
+    }
+  else
+    gpi.pop (ev->get_property ("property-path"));
 }
 
 void
index 28e80fd2db070b32001b82ceaf508a11869f3977..b9aa6292b67736e07150b18c04d0c8d18e385c33 100644 (file)
@@ -195,7 +195,12 @@ void set_context_property_on_children (Context *trans, SCM sym, SCM val);
 SCM nested_property_alist (SCM alist, SCM prop_path, SCM value);
 SCM nested_create_alist (SCM prop_path, SCM value);
 SCM partial_list_copy (SCM alist, SCM tail, SCM newtail);
+SCM assq_tail (SCM key, SCM alist, SCM alist_end);
+SCM assoc_tail (SCM key, SCM alist, SCM alist_end);
 SCM evict_from_alist (SCM, SCM, SCM);
 SCM nalist_to_alist (SCM nalist, int nested);
+extern SCM ly_context_set_property_x_proc;
+extern SCM ly_context_unset_property_proc;
+extern SCM ly_context_matched_pop_property_proc;
 
 #endif /* CONTEXT_HH */
index 7b128353b80bcc734d77c0770de874c35759f680..5822dd01fb915e5ecda1b4247468ad66c37e87e7 100644 (file)
@@ -48,6 +48,8 @@ public:
   bool create ();
   SCM updated ();
   SCM push (SCM path, SCM value);
+  SCM temporary_override (SCM path, SCM value);
+  SCM temporary_revert (SCM path);
   void matched_pop (SCM);
   void pop (SCM path);
   void pushpop (SCM path, SCM value)
index 3f9577f6f720fbb065860702255f9bb98ffcc833..984d41ef57d5b9acc60a71090ff8ac77d993fbff 100644 (file)
@@ -29,11 +29,9 @@ class Property_iterator : public Simple_music_iterator
 {
 public:
   DECLARE_SCHEME_CALLBACK (constructor, ());
-  DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM, SCM));
   DECLARE_CLASSNAME (Property_iterator);
 
 protected:
-  virtual void do_quit ();
   virtual void process (Moment);
 };
 
@@ -53,11 +51,9 @@ class Push_property_iterator : public Simple_music_iterator
 {
 public:
   DECLARE_SCHEME_CALLBACK (constructor, ());
-  DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM));
   DECLARE_CLASSNAME (Push_property_iterator);
 protected:
   virtual void process (Moment);
-  virtual void do_quit ();
 };
 
 class Pop_property_iterator : public Simple_music_iterator
index 30f3435d99708e3f22c1b7e8d746c59f827ca000..274746b84597d35ab272cd8048dbb6e0c37b3be4 100644 (file)
@@ -39,40 +39,39 @@ public:
 
 protected:
   void process_music ();
-  void stop_translation_timestep ();
   void start_translation_timestep ();
-  virtual void finalize ();
   DECLARE_TRANSLATOR_LISTENER (multi_measure_rest);
   DECLARE_TRANSLATOR_LISTENER (multi_measure_text);
 
 private:
-  Stream_event *rest_ev_;
+  void add_bound_item_to_grobs (Item *);
+  void clear_lapsed_events (const Moment &now);
+  bool grobs_initialized () const { return mmrest_; }
+  void initialize_grobs ();
+  void reset_grobs ();
+  void set_measure_count (int n);
+
+private:
   vector<Stream_event *> text_events_;
-  int start_measure_;
-  Rational last_main_moment_;
+  // text_[0] is a MultiMeasureRestNumber grob
+  // the rest are optional MultiMeasureRestText grobs
+  vector<Spanner *> text_;
+  Stream_event *rest_ev_;
+  Spanner *mmrest_;
   Moment stop_moment_;
-
-  bool bar_seen_;
+  int start_measure_;
+  // Ugh, this is a kludge - need this for multi-measure-rest-grace.ly
   Item *last_command_item_;
-  Spanner *last_rest_;
-  Spanner *mmrest_;
-
-  vector<Spanner *> numbers_;
-  vector<Spanner *> last_numbers_;
+  bool first_time_;
 };
 
 Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
+  : rest_ev_ (0),
+    mmrest_ (0),
+    start_measure_ (0),
+    last_command_item_ (0),
+    first_time_ (true)
 {
-  last_command_item_ = 0;
-
-  /*
-    For the start of a score.
-  */
-  bar_seen_ = true;
-  start_measure_ = 0;
-  mmrest_ = 0;
-  last_rest_ = 0;
-  rest_ev_ = 0;
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Multi_measure_rest_engraver, multi_measure_rest);
@@ -82,11 +81,14 @@ Multi_measure_rest_engraver::listen_multi_measure_rest (Stream_event *ev)
   /* FIXME: Should use ASSIGN_EVENT_ONCE. Can't do that yet because of
      the kill-mm-rests hack in part-combine-iterator. */
   rest_ev_ = ev;
-  stop_moment_ = now_mom () + get_event_length (rest_ev_, now_mom ());
+  const Moment now (now_mom ());
+  stop_moment_ = now + get_event_length (rest_ev_, now);
   /*
   if (ASSIGN_EVENT_ONCE (rest_ev_, ev))
     stop_moment_ = now_mom () + get_event_length (rest_ev_);
   */
+
+  clear_lapsed_events (now);
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Multi_measure_rest_engraver, multi_measure_text);
@@ -97,165 +99,150 @@ Multi_measure_rest_engraver::listen_multi_measure_text (Stream_event *ev)
 }
 
 void
-Multi_measure_rest_engraver::process_music ()
+Multi_measure_rest_engraver::add_bound_item_to_grobs (Item *item)
+{
+  add_bound_item (mmrest_, item);
+  for (vsize i = 0; i < text_.size (); ++i)
+    add_bound_item (text_[i], item);
+}
+
+void
+Multi_measure_rest_engraver::clear_lapsed_events (const Moment &now)
 {
-  if (rest_ev_ && !mmrest_
-      && stop_moment_ > now_mom ())
+  if (now.main_part_ >= stop_moment_.main_part_)
     {
-      mmrest_ = make_spanner ("MultiMeasureRest", rest_ev_->self_scm ());
+      rest_ev_ = 0;
+      text_events_.clear ();
+    }
+}
 
-      Spanner *sp
-        = make_spanner ("MultiMeasureRestNumber", rest_ev_->self_scm ());
-      numbers_.push_back (sp);
+void
+Multi_measure_rest_engraver::initialize_grobs ()
+{
+  mmrest_ = make_spanner ("MultiMeasureRest", rest_ev_->self_scm ());
+  text_.push_back (make_spanner ("MultiMeasureRestNumber",
+                                 rest_ev_->self_scm ()));
 
-      if (text_events_.size ())
+  if (text_events_.size ())
+    {
+      for (vsize i = 0; i < text_events_.size (); i++)
         {
-          for (vsize i = 0; i < text_events_.size (); i++)
-            {
-              Stream_event *e = text_events_[i];
-              Spanner *sp
-                = make_spanner ("MultiMeasureRestText", e->self_scm ());
-              SCM t = e->get_property ("text");
-              SCM dir = e->get_property ("direction");
-              sp->set_property ("text", t);
-              if (is_direction (dir))
-                sp->set_property ("direction", dir);
-
-              numbers_.push_back (sp);
-            }
+          Stream_event *e = text_events_[i];
+          Spanner *sp = make_spanner ("MultiMeasureRestText", e->self_scm ());
+          SCM t = e->get_property ("text");
+          SCM dir = e->get_property ("direction");
+          sp->set_property ("text", t);
+          if (is_direction (dir))
+            sp->set_property ("direction", dir);
+
+          text_.push_back (sp);
+        }
 
-          /*
-            Stack different scripts.
-          */
-          for (DOWN_and_UP (d))
+      /*
+        Stack different scripts.
+      */
+      for (DOWN_and_UP (d))
+        {
+          SCM dir = scm_from_int (d);
+          Grob *last = 0;
+          for (vsize i = 0; i < text_.size (); i++)
             {
-              Grob *last = 0;
-              for (vsize i = 0; i < numbers_.size (); i++)
+              if (scm_is_eq (dir, text_[i]->get_property ("direction")))
                 {
-                  if (scm_is_eq (scm_from_int (d),
-                                 numbers_[i]->get_property ("direction")))
-                    {
-                      if (last)
-                        Side_position_interface::add_support (numbers_[i], last);
-                      last = numbers_[i];
-                    }
+                  if (last)
+                    Side_position_interface::add_support (text_[i], last);
+                  last = text_[i];
                 }
             }
         }
-
-      for (vsize i = 0; i < numbers_.size (); i++)
-        {
-          Side_position_interface::add_support (numbers_[i], mmrest_);
-          numbers_[i]->set_parent (mmrest_, Y_AXIS);
-          numbers_[i]->set_parent (mmrest_, X_AXIS);
-        }
-
-      start_measure_
-        = scm_to_int (get_property ("internalBarNumber"));
     }
 
-  bar_seen_ = bar_seen_ || scm_is_string (get_property ("whichBar"));
+  for (vsize i = 0; i < text_.size (); i++)
+    {
+      Side_position_interface::add_support (text_[i], mmrest_);
+      text_[i]->set_parent (mmrest_, Y_AXIS);
+      text_[i]->set_parent (mmrest_, X_AXIS);
+    }
 }
 
 void
-Multi_measure_rest_engraver::stop_translation_timestep ()
+Multi_measure_rest_engraver::reset_grobs ()
 {
-  /* We cannot do this earlier, as breakableSeparationItem is not yet
-     there.
-
-     Actually, we no longer use breakableSeparationItem -- should this be moved?
-     -- jneem */
-  if (bar_seen_)
-    {
-      Grob *cmc = unsmob<Grob> (get_property ("currentCommandColumn"));
+  text_.clear ();
+  mmrest_ = 0;
+}
 
-      /* Ugh, this is a kludge - need this for multi-measure-rest-grace.ly  */
-      last_command_item_ = dynamic_cast<Item *> (cmc);
-    }
+void
+Multi_measure_rest_engraver::set_measure_count (int n)
+{
+  SCM n_scm = scm_from_int (n);
+  assert (mmrest_);
+  mmrest_->set_property ("measure-count", n_scm);
 
-  if (last_command_item_ && (mmrest_ || last_rest_))
+  Grob *g = text_[0]; // the MultiMeasureRestNumber
+  assert (g);
+  if (scm_is_null (g->get_property ("text")))
     {
-      if (last_rest_)
-        {
-          add_bound_item (last_rest_, last_command_item_);
-          for (vsize i = 0; i < last_numbers_.size (); i++)
-            add_bound_item (last_numbers_[i], last_command_item_);
-        }
-
-      if (mmrest_)
+      SCM thres = get_property ("restNumberThreshold");
+      int t = 1;
+      if (scm_is_number (thres))
+        t = scm_to_int (thres);
+
+      if (n <= t)
+        g->suicide ();
+      else
         {
-          add_bound_item (mmrest_, last_command_item_);
-          for (vsize i = 0; i < numbers_.size (); i++)
-            add_bound_item (numbers_[i], last_command_item_);
-
-          last_command_item_ = 0;
+          SCM text = scm_number_to_string (n_scm, scm_from_int (10));
+          g->set_property ("text", text);
         }
     }
-
-  Moment mp (robust_scm2moment (get_property ("measurePosition"), Moment (0)));
-  if (last_rest_)
-    {
-      last_rest_ = 0;
-      last_numbers_.clear ();
-    }
-
-  text_events_.clear ();
-  bar_seen_ = false;
 }
 
 void
-Multi_measure_rest_engraver::start_translation_timestep ()
+Multi_measure_rest_engraver::process_music ()
 {
-  if (now_mom ().main_part_ >= stop_moment_.main_part_)
-    rest_ev_ = 0;
-
-  Moment mp (robust_scm2moment (get_property ("measurePosition"), Moment (0)));
+  const bool measure_end
+  = scm_is_string (get_property ("whichBar"))
+    && (robust_scm2moment (get_property ("measurePosition"),
+                           Moment (0)).main_part_ == Rational (0));
 
-  Moment now = now_mom ();
-  if (mmrest_
-      && now.main_part_ != last_main_moment_
-      && mp.main_part_ == Rational (0))
+  if (measure_end || first_time_)
     {
-      last_rest_ = mmrest_;
-      last_numbers_ = numbers_;
+      last_command_item_ = unsmob<Item> (get_property ("currentCommandColumn"));
 
-      int cur = scm_to_int (get_property ("internalBarNumber"));
-      int num = cur - start_measure_;
-
-      /*
-        We can't plug a markup directly into the grob, since the
-        measure-count determines the formatting of the mmrest.
-      */
-      last_rest_->set_property ("measure-count", scm_from_int (num));
+      // Finalize the current grobs.
+      if (grobs_initialized ())
+        {
+          int curr_measure = scm_to_int (get_property ("internalBarNumber"));
+          set_measure_count (curr_measure - start_measure_);
+          if (last_command_item_)
+            add_bound_item_to_grobs (last_command_item_);
+          reset_grobs ();
+        }
+    }
 
-      mmrest_ = 0;
-      numbers_.clear ();
+  // Create new grobs if a rest event is (still) active.
+  if (!grobs_initialized () && rest_ev_)
+    {
+      initialize_grobs ();
+      text_events_.clear ();
 
-      Grob *last = last_numbers_.size () ? last_numbers_[0] : 0;
-      if (last && scm_is_null (last->get_property ("text")))
+      if (last_command_item_)
         {
-          SCM thres = get_property ("restNumberThreshold");
-          int t = 1;
-          if (scm_is_number (thres))
-            t = scm_to_int (thres);
-
-          if (num <= t)
-            last->suicide ();
-          else
-            {
-              SCM text
-                = scm_number_to_string (scm_from_int (num), scm_from_int (10));
-              last->set_property ("text", text);
-            }
+          add_bound_item_to_grobs (last_command_item_);
+          last_command_item_ = 0;
         }
+
+      start_measure_ = scm_to_int (get_property ("internalBarNumber"));
     }
 
-  last_main_moment_ = now.main_part_;
+  first_time_ = false;
 }
 
 void
-Multi_measure_rest_engraver::finalize ()
+Multi_measure_rest_engraver::start_translation_timestep ()
 {
+  clear_lapsed_events (now_mom ());
 }
 
 ADD_TRANSLATOR (Multi_measure_rest_engraver,
@@ -274,7 +261,8 @@ ADD_TRANSLATOR (Multi_measure_rest_engraver,
                 "internalBarNumber "
                 "restNumberThreshold "
                 "currentCommandColumn "
-                "measurePosition ",
+                "measurePosition "
+                "whichBar ",
 
                 /* write */
                 ""
index 4c79918f09b6abe37e990fcd81348ab710a82c58..7c8b13047d726e8f8d45fc2e44300402e038d31a 100644 (file)
@@ -154,11 +154,20 @@ nalist_to_alist (SCM nalist, int nested)
   SCM copied = SCM_EOL;
   SCM partials = SCM_EOL;
   // partials is a alist of partial overrides
-  for (;;)
+  while (nested)
     {
       SCM elt = scm_car (nalist);
       nalist = scm_cdr (nalist);
       SCM key = scm_car (elt);
+      if (!scm_is_symbol (key))
+        --nested;
+      if (scm_is_bool (key))
+        {
+          if (scm_is_false (key))
+            continue;
+          elt = scm_cdr (elt);
+          key = scm_car (elt);
+        }
       if (scm_is_pair (key))
         // nested override: record for key in partial
         {
@@ -168,23 +177,20 @@ nalist_to_alist (SCM nalist, int nested)
                                   partials);
           else
             scm_set_cdr_x (pair, scm_cons (elt, scm_cdr (pair)));
-          if (!--nested)
-            break;
+          continue;
         }
-      else
-        // plain override: apply any known corresponding partials
+
+      // plain override: apply any known corresponding partials
+      SCM pair = assq_pop_x (key, &partials);
+      if (scm_is_true (pair))
         {
-          SCM pair = assq_pop_x (key, &partials);
-          if (scm_is_true (pair))
-            {
-              SCM value = scm_cdr (elt);
-              for (SCM pp = scm_cdr (pair); scm_is_pair (pp); pp = scm_cdr (pp))
-                value = nested_property_alist (value, scm_cdaar (pp), scm_cdar (pp));
-              copied = scm_acons (key, value, copied);
-            }
-          else
-            copied = scm_cons (elt, copied);
+          SCM value = scm_cdr (elt);
+          for (SCM pp = scm_cdr (pair); scm_is_pair (pp); pp = scm_cdr (pp))
+            value = nested_property_alist (value, scm_cdaar (pp), scm_cdar (pp));
+          copied = scm_acons (key, value, copied);
         }
+      else
+        copied = scm_cons (elt, copied);
     }
   // Now need to work off the remaining partials.  All of them are
   // unique, so we can push them to `copied' after resolving without
index bf95ee21eb12182be6b3fec91fa5a6aeb3d15b52..4725406323e46efceef64fb788543788009c6c76 100644 (file)
@@ -35,25 +35,11 @@ Property_iterator::process (Moment mom)
 {
   Context *o = get_outlet ();
   Music *m = get_music ();
-  bool once = to_boolean (m->get_property ("once"));
-  SCM symbol = m->get_property ("symbol");
-  SCM previous_value = SCM_UNDEFINED;
-  if (once)
-    o->here_defined (symbol, &previous_value);
 
   send_stream_event (o, "SetProperty", m->origin (),
-                     ly_symbol2scm ("symbol"), symbol,
-                     ly_symbol2scm ("value"), m->get_property ("value"));
-
-  /* For \once \set install a finalization hook to reset the property to the
-   * previous value after the timestep */
-  if (once)
-    {
-      Global_context *tg = get_outlet ()->get_global_context ();
-      tg->add_finalization (scm_list_4 (once_finalization_proc,
-                                        o->self_scm (), m->self_scm (),
-                                        previous_value));
-    }
+                     ly_symbol2scm ("symbol"), m->get_property ("symbol"),
+                     ly_symbol2scm ("value"), m->get_property ("value"),
+                     ly_symbol2scm ("once"), m->get_property ("once"));
 
   Simple_music_iterator::process (mom);
 }
@@ -63,47 +49,12 @@ Property_unset_iterator::process (Moment mom)
 {
   Context *o = get_outlet ();
   Music *m = get_music ();
-  bool once = to_boolean (m->get_property ("once"));
-  SCM symbol = m->get_property ("symbol");
-  SCM previous_value = SCM_UNDEFINED;
-  if (once)
-    o->here_defined (symbol, &previous_value);
 
   send_stream_event (o, "UnsetProperty", m->origin (),
-                     ly_symbol2scm ("symbol"), symbol);
-
-  /* For \once \unset install a finalization hook to reset the property to the
-   * previous value after the timestep */
-  if (once && !SCM_UNBNDP (previous_value))
-    {
-      Global_context *tg = get_outlet ()->get_global_context ();
-      tg->add_finalization (scm_list_4 (Property_iterator::once_finalization_proc,
-                                        o->self_scm (), m->self_scm (),
-                                        previous_value));
-    }
-
-  Simple_music_iterator::process (mom);
-}
-
-MAKE_SCHEME_CALLBACK (Property_iterator, once_finalization, 3);
-SCM
-Property_iterator::once_finalization (SCM ctx, SCM music, SCM previous_value)
-{
-  Music *m = unsmob<Music> (music);
-  Context *c = unsmob<Context> (ctx);
-
-  // Do not use UnsetProperty, which sets the default, but rather
-  // cache the value before the \once \set command and restore it now
-  send_stream_event (c, "SetProperty", m->origin (),
                      ly_symbol2scm ("symbol"), m->get_property ("symbol"),
-                     ly_symbol2scm ("value"), previous_value);
-
-  return SCM_UNSPECIFIED;
-}
+                     ly_symbol2scm ("once"), m->get_property ("once"));
 
-void
-Property_iterator::do_quit ()
-{
+  Simple_music_iterator::process (mom);
 }
 
 bool
@@ -140,9 +91,10 @@ Push_property_iterator::process (Moment m)
     {
       SCM grob_property_path = get_property_path (get_music ());
       SCM val = get_music ()->get_property ("grob-value");
+      SCM once = get_music ()->get_property ("once");
 
       if (to_boolean (get_music ()->get_property ("pop-first"))
-          && !to_boolean (get_music ()->get_property ("once")))
+          && !to_boolean (once))
         send_stream_event (get_outlet (), "Revert", get_music ()->origin (),
                            ly_symbol2scm ("symbol"), sym,
                            ly_symbol2scm ("property-path"), grob_property_path);
@@ -150,58 +102,28 @@ Push_property_iterator::process (Moment m)
       send_stream_event (get_outlet (), "Override", get_music ()->origin (),
                          ly_symbol2scm ("symbol"), sym,
                          ly_symbol2scm ("property-path"), grob_property_path,
+                         ly_symbol2scm ("once"), once,
                          ly_symbol2scm ("value"), val);
     }
   Simple_music_iterator::process (m);
 }
 
-MAKE_SCHEME_CALLBACK (Push_property_iterator, once_finalization, 2);
-SCM
-Push_property_iterator::once_finalization (SCM ctx, SCM music)
-{
-  Music *mus = unsmob<Music> (music);
-  Context *c = unsmob<Context> (ctx);
-
-  SCM sym = mus->get_property ("symbol");
-  if (check_grob (mus, sym))
-    {
-      SCM grob_property_path = get_property_path (mus);
-
-      send_stream_event (c, "Revert", mus->origin (),
-                         ly_symbol2scm ("symbol"), sym,
-                         ly_symbol2scm ("property-path"), grob_property_path);
-    }
-  return SCM_UNSPECIFIED;
-}
-
 void
-Push_property_iterator::do_quit ()
+Pop_property_iterator::process (Moment mom)
 {
-  if (to_boolean (get_music ()->get_property ("once")))
-    {
-      SCM trans = get_outlet ()->self_scm ();
-      SCM music = get_music ()->self_scm ();
-
-      Global_context *tg = get_outlet ()->get_global_context ();
-      tg->add_finalization (scm_list_3 (once_finalization_proc,
-                                        trans, music));
-    }
-}
-
-void
-Pop_property_iterator::process (Moment m)
-{
-  SCM sym = get_music ()->get_property ("symbol");
+  Music *m = get_music ();
+  SCM sym = m->get_property ("symbol");
 
-  if (check_grob (get_music (), sym))
+  if (check_grob (m, sym))
     {
-      SCM grob_property_path = get_property_path (get_music ());
+      SCM grob_property_path = get_property_path (m);
 
-      send_stream_event (get_outlet (), "Revert", get_music ()->origin (),
+      send_stream_event (get_outlet (), "Revert", m->origin (),
                          ly_symbol2scm ("symbol"), sym,
+                         ly_symbol2scm ("once"), m->get_property ("once"),
                          ly_symbol2scm ("property-path"), grob_property_path);
     }
-  Simple_music_iterator::process (m);
+  Simple_music_iterator::process (mom);
 }
 
 IMPLEMENT_CTOR_CALLBACK (Pop_property_iterator);
index d61c52c5d8bc5f5f06b516d7bd005d327254cc18..4eea8e5800ae271fe103da8241a225a1790386c0 100644 (file)
@@ -68,7 +68,7 @@ Repeat_tie_engraver::acknowledge_note_head (Grob_info inf)
 
   if (!semi_tie_column_)
     {
-      semi_tie_column_ = make_item ("RepeatTieColumn", event_->self_scm ());
+      semi_tie_column_ = make_item ("RepeatTieColumn", SCM_EOL);
     }
 
   SCM cause = event_->self_scm ();
index fe270aef98d4d58cb226252cf96a174652000a5b..e976cb66440498876a627e339fc194e0bbd35441 100644 (file)
@@ -1616,15 +1616,11 @@ control-point.  If @var{item} is a string, the result is
 @code{\\once\\override} for the specified grob type.  If @var{item} is
 a music expression, the result is the same music expression with an
 appropriate tweak applied.")
-   (define (shape-curve grob)
+   (define (shape-curve grob coords)
      (let* ((orig (ly:grob-original grob))
             (siblings (if (ly:spanner? grob)
                           (ly:spanner-broken-into orig) '()))
-            (total-found (length siblings))
-            (function (assoc-get 'control-points
-                                 (reverse (ly:grob-basic-properties grob))))
-            (coords (function grob)))
-
+            (total-found (length siblings)))
        (define (offset-control-points offsets)
          (if (null? offsets)
              coords
@@ -1647,7 +1643,9 @@ appropriate tweak applied.")
        (if (>= total-found 2)
            (helper siblings offsets)
            (offset-control-points (car offsets)))))
-   (once (propertyTweak 'control-points shape-curve item)))
+   (once (propertyTweak 'control-points
+                        (grob-transformer 'control-points shape-curve)
+                        item)))
 
 shiftDurations =
 #(define-music-function (dur dots arg)
index 3014087295296af5dd9acd71bb1f72adb7e4544f..8cbba452b424145f917cdaa12e20975d981aa6cf 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -6,10 +6,10 @@
 # Till Paala <till.rettig@gmx.de>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015.
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.19.16\n"
+"Project-Id-Version: lilypond 2.19.26\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2015-02-28 14:31+0000\n"
-"PO-Revision-Date: 2015-03-06 21:03+0200\n"
+"POT-Creation-Date: 2015-08-27 10:48+0100\n"
+"PO-Revision-Date: 2015-09-22 23:26+0300\n"
 "Last-Translator: Till Paala <till.rettig@gmx.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
@@ -17,6 +17,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.1\n"
 
 #: book_base.py:26
 #, python-format
@@ -167,7 +168,7 @@ msgstr "verworfener \\textstyle, neue \\key Syntax"
 
 #: convertrules.py:82 convertrules.py:1856 convertrules.py:2032
 #: convertrules.py:2175 convertrules.py:2506 convertrules.py:2801
-#: convertrules.py:3151 convertrules.py:3385 convertrules.py:3697
+#: convertrules.py:3151 convertrules.py:3388 convertrules.py:3700
 msgid "bump version for release"
 msgstr "aktuelle Version ausgeben"
 
@@ -590,7 +591,7 @@ msgstr "oldaddlyrics entfernen"
 #: convertrules.py:2820
 msgid ""
 "oldaddlyrics is no longer supported. \n"
-"         Use addlyrics or lyrsicsto instead.\n"
+"         Use addlyrics or lyricsto instead.\n"
 msgstr ""
 "oldaddlyrics wird nicht mehr unterstützt.\n"
 "         Benutzen Sie anstatt dessen addlyrics oder lyricsto.\n"
@@ -833,15 +834,15 @@ msgstr "consistent-broken-slope wird jetzt durch einen Positions-Callback gehand
 msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
 msgstr "input/regression/beam-broken-classic.ly zeigt, wie gebrochene Balken jetzt behandelt werden.\n"
 
-#: convertrules.py:3369
+#: convertrules.py:3372
 msgid "beamExceptions controls whole-measure beaming."
 msgstr "beamExceptions kontrolliert Bebalkung von ganzen Takten."
 
-#: convertrules.py:3606
+#: convertrules.py:3609
 msgid "Flag.transparent and Flag.color inherit from Stem"
 msgstr "Flag.transparent (Durchsichtigkeit) und Farbe der Fähnchen werden vom Hals geerbt"
 
-#: convertrules.py:3672
+#: convertrules.py:3675
 msgid "Staff-padding now controls the distance to the baseline, not the nearest point."
 msgstr "Staff-padding kontrolliert jetzt den Abstand zur Grundlinie, nicht zum nächsten Punkt."
 
@@ -947,12 +948,12 @@ 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:1386 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
+#: abc2ly.py:1389 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [OPTIONEN]... DATEI"
 
-#: abc2ly.py:1387
+#: abc2ly.py:1390
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
@@ -961,29 +962,29 @@ msgstr ""
 "abc2ly wandelt ABC-Musikdateien in LilyPond-Eingabe um\n"
 "(siehe auch %s).\n"
 
-#: abc2ly.py:1395 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
-#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:183
+#: abc2ly.py:1398 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
+#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:184
 msgid "show version number and exit"
 msgstr "Versionsnummer ausgeben und beenden"
 
-#: abc2ly.py:1398 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
-#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:162
+#: abc2ly.py:1401 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
+#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:163
 msgid "show this help and exit"
 msgstr "diese Hilfe anzeigen und beenden"
 
-#: abc2ly.py:1401 etf2ly.py:1209 midi2ly.py:1071
+#: abc2ly.py:1404 etf2ly.py:1209 midi2ly.py:1071
 msgid "write output to FILE"
 msgstr "Ausgabe in DATEI schreiben"
 
-#: abc2ly.py:1404
+#: abc2ly.py:1407
 msgid "be strict about success"
 msgstr "bzgl. Erfolg streng sein"
 
-#: abc2ly.py:1407
+#: abc2ly.py:1410
 msgid "preserve ABC's notion of beams"
 msgstr "ABCs Prinzip der Balken beibehalten"
 
-#: abc2ly.py:1410
+#: abc2ly.py:1413
 msgid "suppress progress messages"
 msgstr "Fortschrittbenachrichtigung unterdrücken"
 
@@ -991,8 +992,8 @@ msgstr "Fortschrittbenachrichtigung unterdrücken"
 #. "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:1413 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
-#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:317
+#: abc2ly.py:1416 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
+#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:318
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr "Melden Sie Fehler an %s"
@@ -1043,7 +1044,7 @@ msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS
 msgstr "Logmeldungen ensprechend LOGLEVEL ((NONE, ERROR, WARNING, PROGRESS (Standard), DEBUG) ausgeben"
 
 #: convert-ly.py:111 lilypond-book.py:163 lilypond-book.py:181
-#: musicxml2ly.py:2629 main.cc:176
+#: musicxml2ly.py:2629 main.cc:177
 msgid "LOGLEVEL"
 msgstr "LOGLEVEL"
 
@@ -1075,7 +1076,7 @@ msgid "make a numbered backup [default: filename.ext~]"
 msgstr "erstelle eine nummerierte Sicherung [Standard: Dateibezeichnung.end~]"
 
 #: convert-ly.py:152 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096
-#: main.cc:185
+#: main.cc:186
 msgid "show warranty and copyright"
 msgstr "Informationen zu Gewährleistung und Copyright anzeigen"
 
@@ -1096,17 +1097,17 @@ msgstr "Abbruch bei letzter erfolgreicher Regel"
 msgid "Processing `%s'... "
 msgstr "»%s« wird verarbeitet..."
 
-#: convert-ly.py:368
+#: convert-ly.py:366
 #, python-format
 msgid "%s: Unable to open file"
 msgstr "%s: Konnte Datei nicht öffnen"
 
-#: convert-ly.py:374
+#: convert-ly.py:372
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr "Version für »%s« kann nicht erkannt werden.  Wird übersprungen"
 
-#: convert-ly.py:380
+#: convert-ly.py:378
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
@@ -1115,7 +1116,7 @@ msgstr ""
 "%s: Ungültige Versionsangabe `%s' \n"
 "Gültige Versionsangaben bestehen aus drei Zahlen, durch Punkte getrennt; etwa `2.8.12'"
 
-#: convert-ly.py:386
+#: convert-ly.py:384
 #, python-format
 msgid "There was %d error."
 msgid_plural "There were %d errors."
@@ -1137,7 +1138,7 @@ msgstr ""
 "eine von Lilypond verwendbare Datei um.\n"
 
 #: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659
-#: main.cc:168 main.cc:180
+#: main.cc:169 main.cc:181
 msgid "FILE"
 msgstr "DATEI"
 
@@ -1175,7 +1176,7 @@ msgid "add DIR to include path"
 msgstr "VERZ zum Einfügepfad hinzufügen"
 
 #: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169
-#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:167
+#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:168
 msgid "DIR"
 msgstr "VERZ"
 
@@ -1188,7 +1189,7 @@ msgid "PAD"
 msgstr "FÜLLUNG"
 
 #: lilypond-book.py:157
-msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
+msgid "pad left side of music to align music in spite of uneven bar numbers (in mm)"
 msgstr "verschiebe linken Rand der Noten um an den Noten auszurichten, obwohl Taktnummer ungerade ist (in mm)"
 
 #: lilypond-book.py:162
@@ -1726,7 +1727,7 @@ msgstr "unterdrückte Warnung: %s"
 msgid "accidental typesetting list must begin with context-name: %s"
 msgstr "Versetzungszeichensatzliste muss mit Kontextnamen beginnen: %s"
 
-#: accidental-engraver.cc:210
+#: accidental-engraver.cc:207
 #, c-format
 msgid "procedure or context-name expected for accidental rule, found %s"
 msgstr "Prozedur oder Kontextname für Versetzungszeichenregel erwartet, %s gefunden"
@@ -1740,7 +1741,7 @@ msgstr "Glyph-Name für Versetzungszeichen %s konnte nicht gefunden werden"
 msgid "natural alteration glyph not found"
 msgstr "Auflösungszeichen konnte nicht gefunden werden"
 
-#: all-font-metrics.cc:149
+#: all-font-metrics.cc:159
 #, c-format
 msgid "cannot find font: `%s'"
 msgstr "Schriftart kann nicht gefunden werden: »%s«"
@@ -1753,11 +1754,6 @@ msgstr "Argument für \\applycontext ist keine Prozedur"
 msgid "no heads for arpeggio found?"
 msgstr "keine Notenköpfe für Arpeggio gefunden?"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "kann nicht geändert werden, bereits im Übersetzer: %s"
-
 #: axis-group-engraver.cc:149
 msgid "Axis_group_engraver: vertical group already has a parent"
 msgstr "Axis_group_engraver: vertikale Gruppe hat bereits einen Vater"
@@ -1770,12 +1766,12 @@ msgstr "gibt es zwei Axis_group_engravers?"
 msgid "removing this vertical group"
 msgstr "Entfernen dieser vertikalen Gruppe"
 
-#: axis-group-interface.cc:714
+#: axis-group-interface.cc:716
 #, c-format
 msgid "\"%s\" is not a valid outside-staff-placement-directive"
 msgstr "»%s« ist keine gültige outside-staff-placement-directive"
 
-#: axis-group-interface.cc:786
+#: axis-group-interface.cc:788
 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«"
 
@@ -1805,11 +1801,11 @@ msgid "beam was started here"
 msgstr "Balken wurde hier begonnen"
 
 #. We are completely screwed.
-#: beam-quanting.cc:839
+#: beam-quanting.cc:850
 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"
 
-#: beam.cc:181
+#: beam.cc:183
 msgid "removing beam with no stems"
 msgstr "Balken ohne Notenhälse wird entfernt"
 
@@ -1819,22 +1815,24 @@ msgid "cannot change `%s' to `%s'"
 msgstr "»%s« kann nicht in »%s« geändert werden"
 
 #. FIXME: constant error message.
-#: change-iterator.cc:93
+#: change-iterator.cc:67
 msgid "cannot find context to switch to"
 msgstr "es kann kein Kontext zum Umschalten gefunden werden"
 
+#. No enclosing context was found because the iterator's immediate
+#. context is the kind that was sought.
 #. 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
+#: change-iterator.cc:78
 #, c-format
 msgid "not changing to same context type: %s"
 msgstr "kein Umschalten zum gleichen Kontexttypen: %s"
 
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
+#. FIXME: incomprehensible message
+#: change-iterator.cc:82
 msgid "none of these in my family"
 msgstr "keiner davon befindet sich in meiner Familie"
 
@@ -1873,22 +1871,22 @@ msgstr "es kann kein Zeilenumbruch gefunden werden, der die Bedingungen erfülle
 msgid "need symbol arguments for \\override and \\revert"
 msgstr "Symbol-Argumente für \\override und \\revert benötigt"
 
-#: context.cc:143
+#: context.cc:144
 #, c-format
 msgid "cannot find or create new `%s'"
 msgstr "ein neues »%s« kann weder gefunden noch erzeugt werden"
 
-#: context.cc:222
+#: context.cc:223
 #, c-format
 msgid "cannot find or create `%s' called `%s'"
 msgstr "»%s« (»%s« genannt) kann weder gefunden noch erzeugt werden"
 
-#: context.cc:419
+#: context.cc:416
 #, c-format
 msgid "cannot find or create: `%s'"
 msgstr "»%s« kann weder gefunden noch erzeugt werden"
 
-#: context.cc:433
+#: context.cc:430
 #, c-format
 msgid "cannot find or create new Bottom = \"%s\""
 msgstr "ein neues Bottom = \"%s\" kann weder gefunden noch erzeugt werden"
@@ -1898,20 +1896,20 @@ msgstr "ein neues Bottom = \"%s\" kann weder gefunden noch erzeugt werden"
 msgid "custos `%s' not found"
 msgstr "Custos »%s« nicht gefunden"
 
-#: dispatcher.cc:83
+#: dispatcher.cc:82
 msgid "Event class should be a list"
 msgstr "Ereignisklasse sollte eine Liste sein"
 
-#: dispatcher.cc:166
+#: dispatcher.cc:165
 #, c-format
 msgid "Junking event: %s"
 msgstr "Ereignis wird verworfen: »%s«"
 
-#: dispatcher.cc:271
+#: dispatcher.cc:279
 msgid "Attempting to remove nonexisting listener."
 msgstr "Versuche, nicht existierende listener zu entfernen."
 
-#: dispatcher.cc:297
+#: dispatcher.cc:305
 msgid "Already listening to dispatcher, ignoring request"
 msgstr "Höre schon dem Rechenzeitverteiler zu, Anforderung wird irgnoriert"
 
@@ -1920,7 +1918,7 @@ msgstr "Höre schon dem Rechenzeitverteiler zu, Anforderung wird irgnoriert"
 msgid "dot `%s' not found"
 msgstr "Punkt »%s« nicht gefunden"
 
-#: dynamic-engraver.cc:168
+#: dynamic-engraver.cc:169
 #, c-format
 msgid ""
 "unknown crescendo style: %s\n"
@@ -1929,7 +1927,7 @@ msgstr ""
 "unbekannter crescendo-Stil: %s\n"
 "wird als spitze Klammer gesetzt."
 
-#: dynamic-engraver.cc:233 slur-proto-engraver.cc:119
+#: dynamic-engraver.cc:234 slur-proto-engraver.cc:119
 #, c-format
 msgid "unterminated %s"
 msgstr "unbegrenzt: »%s«"
@@ -1957,22 +1955,22 @@ msgstr "unbegrenztes Episema"
 msgid "unterminated extender"
 msgstr "unbegrenzter Textunterstrich"
 
-#: flag.cc:134
+#: flag.cc:133
 #, c-format
 msgid "flag `%s' not found"
 msgstr "Fähnchen »%s« nicht gefunden"
 
-#: flag.cc:154
+#: flag.cc:153
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr "Fähnchenstrich »%s« nicht gefunden"
 
-#: font-config-scheme.cc:151 font-config.cc:53
+#: font-config-scheme.cc:151 font-config.cc:82
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "Schriftartverzeichnis konnte nicht hinzugefügt werden: %s"
 
-#: font-config-scheme.cc:153 font-config.cc:55
+#: font-config-scheme.cc:153 font-config.cc:84
 #, c-format
 msgid "Adding font directory: %s"
 msgstr "Schriftartverzeichnis wird hinzugefügt: %s"
@@ -1991,7 +1989,17 @@ msgstr "Schriftartdatei wird hinzugefügt: %s"
 msgid "Initializing FontConfig..."
 msgstr "FontConfig wird initialisiert..."
 
-#: font-config.cc:58
+#: font-config.cc:70
+#, c-format
+msgid "failed to add fontconfig configuration file `%s'"
+msgstr "Schriftkonfigurationsdatei »%s« für fontconfig konnte nicht hinzugefügt werden"
+
+#: font-config.cc:73
+#, c-format
+msgid "Adding fontconfig configuration file: %s"
+msgstr "Schriftkonfigurationsdatei für fontconfig wird hinzugefügt: %s"
+
+#: font-config.cc:86
 msgid "Building font database..."
 msgstr "Schriftartendatenbank erstellen..."
 
@@ -2055,12 +2063,12 @@ msgstr "Unbekannte Schnittstelle »%s«"
 msgid "Grob `%s' has no interface for property `%s'"
 msgstr "Grob »%s« hat keine Schnittstelle für Eigenschaft »%s«"
 
-#: grob-property.cc:35
+#: grob-property.cc:33
 #, c-format
 msgid "%d: %s"
 msgstr "%d: %s"
 
-#: grob.cc:481
+#: grob.cc:492
 #, c-format
 msgid "ignored infinite %s-offset"
 msgstr "unendliche %s-Verschiebung ignoriert"
@@ -2089,7 +2097,7 @@ msgstr "unbegrenzter Bindestrich wird entfernt"
 msgid "unterminated hyphen; removing"
 msgstr "unbegrenzter Bindestrich; entfernt"
 
-#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#: includable-lexer.cc:71 lily-guile.cc:92 lily-parser-scheme.cc:108
 #, c-format
 msgid "cannot find file: `%s'"
 msgstr "Datei »%s« kann nicht gefunden werden"
@@ -2099,11 +2107,11 @@ msgstr "Datei »%s« kann nicht gefunden werden"
 msgid "(search path: `%s')"
 msgstr "(Suchpfad: »%s«)"
 
-#: input.cc:138 source-file.cc:177 source-file.cc:192
+#: input.cc:138 source-file.cc:180 source-file.cc:195
 msgid "position unknown"
 msgstr "Position unbekannt"
 
-#: key-engraver.cc:198
+#: key-engraver.cc:197
 msgid "Incomplete keyAlterationOrder for key signature"
 msgstr "keyAlterationOrder für die Vorzeichen ist nicht vollständig"
 
@@ -2144,21 +2152,21 @@ msgstr "Pause wird ignoriert: Ligatur darf keine Pause enthalten"
 msgid "ligature was started here"
 msgstr "Ligatur wurde hier begonnen"
 
-#: lily-guile.cc:93
+#: lily-guile.cc:94
 #, c-format
 msgid "(load path: `%s')"
 msgstr "(Lade-Pfad: `%s')"
 
-#: lily-guile.cc:412
+#: lily-guile.cc:413
 #, 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:415
+#: lily-guile.cc:416
 msgid "perhaps a typing error?"
 msgstr "vielleicht ein Tippfehler?"
 
-#: lily-guile.cc:422
+#: lily-guile.cc:423
 msgid "skipping assignment"
 msgstr "Zuweisung wird übersprungen"
 
@@ -2167,20 +2175,33 @@ msgstr "Zuweisung wird übersprungen"
 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"
 
-#: lily-lexer.cc:249
+#. Uh oh.  unsmob<T> delivered 0, yet
+#. unsmob<T> delivers true.  This means that unsmob<T> is a
+#. matching check from a base class of T, but var is of an
+#. incompatible derived type.
+#: lily-guile.cc:462
+msgid "Wrong kind of "
+msgstr "Falsche Art "
+
+#: lily-lexer.cc:251
 msgid "include files are not allowed in safe mode"
 msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt"
 
-#: lily-lexer.cc:276
+#: lily-lexer.cc:278
 #, c-format
 msgid "identifier name is a keyword: `%s'"
 msgstr "Bezeichnername ist ein Schlüsselwort: »%s«"
 
-#: lily-lexer.cc:297 lily-lexer.cc:310
+#: lily-lexer.cc:299 lily-lexer.cc:312
 #, c-format
 msgid "%s:EOF"
 msgstr "%s:EOF"
 
+#: lily-modules.cc:81
+#, c-format
+msgid "Uninitialized variable `%s' in module (%s)"
+msgstr "Nicht initialisierte Variable »%s« im Modul (%s)"
+
 #: lily-parser-scheme.cc:80
 #, c-format
 msgid "Changing working directory to: `%s'"
@@ -2201,19 +2222,19 @@ msgstr "Init-Datei kann nicht gefunden werden: »%s«"
 msgid "Processing `%s'"
 msgstr "»%s« wird verarbeitet"
 
-#: lily-parser-scheme.cc:209
+#: lily-parser-scheme.cc:210
 msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr "ly:parser-parse-string ist nur mit einem neuen Parser gültig.  Anstelle dessen ly:parser-include-string benutzen."
 
-#: lily-parser-scheme.cc:240
+#: lily-parser-scheme.cc:241
 msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr "ly:parse-string-expression ist nur mit einem neuen Parser gültig.  Anstelle dessen ly:parser-include-string benutzen."
 
-#: lily-parser.cc:107
+#: lily-parser.cc:106
 msgid "Parsing..."
 msgstr "Analysieren..."
 
-#: lookup.cc:181
+#: lookup.cc:178
 #, c-format
 msgid "Not drawing a box with negative dimension, %.2f by %.2f."
 msgstr "Kasten mit negativen Ausmaßen wird nicht gezeichnet, %.2f mal %.2f."
@@ -2222,12 +2243,12 @@ msgstr "Kasten mit negativen Ausmaßen wird nicht gezeichnet, %.2f mal %.2f."
 msgid "argument of \\lyricsto should contain Lyrics context"
 msgstr "das Argument von \\lyricsto muss einen Lyrics-Kontext enthalten"
 
-#: lyric-combine-music-iterator.cc:349
+#: lyric-combine-music-iterator.cc:344
 #, c-format
 msgid "cannot find %s `%s'"
 msgstr "%s »%s« kann nicht gefunden werden"
 
-#: main.cc:105
+#: main.cc:106
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2240,7 +2261,7 @@ msgstr ""
 "Bedingungen weitergeben. Rufen Sie »%s --warranty« für weitere\n"
 "Informationen auf.\n"
 
-#: main.cc:111
+#: main.cc:112
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License as \n"
@@ -2272,11 +2293,11 @@ msgstr ""
 "Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:149
+#: main.cc:150
 msgid "SYM[=VAL]"
 msgstr "SYM[=WERT]"
 
-#: main.cc:150
+#: main.cc:151
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
@@ -2284,63 +2305,63 @@ msgstr ""
 "Scheme-Option SYM auf WERT setzen (Vorgabe: #t).\n"
 "-dhelp für Hilfe verwenden."
 
-#: main.cc:154
+#: main.cc:155
 msgid "EXPR"
 msgstr "AUSD"
 
-#: main.cc:154
+#: main.cc:155
 msgid "evaluate scheme code"
 msgstr "Scheme-Code auswerten"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:157
+#: main.cc:158
 msgid "FORMATs"
 msgstr "FORMATe"
 
-#: main.cc:157
+#: main.cc:158
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "dump FORMAT,... Auch als separate Optionen:"
 
-#: main.cc:158
+#: main.cc:159
 msgid "generate PDF (default)"
 msgstr "PDF erzeugen (Standard)"
 
-#: main.cc:159
+#: main.cc:160
 msgid "generate PNG"
 msgstr "PNG erzeugen"
 
-#: main.cc:160
+#: main.cc:161
 msgid "generate PostScript"
 msgstr "PostScript erzeugen"
 
-#: main.cc:161
+#: main.cc:162
 msgid "generate big PDF files"
 msgstr "große PDFs erzeugen"
 
-#: main.cc:164
+#: main.cc:165
 msgid "FIELD"
 msgstr "FELD"
 
-#: main.cc:164
+#: main.cc:165
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
 msgstr "Header-Feld FELD in Datei BASISNAME.FELD schreiben"
 
-#: main.cc:167
+#: main.cc:168
 msgid "add DIR to search path"
 msgstr "VERZ zum Suchpfad hinzufügen"
 
-#: main.cc:168
+#: main.cc:169
 msgid "use FILE as init file"
 msgstr "DATEI als Anfangsdatei verwenden"
 
-#: main.cc:171
+#: main.cc:172
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "BENUTZER,GRUPPE,KERKER,VERZ"
 
-#: main.cc:171
+#: main.cc:172
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2348,7 +2369,7 @@ msgstr ""
 "chroot in KERKER, wird BENUTZER:GRUPPE\n"
 "und cd in VERZ"
 
-#: main.cc:176
+#: main.cc:177
 msgid ""
 "print log messages according to LOGLEVEL.  Possible values are:\n"
 "NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
@@ -2356,24 +2377,24 @@ msgstr ""
 "Logmeldungen nach LOGLEVEL-Einstellung ausgeben.  Mögliche Werte:\n"
 "NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (Standard) und DEBUG."
 
-#: main.cc:180
+#: main.cc:181
 msgid "write output to FILE (suffix will be added)"
 msgstr "Ausgabe in DATEI schreiben (Endung wird hinzugefügt)"
 
-#: main.cc:181
+#: main.cc:182
 msgid "relocate using directory of lilypond program"
 msgstr "wiederfinden mit Hilfe des Lilypond-Programmverzeichnisses"
 
-#: main.cc:182
+#: main.cc:183
 msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
 msgstr "kein Forschritt, nur Fehlermeldungen (entspricht LOGLEVEL=ERROR)"
 
-#: main.cc:184
+#: main.cc:185
 msgid "be verbose (equivalent to loglevel=DEBUG)"
 msgstr "ausführlich sein (entspricht LOGLEVEL=DEBUG)"
 
 #. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:263
+#: main.cc:264
 #, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -2383,84 +2404,84 @@ msgstr ""
 "%s und anderen."
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:301
+#: main.cc:302
 #, c-format
 msgid "Usage: %s [OPTION]... FILE..."
 msgstr "Aufruf: %s [OPTION]... DATEI..."
 
-#: main.cc:303
+#: main.cc:304
 msgid "Typeset music and/or produce MIDI from FILE."
 msgstr "Musiksatz und/oder MIDI aus DATEI erzeugen."
 
-#: main.cc:305
+#: main.cc:306
 msgid "LilyPond produces beautiful music notation."
 msgstr "LilyPond erzeugt ansprechenden Notensatz."
 
-#: main.cc:307
+#: main.cc:308
 #, c-format
 msgid "For more information, see %s"
 msgstr "Für weitere Informationen siehe %s"
 
-#: main.cc:309
+#: main.cc:310
 msgid "Options:"
 msgstr "Optionen:"
 
-#: main.cc:376
+#: main.cc:377
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr "%d Argumente mit Kerker erwartet, %u gefunden"
 
-#: main.cc:390
+#: main.cc:391
 #, c-format
 msgid "no such user: %s"
 msgstr "kein solcher Benutzer: %s"
 
-#: main.cc:392
+#: main.cc:393
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
 msgstr "Benutzer-ID von Benutzername kann nicht gefunden werden: %s: %s"
 
-#: main.cc:407
+#: main.cc:408
 #, c-format
 msgid "no such group: %s"
 msgstr "keine solche Gruppe: %s"
 
-#: main.cc:409
+#: main.cc:410
 #, c-format
 msgid "cannot get group id from group name: %s: %s"
 msgstr "Gruppen-ID kann nicht von Gruppenname ermittelt werden: %s: %s"
 
-#: main.cc:417
+#: main.cc:418
 #, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr "kein chroot möglich nach: %s: %s"
 
-#: main.cc:424
+#: main.cc:425
 #, c-format
 msgid "cannot change group id to: %d: %s"
 msgstr "Gruppen-ID kann nicht geändert werden in: %d: %s"
 
-#: main.cc:430
+#: main.cc:431
 #, c-format
 msgid "cannot change user id to: %d: %s"
 msgstr "Benutzer-ID kann nicht geändert werden in: %d: %s"
 
-#: main.cc:436
+#: main.cc:437
 #, c-format
 msgid "cannot change working directory to: %s: %s"
 msgstr "aktuelles Verzeichnis kann nicht geändert werden in: %s: %s"
 
-#: main.cc:825
+#: main.cc:826
 #, c-format
 msgid "exception caught: %s"
 msgstr "Ausnahme gefangen: %s"
 
 #. FIXME: constant error message.
-#: mark-engraver.cc:156
+#: mark-engraver.cc:150
 msgid "rehearsalMark must have integer value"
 msgstr "rehearsalMark muss Ganzzahlwert haben"
 
-#: mark-engraver.cc:162
+#: mark-engraver.cc:156
 msgid "mark label must be a markup object"
 msgstr "Marke muss ein Textbeschriftungsobjekt sein"
 
@@ -2512,7 +2533,7 @@ msgstr ""
 msgid "unexpected case fall-through"
 msgstr "unerwarteter case-Ausgang"
 
-#: midi-control-function-performer.cc:109 staff-performer.cc:152
+#: midi-control-function-performer.cc:107 staff-performer.cc:153
 #, c-format
 msgid "ignoring out-of-range value change for MIDI property `%s'"
 msgstr "Wertänderung außerhalb der Reichweite für MIDI-Eigenschaft »%s« ignoriert"
@@ -2548,7 +2569,7 @@ msgstr "Zeilenumbrüche werden berechnet..."
 msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
 msgstr "usable-duration-logs muss eine nicht-leere Liste sein.  Falle auf ganze Pausen zurück."
 
-#: music.cc:149
+#: music.cc:150
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
 msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden"
@@ -2582,37 +2603,37 @@ msgstr "Keinen der Notenköpfe »%s« und »%s« gefunden"
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent ohne Tonhöhe"
 
-#: open-type-font.cc:46
+#: open-type-font.cc:45
 #, c-format
 msgid "cannot allocate %lu bytes"
 msgstr "es können keine %lu Bytes angefordert werden"
 
-#: open-type-font.cc:50
+#: open-type-font.cc:49
 #, c-format
 msgid "cannot load font table: %s"
 msgstr "Schriftarttabelle kann nicht geladen werden: %s"
 
-#: open-type-font.cc:55
+#: open-type-font.cc:54
 #, c-format
 msgid "FreeType error: %s"
 msgstr "FreeType-Fehler: %s"
 
-#: open-type-font.cc:112
+#: open-type-font.cc:115
 #, c-format
 msgid "unsupported font format: %s"
 msgstr "nicht unterstütztes Schriftartformat: %s"
 
-#: open-type-font.cc:114
+#: open-type-font.cc:117
 #, c-format
 msgid "error reading font file %s: %s"
 msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s"
 
-#: open-type-font.cc:189
+#: open-type-font.cc:192
 #, c-format
 msgid "FT_Get_Glyph_Name () Freetype error: %s"
 msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s"
 
-#: open-type-font.cc:337 pango-font.cc:257
+#: open-type-font.cc:340 pango-font.cc:258
 #, c-format
 msgid "FT_Get_Glyph_Name () error: %s"
 msgstr "FT_Get_Glyph_Name() Fehler: %s"
@@ -2650,16 +2671,16 @@ msgstr "versuche %d Systeme"
 msgid "best score for this sys-count: %f"
 msgstr "bester Score für dieses sys-count: %f"
 
-#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:248
+#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:249
 #: paper-score.cc:156
 msgid "Drawing systems..."
 msgstr "Systeme erstellen..."
 
-#: output-def.cc:230
+#: output-def.cc:229
 msgid "margins do not fit with line-width, setting default values"
 msgstr "Ränder passen nicht zur Zeilenbreite, setze Standardwerte"
 
-#: output-def.cc:237
+#: output-def.cc:236
 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"
 
@@ -2676,68 +2697,68 @@ msgstr "min-systems-per-page ist größer als max-systems-per-page, beide Werte
 msgid "page %d has been compressed"
 msgstr "Seite %d wurde komprimiert"
 
-#: page-layout-problem.cc:402
+#: page-layout-problem.cc:400
 msgid "A page layout problem has been initiated that cannot accommodate footnotes."
 msgstr "Ein Seitenlayoutproblem wurde initiiert, das Fußnoten nicht aufnehmen kann."
 
-#: page-layout-problem.cc:731
+#: page-layout-problem.cc:729
 msgid "ragged-bottom was specified, but page must be compressed"
 msgstr "ragged-bottom angefordert, aber Seite muss komprimiert sein"
 
-#: page-layout-problem.cc:734
+#: page-layout-problem.cc:732
 #, c-format
 msgid "compressing over-full page by %.1f staff-spaces"
 msgstr "Komprimierung über gesamte Seite bei %.1f Notensystemabständen"
 
-#: page-layout-problem.cc:1199
+#: page-layout-problem.cc:1197
 msgid "staff-affinities should only decrease"
 msgstr "staff-affinities sollten nur abnehmen"
 
-#: page-turn-page-breaking.cc:168
+#: page-turn-page-breaking.cc:169
 #, c-format
 msgid "page-turn-page-breaking: breaking from %d to %d"
 msgstr "Seitenwechsel-Seitenumbruch: Umbruch von %d zu %d"
 
-#: page-turn-page-breaking.cc:217
+#: page-turn-page-breaking.cc:218
 msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
 msgstr "Erster Seitenwechsel kann nicht auf einzelne Seite gelegt werden. In Betracht zu ziehen wäre das Setzen von first-page-number auf gerade Zahl."
 
-#: page-turn-page-breaking.cc:230
+#: page-turn-page-breaking.cc:231
 #, c-format
 msgid "Calculating page and line breaks (%d possible page breaks)..."
 msgstr "Seiten- und Zeilenumbrüche werden berechnet (%d mögliche Seitenumbrüche)..."
 
-#: page-turn-page-breaking.cc:300
+#: page-turn-page-breaking.cc:301
 #, c-format
 msgid "break starting at page %d"
 msgstr "Umbruch beginnt auf Seite %d"
 
-#: page-turn-page-breaking.cc:301
+#: page-turn-page-breaking.cc:302
 #, c-format
 msgid "\tdemerits: %f"
 msgstr "Optimale Bewertung: %f"
 
-#: page-turn-page-breaking.cc:302
+#: page-turn-page-breaking.cc:303
 #, c-format
 msgid "\tsystem count: %d"
 msgstr "\tSystemanzahl: %d"
 
-#: page-turn-page-breaking.cc:303
+#: page-turn-page-breaking.cc:304
 #, c-format
 msgid "\tpage count: %d"
 msgstr "\tSeitenanzahl: %d"
 
-#: page-turn-page-breaking.cc:304
+#: page-turn-page-breaking.cc:305
 #, c-format
 msgid "\tprevious break: %d"
 msgstr "\tvorheriger Umbruch: %d"
 
-#: pango-font.cc:246
+#: pango-font.cc:247
 #, c-format
 msgid "no glyph for character U+%0X in font `%s'"
 msgstr "Kein Glyph für Zeichen U+%0X in Schriftart »%s«"
 
-#: pango-font.cc:273
+#: pango-font.cc:274
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
@@ -2746,21 +2767,21 @@ msgstr ""
 "Glyph hat keinen Namen, aber Zeichensatz unterstützt Glyphnamen.\n"
 "Glyph U+%0X wird übersprungen, Datei %s"
 
-#: pango-font.cc:323
+#: pango-font.cc:324
 #, c-format
 msgid "no PostScript font name for font `%s'"
 msgstr "Kein PostScript-Schriftartname für Schriftart: »%s«"
 
-#: pango-font.cc:373
+#: pango-font.cc:374
 msgid "FreeType face has no PostScript font name"
 msgstr "FreeType-Schriftart hat keinen PostScript-Schriftartnamen"
 
-#: paper-book.cc:201
+#: paper-book.cc:200
 #, c-format
 msgid "program option -dprint-pages not supported by backend `%s'"
 msgstr "Programmoption -dprint-pages nicht von Backend »%s« unterstützt"
 
-#: paper-book.cc:220
+#: paper-book.cc:219
 #, c-format
 msgid "program option -dpreview not supported by backend `%s'"
 msgstr "Programmoption -dpreview nicht von »%s« unterstützt"
@@ -2783,7 +2804,7 @@ msgstr "Elementanzahl: %d (Klammern: %d)"
 msgid "Preprocessing graphical objects..."
 msgstr "Vorverarbeitung der grafischen Elemente..."
 
-#: parse-scm.cc:128
+#: parse-scm.cc:124
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck"
 
@@ -2796,11 +2817,11 @@ msgstr "Konversion der Zeichenkette »%s« nach UTF16be fehlgeschlagen: %s"
 msgid "unterminated percent repeat"
 msgstr "unbegrenzte Prozentwiederholung"
 
-#: performance.cc:55
+#: performance.cc:76
 msgid "Track..."
 msgstr "Spur..."
 
-#: performance.cc:90
+#: performance.cc:126
 #, c-format
 msgid "MIDI output to `%s'..."
 msgstr "MIDI-Ausgabe nach »%s«..."
@@ -2835,25 +2856,25 @@ msgstr "Kein Name für grafische Objekte (grob): »%s«"
 msgid "Failed octave check, got: "
 msgstr "Oktavprüfung gescheitert, Rückgabe: "
 
-#: relocate.cc:52
+#: relocate.cc:56
 #, c-format
 msgid "Setting %s to %s"
 msgstr "%s wird auf %s gesetzt"
 
 #. this warning should only be printed in debug mode!
-#: relocate.cc:73
+#: relocate.cc:77
 #, c-format
 msgid "no such file: %s for %s"
 msgstr "keine solche Datei: %s für %s"
 
 #. this warning should only be printed in debug mode!
 #. this warning should only be printed in debug mode
-#: relocate.cc:84 relocate.cc:102
+#: relocate.cc:88 relocate.cc:106
 #, c-format
 msgid "no such directory: %s for %s"
 msgstr "kein solches Verzeichnis: %s für %s"
 
-#: relocate.cc:93
+#: relocate.cc:97
 #, c-format
 msgid "%s=%s (prepend)\n"
 msgstr "%s=%s (voranstellen)\n"
@@ -2883,7 +2904,7 @@ msgstr "Verlagerung: ist absolut: argv0=%s\n"
 msgid "Relocation : from cwd: argv0=%s\n"
 msgstr "Verlagerung: von cwd: argv0=%s\n"
 
-#: relocate.cc:194
+#: relocate.cc:196
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
@@ -2892,30 +2913,30 @@ msgstr ""
 "Verlagerung: von PATH=%s\n"
 "argv0=%s\n"
 
-#: relocate.cc:220
+#: relocate.cc:222
 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
 msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden"
 
-#: relocate.cc:345
+#: relocate.cc:347
 #, c-format
 msgid "Relocation file: %s"
 msgstr "Verlagerungsdatei: %s"
 
-#: relocate.cc:349 source-file.cc:65
+#: relocate.cc:351 source-file.cc:65
 #, c-format
 msgid "cannot open file: `%s'"
 msgstr "Datei kann nicht geöffnet werden: »%s«"
 
-#: relocate.cc:379
+#: relocate.cc:381
 #, c-format
 msgid "Unknown relocation command %s"
 msgstr "Unbekannter Verlagerungsbefehl %s"
 
-#: rest-collision.cc:153
+#: rest-collision.cc:154
 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:164 rest-collision.cc:273
+#: rest-collision.cc:165 rest-collision.cc:274
 msgid "too many colliding rests"
 msgstr "zu viele kollidierende Pausen"
 
@@ -2924,33 +2945,33 @@ msgstr "zu viele kollidierende Pausen"
 msgid "rest `%s' not found"
 msgstr "Pause »%s« nicht gefunden"
 
-#: score-engraver.cc:79
+#: score-engraver.cc:77
 #, c-format
 msgid "cannot find `%s'"
 msgstr "»%s« kann nicht gefunden werden"
 
-#: score-engraver.cc:81
+#: score-engraver.cc:79
 msgid "Music font has not been installed properly."
 msgstr "Musik-Schriftart wurde nicht ordnungsgemäß installiert."
 
-#: score-engraver.cc:83
+#: score-engraver.cc:81
 #, c-format
 msgid "Search path `%s'"
 msgstr "Suchpfad »%s«"
 
-#: score-engraver.cc:85
+#: score-engraver.cc:83
 msgid "Aborting"
 msgstr "Abbruch"
 
-#: score.cc:160
+#: score.cc:161
 msgid "already have music in score"
 msgstr "es sind bereits Noten in der Partitur"
 
-#: score.cc:161
+#: score.cc:163
 msgid "this is the previous music"
 msgstr "Dies sind die vorhergehenden Noten"
 
-#: score.cc:166
+#: score.cc:169
 msgid "errors found, ignoring music expression"
 msgstr "Fehler gefunden, musikalischer Ausdruck wird ignoriert"
 
@@ -2989,7 +3010,7 @@ msgstr "%s ohne Grund"
 msgid "cannot end %s"
 msgstr "%s kann nicht beendet werden"
 
-#: slur.cc:434
+#: slur.cc:436
 #, c-format
 msgid "Ignoring grob for slur: %s.  avoid-slur not set?"
 msgstr "Grob für Legatobogen wird ignoriert: %s.  avoid-slur nicht gesetzt?"
@@ -3024,18 +3045,18 @@ msgstr "vielleicht sollte die Eingabe mehrere Stimmen erstellen"
 msgid "weird stem size, check for narrow beams"
 msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen"
 
-#: system.cc:201
+#: system.cc:202
 #, c-format
 msgid "Element count %d"
 msgstr "Elementanzahl %d."
 
-#: system.cc:512
+#: system.cc:513
 #, c-format
 msgid "Grob count %d"
 msgstr "Anzahl der grafischen Objekte (grob): %d"
 
 #. TODO: Also print the arguments of the markup!
-#: text-interface.cc:138
+#: text-interface.cc:139
 #, c-format
 msgid "Markup depth exceeds maximal value of %d; Markup: %s"
 msgstr "Tiefe der Beschriftung geht über maximalen Wert %d, Beschriftung: %s"
@@ -3056,7 +3077,7 @@ msgstr "unbegrenzte Textklammer"
 msgid "unterminated tie"
 msgstr "unbegrenzter Bindebogen"
 
-#: tie-engraver.cc:373
+#: tie-engraver.cc:377
 msgid "lonely tie"
 msgstr "einsamer Bindebogen"
 
@@ -3070,7 +3091,7 @@ msgstr "einsamer Bindebogen"
 msgid "strange time signature found: %d/%d"
 msgstr "seltsame Taktart gefunden: %d/%d"
 
-#: translator-ctors.cc:65
+#: translator-ctors.cc:68
 #, c-format
 msgid "unknown translator: `%s'"
 msgstr "unbekannter Übersetzer: »%s«"
@@ -3080,17 +3101,17 @@ msgstr "unbekannter Übersetzer: »%s«"
 msgid "fatal error.  Couldn't find type: %s"
 msgstr "schwerwiegender Fehler.  Typ konnte nicht gefunden werden: %s"
 
-#: translator-group.cc:188
+#: translator-group.cc:187
 #, c-format
 msgid "cannot find: `%s'"
 msgstr "»%s« kann nicht gefunden werden"
 
-#: translator.cc:320
+#: translator.cc:310
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
 msgstr "Zwei gleichzeitige %s-Ereignisse, dieses wird verworfen"
 
-#: translator.cc:321
+#: translator.cc:311
 #, c-format
 msgid "Previous %s event here"
 msgstr "Vorheriges %s-Ereignis hier"
@@ -3155,206 +3176,206 @@ msgstr "endende Textklammer auch bereits vorhanden"
 msgid "giving up"
 msgstr "aufgeben"
 
-#: parser.yy:463 parser.yy:847 parser.yy:928 parser.yy:1150
+#: parser.yy:476 parser.yy:947 parser.yy:1028 parser.yy:1248
 msgid "bad expression type"
 msgstr "falsche Ausdrucksart"
 
-#: parser.yy:759 parser.yy:1361 parser.yy:1406
+#: parser.yy:859 parser.yy:1458 parser.yy:1503
 msgid "not a context mod"
 msgstr "kein solcher Kontextmodus"
 
-#: parser.yy:954
+#: parser.yy:1054
 msgid "Missing music in \\score"
 msgstr "keine Noten in der Partitur (\\score) gefunden"
 
-#: parser.yy:991
+#: parser.yy:1091
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "\\paper kann nicht in \\source verwendet werden; stattdessen \\layout verwenden"
 
-#: parser.yy:1027
+#: parser.yy:1126
 msgid "Spurious expression in \\score"
 msgstr "Falscher Ausdruck in \\score"
 
-#: parser.yy:1057
+#: parser.yy:1156
 msgid "need \\paper for paper block"
 msgstr "Für Papier-Block wird \\paper benötigt"
 
-#: parser.yy:1234
+#: parser.yy:1331
 msgid "music expected"
 msgstr "Noten erwartet"
 
-#: parser.yy:1244 parser.yy:1278
+#: parser.yy:1341 parser.yy:1375
 msgid "unexpected post-event"
 msgstr "unerwarteter post-event"
 
-#: parser.yy:1286
+#: parser.yy:1383
 msgid "Ignoring non-music expression"
 msgstr "Nicht-musikalischer Ausdruck wird ignoriert"
 
-#: parser.yy:1587
+#: parser.yy:1691
 msgid "not a symbol"
 msgstr "kein Symbol"
 
-#: parser.yy:2337 parser.yy:2451 parser.yy:2464 parser.yy:2473
+#: parser.yy:2491 parser.yy:2605 parser.yy:2618 parser.yy:2627
 msgid "bad grob property path"
 msgstr "falscher Pfad für Grob-Eigenschaft"
 
-#: parser.yy:2431
+#: parser.yy:2585
 msgid "only \\consists and \\remove take non-string argument."
 msgstr "nur \\consists und \\remove verstehen ein Nicht-Zeichenketten-Argument."
 
-#: parser.yy:2492
+#: parser.yy:2646
 msgid "bad context property path"
 msgstr "falscher Pfad für Kontexteigenschaft"
 
-#: parser.yy:2593
+#: parser.yy:2733
 msgid "simple string expected"
 msgstr "Einzelne Zeichenkette erwartet"
 
-#: parser.yy:2611
+#: parser.yy:2750
 msgid "symbol expected"
 msgstr "Symbol erwartet"
 
-#: parser.yy:2747
+#: parser.yy:2886
 msgid "not a rhythmic event"
 msgstr "kein rhytmisches Ereignis"
 
-#: parser.yy:2797
+#: parser.yy:2936
 msgid "post-event expected"
 msgstr "post-event erwartet"
 
-#: parser.yy:2806 parser.yy:2811
+#: parser.yy:2945 parser.yy:2950
 msgid "have to be in Lyric mode for lyrics"
 msgstr "muss in Liedtextmodus sein um Liedtext setzen zu können"
 
-#: parser.yy:2887
+#: parser.yy:3026
 msgid "expecting string or post-event as script definition"
 msgstr "Zeichenkette oder post-event als Skriptdefinition erwartet"
 
-#: parser.yy:2991
+#: parser.yy:3130
 msgid "not an articulation"
 msgstr "keine Artikulation"
 
-#: parser.yy:3063 parser.yy:3106
+#: parser.yy:3202 parser.yy:3245
 msgid "not a duration"
 msgstr "keine Dauer"
 
-#: parser.yy:3127
+#: parser.yy:3266
 msgid "bass number expected"
 msgstr "Bass-Ziffer erwartet"
 
-#: parser.yy:3219
+#: parser.yy:3358
 msgid "have to be in Note mode for notes"
 msgstr "Muss im Notenmodus sein für Noten"
 
-#: parser.yy:3258
+#: parser.yy:3397
 msgid "have to be in Chord mode for chords"
 msgstr "Muss im Akkordmodus sein für Akkorde"
 
-#: parser.yy:3301
+#: parser.yy:3440
 msgid "markup outside of text script or \\lyricmode"
 msgstr "Beschriftung außerhalb von Textbeschriftung oder \\lyricmode"
 
-#: parser.yy:3306
+#: parser.yy:3445
 msgid "unrecognized string, not in text script or \\lyricmode"
 msgstr "Zeichenkette nicht erkannt, weder Textbeschriftung noch \\lyricmode"
 
-#: parser.yy:3458 parser.yy:3467
+#: parser.yy:3597 parser.yy:3606
 msgid "not an unsigned integer"
 msgstr "keine unsignierte Ganzzahl"
 
-#: parser.yy:3541
+#: parser.yy:3693
 msgid "not a markup"
 msgstr "Keine Textbeschriftung"
 
-#: lexer.ll:192
+#: lexer.ll:193
 msgid "stray UTF-8 BOM encountered"
 msgstr "verirrtes UTF-8 BOM gefunden"
 
-#: lexer.ll:195
+#: lexer.ll:196
 msgid "Skipping UTF-8 BOM"
 msgstr "UTF-8 BOM wird übersprungen"
 
-#: lexer.ll:247
+#: lexer.ll:248
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Eingabe in »%s« umbenannt"
 
-#: lexer.ll:264
+#: lexer.ll:265
 msgid "quoted string expected after \\version"
 msgstr "zitierte Zeichenkette hinter \\version erwartet"
 
-#: lexer.ll:268
+#: lexer.ll:269
 msgid "quoted string expected after \\sourcefilename"
 msgstr "zitierte Zeichenkette hinter \\sourcefilename erwartet"
 
-#: lexer.ll:272
+#: lexer.ll:273
 msgid "integer expected after \\sourcefileline"
 msgstr "Ganzzahl hinter \\sourcefilename erwartet"
 
-#: lexer.ll:299
+#: lexer.ll:300
 msgid "\\maininput not allowed outside init files"
 msgstr "\\maininput ist außerhalb von Init-Dateien nicht erlaubt"
 
-#: lexer.ll:323
+#: lexer.ll:324
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "falscher oder ungültiger Bezeichner: »%s«"
 
-#: lexer.ll:348
+#: lexer.ll:349
 msgid "string expected after \\include"
 msgstr "Zeichenkette hinter \\include erwartet"
 
-#: lexer.ll:358
+#: lexer.ll:359
 msgid "end quote missing"
 msgstr "schließendes Anführungszeichen fehlt"
 
-#: lexer.ll:713
+#: lexer.ll:714
 msgid "EOF found inside a comment"
 msgstr "EOF innerhalb eines Kommentares gefunden"
 
-#: lexer.ll:718
+#: lexer.ll:719
 msgid "EOF found inside string"
 msgstr "EOF innerhalb einer Zeichenkette gefunden"
 
-#: lexer.ll:733
+#: lexer.ll:734
 msgid "Unfinished main input"
 msgstr "Haupt-Eingabe nicht beendet"
 
-#: lexer.ll:804
+#: lexer.ll:805
 #, c-format
 msgid "invalid character: `%s'"
 msgstr "Ungültiges Zeichen: »%s«"
 
-#: lexer.ll:924
+#: lexer.ll:925
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "Ungültige Fluchtsequenz: »\\%s«"
 
-#: lexer.ll:944
+#: lexer.ll:945
 #, c-format
 msgid "undefined character or shorthand: %s"
 msgstr "Zeichen oder Verweis nicht definiert: `%s'"
 
-#: lexer.ll:1235
+#: lexer.ll:1236
 msgid "non-UTF-8 input"
 msgstr "nicht-UTF8-Eingabe"
 
-#: lexer.ll:1279
+#: lexer.ll:1280
 #, c-format
 msgid "Invalid version string \"%s\""
 msgstr "Ungültige Version: »%s«"
 
-#: lexer.ll:1284
+#: lexer.ll:1285
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "Datei zu alt: %s (älteste unterstützte: %s)"
 
-#: lexer.ll:1285
+#: lexer.ll:1286
 msgid "consider updating the input with the convert-ly script"
 msgstr "Erwägen Sie die Aktualisierung der Eingabe mit dem Skript convert-ly"
 
-#: lexer.ll:1291
+#: lexer.ll:1292
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "Programm zu alt: %s (Datei erfordert: %s)"
@@ -3373,24 +3394,34 @@ msgstr "»~s« wird aufgerufen..."
 msgid "`~a' failed (~a)\n"
 msgstr "»~a« gescheitert (~a)\n"
 
-#: backend-library.scm:94
+#: backend-library.scm:108
 #, scheme-format
 msgid "Converting to `~a'...\n"
 msgstr "Konvertierung nach »~a«...\n"
 
 #. Do not try to guess the name of the png file,
 #. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:103
+#: backend-library.scm:118
 #, scheme-format
 msgid "Converting to ~a..."
 msgstr "Konvertierung nach ~a..."
 
-#: backend-library.scm:141
+#: backend-library.scm:134
+#, scheme-format
+msgid "Copying to `~a'...\n"
+msgstr "Kopieren nach »~a«...\n"
+
+#: backend-library.scm:200
+#, scheme-format
+msgid "Deleting `~a'...\n"
+msgstr "Löschen von »~a«...\n"
+
+#: backend-library.scm:219
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "Kopfzeile »~a« wird nach »~a« geschrieben"
 
-#: backend-library.scm:190
+#: backend-library.scm:268
 #, scheme-format
 msgid "missing stencil expression `~S'"
 msgstr "fehlender Stencil-Ausdruck »~S«"
@@ -3446,60 +3477,60 @@ msgstr "Kann Ereignisklasse »~S« nicht umdefinieren"
 msgid "Undefined parent event class `~S'"
 msgstr "Undefinierte Elternereignisklasse »~S«"
 
-#: define-markup-commands.scm:1062
+#: define-markup-commands.scm:1098
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr "keine Systeme in \\score-Markup gefunden, hat es einen \\layout-Block?"
 
-#: define-markup-commands.scm:2886
+#: define-markup-commands.scm:2922
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "Kann kein Zeichen ~a finden"
 
-#: define-markup-commands.scm:3362
+#: define-markup-commands.scm:3398
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "Keine Klammer in Größe ~S pt gefunden"
 
-#: define-markup-commands.scm:3363
+#: define-markup-commands.scm:3399
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr "Setze Standard ~S pt"
 
-#: define-markup-commands.scm:3615
+#: define-markup-commands.scm:3643
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "keine gültige Dauer: ~a"
 
-#: define-markup-commands.scm:3826
+#: define-markup-commands.scm:3854
 #, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
 msgstr "keine gültige Dauer: ~a, wird ignoriert"
 
-#: define-music-types.scm:797
+#: define-music-types.scm:803
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "Symbol erwartet: ~S"
 
-#: define-music-types.scm:800
+#: define-music-types.scm:806
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "Musikobjekt kann nicht gefunden werden: ~S"
 
-#: define-music-types.scm:820
+#: define-music-types.scm:826
 #, scheme-format
 msgid "bad make-music argument: ~S"
 msgstr "falsches make-music argument: ~S"
 
-#: define-note-names.scm:972
+#: define-note-names.scm:1000
 msgid "Select note names language."
 msgstr "Wählen Sie die Sprache der Notenbezeichnungen."
 
-#: define-note-names.scm:978
+#: define-note-names.scm:1006
 #, scheme-format
 msgid "Using `~a' note names..."
 msgstr "Benutze Notenbezeichnung »~a«..."
 
-#: define-note-names.scm:981
+#: define-note-names.scm:1009
 #, scheme-format
 msgid "Could not find language `~a'.  Ignoring."
 msgstr "Konnte Sprache »~a« nicht finden.  Wird ignoriert."
@@ -3539,12 +3570,12 @@ msgstr "Beschreibung für Eigenschaft ~S' (~S) kann nicht gefunden werden"
 msgid "cannot find description for property ~S (~S)"
 msgstr "Beschreibung für Eigenschaft ~S (~S) kann nicht gefunden werden"
 
-#: flag-styles.scm:162
+#: flag-styles.scm:155
 #, scheme-format
 msgid "flag stroke `~a' or `~a' not found"
 msgstr "Fähnchenstrich »~a«·or·»~a« nicht gefunden"
 
-#: framework-eps.scm:108
+#: framework-eps.scm:112
 #, scheme-format
 msgid "Writing ~a..."
 msgstr "~a wird geschrieben..."
@@ -3569,7 +3600,7 @@ msgstr "Unbekannte Einbettung ~S=~S"
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr "Unbekannte Schriftsatzeinbettung ~s ~s ~s"
 
-#: framework-ps.scm:729
+#: framework-ps.scm:723
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3618,20 +3649,20 @@ msgstr "Fehler bei Balkenzuschnitt. (~S,~S) erwartet, ~S gefunden."
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
 msgstr "Fehler bei Balkenzuschnitt. ~S 0 erwartet, ~S gefunden."
 
-#: lily-library.scm:350
+#: lily-library.scm:333
 msgid "Music unsuitable for context-mod"
 msgstr "Musik unpassend für context-mod"
 
-#: lily-library.scm:405
+#: lily-library.scm:388
 #, scheme-format
 msgid "Cannot find context-def \\~a"
 msgstr "Kann contex-def \\~a nicht finden"
 
-#: lily-library.scm:421
+#: lily-library.scm:404
 msgid "Music unsuitable for output-def"
 msgstr "Musik unpassend für output-def"
 
-#: lily-library.scm:921
+#: lily-library.scm:904
 msgid ""
 "Find the index between @var{start} and @var{end} (an integer)\n"
 "which produces the closest match to @var{target-val} if\n"
@@ -3641,51 +3672,51 @@ msgstr ""
 "die den nächstmöglichen Treffer für @var{target-val} findet,\n"
 "wenn auf die Funktion @var{getter} angewandt."
 
-#: lily-library.scm:1015
+#: lily-library.scm:998
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "unbekannte Einheit: ~S"
 
-#: lily-library.scm:1040
+#: lily-library.scm:1023
 #, 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.scm:75
+#: lily.scm:93
 msgid "call-after-session used after session start"
 msgstr "call-after-session nach Beginn des Abschnitts benutzt"
 
-#: lily.scm:93
+#: lily.scm:111
 msgid "define-session used after session start"
 msgstr "define-session nach Beginn des Abschnitts benutzt"
 
-#: lily.scm:399
+#: lily.scm:417
 msgid "Using (ice-9 curried-definitions) module\n"
 msgstr "Benutze Modul (ice-9 curried-definitions)\n"
 
-#: lily.scm:402
+#: lily.scm:420
 msgid "Guile 1.8\n"
 msgstr "Guile 1.8\n"
 
-#: lily.scm:459
+#: lily.scm:477
 #, scheme-format
 msgid "cannot find: ~A"
 msgstr "~A kann nicht gefunden werden"
 
-#: lily.scm:886
+#: lily.scm:903
 msgid "Success: compilation successfully completed"
 msgstr "Kompilation erfolgreich beendet"
 
-#: lily.scm:887
+#: lily.scm:904
 msgid "Compilation completed with warnings or errors"
 msgstr "Kompilation mit Warnungen bzw. Fehlermeldungen beendet"
 
-#: lily.scm:948
+#: lily.scm:965
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
 msgstr "Auftrag ~a mit Signal ~a beendet"
 
-#: lily.scm:951
+#: lily.scm:968
 #, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
@@ -3694,36 +3725,31 @@ msgstr ""
 "Logdatei ~a (Ende ~a):\n"
 "~a"
 
-#: lily.scm:973 lily.scm:1062
+#: lily.scm:990 lily.scm:1079
 #, scheme-format
 msgid "failed files: ~S"
 msgstr "gescheiterte Dateien: ~S"
 
-#: lily.scm:1053
+#: lily.scm:1070
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr "Ausgabeumleitung nach ~a..."
 
-#: lily.scm:1072 ps-to-png.scm:66
+#: lily.scm:1089
 #, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr "»~a« wird aufgerufen...\n"
 
-#: ly-syntax-constructors.scm:66
+#: ly-syntax-constructors.scm:27
 #, scheme-format
 msgid "~a function cannot return ~a"
 msgstr "~a-Funktion kann nicht ~a ausgeben"
 
-#: ly-syntax-constructors.scm:76
+#: ly-syntax-constructors.scm:60
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr "falscher Typ für Argument ~a; ~a erwartet, ~s gefunden"
 
-#: ly-syntax-constructors.scm:200
-#, scheme-format
-msgid "Invalid property operation ~a"
-msgstr "Ungültige Eigenschaftsoperation ~a"
-
 #: markup-macros.scm:331
 #, scheme-format
 msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
@@ -3763,67 +3789,77 @@ msgstr "Tonhöhe, die umgekehrt wird, nicht in Skala, wird ignoriert"
 msgid "negative replication count; ignoring"
 msgstr "negativer Replikationszähler, wird ignoriert"
 
-#: music-functions.scm:311
+#: music-functions.scm:319
 #, scheme-format
 msgid "invalid tremolo repeat count: ~a"
 msgstr "ungültige Tremolo-Wiederholung: ~a"
 
-#: music-functions.scm:340
+#: music-functions.scm:348
 #, scheme-format
 msgid "unknown repeat type `~S': must be volta, unfold, percent, or tremolo"
 msgstr "unbekannter Wiederholungstzp  `~S': gültig sind volta, unfold, percent, oder tremolo"
 
-#: music-functions.scm:344
+#: music-functions.scm:352
 msgid "More alternatives than repeats.  Junking excess alternatives"
 msgstr "mehr Alternativen als Wiederholungen. Überschüssige Alternativen werden verworfen"
 
-#: music-functions.scm:480
+#: music-functions.scm:487
 #, scheme-format
 msgid "bad grob property path ~a"
 msgstr "Ungültiger Grob-Eigenschaftspfad ~a"
 
-#: music-functions.scm:779
+#: music-functions.scm:511
+#, scheme-format
+msgid "bad context property ~a"
+msgstr "falsche Kontexteigenschaft ~a"
+
+#: music-functions.scm:534
+#, scheme-format
+msgid "bad music property ~a"
+msgstr "falsche Noten-Eigenschaft ~a"
+
+#: music-functions.scm:840
 msgid "Bad chord repetition"
 msgstr "Falsche Akkordwiederholung"
 
-#: music-functions.scm:884
+#: music-functions.scm:945
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "Musik erwartet: ~S"
 
-#: music-functions.scm:1226
+#: music-functions.scm:1295
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "zitierte Musik »~S« kann nicht gefunden werden"
 
-#: music-functions.scm:1366
+#: music-functions.scm:1432
 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:1429
+#: music-functions.scm:1495
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "Unbekannter Oktaven-Typ: »~S«"
 
-#: music-functions.scm:1430
+#: music-functions.scm:1496
 msgid "Defaulting to 'any-octave."
 msgstr "Setze Standard 'any-octave"
 
-#: music-functions.scm:1822
+#: music-functions.scm:1888
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "unbekannter Versetzungszeichenstil: ~S"
 
-#: music-functions.scm:2040
+#: music-functions.scm:2098
 msgid "Missing duration"
 msgstr "Dauer fehlt"
 
-#: music-functions.scm:2549
+#: music-functions.scm:2626
 #, scheme-format
 msgid "not a symbol list: ~a"
 msgstr "keine Symbolliste: ~a"
 
-#: music-functions.scm:2552
+#: music-functions.scm:2629
 #, scheme-format
 msgid "conflicting tag group ~a"
 msgstr "in Konflikt stehende tag-Margengruppe ~a"
@@ -3852,23 +3888,23 @@ msgstr "Das Zeichen muss einen Unicode-Wert haben"
 msgid "cannot find SVG font ~S"
 msgstr "SVG-Schriftart ~S kann nicht gefunden werden"
 
-#: paper.scm:122
+#: paper.scm:121
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size: Nicht auf höchster Ebene im Gültigkeitsbereich"
 
-#: paper.scm:322
+#: paper.scm:321
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Dies ist kein \\layout {} Objekt, ~S"
 
-#: paper.scm:330
+#: paper.scm:329
 #, 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:349
+#: paper.scm:348
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "#(set-paper-size ..) muss innerhalb von \\paper { ... } verwendet werden"
 
@@ -3882,19 +3918,24 @@ msgstr "unbekannter Notenschlüsseltyp »~a«"
 msgid "supported clefs: ~a"
 msgstr "unterstützte Notenschlüssel: ~a"
 
-#: parser-ly-from-scheme.scm:74
+#: parser-ly-from-scheme.scm:73
 msgid "error in #{ ... #}"
 msgstr "Fehler in #{ ... #}"
 
-#: part-combiner.scm:748
+#: part-combiner.scm:894
 #, scheme-format
 msgid "quoted music `~a' is empty"
 msgstr "Zitierte Noten »~a« sind leer"
 
-#: ps-to-png.scm:70
+#: ps-to-png.scm:72 ps-to-png.scm:75
+#, scheme-format
+msgid "Copying `~a' to `~a'..."
+msgstr "Kopieren von »~a« nach »~a«..."
+
+#: ps-to-png.scm:77 ps-to-png.scm:79
 #, scheme-format
-msgid "~a exited with status: ~S"
-msgstr "~a mit Rückgabewert ~S beendet"
+msgid "Deleting `~a'..."
+msgstr "~a wird gelöscht..."
 
 #: to-xml.scm:190
 #, scheme-format
@@ -3943,6 +3984,15 @@ msgstr ""
 "Keine Beschriftung für Bund ~a (auf Saite ~a);\n"
 "nur ~a Bundbeschriftung zur Verfügung"
 
+#~ msgid "cannot change, already in translator: %s"
+#~ msgstr "kann nicht geändert werden, bereits im Übersetzer: %s"
+
+#~ msgid "Invalid property operation ~a"
+#~ msgstr "Ungültige Eigenschaftsoperation ~a"
+
+#~ msgid "~a exited with status: ~S"
+#~ msgstr "~a mit Rückgabewert ~S beendet"
+
 #~ msgid "cannot find Voice `%s'"
 #~ msgstr "Stimme kann nicht gefunden werden: »%s«"
 
index 414fd24084a2c1c1e7433c3c7f79d90d764eda49..c5665644d4af35bd4da47db169b5c9d62a6d2d4d 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,5 +1,5 @@
 # Dutch translations for GNU Lilypond.
-# Copyright (C) 2013--2015 Free Software Foundation, Inc.
+# Copyright (C) 2015 Free Software Foundation, Inc.
 # This file is distributed under the same license as the lilypond package.
 #
 # "Occasionally it troubles me just how far one strays
@@ -7,13 +7,13 @@
 #
 # Han-Wen Nienhuys <hanwen@cs.uu.nl>, 1998.
 # Jan Nieuwenhuizen <janneke@gnu.org>, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007.
-# Benno Schulenberg <benno@vertaalt.nl>, 2013.
+# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2015.
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.17.96\n"
+"Project-Id-Version: lilypond 2.19.26\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2013-11-24 12:14+0000\n"
-"PO-Revision-Date: 2013-11-27 22:28+0100\n"
+"POT-Creation-Date: 2015-08-27 10:48+0100\n"
+"PO-Revision-Date: 2015-09-22 20:04+0200\n"
 "Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "Language: nl\n"
@@ -41,18 +41,18 @@ msgstr "kan \\begin{document} niet vinden in LaTeX-document"
 msgid "Running `%s' on file `%s' to detect default page settings.\n"
 msgstr ""
 
-#: book_latex.py:212 book_texinfo.py:228
+#: book_latex.py:219 book_texinfo.py:228
 msgid "Unable to auto-detect default settings:\n"
 msgstr ""
 
-#: book_latex.py:224 book_texinfo.py:240
+#: book_latex.py:231 book_texinfo.py:240
 #, python-format
 msgid ""
 "Unable to auto-detect default settings:\n"
 "%s"
 msgstr ""
 
-#: book_latex.py:247
+#: book_latex.py:254
 msgid "cannot detect textwidth from LaTeX"
 msgstr ""
 
@@ -86,39 +86,39 @@ msgstr "negeren van onbekende ly-optie: %s"
 msgid "Missing files: %s"
 msgstr "Ontbrekende bestanden: %s"
 
-#: book_snippets.py:651
+#: book_snippets.py:661
 #, python-format
 msgid "Could not overwrite file %s"
 msgstr "Kan bestand %s  niet overschrijven"
 
-#: book_snippets.py:738
+#: book_snippets.py:748
 #, python-format
 msgid "Running through filter `%s'"
 msgstr ""
 
-#: book_snippets.py:759
+#: book_snippets.py:769
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "'%s' is mislukt (%d)"
 
-#: book_snippets.py:760
+#: book_snippets.py:770
 msgid "The error log is as follows:"
 msgstr "De foutlog is als volgt:"
 
 # lisp-format
-#: book_snippets.py:880
+#: book_snippets.py:890
 #, python-format
 msgid "Converting MusicXML file `%s'...\n"
 msgstr "Converteren van MusicXML-bestand '%s'...\n"
 
-#: book_snippets.py:907
+#: book_snippets.py:917
 #, python-format
 msgid ""
 "%s: duplicate filename but different contents of original file,\n"
 "printing diff against existing file."
 msgstr ""
 
-#: book_snippets.py:920
+#: book_snippets.py:930
 #, python-format
 msgid ""
 "%s: duplicate filename but different contents of converted lilypond file,\n"
@@ -167,7 +167,7 @@ msgstr ""
 
 #: convertrules.py:82 convertrules.py:1856 convertrules.py:2032
 #: convertrules.py:2175 convertrules.py:2506 convertrules.py:2801
-#: convertrules.py:3151 convertrules.py:3385
+#: convertrules.py:3151 convertrules.py:3388 convertrules.py:3700
 msgid "bump version for release"
 msgstr ""
 
@@ -390,11 +390,11 @@ msgstr ""
 
 #: convertrules.py:2095
 msgid "LilyPond source must be UTF-8"
-msgstr "LilyPond-brontekst moet UTF-8 zijn"
+msgstr "LilyPond bron moet UTF-8 zijn"
 
 #: convertrules.py:2098
 msgid "Try the texstrings backend"
-msgstr "Probeer de textstrings-backend."
+msgstr "Probeer het textstring backend"
 
 #: convertrules.py:2101
 #, python-format
@@ -403,7 +403,7 @@ msgstr "Doe iets als: %s"
 
 #: convertrules.py:2104
 msgid "Or save as UTF-8 in your editor"
-msgstr "Of sla het op als UTF-8 in uw editor."
+msgstr "Of bewaar als UTF-8 in je editor"
 
 #: convertrules.py:2154
 msgid "warn about auto beam settings"
@@ -460,7 +460,7 @@ msgid ""
 "%s"
 msgstr ""
 
-# XXX this and next two should be one
+# FIXME: this and next two should be one
 #: convertrules.py:2625
 msgid "Use the `alignment-offsets' sub-property of\n"
 msgstr ""
@@ -481,7 +481,7 @@ msgstr ""
 msgid "all settings related to dashed lines"
 msgstr ""
 
-# XXX this and next should be one
+# FIXME: this and next should be one
 #: convertrules.py:2646
 msgid "Use \\override ... #'style = #'line for solid lines and\n"
 msgstr ""
@@ -551,7 +551,7 @@ msgstr ""
 #: convertrules.py:2820
 msgid ""
 "oldaddlyrics is no longer supported. \n"
-"         Use addlyrics or lyrsicsto instead.\n"
+"         Use addlyrics or lyricsto instead.\n"
 msgstr ""
 
 #: convertrules.py:2826
@@ -759,15 +759,15 @@ msgstr ""
 msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
 msgstr ""
 
-#: convertrules.py:3369
+#: convertrules.py:3372
 msgid "beamExceptions controls whole-measure beaming."
 msgstr ""
 
-#: convertrules.py:3606
+#: convertrules.py:3609
 msgid "Flag.transparent and Flag.color inherit from Stem"
 msgstr ""
 
-#: convertrules.py:3672
+#: convertrules.py:3675
 msgid "Staff-padding now controls the distance to the baseline, not the nearest point."
 msgstr ""
 
@@ -873,12 +873,12 @@ msgstr ""
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "Kan instrument voor ID=%s niet vinden\n"
 
-#: abc2ly.py:1386 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
+#: abc2ly.py:1389 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [OPTIE...] BESTAND"
 
-#: abc2ly.py:1387
+#: abc2ly.py:1390
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
@@ -887,29 +887,29 @@ msgstr ""
 "'abc2ly' converteert ABC-muziekbestanden\n"
 "(zie %s) naar LilyPond-invoer.\n"
 
-#: abc2ly.py:1395 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
-#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:181
+#: abc2ly.py:1398 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
+#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:184
 msgid "show version number and exit"
 msgstr "programmaversie tonen en stoppen"
 
-#: abc2ly.py:1398 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
-#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:160
+#: abc2ly.py:1401 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
+#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:163
 msgid "show this help and exit"
 msgstr "deze hulptekst tonen en stoppen"
 
-#: abc2ly.py:1401 etf2ly.py:1209 midi2ly.py:1071
+#: abc2ly.py:1404 etf2ly.py:1209 midi2ly.py:1071
 msgid "write output to FILE"
 msgstr "uitvoer naar BESTAND schrijven"
 
-#: abc2ly.py:1404
+#: abc2ly.py:1407
 msgid "be strict about success"
 msgstr "strikt zijn wat betreft succes"
 
-#: abc2ly.py:1407
+#: abc2ly.py:1410
 msgid "preserve ABC's notion of beams"
 msgstr "ABC's notie van waardestrepen behouden"
 
-#: abc2ly.py:1410
+#: abc2ly.py:1413
 msgid "suppress progress messages"
 msgstr "voortgangsberichten onderdrukken"
 
@@ -917,8 +917,8 @@ msgstr "voortgangsberichten onderdrukken"
 #. "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:1413 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
-#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:315
+#: abc2ly.py:1416 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
+#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:318
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr ""
@@ -971,7 +971,7 @@ msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS
 msgstr "Print log-berichten volgens LOG-NIVEAU (NONE, ERROR, WARNING, PROGRESS (standaard), DEBUG)."
 
 #: convert-ly.py:111 lilypond-book.py:163 lilypond-book.py:181
-#: musicxml2ly.py:2629 main.cc:174
+#: musicxml2ly.py:2629 main.cc:177
 msgid "LOGLEVEL"
 msgstr "LOG-NIVEAU"
 
@@ -1003,7 +1003,7 @@ msgid "make a numbered backup [default: filename.ext~]"
 msgstr "een genummerde reservekopie maken (standaard: bestandsnaam.ext~)"
 
 #: convert-ly.py:152 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096
-#: main.cc:183
+#: main.cc:186
 msgid "show warranty and copyright"
 msgstr "garantie en auteursrechten tonen"
 
@@ -1019,30 +1019,30 @@ msgstr "Fout tijdens converteren"
 msgid "Stopping at last successful rule"
 msgstr "Gestopt bij laatste succesvolle regel"
 
-# XXX trailing space?
+# FIXME: trailing space?
 #: convert-ly.py:256
 #, python-format
 msgid "Processing `%s'... "
 msgstr "Verwerken van '%s'... "
 
-#: convert-ly.py:367
+#: convert-ly.py:366
 #, python-format
 msgid "%s: Unable to open file"
 msgstr "%s: Kan bestand niet openen"
 
-#: convert-ly.py:373
+#: convert-ly.py:372
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr "%s: Kan versie niet bepalen.  Overgeslagen."
 
-#: convert-ly.py:379
+#: convert-ly.py:378
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
 "Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
 msgstr ""
 
-#: convert-ly.py:385
+#: convert-ly.py:384
 #, python-format
 msgid "There was %d error."
 msgid_plural "There were %d errors."
@@ -1064,7 +1064,7 @@ msgstr ""
 "van 'ETF' naar een gebruiksklaar Lilypond-bestand.\n"
 
 #: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659
-#: main.cc:166 main.cc:178
+#: main.cc:169 main.cc:181
 msgid "FILE"
 msgstr "BESTAND"
 
@@ -1102,7 +1102,7 @@ msgid "add DIR to include path"
 msgstr "deze MAP toevoegen aan zoekpad"
 
 #: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169
-#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:165
+#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:168
 msgid "DIR"
 msgstr "MAP"
 
@@ -1115,7 +1115,7 @@ msgid "PAD"
 msgstr ""
 
 #: lilypond-book.py:157
-msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
+msgid "pad left side of music to align music in spite of uneven bar numbers (in mm)"
 msgstr ""
 
 #: lilypond-book.py:162
@@ -1248,17 +1248,17 @@ msgstr "Verwerken van invoegsel: %s"
 msgid "Removing `%s'"
 msgstr "Verwijderen van '%s'"
 
-#: lilypond-book.py:714
+#: lilypond-book.py:727
 #, python-format
 msgid "Setting LilyPond's loglevel to %s"
 msgstr "Instellen van Lilypond-log-niveau op %s"
 
-#: lilypond-book.py:718
+#: lilypond-book.py:731
 #, python-format
 msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)"
 msgstr "Instellen van Lilypond-log-niveau op %s (uit omgevingsvariabele LILYPOND_LOGLEVEL)"
 
-#: lilypond-book.py:721
+#: lilypond-book.py:734
 msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting"
 msgstr "Instellen van Lilyponds uitvoer op '--verbose', geïmpliceerd door Lilypond-books instelling"
 
@@ -1467,8 +1467,8 @@ msgstr "Converteren naar LilyPond-expressies..."
 msgid "musicxml2ly [OPTION]... FILE.xml"
 msgstr "musicxml2ly [OPTIE...] BESTAND.xml"
 
-# XXX command line >> standard input
-# XXX use the existing standard phrase instead
+# FIXME: command line ==> standard input
+# that is: use the existing standard phrase instead
 #: musicxml2ly.py:2566
 msgid ""
 "Convert MusicXML from FILE.xml to LilyPond input.\n"
@@ -1547,7 +1547,7 @@ msgstr ""
 msgid "Input file %s is compressed, extracting raw MusicXML data"
 msgstr ""
 
-# XXX uncapitalize Standard
+# FIXME: uncapitalize Standard
 #: musicxml2ly.py:2859
 msgid "Reading MusicXML from Standard input ..."
 msgstr "Lezen van MusicXML van standaardinvoer..."
@@ -1567,15 +1567,15 @@ msgstr "Uitvoer naar '%s'"
 msgid "Unable to find input file %s"
 msgstr "Kan invoerbestand %s niet vinden"
 
-#: website_post.py:125
+#: website_post.py:129
 msgid "English"
 msgstr "Engels"
 
-#: website_post.py:128
+#: website_post.py:132
 msgid "Other languages"
 msgstr "Andere talen"
 
-#: website_post.py:129
+#: website_post.py:133
 #, python-format
 msgid "About <a href=\"%s\">automatic language selection</a>."
 msgstr "Gebruik van <a href=\"%s\">automatische taalkeuze</a>."
@@ -1650,22 +1650,22 @@ msgstr "waarschuwing wordt onderdrukt: %s"
 msgid "accidental typesetting list must begin with context-name: %s"
 msgstr "voorteken zetlijst moet beginnen met context-naam: %s"
 
-#: accidental-engraver.cc:210
+#: accidental-engraver.cc:207
 #, c-format
 msgid "procedure or context-name expected for accidental rule, found %s"
 msgstr "procedure of context-naam werd verwacht voor toevallige regel, gevonden: %s"
 
-#: accidental.cc:169
+#: accidental.cc:141
 #, c-format
 msgid "Could not find glyph-name for alteration %s"
 msgstr "Kan gliefnaam niet vinden voor verandering %s"
 
-#: accidental.cc:184
+#: accidental.cc:157
 #, fuzzy
 msgid "natural alteration glyph not found"
 msgstr "glief voor herstelteken niet gevonden"
 
-#: all-font-metrics.cc:149
+#: all-font-metrics.cc:159
 #, c-format
 msgid "cannot find font: `%s'"
 msgstr "kan font niet vinden: '%s'"
@@ -1678,11 +1678,6 @@ msgstr "argument van \\applycontext is geen procedure"
 msgid "no heads for arpeggio found?"
 msgstr ""
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "kan niet wisselen, al in vertaler: %s"
-
 #: axis-group-engraver.cc:149
 msgid "Axis_group_engraver: vertical group already has a parent"
 msgstr "Axis_group_engraver: verticale groep heeft al een ouder"
@@ -1695,12 +1690,12 @@ msgstr "zijn er twee Axis_group_engravers?"
 msgid "removing this vertical group"
 msgstr "verwijderen van deze verticale groep"
 
-#: axis-group-interface.cc:714
+#: axis-group-interface.cc:716
 #, c-format
 msgid "\"%s\" is not a valid outside-staff-placement-directive"
 msgstr ""
 
-#: axis-group-interface.cc:786
+#: axis-group-interface.cc:788
 msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr "een buiten-notenbalk object moet een richting hebben, gebruik standaardwaarde omhoog"
 
@@ -1730,36 +1725,38 @@ msgid "beam was started here"
 msgstr "waardestreep werd hier gestart"
 
 #. We are completely screwed.
-#: beam-quanting.cc:839
+#: beam-quanting.cc:850
 msgid "no viable initial configuration found: may not find good beam slope"
 msgstr "geen werkbare initiële configuratie gevonden: kan wellicht geen goede waardestreephelling vinden"
 
-#: beam.cc:181
+#: beam.cc:183
 msgid "removing beam with no stems"
 msgstr "verwijderen van waardestreep zonder stokken"
 
 #: change-iterator.cc:34
 #, c-format
 msgid "cannot change `%s' to `%s'"
-msgstr "kan '%s' niet in '%s' veranderen"
+msgstr "kan `%s' niet in `%s' veranderen"
 
 #. FIXME: constant error message.
-#: change-iterator.cc:93
+#: change-iterator.cc:67
 msgid "cannot find context to switch to"
-msgstr "kan context om naar over te schakelen niet vinden"
+msgstr "kan `%s' niet wisselen in `%s'"
 
+#. No enclosing context was found because the iterator's immediate
+#. context is the kind that was sought.
 #. 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
+#: change-iterator.cc:78
 #, c-format
 msgid "not changing to same context type: %s"
 msgstr "niet wisselen naar zelfde type context: %s"
 
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
+#. FIXME: incomprehensible message
+#: change-iterator.cc:82
 msgid "none of these in my family"
 msgstr "geen van deze in mijn gezin"
 
@@ -1774,16 +1771,16 @@ msgstr "onbeëindigd akkoordtremolo"
 #: clef.cc:65
 #, c-format
 msgid "clef `%s' not found"
-msgstr "sleutel '%s' is niet gevonden"
+msgstr "sleutel `%s' niet gevonden"
 
 #: cluster.cc:120
 #, c-format
 msgid "unknown cluster style `%s'"
-msgstr "onbekende clusterstijl '%s'"
+msgstr "onbekende klusterstijl `%s'"
 
 #: cluster.cc:157
 msgid "junking empty cluster"
-msgstr "lege cluster wordt weggegooid"
+msgstr "verschroot lege cluster"
 
 #: coherent-ligature-engraver.cc:110
 #, c-format
@@ -1794,26 +1791,26 @@ msgstr "Coherent_ligature_engraver: zet `spacing-increment=0.01': ptr=%ul"
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "kan geen regelbreuk vinden die aan voorwaarden voldoet"
 
-#: context-property.cc:43
+#: context-property.cc:46
 msgid "need symbol arguments for \\override and \\revert"
 msgstr "heb symbool-argumenten nodig voor \\override en \\revert"
 
-#: context.cc:149
+#: context.cc:144
 #, c-format
 msgid "cannot find or create new `%s'"
-msgstr "kan '%s' niet vinden of nieuw maken"
+msgstr "kan niet vinden of nieuw maken `%s'"
 
-#: context.cc:228
+#: context.cc:223
 #, c-format
 msgid "cannot find or create `%s' called `%s'"
-msgstr "kan '%s' genaamd '%s' niet vinden of aanmaken"
+msgstr "kan niet vinden of maken `%s' genaamd `%s'"
 
-#: context.cc:425
+#: context.cc:416
 #, c-format
 msgid "cannot find or create: `%s'"
-msgstr "kan '%s' niet vinden of aanmaken"
+msgstr "kan niet vinden of scheppen: `%s'"
 
-#: context.cc:439
+#: context.cc:430
 #, fuzzy, c-format
 msgid "cannot find or create new Bottom = \"%s\""
 msgstr "kan niet vinden of nieuw maken `%s'"
@@ -1823,40 +1820,39 @@ msgstr "kan niet vinden of nieuw maken `%s'"
 msgid "custos `%s' not found"
 msgstr "custode `%s' niet gevonden"
 
-#: dispatcher.cc:89
-#, fuzzy
+#: dispatcher.cc:82
 msgid "Event class should be a list"
-msgstr "Gebeurtenis klasse zou hoort een symbool te zijn"
+msgstr "Gebeurtenisklasse hoort een lijst te zijn"
 
-#: dispatcher.cc:172
+#: dispatcher.cc:165
 #, c-format
 msgid "Junking event: %s"
 msgstr "Gebeurtenis %s wordt weggegooid"
 
-#: dispatcher.cc:277
+#: dispatcher.cc:279
 msgid "Attempting to remove nonexisting listener."
 msgstr ""
 
-#: dispatcher.cc:303
+#: dispatcher.cc:305
 msgid "Already listening to dispatcher, ignoring request"
 msgstr ""
 
 #: dots.cc:48
 #, c-format
 msgid "dot `%s' not found"
-msgstr "punt '%s' is niet gevonden"
+msgstr "punt `%s' niet gevonden"
 
-#: dynamic-engraver.cc:168
+#: dynamic-engraver.cc:169
 #, c-format
 msgid ""
 "unknown crescendo style: %s\n"
 "defaulting to hairpin."
 msgstr ""
 
-#: dynamic-engraver.cc:233 slur-proto-engraver.cc:119
-#, fuzzy, c-format
+#: dynamic-engraver.cc:234 slur-proto-engraver.cc:119
+#, c-format
 msgid "unterminated %s"
-msgstr "onbeëindigde bindingsboog"
+msgstr "onbeëindigde %s"
 
 #. No explicit dynamic script events have occurred yet, but there is
 #. nevertheless a dynamic spanner.  Initialize last_volume_ to a
@@ -1884,22 +1880,22 @@ msgstr "onbeëindigde waardestreep"
 msgid "unterminated extender"
 msgstr "onbeëindigde extender"
 
-#: flag.cc:134
+#: flag.cc:133
 #, c-format
 msgid "flag `%s' not found"
-msgstr "vlag '%s' is niet gevonden"
+msgstr "vlag `%s' niet gevonden"
 
-#: flag.cc:154
+#: flag.cc:153
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr "vlagstreep '%s' is niet gevonden"
 
-#: font-config-scheme.cc:151 font-config.cc:53
+#: font-config-scheme.cc:151 font-config.cc:82
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "toevoegen van font-map is mislukt: %s"
 
-#: font-config-scheme.cc:153 font-config.cc:55
+#: font-config-scheme.cc:153 font-config.cc:84
 #, c-format
 msgid "Adding font directory: %s"
 msgstr "Toevoegen van font-map: %s"
@@ -1918,7 +1914,17 @@ msgstr "Toevoegen van font-bestand: %s"
 msgid "Initializing FontConfig..."
 msgstr "Initialiseren van FontConfig..."
 
-#: font-config.cc:58
+#: font-config.cc:70
+#, fuzzy, c-format
+msgid "failed to add fontconfig configuration file `%s'"
+msgstr "toevoegen van font-bestand is mislukt: %s"
+
+#: font-config.cc:73
+#, fuzzy, c-format
+msgid "Adding fontconfig configuration file: %s"
+msgstr "Toevoegen van font-bestand: %s"
+
+#: font-config.cc:86
 msgid "Building font database..."
 msgstr "Opbouwen van font-gegevensbank..."
 
@@ -1926,12 +1932,12 @@ msgstr "Opbouwen van font-gegevensbank..."
 msgid "Must be footnote-event."
 msgstr ""
 
-#: general-scheme.cc:390
+#: general-scheme.cc:403
 #, c-format
 msgid "failed redirecting stderr to `%s'"
-msgstr "omleiden van standaardfoutuitvoer naar '%s' is mislukt"
+msgstr ""
 
-#: general-scheme.cc:469 output-ps.scm:48
+#: general-scheme.cc:482 output-ps.scm:48
 #, fuzzy
 msgid "Found infinity or nan in output.  Substituting 0.0"
 msgstr "Oneindig of nan gevonden in uitvoer.  Vervangen door 0.0"
@@ -1942,10 +1948,9 @@ msgstr "onbeëindigde glissando"
 
 #: global-context-scheme.cc:95 global-context-scheme.cc:113
 msgid "no music found in score"
-msgstr "geen muziek gevonden in partituur"
+msgstr "geen muziek gevonden in score"
 
 #: global-context-scheme.cc:103
-#, fuzzy
 msgid "Interpreting music..."
 msgstr "Vertolken van muziek..."
 
@@ -1977,19 +1982,19 @@ msgstr "kan `\\~' niet toepassen op noten met identieke toonhoogte"
 #: grob-interface.cc:68
 #, c-format
 msgid "Unknown interface `%s'"
-msgstr "onbekende interface '%s'"
+msgstr "onbekende interface `%s'"
 
 #: grob-interface.cc:79
 #, c-format
 msgid "Grob `%s' has no interface for property `%s'"
-msgstr "Grob '%s' heeft geen interface voor eigenschap '%s'"
+msgstr "Grob `%s' heeft geen interface voor eigenschap `%s'"
 
-#: grob-property.cc:35
+#: grob-property.cc:33
 #, c-format
 msgid "%d: %s"
 msgstr "%d: %s"
 
-#: grob.cc:488
+#: grob.cc:492
 #, c-format
 msgid "ignored infinite %s-offset"
 msgstr ""
@@ -1998,7 +2003,7 @@ msgstr ""
 msgid "Asking for broken bound padding at a non-broken bound."
 msgstr ""
 
-#: hairpin.cc:256
+#: hairpin.cc:257
 msgid "decrescendo too small"
 msgstr "decrescendo te klein"
 
@@ -2018,21 +2023,21 @@ msgstr "verwijderen van onafgesloten streepje"
 msgid "unterminated hyphen; removing"
 msgstr "verwijderen van onafgesloten streepje"
 
-#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#: includable-lexer.cc:71 lily-guile.cc:92 lily-parser-scheme.cc:108
 #, c-format
 msgid "cannot find file: `%s'"
-msgstr "kan bestand '%s' niet vinden"
+msgstr "kan bestand niet vinden: `%s'"
 
 #: includable-lexer.cc:73 lily-parser-scheme.cc:100
 #, c-format
 msgid "(search path: `%s')"
-msgstr "(zoekpad: '%s')"
+msgstr "(zoekpad: `%s')"
 
-#: input.cc:138 source-file.cc:178 source-file.cc:193
+#: input.cc:138 source-file.cc:180 source-file.cc:195
 msgid "position unknown"
 msgstr "positie onbekend"
 
-#: key-engraver.cc:198
+#: key-engraver.cc:197
 msgid "Incomplete keyAlterationOrder for key signature"
 msgstr ""
 
@@ -2073,21 +2078,21 @@ msgstr "negeer rust: ligatuur mag geen rust bevatten"
 msgid "ligature was started here"
 msgstr "ligatuur werd hier gestart"
 
-#: lily-guile.cc:93
+#: lily-guile.cc:94
 #, c-format
 msgid "(load path: `%s')"
-msgstr "(laadpad: '%s')"
+msgstr "(zoekpad: `%s')"
 
-#: lily-guile.cc:412
+#: lily-guile.cc:413
 #, c-format
 msgid "cannot find property type-check for `%s' (%s)."
 msgstr "kan geen typecontrole vinden voor eigenschap '%s' (%s)"
 
-#: lily-guile.cc:415
+#: lily-guile.cc:416
 msgid "perhaps a typing error?"
 msgstr "misschien een typefout?"
 
-#: lily-guile.cc:422
+#: lily-guile.cc:423
 #, fuzzy
 msgid "skipping assignment"
 msgstr "voer toewijzing toch door"
@@ -2097,71 +2102,80 @@ msgstr "voer toewijzing toch door"
 msgid "type check for `%s' failed; value `%s' must be of type `%s'"
 msgstr "typecontrole is mislukt voor '%s'; waarde '%s' moet van type '%s' zijn"
 
-#: lily-lexer.cc:249
+#. Uh oh.  unsmob<T> delivered 0, yet
+#. unsmob<T> delivers true.  This means that unsmob<T> is a
+#. matching check from a base class of T, but var is of an
+#. incompatible derived type.
+#: lily-guile.cc:462
+msgid "Wrong kind of "
+msgstr ""
+
+#: lily-lexer.cc:251
 msgid "include files are not allowed in safe mode"
 msgstr "invoegbestanden zijn niet toegestaan in veilige modus"
 
-#: lily-lexer.cc:276
+#: lily-lexer.cc:278
 #, c-format
 msgid "identifier name is a keyword: `%s'"
 msgstr "identifier-naam is een sleutelwoord: '%s'"
 
-#: lily-lexer.cc:297 lily-lexer.cc:310
+#: lily-lexer.cc:299 lily-lexer.cc:312
 #, c-format
 msgid "%s:EOF"
 msgstr ""
 
+#: lily-modules.cc:81
+#, c-format
+msgid "Uninitialized variable `%s' in module (%s)"
+msgstr "Ongeïnitialiseerde variabele '%s' in module (%s)"
+
 #: lily-parser-scheme.cc:80
 #, c-format
 msgid "Changing working directory to: `%s'"
-msgstr "Veranderen van werkmap naar '%s'"
+msgstr "Veranderen van werkmap naar: '%s'"
 
 #: lily-parser-scheme.cc:84
 #, c-format
 msgid "unable to change directory to: `%s'"
-msgstr "kan huidige map niet wijzigen naar '%s'"
+msgstr "kan werkmap niet veranderen naar: '%s'"
 
 #: lily-parser-scheme.cc:99
 #, c-format
 msgid "cannot find init file: `%s'"
-msgstr "kan init-bestand '%s' niet vinden"
+msgstr "kan init-bestand niet vinden: '%s'"
 
 #: lily-parser-scheme.cc:117
 #, c-format
 msgid "Processing `%s'"
 msgstr "Verwerken van '%s'"
 
-#: lily-parser-scheme.cc:209
+#: lily-parser-scheme.cc:210
 msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr ""
 
-#: lily-parser-scheme.cc:240
+#: lily-parser-scheme.cc:241
 msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr ""
 
-#: lily-parser.cc:107
+#: lily-parser.cc:106
 msgid "Parsing..."
 msgstr "Ontleden..."
 
-#: lookup.cc:181
+#: lookup.cc:178
 #, c-format
 msgid "Not drawing a box with negative dimension, %.2f by %.2f."
 msgstr ""
 
-#: lyric-combine-music-iterator.cc:199
+#: lyric-combine-music-iterator.cc:204
 msgid "argument of \\lyricsto should contain Lyrics context"
 msgstr ""
 
-#: lyric-combine-music-iterator.cc:337
-#, c-format
-msgid "cannot find Voice `%s'"
-msgstr "kan Voice '%s' niet vinden"
-
-#: lyric-engraver.cc:186
-msgid "Lyric syllable does not have note.  Use \\lyricsto or associatedVoice."
-msgstr "Liedtekst-lettergreep heeft geen noot.  Gebruik \\lyricsto of associatedVoice."
+#: lyric-combine-music-iterator.cc:344
+#, fuzzy, c-format
+msgid "cannot find %s `%s'"
+msgstr "kan niet vinden `%s'"
 
-#: main.cc:104
+#: main.cc:106
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2169,11 +2183,12 @@ msgid ""
 "under certain conditions.  Invoke as `%s --warranty' for more\n"
 "information.\n"
 msgstr ""
-"Dit is vrije programmatuur.  Het valt onder de GNU General Public License;\n"
-"u mag het onder zeer vrije voorwaarden wijzigen en verder verspreiden.\n"
-"Typ '%s --warranty' voor meer informatie.\n"
+"Dit is vrije programmatuur.  Het valt onder de GNU Algemene Openbare\n"
+"Licentie (General Public Licence), en u wordt uitgenodigd het te\n"
+"veranderen en/of te verspreiden onder bepaalde voorwaarden.  Roep aan\n"
+"als `%s --warranty' voor meer informatie.\n"
 
-#: main.cc:110
+#: main.cc:112
 #, fuzzy
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
@@ -2206,11 +2221,11 @@ msgstr ""
 "zoniet, schrijf dan naar de Free Software Foundation, Inc.,\n"
 "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:148
+#: main.cc:150
 msgid "SYM[=VAL]"
 msgstr "SYM[=WAARDE]"
 
-#: main.cc:149
+#: main.cc:151
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
@@ -2218,41 +2233,46 @@ msgstr ""
 "zet Scheme optie SYM to WAARDE (standaard: #t)\n"
 "Gebruik -dhelp voor hulp."
 
-#: main.cc:153
+#: main.cc:155
 msgid "EXPR"
 msgstr "EXPR"
 
-#: main.cc:153
+#: main.cc:155
 msgid "evaluate scheme code"
 msgstr "evalueer scheme code"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:156
+#: main.cc:158
 msgid "FORMATs"
 msgstr "FORMAATen"
 
-#: main.cc:156
+#: main.cc:158
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "dump FORMAAT,...  Ook als separate opties:"
 
-#: main.cc:157
+#: main.cc:159
 msgid "generate PDF (default)"
 msgstr "genereer PDF (standaard)"
 
-#: main.cc:158
+#: main.cc:160
 msgid "generate PNG"
 msgstr "genereer PNG"
 
-#: main.cc:159
+#: main.cc:161
 msgid "generate PostScript"
 msgstr "genereer PostScipt"
 
 #: main.cc:162
+#, fuzzy
+msgid "generate big PDF files"
+msgstr "genereer PDF (standaard)"
+
+#: main.cc:165
 msgid "FIELD"
 msgstr "VELD"
 
-#: main.cc:162
+#: main.cc:165
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
@@ -2260,19 +2280,19 @@ msgstr ""
 "schrijf kopveld VELD naar bestand\n"
 "genaamd BASISNAAM.VELD"
 
-#: main.cc:165
+#: main.cc:168
 msgid "add DIR to search path"
 msgstr "voeg DIR toe aan zoekpad"
 
-#: main.cc:166
+#: main.cc:169
 msgid "use FILE as init file"
 msgstr "gebruik BESTAND als initialisatiebestand"
 
-#: main.cc:169
+#: main.cc:172
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "GEBR, GROEP, GEVANG, DIR"
 
-#: main.cc:169
+#: main.cc:172
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2280,34 +2300,34 @@ msgstr ""
 "chroot naar GEVANG, word GEBR:GROEP\n"
 "en cd naar MAP"
 
-#: main.cc:174
+#: main.cc:177
 msgid ""
 "print log messages according to LOGLEVEL.  Possible values are:\n"
 "NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
 msgstr ""
 
-#: main.cc:178
+#: main.cc:181
 msgid "write output to FILE (suffix will be added)"
 msgstr ""
 "schrijf uitvoer naar BESTAND\n"
 "(extensie wordt toegevoegd)"
 
-#: main.cc:179
+#: main.cc:182
 msgid "relocate using directory of lilypond program"
 msgstr ""
 "verhuis aan de hand van de map van het\n"
 "lilypond programma"
 
-#: main.cc:180
+#: main.cc:183
 msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
 msgstr ""
 
-#: main.cc:182
+#: main.cc:185
 msgid "be verbose (equivalent to loglevel=DEBUG)"
 msgstr ""
 
 #. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:261
+#: main.cc:264
 #, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -2317,84 +2337,84 @@ msgstr ""
 "%s  en anderen."
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:299
+#: main.cc:302
 #, c-format
 msgid "Usage: %s [OPTION]... FILE..."
 msgstr "Gebruik: %s [OPTIE]... BESTAND..."
 
-#: main.cc:301
+#: main.cc:304
 msgid "Typeset music and/or produce MIDI from FILE."
 msgstr "Zet muziek en of produceer MIDI van BESTAND."
 
-#: main.cc:303
+#: main.cc:306
 msgid "LilyPond produces beautiful music notation."
 msgstr "LilyPond produceert prachtige muzieknotatie."
 
-#: main.cc:305
+#: main.cc:308
 #, c-format
 msgid "For more information, see %s"
 msgstr "Voor meer informatie, zie %s"
 
-#: main.cc:307
+#: main.cc:310
 msgid "Options:"
 msgstr "Opties:"
 
-#: main.cc:374
+#: main.cc:377
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr "verwachtte %d argumenten voor gevang, gevonden: %u"
 
-#: main.cc:388
+#: main.cc:391
 #, c-format
 msgid "no such user: %s"
 msgstr "onbekende gebruiker: %s"
 
-#: main.cc:390
+#: main.cc:393
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
 msgstr "kan gebruikers id niet krijgen van gebruikersnaam: %s: %s"
 
-#: main.cc:405
+#: main.cc:408
 #, c-format
 msgid "no such group: %s"
 msgstr "onbekende groep: %s"
 
-#: main.cc:407
+#: main.cc:410
 #, c-format
 msgid "cannot get group id from group name: %s: %s"
 msgstr "kan groep id niet krijgen van groepnaam: %s: %s"
 
-#: main.cc:415
+#: main.cc:418
 #, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr "kan niet chrooten naar: %s: %s"
 
-#: main.cc:422
+#: main.cc:425
 #, c-format
 msgid "cannot change group id to: %d: %s"
 msgstr "kan groep id niet veranderen in: %d: %s"
 
-#: main.cc:428
+#: main.cc:431
 #, c-format
 msgid "cannot change user id to: %d: %s"
 msgstr "kan kan gebruiker id niet veranderen in: %d: %s"
 
-#: main.cc:434
+#: main.cc:437
 #, c-format
 msgid "cannot change working directory to: %s: %s"
 msgstr "kan werkmap niet veranderen in: %s: %s"
 
-#: main.cc:805
+#: main.cc:826
 #, c-format
 msgid "exception caught: %s"
 msgstr "exceptie gevangen: %s"
 
 #. FIXME: constant error message.
-#: mark-engraver.cc:156
+#: mark-engraver.cc:150
 msgid "rehearsalMark must have integer value"
 msgstr "rehearsalMark moet een natuurlijk getal zijn"
 
-#: mark-engraver.cc:162
+#: mark-engraver.cc:156
 msgid "mark label must be a markup object"
 msgstr "mark etiket moet een markup zijn"
 
@@ -2446,7 +2466,7 @@ msgstr ""
 msgid "unexpected case fall-through"
 msgstr "onverwachte zaakdoorval"
 
-#: midi-control-function-performer.cc:109 staff-performer.cc:152
+#: midi-control-function-performer.cc:107 staff-performer.cc:153
 #, c-format
 msgid "ignoring out-of-range value change for MIDI property `%s'"
 msgstr ""
@@ -2470,7 +2490,7 @@ msgstr "kan bestand niet openen om te schrijven: %s: %s"
 msgid "cannot write to file: `%s'"
 msgstr "kon niet naar bestand schrijven: `%s'"
 
-#: minimal-page-breaking.cc:40 paper-score.cc:122
+#: minimal-page-breaking.cc:40 paper-score.cc:116
 msgid "Calculating line breaks..."
 msgstr "Berekenen van regelbreuken..."
 
@@ -2478,28 +2498,15 @@ msgstr "Berekenen van regelbreuken..."
 msgid "Calculating page breaks..."
 msgstr "Berekenen van paginabreuken..."
 
-#: multi-measure-rest.cc:154
+#: multi-measure-rest.cc:152
 msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
 msgstr ""
 
-#: multi-measure-rest.cc:364
-msgid "Using naive multi measure rest spacing."
-msgstr ""
-
 #: music.cc:150
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
 msgstr "octaafcontrole is mislukt; verwachtte \"%s\", vond \"%s\""
 
-#: music.cc:219
-msgid "(normalized pitch)"
-msgstr "(genormaliseerde toonhoogte)"
-
-#: music.cc:223
-#, c-format
-msgid "Transposing %s by %s makes alteration larger than double"
-msgstr "Transponeren van %s met %s maakt verandering groter dan dubbel"
-
 #: new-fingering-engraver.cc:113
 msgid "cannot add text scripts to individual note heads"
 msgstr "can tekstscripts niet toevoegen aan individuele notenbolletjes"
@@ -2509,14 +2516,15 @@ msgid "no placement found for fingerings"
 msgstr "geen plaatsing gevonden voor vingers"
 
 #: new-fingering-engraver.cc:270
+#, fuzzy
 msgid "placing below"
-msgstr "onderplaatsing"
+msgstr "plaats onder"
 
-#: note-collision.cc:497
-msgid "ignoring too many clashing note columns"
-msgstr "negeren van te veel botsende nootkolommen"
+#: note-collision.cc:510
+msgid "this Voice needs a \\voiceXx or \\shiftXx setting"
+msgstr ""
 
-#: note-column.cc:147
+#: note-column.cc:150
 msgid "cannot have note heads and rests together on a stem"
 msgstr "kan notenbolletjes en rusten niet samen op een stok zetten"
 
@@ -2544,22 +2552,22 @@ msgstr "kan font-tabel niet laden: %s"
 msgid "FreeType error: %s"
 msgstr "FreeType-fout: %s"
 
-#: open-type-font.cc:111
+#: open-type-font.cc:115
 #, c-format
 msgid "unsupported font format: %s"
 msgstr "niet-ondersteund font-formaat: %s"
 
-#: open-type-font.cc:113
+#: open-type-font.cc:117
 #, c-format
 msgid "error reading font file %s: %s"
 msgstr "fout bij lezen van font-bestand %s: %s"
 
-#: open-type-font.cc:188
+#: open-type-font.cc:192
 #, c-format
 msgid "FT_Get_Glyph_Name () Freetype error: %s"
 msgstr "FT_Get_Glyph_Name () Freetype fout: %s"
 
-#: open-type-font.cc:336 pango-font.cc:256
+#: open-type-font.cc:340 pango-font.cc:258
 #, c-format
 msgid "FT_Get_Glyph_Name () error: %s"
 msgstr "FT_Get_Glyph_Name () fout: %s"
@@ -2597,95 +2605,96 @@ msgstr "proberen van %d systemen"
 msgid "best score for this sys-count: %f"
 msgstr ""
 
-#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:248
-#: paper-score.cc:162
+#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:249
+#: paper-score.cc:156
 msgid "Drawing systems..."
 msgstr "Tekenen van systemen..."
 
-#: output-def.cc:235
+#: output-def.cc:229
 msgid "margins do not fit with line-width, setting default values"
 msgstr ""
 
-#: output-def.cc:242
+#: output-def.cc:236
 msgid "systems run off the page due to improper paper settings, setting default values"
 msgstr ""
 
-#: page-breaking.cc:277
+#: page-breaking.cc:276
 msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
 msgstr ""
 
-#: page-breaking.cc:282
+#: page-breaking.cc:281
 msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
 msgstr ""
 
-#: page-layout-problem.cc:402
-msgid "A page layout problem has been initiated that cannot accommodate footnotes."
+#: page-breaking.cc:636
+#, c-format
+msgid "page %d has been compressed"
 msgstr ""
 
-#: page-layout-problem.cc:731
-msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed"
+#: page-layout-problem.cc:400
+msgid "A page layout problem has been initiated that cannot accommodate footnotes."
 msgstr ""
 
-#: page-layout-problem.cc:734
-#, c-format
-msgid "cannot fit music on page: overflow is %f"
+#: page-layout-problem.cc:729
+msgid "ragged-bottom was specified, but page must be compressed"
 msgstr ""
 
-#: page-layout-problem.cc:736
-msgid "compressing music to fit"
+#: page-layout-problem.cc:732
+#, c-format
+msgid "compressing over-full page by %.1f staff-spaces"
 msgstr ""
 
-#: page-layout-problem.cc:1199
+#: page-layout-problem.cc:1197
 msgid "staff-affinities should only decrease"
 msgstr ""
 
-#: page-turn-page-breaking.cc:168
+#: page-turn-page-breaking.cc:169
 #, c-format
 msgid "page-turn-page-breaking: breaking from %d to %d"
 msgstr "page-turn-page-breaking: afbreken van %d naar %d"
 
-#: page-turn-page-breaking.cc:217
+#: page-turn-page-breaking.cc:218
 msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
 msgstr ""
 "Kan de eerste paginaomslag niet op eerste pagina gepast krijgen.\n"
 "Overweeg om 'first-page-number' een even getal te maken."
 
-#: page-turn-page-breaking.cc:230
+#: page-turn-page-breaking.cc:231
 #, c-format
 msgid "Calculating page and line breaks (%d possible page breaks)..."
 msgstr "Berekenen van pagina- en regelbreuken (%d mogelijke paginabreuken)..."
 
-#: page-turn-page-breaking.cc:300
+#: page-turn-page-breaking.cc:301
 #, c-format
 msgid "break starting at page %d"
 msgstr "breuk gestart op pagina %d"
 
-#: page-turn-page-breaking.cc:301
+#: page-turn-page-breaking.cc:302
 #, c-format
 msgid "\tdemerits: %f"
 msgstr "\tstrafpunten: %f"
 
-#: page-turn-page-breaking.cc:302
+#: page-turn-page-breaking.cc:303
 #, c-format
 msgid "\tsystem count: %d"
 msgstr "\taantal systemen: %d"
 
-#: page-turn-page-breaking.cc:303
+#: page-turn-page-breaking.cc:304
 #, c-format
 msgid "\tpage count: %d"
 msgstr "\taantal bladzijden: %d"
 
-#: page-turn-page-breaking.cc:304
+#: page-turn-page-breaking.cc:305
 #, c-format
 msgid "\tprevious break: %d"
 msgstr "\tvorige breuk: %d"
 
-#: pango-font.cc:245
+#: pango-font.cc:247
 #, c-format
 msgid "no glyph for character U+%0X in font `%s'"
 msgstr "geen glief voor teken U+%0X in font '%s'"
 
-#: pango-font.cc:272
+#: pango-font.cc:274
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
@@ -2694,21 +2703,21 @@ msgstr ""
 "Glief heeft geen naam, terwijl het font gliefnamen ondersteunt.\n"
 "Glief U+%0X, bestand %s, wordt overgeslagen."
 
-#: pango-font.cc:322
+#: pango-font.cc:324
 #, c-format
 msgid "no PostScript font name for font `%s'"
 msgstr "geen PostScript-font-naam voor font '%s'"
 
-#: pango-font.cc:372
+#: pango-font.cc:374
 msgid "FreeType face has no PostScript font name"
 msgstr "FreeType-lettertype heeft geen PostScript-font-naam"
 
-#: paper-book.cc:214
+#: paper-book.cc:200
 #, c-format
 msgid "program option -dprint-pages not supported by backend `%s'"
 msgstr ""
 
-#: paper-book.cc:233
+#: paper-book.cc:219
 #, c-format
 msgid "program option -dpreview not supported by backend `%s'"
 msgstr ""
@@ -2722,37 +2731,33 @@ msgstr "geforceerde breuk werd opgeheven door andere gebeurtenis; dient u maatco
 msgid "Layout output to `%s'..."
 msgstr "Opmaakuitvoer naar `%s'..."
 
-#: paper-score.cc:134
+#: paper-score.cc:128
 #, c-format
 msgid "Element count %d (spanners %d) "
 msgstr "Aantal elementen %d (spanners %d)"
 
-#: paper-score.cc:138
+#: paper-score.cc:132
 msgid "Preprocessing graphical objects..."
 msgstr "Voorbewerken van grafische objecten..."
 
-#: parse-scm.cc:121
+#: parse-scm.cc:124
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE signaleerde een fout voor de expressie beginnend alhier"
 
-#: partial-iterator.cc:45
-msgid "trying to use \\partial after the start of a piece"
-msgstr ""
-
 #: pdf-scheme.cc:65
 #, c-format
 msgid "Conversion of string `%s' to UTF-16be failed: %s"
 msgstr ""
 
-#: percent-repeat-engraver.cc:147
+#: percent-repeat-engraver.cc:148
 msgid "unterminated percent repeat"
 msgstr "onbeëindigde procentherhaling"
 
-#: performance.cc:54
+#: performance.cc:76
 msgid "Track..."
 msgstr "Spoor... "
 
-#: performance.cc:82
+#: performance.cc:126
 #, c-format
 msgid "MIDI output to `%s'..."
 msgstr "MIDI uitvoer naar %s..."
@@ -2778,7 +2783,7 @@ msgstr "kan start van piano pedaal haak niet vinden: `%s'"
 msgid "no such internal option: %s"
 msgstr "onbekende interne optie: %s"
 
-#: property-iterator.cc:100
+#: property-iterator.cc:115
 #, c-format
 msgid "not a grob name, `%s'"
 msgstr "geen grobnaam, `%s'"
@@ -2787,25 +2792,25 @@ msgstr "geen grobnaam, `%s'"
 msgid "Failed octave check, got: "
 msgstr "Octaafcontrole is mislukt; kreeg:"
 
-#: relocate.cc:52
+#: relocate.cc:56
 #, c-format
 msgid "Setting %s to %s"
 msgstr "Zetten van %s op %s"
 
 #. this warning should only be printed in debug mode!
-#: relocate.cc:73
+#: relocate.cc:77
 #, c-format
 msgid "no such file: %s for %s"
 msgstr "onbekend bestand: %s voor %s"
 
 #. this warning should only be printed in debug mode!
 #. this warning should only be printed in debug mode
-#: relocate.cc:84 relocate.cc:102
+#: relocate.cc:88 relocate.cc:106
 #, c-format
 msgid "no such directory: %s for %s"
 msgstr "onbekende map: %s voor %s"
 
-#: relocate.cc:93
+#: relocate.cc:97
 #, c-format
 msgid "%s=%s (prepend)\n"
 msgstr "%s=%s (voorvoegen)\n"
@@ -2826,87 +2831,83 @@ msgid "Relocation: framework_prefix=%s"
 msgstr "Verhuizing: draadwerk_voorvoegel=%s"
 
 #: relocate.cc:172
-#, c-format
+#, fuzzy, c-format
 msgid "Relocation: is absolute: argv0=%s\n"
-msgstr "Verhuizing: is absoluut: argv0=%s\n"
+msgstr "Verhuizing: is absoluut: argv0=%s"
 
 #: relocate.cc:178
-#, c-format
+#, fuzzy, c-format
 msgid "Relocation : from cwd: argv0=%s\n"
-msgstr "Verhuizing: van cwd: argv0=%s\n"
+msgstr "Verhuizing: van cwd: argv0=%s"
 
-#: relocate.cc:194
-#, c-format
+#: relocate.cc:196
+#, fuzzy, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
 "argv0=%s\n"
 msgstr ""
 "Verhuizing: van PATH=%s\n"
-"argv0=%s\n"
+"argv0=%s"
 
-#: relocate.cc:220
+#: relocate.cc:222
 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
 msgstr "LILYPONDPREFIX is verouderd, gebruik LILYPOND_DATADIR"
 
-#: relocate.cc:345
+#: relocate.cc:347
 #, c-format
 msgid "Relocation file: %s"
 msgstr "Verhuisbestand: %s"
 
-#: relocate.cc:349 source-file.cc:65
+#: relocate.cc:351 source-file.cc:65
 #, c-format
 msgid "cannot open file: `%s'"
-msgstr "kan bestand niet openen: '%s'"
+msgstr "kan bestand niet openen: `%s'"
 
-#: relocate.cc:379
+#: relocate.cc:381
 #, c-format
 msgid "Unknown relocation command %s"
 msgstr "Onbekend verhuizingscommando %s"
 
-#: rest-collision-engraver.cc:70
-msgid "rhythmic head is not part of a rhythmic column"
-msgstr ""
-
-#: rest-collision.cc:150
+#: rest-collision.cc:154
 msgid "cannot resolve rest collision: rest direction not set"
-msgstr "kan rusten-botsing niet oplossen: richting van de rust is niet ingesteld"
+msgstr "kan rust bosting niet oplossen: richting van de rust is niet gezet"
 
-#: rest-collision.cc:161 rest-collision.cc:270
+#: rest-collision.cc:165 rest-collision.cc:274
 msgid "too many colliding rests"
 msgstr "te veel botsende rusten"
 
-#: rest.cc:240
+#: rest.cc:239
 #, c-format
 msgid "rest `%s' not found"
-msgstr "rust '%s' is niet gevonden"
+msgstr "rust `%s' niet gevonden"
 
-#: score-engraver.cc:78
+#: score-engraver.cc:77
 #, c-format
 msgid "cannot find `%s'"
-msgstr "kan '%s' niet vinden"
+msgstr "kan niet vinden `%s'"
 
-#: score-engraver.cc:80
+#: score-engraver.cc:79
 msgid "Music font has not been installed properly."
 msgstr "Muziek-font is niet correct geïnstalleerd."
 
-#: score-engraver.cc:82
+#: score-engraver.cc:81
 #, c-format
 msgid "Search path `%s'"
-msgstr "Zoekpad: '%s'"
+msgstr "Zoekpad: `%s'"
 
-#: score-engraver.cc:84
+#: score-engraver.cc:83
 msgid "Aborting"
 msgstr "Afbreken"
 
-#: score.cc:172
+#: score.cc:161
 msgid "already have music in score"
-msgstr "heb al muziek in partituur"
+msgstr "heb al muziek nodig in score"
 
-#: score.cc:173
+#: score.cc:163
 msgid "this is the previous music"
 msgstr "dit is de vorige muziek"
 
-#: score.cc:178
+#: score.cc:169
 msgid "errors found, ignoring music expression"
 msgstr "fouten gevonden, negeer muziekexpressie"
 
@@ -2921,7 +2922,7 @@ msgstr "weet niet hoe articulatie te vertolken: "
 msgid " scheme encoding: "
 msgstr "scheme codering: "
 
-#: skyline-pair.cc:160
+#: skyline-pair.cc:135
 msgid "direction must not be CENTER in ly:skyline-pair::skyline"
 msgstr ""
 
@@ -2947,7 +2948,7 @@ msgstr ""
 msgid "cannot end %s"
 msgstr "kan %s niet beëindigen"
 
-#: slur.cc:434
+#: slur.cc:436
 #, fuzzy, c-format
 msgid "Ignoring grob for slur: %s.  avoid-slur not set?"
 msgstr "Negeren van grob voor boogje: %s.  avoid-slur niet gezet?"
@@ -2965,16 +2966,16 @@ msgstr "MIDI-kanaal is klokje rond"
 msgid "remapping modulo 16"
 msgstr "herafbeelden modulo 16"
 
-#: stem-engraver.cc:110
+#: stem-engraver.cc:100
 msgid "tremolo duration is too long"
 msgstr "tremololengte is te lang"
 
-#: stem-engraver.cc:162
+#: stem-engraver.cc:152
 #, c-format
 msgid "adding note head to incompatible stem (type = %d/%d)"
 msgstr "toevoegen van nootbolletje aan incompatibele stok (type = %d/%d)"
 
-#: stem-engraver.cc:165
+#: stem-engraver.cc:155
 msgid "maybe input should specify polyphonic voices"
 msgstr "misschien moet invoer polyfonische stemmen specificeren"
 
@@ -2982,24 +2983,18 @@ msgstr "misschien moet invoer polyfonische stemmen specificeren"
 msgid "weird stem size, check for narrow beams"
 msgstr "vreemde stoklengte; controleer op krappe waardestrepen"
 
-#: system.cc:201
+#: system.cc:202
 #, c-format
 msgid "Element count %d"
 msgstr "Aantal elementen: %d"
 
-#: system.cc:512
+#: system.cc:513
 #, c-format
 msgid "Grob count %d"
 msgstr "Aantal grobs: %d"
 
 #. TODO: Also print the arguments of the markup!
-#: text-interface.cc:129
-#, c-format
-msgid "Cyclic markup detected: %s"
-msgstr ""
-
-#. TODO: Also print the arguments of the markup!
-#: text-interface.cc:142
+#: text-interface.cc:139
 #, c-format
 msgid "Markup depth exceeds maximal value of %d; Markup: %s"
 msgstr ""
@@ -3016,12 +3011,12 @@ msgstr "heb al een tekst-spanner"
 msgid "unterminated text spanner"
 msgstr "onbeëindigde tekst spanner"
 
-#: tie-engraver.cc:119
+#: tie-engraver.cc:121
 #, fuzzy
 msgid "unterminated tie"
 msgstr "onbeëindigde waardestreep"
 
-#: tie-engraver.cc:353
+#: tie-engraver.cc:377
 msgid "lonely tie"
 msgstr "eenzame overbinding"
 
@@ -3030,19 +3025,12 @@ msgstr "eenzame overbinding"
 #.
 #. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
 #.
-#: time-signature-engraver.cc:75
+#: time-signature-engraver.cc:95
 #, c-format
 msgid "strange time signature found: %d/%d"
 msgstr "vreemde maatsoort gevonden: %d/%d"
 
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:89
-#, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr "maatsoort-symbool '%s' niet gevonden;  teruggevallen op numerieke stijl"
-
-#: translator-ctors.cc:65
+#: translator-ctors.cc:68
 #, c-format
 msgid "unknown translator: `%s'"
 msgstr "onbekende vertaler: '%s'"
@@ -3052,17 +3040,17 @@ msgstr "onbekende vertaler: '%s'"
 msgid "fatal error.  Couldn't find type: %s"
 msgstr "Fatale fout.  Kan type niet vinden: %s"
 
-#: translator-group.cc:188
+#: translator-group.cc:187
 #, c-format
 msgid "cannot find: `%s'"
 msgstr "kan niet vinden: '%s'"
 
-#: translator.cc:326
+#: translator.cc:310
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
 msgstr "Twee gelijktijdige %s-gebeurtenissen;  deze ene wordt weggegooid"
 
-#: translator.cc:327
+#: translator.cc:311
 #, c-format
 msgid "Previous %s event here"
 msgstr "Vorige %s-gebeurtenis hier"
@@ -3127,214 +3115,223 @@ msgstr "heb ook al een beëindigde spanner"
 msgid "giving up"
 msgstr "opgegeven"
 
-#: parser.yy:158 parser.yy:172
-#, fuzzy
-msgid "Too much lookahead"
-msgstr "Te veel vooruitkijk"
-
-#: parser.yy:441 parser.yy:752 parser.yy:818
+#: parser.yy:476 parser.yy:947 parser.yy:1028 parser.yy:1248
 msgid "bad expression type"
 msgstr "ongeldig expressietype"
 
-#: parser.yy:650 parser.yy:1159
+#: parser.yy:859 parser.yy:1458 parser.yy:1503
 msgid "not a context mod"
 msgstr ""
 
-#: parser.yy:853
-msgid "score expected"
-msgstr "partituur werd verwacht"
+#: parser.yy:1054
+#, fuzzy
+msgid "Missing music in \\score"
+msgstr "geen muziek gevonden in score"
 
-#: parser.yy:869
+#: parser.yy:1091
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "\\paper kan niet gebruikt worden in \\score;  gebruik \\layout"
 
-#: parser.yy:893
+#: parser.yy:1126
+msgid "Spurious expression in \\score"
+msgstr ""
+
+#: parser.yy:1156
 msgid "need \\paper for paper block"
 msgstr "heb \\paper nodig voor paper blok"
 
-#: parser.yy:1033 parser.yy:1055
+#: parser.yy:1331
+msgid "music expected"
+msgstr "muziek verwacht"
+
+#: parser.yy:1341 parser.yy:1375
 msgid "unexpected post-event"
 msgstr "onverwachte na-gebeurtenis"
 
-#: parser.yy:1063
+#: parser.yy:1383
 msgid "Ignoring non-music expression"
 msgstr "Negeren van non-muziekexpressie"
 
-#: parser.yy:1075 parser.yy:2493
-msgid "music expected"
-msgstr "muziek verwacht"
-
-#: parser.yy:1370
+#: parser.yy:1691
 msgid "not a symbol"
 msgstr "is geen symbool"
 
-#: parser.yy:2182 parser.yy:2296 parser.yy:2309 parser.yy:2318
+#: parser.yy:2491 parser.yy:2605 parser.yy:2618 parser.yy:2627
 msgid "bad grob property path"
 msgstr ""
 
-#: parser.yy:2276
+#: parser.yy:2585
 msgid "only \\consists and \\remove take non-string argument."
 msgstr ""
 
-#: parser.yy:2337
+#: parser.yy:2646
 msgid "bad context property path"
 msgstr ""
 
-#: parser.yy:2438
+#: parser.yy:2733
 msgid "simple string expected"
 msgstr "eenvoudige tekenreeks verwacht"
 
-#: parser.yy:2456
+#: parser.yy:2750
 msgid "symbol expected"
 msgstr "symbool verwacht"
 
-#: parser.yy:2611
+#: parser.yy:2886
 msgid "not a rhythmic event"
 msgstr "is geen ritmische gebeurtenis"
 
-#: parser.yy:2685
+#: parser.yy:2936
 msgid "post-event expected"
 msgstr ""
 
-#: parser.yy:2694 parser.yy:2699
+#: parser.yy:2945 parser.yy:2950
 msgid "have to be in Lyric mode for lyrics"
 msgstr "moet in Lyric-modus zijn voor liedteksten"
 
-#: parser.yy:2767
-msgid "expecting string as script definition"
+#: parser.yy:3026
+#, fuzzy
+msgid "expecting string or post-event as script definition"
 msgstr "verwacht tekenreeks voor scriptdefinitie"
 
-#: parser.yy:2875
+#: parser.yy:3130
 msgid "not an articulation"
 msgstr "is geen articulatie"
 
-#: parser.yy:2947 parser.yy:2990
+#: parser.yy:3202 parser.yy:3245
 #, fuzzy
 msgid "not a duration"
 msgstr "geen duur: %d"
 
-#: parser.yy:3007
+#: parser.yy:3266
 #, fuzzy
 msgid "bass number expected"
 msgstr "symbool verwacht: ~S"
 
-#: parser.yy:3106
+#: parser.yy:3358
 msgid "have to be in Note mode for notes"
 msgstr "moet in Note modus zijn voor noten"
 
-#: parser.yy:3166
+#: parser.yy:3397
 msgid "have to be in Chord mode for chords"
 msgstr "moet in Chord modus zijn voor accoorden"
 
-#: parser.yy:3181
+#: parser.yy:3440
 msgid "markup outside of text script or \\lyricmode"
 msgstr ""
 
-#: parser.yy:3186
+#: parser.yy:3445
 msgid "unrecognized string, not in text script or \\lyricmode"
 msgstr ""
 
-#: parser.yy:3347 parser.yy:3356
+#: parser.yy:3597 parser.yy:3606
 msgid "not an unsigned integer"
 msgstr ""
 
-#: parser.yy:3424
+#: parser.yy:3693
 msgid "not a markup"
 msgstr ""
 
-#: lexer.ll:224
+#: lexer.ll:193
 msgid "stray UTF-8 BOM encountered"
 msgstr "losse UTF-8 BOM tegengekomen"
 
-#: lexer.ll:227
+#: lexer.ll:196
 msgid "Skipping UTF-8 BOM"
 msgstr "Overslaan van UTF-8 BOM"
 
-#: lexer.ll:279
+#: lexer.ll:248
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Hernoem invoer naar: `%s'"
 
-#: lexer.ll:296
+#: lexer.ll:265
 msgid "quoted string expected after \\version"
 msgstr "tekst tussen aanhalingstekens verwacht na \\version"
 
-#: lexer.ll:300
+#: lexer.ll:269
 msgid "quoted string expected after \\sourcefilename"
 msgstr "tekst tussen aanhalingstekens verwacht na \\sourcefilename"
 
-#: lexer.ll:304
+#: lexer.ll:273
 msgid "integer expected after \\sourcefileline"
 msgstr "geheel getal verwacht na \\sourcefileline"
 
-#: lexer.ll:331
+#: lexer.ll:300
 msgid "\\maininput not allowed outside init files"
 msgstr "\\maininput niet toegestaan buiten init bestanden"
 
-#: lexer.ll:355
+#: lexer.ll:324
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "verkeerde of ongedefiniëerde identifier: `%s'"
 
-#: lexer.ll:381
+#: lexer.ll:349
 #, fuzzy
 msgid "string expected after \\include"
 msgstr "tekst tussen aanhalingstekens verwacht na \\version"
 
-#: lexer.ll:391
+#: lexer.ll:359
 msgid "end quote missing"
 msgstr "aanhalingstekens sluite mist"
 
-#: lexer.ll:743
+#: lexer.ll:714
 msgid "EOF found inside a comment"
 msgstr "EOF gevonden in een kommentaar"
 
-#: lexer.ll:748
-#, fuzzy
+#: lexer.ll:719
 msgid "EOF found inside string"
-msgstr "EOF gevonden in een kommentaar"
+msgstr "EOF gevonden in een tekenreeks"
 
-#: lexer.ll:763
+#: lexer.ll:734
 msgid "Unfinished main input"
 msgstr ""
 
-#: lexer.ll:834
-#, fuzzy, c-format
+#: lexer.ll:805
+#, c-format
 msgid "invalid character: `%s'"
-msgstr "ongeldig teken: `%c'"
+msgstr "ongeldig teken: '%s'"
 
-#: lexer.ll:963
+#: lexer.ll:925
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "onbekende ontsnapte string: `\\%s'"
 
-#: lexer.ll:983
+#: lexer.ll:945
 #, c-format
 msgid "undefined character or shorthand: %s"
 msgstr ""
 
-#: lexer.ll:1275
+#: lexer.ll:1236
 msgid "non-UTF-8 input"
 msgstr ""
 
-#: lexer.ll:1319
+#: lexer.ll:1280
+#, c-format
+msgid "Invalid version string \"%s\""
+msgstr "Ongeldige versietekenreeks \"%s\""
+
+#: lexer.ll:1285
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "bestand te oud: %s (oudste ondersteund: %s)"
 
-#: lexer.ll:1320
+#: lexer.ll:1286
 msgid "consider updating the input with the convert-ly script"
 msgstr "overweeg het actualiseren van de invoer met het convert-ly script"
 
-#: lexer.ll:1326
+#: lexer.ll:1292
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "programma te oud: %s (bestand vereist: %s)"
 
+#: auto-beam.scm:147
+msgid "Beam end fits no pattern"
+msgstr ""
+
 #: backend-library.scm:27
 #, scheme-format
 msgid "Invoking `~a'..."
-msgstr "Aanroepen van '~a'..."
+msgstr "Inroepen van `~a'..."
 
 #: backend-library.scm:31
 #, scheme-format
@@ -3342,25 +3339,37 @@ msgid "`~a' failed (~a)\n"
 msgstr "'~a' is mislukt (~a)\n"
 
 # lisp-format
-#: backend-library.scm:93
-#, fuzzy, scheme-format
+#: backend-library.scm:108
+#, scheme-format
 msgid "Converting to `~a'...\n"
-msgstr "Converteren naar `~a'..."
+msgstr "Converteren naar '~a'...\n"
 
 # lisp-format
 #. Do not try to guess the name of the png file,
 #. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:102
+#: backend-library.scm:118
 #, scheme-format
 msgid "Converting to ~a..."
 msgstr "Converteren naar ~a..."
 
-#: backend-library.scm:140
+# lisp-format
+#: backend-library.scm:134
+#, scheme-format
+msgid "Copying to `~a'...\n"
+msgstr "Kopiëren naar '~a'...\n"
+
+# lisp-format
+#: backend-library.scm:200
+#, scheme-format
+msgid "Deleting `~a'...\n"
+msgstr "Verwijderen van '~a'...\n"
+
+#: backend-library.scm:219
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "Schrijven van header veld `~a' naar `~a'..."
 
-#: backend-library.scm:189
+#: backend-library.scm:268
 #, scheme-format
 msgid "missing stencil expression `~S'"
 msgstr ""
@@ -3401,156 +3410,145 @@ msgstr ""
 msgid "symbol ~S redefined"
 msgstr "symbool ~S hergedefiniëerd"
 
-#: define-event-classes.scm:73
-#, fuzzy, scheme-format
+#: define-event-classes.scm:74
+#, scheme-format
 msgid "unknown parent class `~a'"
-msgstr "Onbekende gebeurtenis klasse `%s'"
+msgstr "onbekende moederklasse '~a'"
 
-#: define-event-classes.scm:107
-#, fuzzy, scheme-format
+#: define-event-classes.scm:108
+#, scheme-format
 msgid "Cannot redefine event class `~S'"
-msgstr "Onbekende gebeurtenis klasse `%s'"
+msgstr "Kan gebeurtenisklasse '~S' niet herdefiniëren"
 
-#: define-event-classes.scm:109
-#, fuzzy, scheme-format
+#: define-event-classes.scm:110
+#, scheme-format
 msgid "Undefined parent event class `~S'"
-msgstr "Onbekende gebeurtenis klasse `%s'"
+msgstr "Ongedefinieerde moedergebeurtenisklasse '~S'"
 
-#: define-markup-commands.scm:1083
+#: define-markup-commands.scm:1098
 msgid "no systems found in \\score markup, does it have a \\layout block?"
-msgstr "geen systemen gevonden in \\score markup; heeft het een \\layout blok?"
+msgstr "geen systemen gevonden in \\score markup, heeft het een \\layout blok?"
 
-#: define-markup-commands.scm:2847
+#: define-markup-commands.scm:2922
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "Kan glief ~a niet vinden"
 
-#: define-markup-commands.scm:3273
+#: define-markup-commands.scm:3398
 #, fuzzy, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "geen plaatsing gevonden voor vingers"
 
-#: define-markup-commands.scm:3274
+#: define-markup-commands.scm:3399
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr ""
 
-#: define-markup-commands.scm:3526
+#: define-markup-commands.scm:3643
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "geen geldige duurtekst: ~a"
 
-#: define-markup-commands.scm:3737
+#: define-markup-commands.scm:3854
 #, fuzzy, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
 msgstr "geen geldige duurtekst: ~a"
 
-#: define-music-types.scm:792
+#: define-music-types.scm:803
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "symbool verwacht: ~S"
 
-#: define-music-types.scm:795
+#: define-music-types.scm:806
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "kan muziekobject niet vinden: ~S"
 
-#: define-music-types.scm:815
+#: define-music-types.scm:826
 #, scheme-format
 msgid "bad make-music argument: ~S"
 msgstr ""
 
-#: define-music-types.scm:827
-#, scheme-format
-msgid "unknown repeat type `~S'"
-msgstr "onbekend herhaaltype `~S'"
-
-#: define-music-types.scm:828
-#, fuzzy
-msgid "See define-music-types.scm for supported repeats"
-msgstr "Zie music-types.scm voor ondersteunde herhalingen"
-
-#: define-note-names.scm:972
+#: define-note-names.scm:1000
 msgid "Select note names language."
 msgstr ""
 
-#: define-note-names.scm:978
+#: define-note-names.scm:1006
 #, scheme-format
 msgid "Using `~a' note names..."
 msgstr ""
 
-#: define-note-names.scm:981
+#: define-note-names.scm:1009
 #, scheme-format
 msgid "Could not find language `~a'.  Ignoring."
 msgstr ""
 
-#: document-backend.scm:132
+#: document-backend.scm:135
 #, scheme-format
 msgid "pair expected in doc ~s"
 msgstr "paar verwacht in doc ~s"
 
-#: document-backend.scm:189
+#: document-backend.scm:202
 #, scheme-format
 msgid "cannot find interface for property: ~S"
 msgstr "kan grob bediening voor eigenschap niet vinden: ~S"
 
-#: document-backend.scm:199
+#: document-backend.scm:212
 #, scheme-format
 msgid "unknown Grob interface: ~S"
 msgstr "onbekende Grob bediening: ~S"
 
-#: documentation-lib.scm:59
+#: documentation-lib.scm:62
 #, scheme-format
 msgid "Processing ~S..."
 msgstr "Verwerken van ~S..."
 
-#: documentation-lib.scm:176
+#: documentation-lib.scm:178
 #, scheme-format
 msgid "Writing ~S..."
 msgstr "Schrijven van ~S..."
 
-#: documentation-lib.scm:188
-#, fuzzy, scheme-format
+#: documentation-lib.scm:190
+#, scheme-format
 msgid "cannot find description for property `~S' (~S)"
-msgstr "kan beschrijving voor eigenschap niet vinden ~S (~S)"
+msgstr "kan omschrijving voor eigenschap '~S' niet vinden (~S)"
 
-#: documentation-lib.scm:209
+#: documentation-lib.scm:211
 #, scheme-format
 msgid "cannot find description for property ~S (~S)"
-msgstr "kan beschrijving voor eigenschap niet vinden ~S (~S)"
+msgstr "kan omschrijving voor eigenschap ~S niet vinden (~S)"
 
-#: flag-styles.scm:162
-#, fuzzy, scheme-format
+#: flag-styles.scm:155
+#, scheme-format
 msgid "flag stroke `~a' or `~a' not found"
-msgstr "vlag streep `%s' niet gevonden"
+msgstr "vlagstreep '~a' of '~a' is niet gevonden"
 
-#: framework-eps.scm:108
+#: framework-eps.scm:112
 #, scheme-format
 msgid "Writing ~a..."
 msgstr "Schrijven van ~a..."
 
-#: framework-ps.scm:250
+#: framework-ps.scm:281
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr "kan niet inbedden ~S=~S"
 
-#: framework-ps.scm:293
+#: framework-ps.scm:324
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr "kan bestand dat past op ~a niet uit ~a extraheren"
 
-#: framework-ps.scm:311
+#: framework-ps.scm:342
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr "weet niet hoe ~S=~S in te bedden"
 
-#: framework-ps.scm:336
+#: framework-ps.scm:367
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr "weet niet hoe font in te bedden: ~s ~s ~s"
 
-#: framework-ps.scm:687
-#, fuzzy
+#: framework-ps.scm:723
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3566,19 +3564,17 @@ msgid ""
 "  %% ****************************************************************\n"
 msgstr ""
 "\n"
-"Het PostScript backend ondersteund geen system-by-system uitvoer.\n"
-"Gebruik daarvoor het EPS backend\n"
+"Het PostScript-backend ondersteunt geen system-by-system uitvoer.\n"
+"Gebruik daarvoor het EPS-backend:\n"
 "\n"
-"  lilypond -eps BESTAND\n"
+"  lilypond -dbackend=eps BESTAND\n"
 "\n"
-"Als LilyPond fragment van een webpagina is gecopiëerd, weet zeker\n"
-"dat alleen alles voorafgaand aan\n"
+"Als u een LilyPond-fragment van een webpagina hebt gekopieerd,\n"
+"verwijder dan alleen alles voorafgaand aan:\n"
 "\n"
 "  %% ****************************************************************\n"
 "  %% Start cut-&-pastable-section\n"
 "  %% ****************************************************************\n"
-"\n"
-"is verwijderd\n"
 
 #: framework-svg.scm:84
 #, scheme-format
@@ -3598,7 +3594,7 @@ msgstr "Fout in waardestreep kwantisering.  Verwacht (~S,~S) gevonden ~S."
 #: layout-beam.scm:54
 #, scheme-format
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr "Fout in waardestreep kwantisering.  Verwacht ~S 0, gevonden ~S."
+msgstr "Fout in waardestreep-kwantisering.  Verwacht ~S 0, gevonden ~S."
 
 #: lily-library.scm:333
 msgid "Music unsuitable for context-mod"
@@ -3613,58 +3609,58 @@ msgstr "kan `%s' niet wisselen in `%s'"
 msgid "Music unsuitable for output-def"
 msgstr ""
 
-#: lily-library.scm:884
+#: lily-library.scm:904
 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 ""
 
-#: lily-library.scm:955
+#: lily-library.scm:998
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "onbekende eenheid: ~S"
 
-#: lily-library.scm:980
+#: lily-library.scm:1023
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr "geen \\version uitdrukking gevonden, voeg~atoe voor toekomstige compatibiliteit"
 
-#: lily.scm:75
+#: lily.scm:93
 msgid "call-after-session used after session start"
 msgstr ""
 
-#: lily.scm:93
+#: lily.scm:111
 msgid "define-session used after session start"
 msgstr ""
 
-#: lily.scm:393
+#: lily.scm:417
 msgid "Using (ice-9 curried-definitions) module\n"
 msgstr ""
 
-#: lily.scm:396
+#: lily.scm:420
 msgid "Guile 1.8\n"
-msgstr ""
+msgstr "Guile 1.8\n"
 
-#: lily.scm:455
+#: lily.scm:477
 #, scheme-format
 msgid "cannot find: ~A"
 msgstr "kan niet vinden: ~A"
 
-#: lily.scm:878
+#: lily.scm:903
 msgid "Success: compilation successfully completed"
 msgstr ""
 
-#: lily.scm:879
+#: lily.scm:904
 msgid "Compilation completed with warnings or errors"
 msgstr ""
 
-#: lily.scm:940
+#: lily.scm:965
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
-msgstr "taak ~a beëindigd met met signaal: ~a"
+msgstr "taak ~a is beëindigd met signaal: ~a"
 
-#: lily.scm:943
+#: lily.scm:968
 #, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
@@ -3673,41 +3669,36 @@ msgstr ""
 "logfile ~a (exit ~a):\n"
 "~a"
 
-#: lily.scm:965 lily.scm:1054
+#: lily.scm:990 lily.scm:1079
 #, scheme-format
 msgid "failed files: ~S"
 msgstr "gefaalde bestanden: ~S"
 
 # lisp-format
-#: lily.scm:1045
+#: lily.scm:1070
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr "Omleiden van uitvoer naar ~a..."
 
-#: lily.scm:1064 ps-to-png.scm:66
+#: lily.scm:1089
 #, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr "Aanroepen van '~a'...\n"
 
-#: ly-syntax-constructors.scm:66
+#: ly-syntax-constructors.scm:27
 #, scheme-format
 msgid "~a function cannot return ~a"
 msgstr ""
 
-#: ly-syntax-constructors.scm:75
+#: ly-syntax-constructors.scm:60
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr "verkeert type voor argument ~a.  Verwacht ~a, gevonden ~s"
-
-#: ly-syntax-constructors.scm:199
-#, scheme-format
-msgid "Invalid property operation ~a"
-msgstr "Ongeldige eigenschap operatie ~a"
+msgstr "Verkeerd type voor argument ~a.  Verwacht ~a, gevonden ~s"
 
 #: markup-macros.scm:331
 #, scheme-format
 msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
-msgstr "verkeerd aantal argumenten.  Verwacht: ~A, gevonden ~A: ~S"
+msgstr "Verkeerd aantal argumenten.  Verwacht: ~A, gevonden ~A: ~S"
 
 #: markup-macros.scm:337
 #, scheme-format
@@ -3743,61 +3734,90 @@ msgstr ""
 msgid "negative replication count; ignoring"
 msgstr ""
 
-#: music-functions.scm:272
-msgid "More alternatives than repeats.  Junking excess alternatives"
-msgstr "Meer alternatieven dan herhalingen.  Overtollige alternatieven worden weggegooid."
-
-#: music-functions.scm:303
-#, scheme-format
+#: music-functions.scm:319
+#, fuzzy, scheme-format
 msgid "invalid tremolo repeat count: ~a"
-msgstr "ongeldig tremolo-herhalingsaantal: ~a"
+msgstr "Ongeldige eigenschap operatie ~a"
 
-#: music-functions.scm:459
+#: music-functions.scm:348
 #, scheme-format
+msgid "unknown repeat type `~S': must be volta, unfold, percent, or tremolo"
+msgstr ""
+
+#: music-functions.scm:352
+msgid "More alternatives than repeats.  Junking excess alternatives"
+msgstr "Meer alternatieven dan herhalingen.  Verschroten van overtollige alternatieven"
+
+#: music-functions.scm:487
+#, fuzzy, scheme-format
 msgid "bad grob property path ~a"
-msgstr "ongeldig grob-eigenschappad ~a"
+msgstr "Ongeldige eigenschap operatie ~a"
+
+#: music-functions.scm:511
+#, fuzzy, scheme-format
+msgid "bad context property ~a"
+msgstr "Ongeldige eigenschap operatie ~a"
+
+#: music-functions.scm:534
+#, fuzzy, scheme-format
+msgid "bad music property ~a"
+msgstr "Ongeldige eigenschap operatie ~a"
 
-#: music-functions.scm:753
+#: music-functions.scm:840
 msgid "Bad chord repetition"
-msgstr "Ongeldige akkoordherhaling"
+msgstr ""
 
-#: music-functions.scm:788
+#: music-functions.scm:945
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "muziek verwacht: ~S"
 
-#: music-functions.scm:1144
+#: music-functions.scm:1295
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
-msgstr "kan aangehaalde muziek niet vinden: '~S'"
+msgstr "kan aangehaalde muziek niet vinden: `~S'"
 
-#: music-functions.scm:1282
+#: music-functions.scm:1432
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr ""
 
-# XXX trailing space
-#: music-functions.scm:1342
+# FIXME: trailing space?
+#: music-functions.scm:1495
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "onbekend octaafheidstype: ~S "
 
-# XXX stray apostrophe
-#: music-functions.scm:1343
+# FIXME: stray apostrophe
+#: music-functions.scm:1496
 msgid "Defaulting to 'any-octave."
 msgstr ""
 
-# XXX what does accidental mean?
-#: music-functions.scm:1688
+# FIXME: what does accidental mean?
+#: music-functions.scm:1888
 #, fuzzy, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "onbekende toevallige stijl: ~S"
 
-#: output-ps.scm:278 output-svg.scm:539
+#: music-functions.scm:2098
+msgid "Missing duration"
+msgstr "Ontbrekende duur"
+
+#: music-functions.scm:2626
+#, scheme-format
+msgid "not a symbol list: ~a"
+msgstr "is geen symbolenlijst: ~a"
+
+#: music-functions.scm:2629
+#, fuzzy, scheme-format
+msgid "conflicting tag group ~a"
+msgstr "Tegenstrijdige nootgroeperingsgebeurtenissen"
+
+#: output-ps.scm:290 output-svg.scm:539
 #, scheme-format
 msgid "unknown line-cap-style: ~S"
 msgstr "onbekende lijnkopstijl: ~S"
 
-#: output-ps.scm:283 output-svg.scm:545
+#: output-ps.scm:295 output-svg.scm:545
 #, scheme-format
 msgid "unknown line-join-style: ~S"
 msgstr "onbekende lijnverbindingsstijl: ~S"
@@ -3807,7 +3827,7 @@ msgstr "onbekende lijnverbindingsstijl: ~S"
 msgid "cannot decypher Pango description: ~a"
 msgstr "kan Pango-font-omschrijving niet ontcijferen: ~a"
 
-# XXX capitalize Unicode
+# FIXME: capitalize Unicode
 #: output-svg.scm:228
 msgid "Glyph must have a unicode value"
 msgstr "Glief moet een Unicode-waarde hebben"
@@ -3817,96 +3837,146 @@ msgstr "Glief moet een Unicode-waarde hebben"
 msgid "cannot find SVG font ~S"
 msgstr "kan SVG-font ~S niet vinden"
 
-#: paper.scm:120
+#: paper.scm:121
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size: niet op topniveau"
 
-#: paper.scm:320
+#: paper.scm:321
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Dit is geen \\layout {} object, ~S"
 
-#: paper.scm:328
+#: paper.scm:329
 #, scheme-format
 msgid "Unknown paper size: ~a"
 msgstr "Onbekende papiergrootte: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:347
+#: paper.scm:348
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "Moet #(set-paper-size .. ) gebruiken in \\paper { ... }"
 
-#: parser-clef.scm:164
+#: parser-clef.scm:154
 #, scheme-format
 msgid "unknown clef type `~a'"
 msgstr "onbekend sleuteltype '~a'"
 
-#: parser-clef.scm:165
+#: parser-clef.scm:155
 #, scheme-format
 msgid "supported clefs: ~a"
 msgstr "ondersteunde sleutels: ~a"
 
-#: parser-ly-from-scheme.scm:74
+#: parser-ly-from-scheme.scm:73
 msgid "error in #{ ... #}"
 msgstr "fout in #{ ... #}"
 
-#: part-combiner.scm:598
+#: part-combiner.scm:894
 #, scheme-format
 msgid "quoted music `~a' is empty"
-msgstr "aangehaalde muziek '~a' is leeg"
+msgstr ""
+
+# lisp-format
+#: ps-to-png.scm:72 ps-to-png.scm:75
+#, scheme-format
+msgid "Copying `~a' to `~a'..."
+msgstr "Kopiëren van '~a' naar '~a'..."
 
-#: ps-to-png.scm:70
+#: ps-to-png.scm:77 ps-to-png.scm:79
 #, scheme-format
-msgid "~a exited with status: ~S"
-msgstr "~a sloot af met status ~S"
+msgid "Deleting `~a'..."
+msgstr "Verwijderen van '~a'..."
 
 #: to-xml.scm:190
 #, scheme-format
 msgid "assertion failed: ~S"
 msgstr "controletest is mislukt: ~S"
 
-#: translation-functions.scm:368
+#: translation-functions.scm:389
 #, scheme-format
 msgid "Negative fret for pitch ~a on string ~a"
-msgstr "Negatieve fret voor toonhoogte ~a op snaar ~a"
+msgstr ""
 
-#: translation-functions.scm:371
+#: translation-functions.scm:392
 #, scheme-format
 msgid "Missing fret for pitch ~a on string ~a"
-msgstr "Ontbrekende fret voor toonhoogte ~a op snaar ~a"
+msgstr ""
 
-#: translation-functions.scm:414
+#: translation-functions.scm:435
 #, scheme-format
 msgid "No open string for pitch ~a"
-msgstr "Geen vrije snaar voor toonhoogte ~a"
+msgstr ""
 
-#: translation-functions.scm:429 translation-functions.scm:441
+#: translation-functions.scm:450 translation-functions.scm:462
 #, scheme-format
 msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
-msgstr "Gevraagde snaar voor toonhoogte vereist negatieve fret: snaar ~a, toonhoogte ~a"
+msgstr ""
 
-#: translation-functions.scm:432
+#: translation-functions.scm:453
 msgid "Ignoring string request and recalculating."
-msgstr "Snaarverzoek wordt genegeerd; er wordt herberekend."
+msgstr ""
 
-#: translation-functions.scm:444
+#: translation-functions.scm:465
 msgid "Ignoring note in tablature."
 msgstr ""
 
-#: translation-functions.scm:469
+#: translation-functions.scm:490
 #, scheme-format
 msgid "No string for pitch ~a (given frets ~a)"
-msgstr "Geen snaar voor toonhoogte ~a (gegeven de frets ~a)"
+msgstr ""
 
-#: translation-functions.scm:574
+#: translation-functions.scm:595
 #, scheme-format
 msgid ""
 "No label for fret ~a (on string ~a);\n"
 "only ~a fret labels provided"
 msgstr ""
-"Geen label voor fret ~a (op snaar ~a);\n"
-"slechts ~a fret-labels gegeven"
+
+#~ msgid "cannot change, already in translator: %s"
+#~ msgstr "kan niet wisselen, al in vertaler: %s"
+
+#~ msgid "cannot find Voice `%s'"
+#~ msgstr "kan Voice niet vinden: `%s'"
+
+#, fuzzy
+#~ msgid "Lyric syllable does not have note.  Use \\lyricsto or associatedVoice."
+#~ msgstr "Liedtekst lettergreep heeft geen noot.  Gebruik \\lyricsto of associatedVoice."
+
+#, fuzzy
+#~ msgid "Using naive multi measure rest spacing."
+#~ msgstr "enkelnootse ligatuur - overslaan"
+
+#~ msgid "(normalized pitch)"
+#~ msgstr "(genormaliseerde toonhoogte)"
+
+#~ msgid "Transposing %s by %s makes alteration larger than double"
+#~ msgstr "Transponeren van %s met %s maakt verandering groter dan dubbel"
+
+#~ msgid "ignoring too many clashing note columns"
+#~ msgstr "negeren van te veel botsende nootkolommen"
+
+#~ msgid "time signature symbol `%s' not found; reverting to numbered style"
+#~ msgstr "maatsoort-symbool '%s' niet gevonden;  teruggevallen op numerieke stijl"
+
+#, fuzzy
+#~ msgid "Too much lookahead"
+#~ msgstr "Te veel vooruitkijk"
+
+#~ msgid "score expected"
+#~ msgstr "score verwacht"
+
+#~ msgid "unknown repeat type `~S'"
+#~ msgstr "onbekend herhaaltype `~S'"
+
+#, fuzzy
+#~ msgid "See define-music-types.scm for supported repeats"
+#~ msgstr "Zie music-types.scm voor ondersteunde herhalingen"
+
+#~ msgid "Invalid property operation ~a"
+#~ msgstr "Ongeldige eigenschap operatie ~a"
+
+#~ msgid "~a exited with status: ~S"
+#~ msgstr "~a sloot af met status: ~S"
 
 #~ msgid "Report bugs via"
 #~ msgstr ""
@@ -4313,9 +4383,6 @@ msgstr ""
 #~ msgid "Now processing `%s'"
 #~ msgstr "Verwerken van `%s'"
 
-#~ msgid "FIXME: key change merge"
-#~ msgstr "MAAKME: toonsoort sleutel samenvoeging"
-
 #~ msgid "kpathsea can not find TFM file: `%s'"
 #~ msgstr "kpathsea kan TFM bestand niet vinden: `%s'"
 
index 03670e02cc304b221be5a5730a412b948ca7a4a2..d46daa6577ff2b3eacbf029fa2ee17119ddc9ed2 100644 (file)
@@ -3834,6 +3834,17 @@ def conv (str):
     str = re.sub (r"(\\applyOutput\s+)#'([a-zA-Z])", r"\1\2", str)
     return str
 
+@rule ((2, 19, 28), r"c:5.x, c:5^x, c:sus -> c:3.5.x, c:3.5^x, c:5")
+def conv (str):
+    str = re.sub (r":5([.^][1-9])", r":3.5\1", str)
+    # row back for self-defeating forms
+    str = re.sub (r":3\.5((?:\.[0-9]+)*\^(?:[0-9]+\.)*)3\.", r":5\1", str)
+    str = re.sub (r":3\.5((?:\.[0-9]+)*\^?:[0-9]+(?:\.[0-9]+)*)\.3(?![.0-9])", r":5\1", str)
+    str = re.sub (r":3\.5((?:\.[0-9]+)*)\^3(?=\s|\})", r":5\1", str)
+    str = re.sub (r":sus(?=\s|\})", ":5", str)
+    str = re.sub (r":1\.5(?=\s|[.^}])", r":5", str)
+    return str
+
 # Guidelines to write rules (please keep this at the end of this file)
 #
 # - keep at most one rule per version; if several conversions should be done,
index ec95dff287f0ba2385d79702bfcb73754d210ec2..ca864f3e1057fe44d32d8ac825a302a7dee9607c 100644 (file)
@@ -32,6 +32,8 @@ Entry point for the parser."
          (inversion #f)
          (lead-mod #f)
          (explicit-11 #f)
+         (explicit-2/4 #f)
+         (omit-3 #f)
          (start-additions #t))
 
     (define (interpret-inversion chord mods)
@@ -66,8 +68,10 @@ Entry point for the parser."
       "Interpret additions.  TODO: should restrict modifier use?"
       (cond ((null? mods) chord)
             ((ly:pitch? (car mods))
-             (if (= (pitch-step (car mods)) 11)
-                 (set! explicit-11 #t))
+             (case (pitch-step (car mods))
+               ((11) (set! explicit-11 #t))
+               ((2 4) (set! explicit-2/4 #t))
+               ((3) (set! omit-3 #f)))
              (interpret-additions (cons (car mods) (remove-step (pitch-step (car mods)) chord))
                                   (cdr mods)))
             ((procedure? (car mods))
@@ -129,8 +133,10 @@ the bass specified.
              (ly:pitch?  (car flat-mods))
              (not (eq? lead-mod sus-modifier)))
         (begin
-          (if (= (pitch-step (car flat-mods)) 11)
-              (set! explicit-11 #t))
+          (cond ((= (pitch-step (car flat-mods)) 11)
+                 (set! explicit-11 #t))
+                ((equal? (ly:make-pitch 0 4 0) (car flat-mods))
+                 (set! omit-3 #t)))
           (set! base-chord
                 (stack-thirds (car flat-mods) the-canonical-chord))
           (set! flat-mods (cdr flat-mods))))
@@ -141,6 +147,10 @@ the bass specified.
           (if start-additions
               (interpret-additions base-chord flat-mods)
               (interpret-removals base-chord flat-mods)))
+    ;; if sus has been given neither 2 or 4, we add 4.
+    (if (and (eq? lead-mod sus-modifier)
+             (not explicit-2/4))
+        (set! complete-chord (cons (ly:make-pitch 0 4 0) complete-chord)))
     (set! complete-chord (sort complete-chord ly:pitch<?))
     ;; If natural 11 + natural 3 is present, but not given explicitly,
     ;; we remove the 11.
@@ -150,6 +160,10 @@ the bass specified.
              (= 0 (ly:pitch-alteration (get-step 11 complete-chord)))
              (= 0 (ly:pitch-alteration (get-step 3 complete-chord))))
         (set! complete-chord (remove-step 11 complete-chord)))
+    ;; if omit-3 has been set (and not reset by an explicit 3
+    ;; somewhere), we remove the 3
+    (if omit-3
+        (set! complete-chord (remove-step 3 complete-chord)))
     ;; must do before processing inversion/bass, since they are
     ;; not relative to the root.
     (set! complete-chord (map (lambda (x) (ly:pitch-transpose x root))
index a341cc45984481a081e50af54b0dc1ba06be9102..e7fc4bb956903f918f1aa265d28ffda553c0182f 100644 (file)
@@ -38,6 +38,7 @@
         (stencil . ,ly:accidental-interface::print)
         (horizontal-skylines . ,(ly:make-unpure-pure-container ly:accidental-interface::horizontal-skylines))
         (vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
+        (X-offset . ,ly:grob::x-parent-positioning)
         (Y-extent . ,accidental-interface::height)
         (meta . ((class . Item)
                  (interfaces . (accidental-interface
@@ -52,6 +53,7 @@
         (glyph-name-alist . ,standard-alteration-glyph-name-alist)
         (parenthesized . #t)
         (stencil . ,ly:accidental-interface::print)
+        (X-offset . ,ly:grob::x-parent-positioning)
         (Y-extent . ,accidental-interface::height)
         (meta . ((class . Item)
                  (interfaces . (accidental-interface
         (padding . 0.5)
         (side-axis . ,X)
         (stencil . ,ly:accidental-interface::print)
-        (X-offset . ,ly:side-position-interface::x-aligned-side)
+        (X-offset . ,ly:grob::x-parent-positioning)
         (Y-extent . ,accidental-interface::height)
         (meta . ((class . Item)
                  (interfaces . (accidental-interface
index 8d15ac9e29e23d26308cf1dbd135e5e20aa21941..57e2e8893a26334a2d5af498ba518668b158ed03 100644 (file)
@@ -3534,7 +3534,8 @@ Supported flag-styles are @code{default}, @code{old-straight-flag},
            (flag-stencil (buildflags stencil (- log 3) stencil spacing)))
       flag-stencil))
 
-  (let* ((font (ly:paper-get-font layout (cons '((font-encoding . fetaMusic))
+  (let* ((font (ly:paper-get-font layout (cons '((font-encoding . fetaMusic)
+                                                 (font-name . #f))
                                                props)))
          (size-factor (magstep font-size))
          (blot (ly:output-def-lookup layout 'blot-diameter))
@@ -3750,7 +3751,9 @@ A rest or multi-measure-rest symbol.
 
   (let* ((font
           (ly:paper-get-font layout
-                             (cons '((font-encoding . fetaMusic)) props)))
+                             (cons '((font-encoding . fetaMusic)
+                                     (font-name . #f))
+                                   props)))
          (rest-glyph-name
           (let ((result
                  (get-glyph-name font
index 0b9cb54fbb713ff5a9df2601cb6c0667ab261a74..10aecbd1db6794f29b3ee54f9cb99bdef23e47b4 100644 (file)
@@ -809,7 +809,8 @@ Otherwise, return #f."
             (new-line->lily-string))))
 
 (define-display-method PropertyUnset (expr)
-  (format #f "\\unset ~a~a~a"
+  (format #f "~a\\unset ~a~a~a"
+          (if (ly:music-property expr 'once #f) "\\once " "")
           (if (eqv? (*current-context*) 'Bottom)
               ""
               (format #f "~a . " (*current-context*)))
@@ -839,8 +840,11 @@ Otherwise, return #f."
 (define-display-method RevertProperty (expr)
   (let* ((symbol (ly:music-property expr 'symbol))
          (properties (ly:music-property expr 'grob-property-path
-                                        (list (ly:music-property expr 'grob-property)))))
-    (format #f "\\revert ~{~a~^.~}~a"
+                                        (list (ly:music-property expr
+                                                                 'grob-property))))
+         (once (ly:music-property expr 'once #f)))
+    (format #f "~a\\revert ~{~a~^.~}~a"
+            (if once "\\once " "")
             (if (eqv? (*current-context*) 'Bottom)
                 (cons symbol properties)
                 (cons* (*current-context*) symbol properties))
index 5adf258831ce73c49593b1cecf0b2ed9a0775770..f10809d00aa45ffb2f06b27977635caa467b3470 100644 (file)
@@ -276,7 +276,7 @@ used.  This is used to select the proper design size for the text fonts.
     (add-pango-fonts n 'typewriter typewrite-str factor)
     n))
 
-(define-public (make-century-schoolbook-tree factor)
+(define-public (make-default-fonts-tree factor)
   (make-pango-font-tree
    "LilyPond Serif"
    "LilyPond Sans Serif"
index fd3d4ddb00c9cceb92925170bbad370ab6be73fe..6e6d9c894b0ad8064f52cb300c8ed5b85531121f 100644 (file)
@@ -2317,10 +2317,11 @@ list or if there is a type-mismatch, @var{arg} will be returned."
        arg offsets))
     (else arg)))
 
-(define-public (offsetter property offsets)
-  "Apply @var{offsets} to the default values of @var{property} of @var{grob}.
-Offsets are restricted to immutable properties and values of type @code{number},
-@code{number-pair}, or @code{number-pair-list}."
+(define-public (grob-transformer property func)
+  "Create an override value good for applying @var{func} to either
+pure or unpure values.  @var{func} is called with the respective grob
+as first argument and the default value (after resolving all callbacks)
+as the second."
   (define (worker self container-part grob . rest)
     (let* ((immutable (ly:grob-basic-properties grob))
            ;; We need to search the basic-properties alist for our
@@ -2346,12 +2347,28 @@ Offsets are restricted to immutable properties and values of type @code{number},
                           (if (procedure? part)
                               (apply part grob rest)
                               part)))
-                       (else target)))
-           (can-type-be-offset?
-            (or (number? vals)
-                (number-pair? vals)
-                (number-pair-list? vals))))
+                       (else target))))
+      (func grob vals)))
+  ;; return the container named `self'.  The container self-reference
+  ;; seems like chasing its own tail but gets dissolved by
+  ;; define/lambda separating binding and referencing of "self".
+  (define self (ly:make-unpure-pure-container
+                (lambda (grob)
+                  (worker self ly:unpure-pure-container-unpure-part grob))
+                (lambda (grob . rest)
+                  (apply worker self ly:unpure-pure-container-pure-part
+                         grob rest))))
+  self)
 
+(define-public (offsetter property offsets)
+  "Apply @var{offsets} to the default values of @var{property} of @var{grob}.
+Offsets are restricted to immutable properties and values of type @code{number},
+@code{number-pair}, or @code{number-pair-list}."
+  (define (offset-fun grob vals)
+    (let ((can-type-be-offset?
+           (or (number? vals)
+               (number-pair? vals)
+               (number-pair-list? vals))))
       (if can-type-be-offset?
           ;; '(+inf.0 . -inf.0) would offset to itself.  This will be
           ;; confusing to a user unaware of the default value of the
@@ -2390,16 +2407,7 @@ Offsets are restricted to immutable properties and values of type @code{number},
           (begin
             (ly:warning "the property '~a of ~a cannot be offset" property grob)
             vals))))
-  ;; return the container named `self'.  The container self-reference
-  ;; seems like chasing its own tail but gets dissolved by
-  ;; define/lambda separating binding and referencing of "self".
-  (define self (ly:make-unpure-pure-container
-                (lambda (grob)
-                  (worker self ly:unpure-pure-container-unpure-part grob))
-                (lambda (grob . rest)
-                  (apply worker self ly:unpure-pure-container-pure-part
-                         grob rest))))
-  self)
+  (grob-transformer property offset-fun))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; \magnifyMusic and \magnifyStaff
index 438cf80975d65f41a63fa0459e44219f6cd6f576..23ec05a70f25715225123160ae71a352d41d6140 100644 (file)
@@ -79,7 +79,7 @@
     (setm! 'text-font-size (* 11 factor))
 
     (setm! 'output-scale ss)
-    (setm! 'fonts (make-century-schoolbook-tree factor))
+    (setm! 'fonts (make-default-fonts-tree factor))
     (setm! 'staff-height staff-height)
     (setm! 'staff-space ss)
 
index 85548030ecaddb33cde537a8c4d731d3b9afedaf..71b5e5652643c4017f135145194360d20d1305d8 100644 (file)
   (display (span-state x) file)
   (display "\n" file))
 
+;; Return the duration of the longest event in the Voice-state.
+(define-method (duration (vs <Voice-state>))
+  (define (duration-max event d1)
+    (let ((d2 (ly:event-property event 'duration #f)))
+      (if d2
+          (if (ly:duration<? d1 d2) d2 d1)
+          d1)))
+
+  (fold duration-max (ly:make-duration 0 0 0) (events vs)))
+
+;; Return the moment that the longest event in the Voice-state ends.
+(define-method (end-moment (vs <Voice-state>))
+  (ly:moment-add (moment vs) (ly:duration-length (duration vs))))
+
 (define-method (note-events (vs <Voice-state>))
   (define (f? x)
     (ly:in-event-class? x 'note-event))
@@ -129,16 +143,32 @@ return the previous voice state."
     (if p (span-state p) '())))
 
 (define (make-voice-states evl)
-  (let ((vec (list->vector (map (lambda (v)
-                                  (make <Voice-state>
-                                    #:moment (caar v)
-                                    #:tuning (cdar v)
-                                    #:events (map car (cdr v))))
-                                evl))))
-    (do ((i 0 (1+ i)))
-        ((= i (vector-length vec)) vec)
-      (slot-set! (vector-ref vec i) 'vector-index i)
-      (slot-set! (vector-ref vec i) 'state-vector vec))))
+  (let* ((states (map (lambda (v)
+                        (make <Voice-state>
+                          #:moment (caar v)
+                          #:tuning (cdar v)
+                          #:events (map car (cdr v))))
+                      (reverse evl))))
+
+    ;; add an entry with no events at the moment the last event ends
+    (if (pair? states)
+        (let ((last-real-event (car states)))
+          (set! states
+                (cons (make <Voice-state>
+                        #:moment (end-moment last-real-event)
+                        #:tuning (tuning last-real-event)
+                        #:events '())
+                      states))))
+
+    ;; TODO: Add an entry at +inf.0 and see if it allows us to remove
+    ;; the many instances of conditional code handling the case that
+    ;; there is no voice state at a given moment.
+
+    (let ((vec (list->vector (reverse! states))))
+      (do ((i 0 (1+ i)))
+          ((= i (vector-length vec)) vec)
+        (slot-set! (vector-ref vec i) 'vector-index i)
+        (slot-set! (vector-ref vec i) 'state-vector vec)))))
 
 (define (make-split-state vs1 vs2)
   "Merge lists VS1 and VS2, containing Voice-state objects into vector
index 219275fafa86d23f48a38f52c23bad42efb08caa..2a3701ea16e8fb4773c52818201dd4d6f06a6253 100644 (file)
@@ -38,39 +38,23 @@ way the transposition number is displayed."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; metronome marks
 
-;; We give 'styled-metronome-markup' an optional argument, 'glyph-font', to
-;; prepare using other fonts than 'fetaMusic.
-;; Currently it ensures that the default-fonts are used by the
-;; markup-command 'note-by-number' in 'metronome-markup' (see below).
-(define*
-  ((styled-metronome-markup #:optional (glyph-font 'default))
-                            event context)
+(define-public (format-metronome-markup event context)
    (let ((hide-note (ly:context-property context 'tempoHideNote #f))
          (text (ly:event-property event 'text))
          (dur (ly:event-property event 'tempo-unit))
          (count (ly:event-property event 'metronome-count)))
+   (metronome-markup text dur count hide-note)))
+(export format-metronome-markup)
 
-   (metronome-markup glyph-font text dur count hide-note)))
-(export styled-metronome-markup)
-
-(define-public format-metronome-markup
-  (styled-metronome-markup))
-
-(define (metronome-markup glyph-font text dur count hide-note)
+(define (metronome-markup text dur count hide-note)
   (let* ((note-mark
             (if (and (not hide-note) (ly:duration? dur))
                 (make-smaller-markup
-                   ;; We insert the (default)-font for flag-glyphs and
-                   ;; note-head-glyphs to prepare the possibility to use
-                   ;; other fonts and to make possible using
-                   ;; \override MetronomeMark #'font-name = #<font-name>
-                   ;; without affecting the note/flag-glyphs.
-                   (make-override-markup (cons 'font-name glyph-font)
-                    (make-note-by-number-markup
-                        (ly:duration-log dur)
-                        (ly:duration-dot-count dur)
-                        UP)))
-                      #f))
+                  (make-note-by-number-markup
+                    (ly:duration-log dur)
+                    (ly:duration-dot-count dur)
+                    UP))
+                #f))
          (count-markup (cond ((number? count)
                               (if (> count 0)
                                   (make-simple-markup