]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into lilypond/translation
authorFrancisco Vila <francisco.vila@hispalinux.es>
Sat, 13 Aug 2011 13:39:04 +0000 (15:39 +0200)
committerFrancisco Vila <francisco.vila@hispalinux.es>
Sat, 13 Aug 2011 13:39:04 +0000 (15:39 +0200)
46 files changed:
Documentation/changes.tely
Documentation/fr/web/introduction.itexi
Documentation/included/authors.itexi
Documentation/learning/common-notation.itely
Documentation/notation/changing-defaults.itely
Documentation/notation/input.itely
Documentation/notation/staff.itely
input/regression/collision-dots-move.ly
input/regression/mozart-hrn-3.ly
input/regression/mozart-hrn3-allegro.ily
input/regression/mozart-hrn3-defs.ily
input/regression/mozart-hrn3-romanze.ily
input/regression/mozart-hrn3-rondo.ily
input/regression/multi-measure-rest-staff-position.ly [new file with mode: 0644]
input/regression/multi-measure-rest-tweaks.ly
input/regression/quote-during-subvoice.ly [new file with mode: 0644]
input/regression/slur-height-capping.ly [new file with mode: 0644]
input/regression/staff-change-autobeam.ly [new file with mode: 0644]
lily/auto-beam-engraver.cc
lily/context-handle.cc
lily/context.cc
lily/include/context-handle.hh
lily/include/context.hh
lily/include/slur-score-parameters.hh
lily/multi-measure-rest.cc
lily/music-iterator.cc
lily/note-collision.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/part-combine-iterator.cc
lily/quote-iterator.cc
lily/slur-configuration.cc
lily/slur-score-parameters.cc
lily/tuplet-iterator.cc
po/de.po
po/es.po
python/lilylib.py
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/layout-slur.scm
scm/lily.scm
scm/music-functions.scm
scm/part-combiner.scm
scripts/build/mf2pt1.pl
scripts/build/output-distance.py
scripts/build/website_post.py

index 5d87fc5e660ae161d473fe3d5abc7106190242b5..fcfd6ed68b71fd8d060ae99f6436d203196de41e 100644 (file)
@@ -97,6 +97,8 @@ LilyPond now fully supports the @code{#'style = #'none} property.
 c4\cresc c c g, c'\p
 @end lilypond
 
+@item
+LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
 
 @item
 Glissandi can now span multiple lines.
index e8a2ae474088e80df0d907aa07036458c8a52211..03152e23d206c2ba9e84b9b370cdc02106c65f3e 100644 (file)
@@ -593,7 +593,7 @@ partitions de musique sacrée de grande qualité, disponibles
 immédiatement en téléchargement ou sous forme de partition imprimable.
 
 @item
-@uref{http://http://www.shadylane.fr/, The Shady Lane Publishing},
+@uref{http://www.shadylane.fr/, The Shady Lane Publishing},
 est un @qq{micro-éditeur de partitions musicales} qui a pour but de
 promouvoir une nouvelle forme de pratique économique, plus proche des
 musiciens et amoureux de la musique.
index 289436609ddb88a19ebab1ce54d0eb6215e638ba..540ecb3bd3f0fa5c3054b12de9e766a13ae5b4ad 100644 (file)
 
 @itemize
 
+@item Bertrand Bordage:
+@email{bordage.bertrand@@gmail.com},
+Core developer, font designer
+
 @item Trevor Daniels:
 @email{t.daniels@@treda.co.uk},
 Assistant documentation editor
@@ -148,7 +152,6 @@ Core developer, Schemer extraordinaire
 
 @c use commas not colons
 
-Bertrand Bordage,
 Karin Hoethker,
 Jan Warchoł
 
@@ -196,6 +199,7 @@ Dmytro O. Redchuk
 @c use commas not colons
 
 Colin Campbell,
+Christian Hitz,
 Phil Holmes
 
 @c no comma for last entry
index 43189255966ce7f7129a2d5ea7e0be7e1e4b8c40..55b6d984bcae059d6fda2d0585cee67a8dcb2c50 100644 (file)
@@ -1315,7 +1315,7 @@ underneath the version number.
 
 When the file is processed, the title and composer are printed
 above the music.  More information on titling can be found in
-@ruser{Creating titles}.
+@ruser{Creating titles headers and footers}.
 
 
 @node Absolute note names
index 1b7614fa952f0b563632f3e279f63f705221bcc5..756e32680b36b4bc79007123a160c3a45e72ba28 100644 (file)
@@ -3625,28 +3625,26 @@ Notation Reference:
 @cindex Bézier curves, control points
 @cindex control points, Bézier curves
 
-If the shape of the tie or slur which is calculated automatically is not
-optimum, the shape may be modified manually by explicitly specifying the
-control points required to define the curve needed.
-
-Ties, slurs and phrasing slurs are drawn as @q{third-order} Bézier
-curves which are are defined by four control points.  The first and
-fourth control points are the start and end points of the curve
-respectively, and the two intermediate control points define the
-overall shape.
-
-Animations showing how the curve is drawn can be found on the web, but
-the following description may be helpful.  The curve starts from the
-first control point moving towards the second.  As the curve nears and
-passes through the second control point it begins to arc towards the
-third.  The curve continues on towards the the third control point,
-again starting to arc as it nears and passes through the third so as to
-finish the curve smoothly at the fourth and final control point.  The
-whole curve is contained in the quadrilateral defined by the four
-control points.
-
-Here is an example of a case where the tie is not optimum (and where the
-@code{\tieDown} command would not help).
+Ties, slurs and phrasing slurs are drawn as third-order Bézier
+curves.  If the shape of the tie or slur which is calculated
+automatically is not optimum, the shape may be modified manually by
+explicitly specifying the four control points required to define
+a third-order Bézier curve.
+
+Third-order or cubic Bézier curves are defined by four control
+points.  The first and fourth control points are precisely the
+starting and ending points of the curve.  The intermediate two
+control points define the shape.  Animations showing how the curve
+is drawn can be found on the web, but the following description
+may be helpful.  The curve starts from the first control point
+heading directly towards the second, gradually bending over to
+head towards the third and continuing to bend over to head towards
+the fourth, arriving there travelling directly from the third
+control point.  The curve is entirely contained in the
+quadrilateral defined by the four control points.
+
+Here is an example of a case where the tie is not optimum, and
+where @code{\tieDown} would not help.
 
 @lilypond[verbatim,quote,relative=1]
 <<
index 6d97c9957ef8bb9f14e593346868b80a0d77ce17..169ac357c7ba83807695095eecfdae20f482bb75 100644 (file)
@@ -524,7 +524,7 @@ some pieces include a lot more information.
 
 
 @node Creating titles headers and footers
-@subsection Creating titles, headers, and footers
+@subsection Creating titles headers and footers
 
 @menu
 * Title blocks explained::
@@ -776,7 +776,7 @@ To remove the @code{tagline} set the value to @code{##f}.
 
 
 @node Custom headers footers and titles
-@subsection Custom headers, footers, and titles
+@subsection Custom headers footers and titles
 
 @c TODO: somewhere put a link to header spacing info
 @c       (you'll have to explain it more in NR 4).
index b4e471f7b09233c22d62a24c6ffe5cfc72346e7f..2ac12942588040d1c86c482b8be26963a7f7ef95 100644 (file)
@@ -1173,9 +1173,9 @@ Installed Files:
 
 @knownissues
 Only the contents of the first @code{Voice} occurring in an
-@code{\addQuote} command will be considered for quotation, so the music
-expression must not contain @code{\new} and @code{\context Voice}
-statements which would switch to a different Voice.  Quoting grace notes
+@code{\addQuote} command will be considered for quotation, so if the music
+expression contains @code{\new} or @code{\context Voice}
+statements, their contents will not be quoted.  Quoting grace notes
 is unsupported and may cause LilyPond to crash whereas quoting nested
 triplets may result in poor notation.
 
index d04b0f7c9b9fabc26f59f88f001251cddcaab706..71fbdabb608fced5c564a9239365e0bd8134bff7 100644 (file)
@@ -9,7 +9,17 @@ collision resolution moves the dots to the right."
 \layout { ragged-right = ##t }
 
 \relative c {
-  \key d \minor
   \clef bass
-  << <cis a' cis>4 \\ { g'8. bes16} >>
+  \override Staff.NoteCollision #'prefer-dotted-right = ##t
+  s1*0^"prefer-dotted-right = #t"
+  << <b g' >4 \\ { c8. d16 } >>
+  << <b g' >4 \\ { d8. d16 } >>
+  << <b g' >4 \\ { f'8. d16 } >>
+  << <c a' >4 \\ { g'8. d16 } >>
+  \override Staff.NoteCollision #'prefer-dotted-right = ##f
+  s1*0^"prefer-dotted-right = #f"
+  << <b g' >4 \\ { c8. d16 } >>
+  << <b g' >4 \\ { d8. d16 } >>
+  << <b g' >4 \\ { f'8. d16 } >>
+  << <c a' >4 \\ { g'8. d16 } >>
 }
index 985b415a9e781c938e393728f6331a6d7b3c11b2..911595e8c162270309ec402ba18ce41b76686258 100644 (file)
   source = "Edition Breitkopf 2563"
   footer = "Mutopia-2002/05/21-25"
 
-  tagline = \markup { \smaller
-      \column {
-          \fill-line { \footer "" }
-          \fill-line { { "This music is part of the Mutopia project,"
-                         \typewriter { "http://mutopiaproject.org/" }
-                        } }
-          \fill-line { #(ly:export (string-append "It has been typeset and placed in the public "
-                         "domain by "  maintainer  "."))  }
-          \fill-line { #(ly:export (string-append "Unrestricted modification and redistribution"
-                         " is permitted and encouraged---copy this music"
-                         " and share it!")) }
-          }
-       }
+  tagline = \markup {
+    \smaller \column {
+      \fill-line { \footer "" }
+      \fill-line {
+        \line { "This music is part of the Mutopia project,"
+          \typewriter { "http://mutopiaproject.org/" }
+        }
+      }
+      \fill-line {
+        #(ly:export (string-append  "It has been typeset and placed in the public "
+                                    "domain by " maintainer "."))
+      }
+      \fill-line {
+        \line {
+          "Unrestricted modification and redistribution"
+          "is permitted and encouraged - copy this music"
+          "and share it!"
+        }
+      }
+    }
+  }
 
   texidoc="
 This is the Mozart 3 for horn.  It's from an Edition Breitkopf EB
@@ -48,58 +56,61 @@ virtuoso that taught in Geneva.
 \include "mozart-hrn3-rondo.ily"
 
 \paper {
-    obsolete-between-system-space = 20 \mm
-    system-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
-    score-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
+  system-system-spacing #'basic-distance = 10
+  score-system-spacing #'basic-distance = 20
 }
 
-
 \book {
-    \score {
-       { \transpose c' bes \allegro }
-       \layout { }
-       \header { piece = "Allegro" opus = "" }
+  \score {
+    { \transpose c' bes \allegro }
+    \layout { }
+    \header {
+      piece = "Allegro"
+      opus = ""
+    }
 
-  \midi {
-    \context {
-      \Score
-      tempoWholesPerMinute = #(ly:make-moment 90 4)
+    \midi {
+      \context {
+        \Score
+        tempoWholesPerMinute = #(ly:make-moment 90 4)
       }
     }
+  }
 
-
+  \score {
+    { \transpose c' bes \romanze }
+    \header {
+      piece = "Romanze"
+      opus = ""
     }
 
-    \score {
-       { \transpose c' bes \romanze }
-       \header { piece = "Romanze" opus = "" }
-
-  \midi {
-    \context {
-      \Score
-      tempoWholesPerMinute = #(ly:make-moment 70 4)
+    \midi {
+      \context {
+        \Score
+        tempoWholesPerMinute = #(ly:make-moment 70 4)
       }
     }
 
+    \layout { }
+  }
 
-       \layout {}
+  \score
+  {
+    { \transpose c' bes \rondo }
+    \header {
+      piece = "Rondo"
+      opus = ""
     }
 
-    \score
-    {
-       { \transpose c' bes \rondo }
-       \header { piece = "Rondo" opus = "" }
-
-  \midi {
-    \context {
-      \Score
-      tempoWholesPerMinute = #(ly:make-moment 100 4)
+    \midi {
+      \context {
+        \Score
+        tempoWholesPerMinute = #(ly:make-moment 100 4)
       }
     }
 
-
-       \layout { }
-    }
+    \layout { }
+  }
 }
 
 %% Local Variables:
index 5f4f1d72691fc834bf7ccbb57167bf1b161c35f4..3b7de4341caec4cf7d0bea6d8b1dc34846d36ad3 100644 (file)
-\version "2.11.61"
-\include  "mozart-hrn3-defs.ily"
+\version "2.14.0"
+\include "mozart-hrn3-defs.ily"
 
-allegro =
-       
-       \relative c'
-{
-       \time 4/4
-       \key c \major
-       \partial 4
-       r4 
-       |
-       R1*4
-       c'2^"Tutti" g
-       c, r
-       R1*1
-       r8 g' g g  g g e c
-       g'4 g, r2
-       R1*18
-       r2 r4^"Solo" g'4 |
-       \mark "A"
-       e'4. ( c8)  f[ (d c  b) ]
-        b[( c)] g4 r8  g[ c e]
-       g2.   g16[( f e  f)]
-       dis4 ( e4) r8  c8[-. c-. c-.]
-       c4.(  d16[ e]  f4  e)
-       a,( d g, c)
-       d-. d-. \grace {
-  \override Stem  #'stroke-style = #"grace"
-   e16( 
-  \revert Stem #'stroke-style }
- d8.[) c16 d8. e16]
-       c4 r r2
-       R1*3
-       c,2 ~  c8[ e g c]
-        c[  b ] b4 r2
-        c,8[ ( e) g c]  e[( g) e c]
-        c[( b)] b4 r2
-       c4.( g8 e'4. c8)
-        g'[( d) ] d4 r4 d
-        d8[ ( c)] c4.(  d16[ e]  d8[  c)]
-        c8[(\trill  b)] b4 r2 |
-       d2( ~   d8[ e16 d]  c8[  b)] |
-        b[( a)] a4 r8  a[ a a]
-       a4( cis e  g)
-       \grace {
-  \override Stem  #'stroke-style = #"grace"
-   \longgrace g16( \endlonggrace 
-  \revert Stem #'stroke-style }
+allegro = \relative c' {
+  \time 4/4
+  \key c \major
+  \partial 4
+  r4 \p
+  |
+  R1*4
+  c'2^"Tutti" g
+  c, r
+  R1*1
+  r8 g' g g g g e c
+  g'4 g, r2
+  R1*18
+  r2 r4^"Solo" g'4 |
+  \mark "A"
+  e'4. ( c8)  f[ (d c b) ]
+  b[( c)] g4 r8  g[ c e]
+  g2.  g16[( f e f)]
+  dis4 ( e4) r8  c8[-. c-. c-.]
+  c4.(  d16[ e] f4  e)
+  a,( d g, c)
+  d-. d-. \acciaccatura e16
+  d8.[ c16 d8. e16]
+  c4 r r2
+  R1*3
+  c,2 ~  c8[ e g c]
+  c[ b ] b4 r2
+  c,8[ ( e) g c] e[( g) e c]
+  c[( b)] b4 r2
+  c4.( g8 e'4. c8)
+  g'[( d) ] d4 r4 d
+  d8[ ( c)] c4.(  d16[ e] d8[  c)]
+  c8[(\trill  b)] b4 r2 |
+  d2( ~  d8[ e16 d] c8[  b)] |
+  b[( a)] a4 r8  a[ a a]
+  a4( cis e g)
+  \appoggiatura g16
+    fis8[( e16  d)] d4-. r2 |
+  \mark "B"
+  R1*3
+  r2 r4  d8[(_\markup { \italic \bold "con espressione" } b) ]
+  a[( g) d'( b)] a[( g) e'( c) ]
+  b8[(  a)] a4 r4  a8[ a]
+  a[( \< b c cis\!\> ]  d4  c\!)
+  ais8[( b)] r8 b\cresc b[( c)] r c
+  cis[ ( d)] r4 r2
+  g,1\!\f ~ g2 ~  g8[ a16 b] c[( d) e c]
+  %% 64
+  f4-. d-. b-. g-.
+  R1
+  c,2\p e4 g c e\cresc g4. e8 |
+  d4.\!\f e16[ fis]  g[ ( fis) e d] c[( b) a g]
+  \afterGrace a1(\trill { g16[ a] }
+  \mark "C"
+  g4) r r2
+  R1*15
+  \mark "D"
+  bes2\mf d4 f
+  g,2~  g8[ g' es c]|
+  bes4(  a4.)  c8[( d es)]
+  cis4( d) r8  bes[ (c d)]
+  es2 ( d4) r
+  es2 ( d4) r
+  c8[( g' es  c)] bes4( c)
+  c4.( cis8  d4) r
+  R1*2
+  es1~es1|
+  e!
+  d
+  c
+  c,
+  e'
+  e,
+  c'2  b8[( a gis  a)]
+  gis8[ e gis b ] e4 r |
+  r8 e,[ a c] dis4 r
+  r8 e,[ gis b ] e4 r
+  r8 e,[ a c] dis4 r
+  r8 e,[ g b] e4 r
+  r8 fis,[ b dis] fis4 r
+  r8 gis,[ b d] f4 r
+  r8 g,[ b d_\ritenuto ] f4 r
+  \mark  "E"
+  R1*8
+  r2 r8  g,[ g g]
+  e'4.( c8)  f[( d c b)]
+  b[( c)] g4 r8  g[ c e] |
+  g2.  g16[( f e f)]
+  dis4( e) r8  c[-. c-. c-.]
+  c4.(  d16[ e] f4  e)
+  a, ( d g, c)
+  d d
+  \acciaccatura e8
+  d8.[ c16 d8. e16]
+  c4 r r2
+  \mark "F"
+  R1*3
+  c,2~ c8[ e g c]
+  c8[( b)] b4 r2
+  c,8[ e g c ]  e[ ( g) e c]
+  c[( b)] b4 r2
+  c2 (bes  a) a8[(b c cis)]
+  d2( ~  d8[ e16 d] \appoggiatura d16
+  c8[ b16  c)]
+  \appoggiatura c16
+  b8[( a16  g)] g4 r2 |
+  R1*3
+  r2 r4  g'8[( e)]
+  \mark "G"
+  d[( c) g'( e)] d[( c) a'( f)]
+  e[( d)] d4 r  d8[ d]
+  d4(~  d16[ e d e)] g8[( f) e d] |
+  c4 r r2
+  R1
+  c1 ~
+  c |
+  c8[-. c-.] r c-. cis[( d)] r d-.\cresc |
+  dis[( e)] r e-. e[( f)] r f-. |
+  g4-.\f e-. c-. bes-. |
+  g-.\ff e-. c-. r |
+  a'2 ~  a8[_""_\markup { \bold \italic "sempre " \dynamic "f" }  b16 c] d[( e d e)]
 
-        fis8[)( e16  d)] d4-. r2 | 
-       \mark "B"
-       R1*3
-       r2 r4  d8[(_\markup { \italic \bold "con espressione" } b) ]
-        a[(  g) d'(  b)]  a[(  g) e'(  c) ]
-        b8[(  a)] a4 r4  a8[ a]
-        a[( \< b c cis\!\> ]  d4  c\!)
-        ais8[( b)] r8 b\cresc  b[( c)] r c
-        cis[ ( d)] r4 r2
-       g,1\!\f ~ g2 ~  g8[ a16 b]  c[( d) e c]
-       %% 64
-       f4-. d-. b-. g-.
-       R1
+  f4. ( d8)  f8[ ( d) f d]
+  c[ (e] g2) \appoggiatura f16
+  e8[( d16  c)]
+  \afterGrace d1_(\trill { c16[ d] }
+  c4) r r2
+  R1 |
+  \mark "H"
+  \times 2/3 { c8[ b a ] }
+  \times 2/3 { g[ a b] }
+  \times 2/3 { c[ d e] }
+  \times 2/3 { f[ e d] } |
+  \times 2/3 { c[ b a ] }
+  \times 2/3 { g[ a b] }
+  \times 2/3 { c[ d e] }
+  \times 2/3 { f[ e d] }|
+  c4 \times 2/3 { r8 g'[( e)]} c4
+  \times 2/3 { r8 e[ ( c)]} |
+  g4 \times 2/3 { r8  c8[( g)] }
+  \times 2/3 { e[ ( g) e-. ] }
+  \times 2/3 { c[ ( e) c-.] }|
+  g4 r8 g'\f a[ b c d]|
+  \afterGrace d1_(\trill { c16[ d] }
+  c4) r r2
+  R1*3
+  c4.^\fermata_"Cadenza ad lib." ( d8) d4.\trill^\fermata (  c16[  d)]
+  c4 r r2
+  R1*8
+  r4  c8.[^"tutti"\f c16] c4 c
+  c c,8.[ c16] c4 c|
+  c2 r2 \bar "|."
 
-       c,2\p e4 g c e\cresc g4. e8 |
-       d4.\!\f  e16[ fis]  g[ ( fis) e d]  c[( b) a g]
-
-       << a1(\trill
-         { s2 \grace {
-  \override Stem   #'stroke-style = #"grace"
-    g16[ a] 
-  \revert Stem #'stroke-style }
- } >>
-       \mark "C"
-        g4) r r2
-       R1*15
-       \mark "D"
-       bes2\mf d4 f
-       g,2~  g8[ g' es c]|
-       bes4(  a4.)  c8[( d  es)]
-       cis4( d) r8  bes[ (c  d)]
-       es2 ( d4) r
-       es2 ( d4) r
-        c8[( g' es  c)] bes4( c)
-       c4.( cis8  d4) r
-       R1*2
-       es1~es1|
-       e!
-       d
-       c
-       c,
-       e'
-       e,
-       c'2  b8[( a gis  a)]
-        gis8[ e gis b ] e4 r |
-       r8  e,[ a c] dis4 r
-        r8  e,[ gis b ] e4 r
-       r8  e,[ a c] dis4 r
-       r8  e,[ g b] e4 r
-       r8  fis,[ b dis] fis4 r
-       r8  gis,[ b d] f4 r
-       r8  g,[ b d_\ritenuto ] f4 r
-       \mark  "E"
-       R1*8
-       r2 r8  g,[ g g]
-       e'4.( c8)  f[( d c  b)]
-        b[( c)] g4 r8  g[ c e] |
-       g2.   g16[( f e  f)]
-       dis4( e) r8  c[-. c-. c-.]
-       c4.(  d16[ e] f4  e)
-       a, ( d g,  c)
-       d d 
-           \grace {
-  \override Stem   #'stroke-style = #"grace"
-   e8( 
-  \revert Stem #'stroke-style }
-
-          d8.[) c16 d8. e16] 
-       c4 r r2
-       \mark "F"
-       R1*3
-       c,2~ c8[ e g c]
-        c8[( b)] b4 r2
-        c,8[ e g c ]  e[ ( g) e c]
-        c[( b)] b4 r2
-       c2 (bes  a)  a8[(b c  cis)]
-       d2( ~  d8[ e16 d] \grace {
-  \override Stem   #'stroke-style = #"grace"
-   \longgrace d16( \endlonggrace 
-  \revert Stem #'stroke-style }
-
-%% todo: should insert grace slur here.
-        c8[ b16  c)]
-       \grace {
-  \override Stem   #'stroke-style = #"grace"
-   \longgrace c16 \endlonggrace 
-  \revert Stem #'stroke-style }
- b8[( a16  g)] g4 r2 |
-       R1*3
-       r2 r4  g'8[( e)]
-       \mark "G"
-        d[( c) g'( e)]  d[( c) a'( f)]
-        e[( d)] d4 r  d8[ d]
-       d4(~  d16[ e d  e)]  g8[( f) e d] |
-       c4 r r2
-       R1
-       c1 ~
-       c |
-        c8[-. c-.] r c-.  cis[( d)] r d-.\cresc |
-        dis[( e)] r e-.  e[( f)] r f-. |
-       g4-.\!\f  e-. c-. bes-. |
-       g-.\ff e-. c-. r |
-       a'2 ~  a8[_""_\markup { \bold \italic "sempre " \dynamic "f" }  b16 c]  d[( e d  e)]
-
-       
-       f4. ( d8)  f8[ ( d) f d]
-        c[ (e]  g2) \grace {
-  \override Stem   #'stroke-style = #"grace"
-   \longgrace f16(  \endlonggrace 
-  \revert Stem #'stroke-style }
-  e8[)( d16  c)]
-
-       << d1\trill _(
-         { s2 \grace {
-  \override Stem   #'stroke-style = #"grace"
-    c16[ d] 
-  \revert Stem #'stroke-style }
- } >>
-       
-        c4) r r2
-       R1 |
-       \mark "H"
-       \times 2/3 {  c8[ b a ] } \times 2/3 {  g[ a b] }
-         \times 2/3 {  c[ d e] } \times 2/3 {  f[ e d] } |
-       \times 2/3 {  c[ b a ] } \times 2/3 {  g[ a b] }
-         \times 2/3 {  c[ d e] } \times 2/3 {  f[ e d] }|
-       c4 \times 2/3 {  r8  g'[( e)]} c4 \times 2/3 {  r8  e[ ( c)]} |
-       g4 \times 2/3 {  r8  c8[( g)] } \times 2/3 {  e[ ( g) e-. ] } \times 2/3 {  c[ ( e) c-.] }|
-       g4 r8 g'\f  a[ b c d]|
-
-       << d1_(\trill
-         { s2 \grace {
-  \override Stem   #'stroke-style = #"grace"
-    c16[ d] 
-  \revert Stem #'stroke-style }
- }  >>
-        c4) r r2
-       R1*3
-
-       c4.^\fermata_"Cadenza ad lib." ( d8) d4.\trill^\fermata (  c16[  d)] 
-       c4 r r2
-       R1*8
-       r4  c8.[^"tutti"\f c16] c4 c
-       c  c,8.[ c16] c4 c|
-       c2 r2 \bar "|."
-       
 }
 
index fe9966d71f07b5a7b1d97a4ca98f130f0e87c76c..78ef6ab122c9878b4fa1578af34f0a5c4d32b59f 100644 (file)
@@ -4,42 +4,25 @@ longgrace = \override Stem  #'stroke-style = #'()
 endlonggrace = \revert Stem #'stroke-style
 ritenuto = \markup { \italic  "rit." }
 
-\version "2.11.61"
-  
-\layout {
-    \context {
-        \Score
-        skipBars = ##t
-        midiInstrument = #"french horn"
-        %% try to mimic Breitkopf
-        \override RehearsalMark #'padding = #1
-        \override MultiMeasureRest #'padding = #0.5
-        restNumberThreshold = #1
-
-       \override RehearsalMark #'font-series = #'bold
-       \override RehearsalMark #'font-size = #4.5
+\version "2.14.0"
 
-        \override Beam #'thickness = #0.6
-        \override Beam #'space-function = #(lambda (beam mult) 0.8)
-    }
-    \context {
-        \Staff
-        \override VerticalAxisGroup #'minimum-Y-extent = #'(-2.5 . 3.5)
-    }
+\layout {
+  \context {
+    \Score
+    skipBars = ##t
+    midiInstrument = #"french horn"
+    %% try to mimic Breitkopf
+    \override RehearsalMark #'padding = #1
+    restNumberThreshold = #1
+
+    \override RehearsalMark #'font-series = #'bold
+    \override RehearsalMark #'font-size = #4.5
+  }
 }
 
 \paper{
-
-    % #(define fonts my-sheet)
-
-    % stress page breaking on a6 paper:
-    % line-width = 80 \mm
-    % paper-width = 105 \mm
-    % paper-height = 149 \mm
-    
-    indent = 10. \mm
-    line-width = 189. \mm
-    ragged-last-bottom = ##f
-
+  indent = 10\mm
+  line-width = 189\mm
+  ragged-last-bottom = ##f
 }
 
index cca5e1885cf5323954852fda0db15388e311ea57..aa656bbb2358a1826627dce20d5c933635f61ba1 100644 (file)
@@ -1,88 +1,79 @@
-\version "2.11.61"
+\version "2.14.0"
 \include  "mozart-hrn3-defs.ily"
 
 romanze =  \relative c' {
-       \key f \major
-       \time 2/2
-       \set Score.skipBars =  ##t
+  \key f \major
+  \time 2/2
 
-       c'4.( _\markup { \dynamic "p" \italic { "" con molto espressione } }
-                f8) a,4 a
-        bes8[( c d bes]  g4) r8 g
-       a r bes r c r  d[( bes)]
-       a2(  g8[) a( bes  b)]
-       c4. ( f8) a,4 a |
-       % 6 
-        bes8[ (c d bes)] g4 r8 c,
-        c8[( e g  bes)]  a[( c f  d)]
-       c r e r f r r4
-       \mark "A"
-       R1*8
-       g4.\mf f8   e[ d c bes]
-       % 18
-        bes[( a d  c)] c4 r
-       R1*2
-       g'4. f8  e[ d c bes]
-        bes[ (a d  c)] c4 r
-       R1
-       % 25
-        c16[ ( d c  d)]  e[ ( f e  f)]  g[( e) c-. c-.]  f[( d) b-. b-.]
-        c16[\p ( d c  d)]  e[ ( f e  f)]  g[( e) c-. c-.]  f[( d) b-. b-.]
-        c8[ \< c, c c]  c[ c c c\!]
-       \mark "B"
-       c1\f
-       R1*9
-       f'4.(\p  d8) b4 r8 g
-       g'4.( e8) c4 r8 cis |
-       % 39
-       d4(~  d16[ e d  e)]  f8[ ( d) f( d)]
-       c2( b4) r
-       R1*4
-       e4. ( g8) c,4 ( cis)
-        d8[( e f  d)] b4 r8 g
-        c[ ( e) g g]  g[( f e  d)]
-       c4(
-       \grace {
-  \override Stem   #'stroke-style = #"grace"
-   \longgrace e16 \endlonggrace 
-  \revert Stem #'stroke-style }
-
-        d8.[  c16) \< ]  c8[ c-.( c-. c)-.]\!
-       \mark "C"
-
-       %% this is a trick to get the sfp-s to align. 
-       \override Hairpin   #'transparent = ##t
-       des1\sfp \> 
-       g,1\sfp\!  \> 
-       c\sfp \!   \> 
-       c,\sfp\!
-       \revert Hairpin #'transparent 
-       R1*3
-       r8  c[\p c c] c2~
-        c8[ c' c c] c2~
-        c8[ \< e( g f]  e[  d\!\> c bes]
-       \mark "D"
-       a4\!) r r2
-       R1*3
-       c4.\p ( f8) a,4 a |
-        bes8[ (c d bes)] g4 r8 c,
-        c8[( e g  bes)]  a[( c f  d)]
-       c r e r f4 r4
-       R1*3
-       r2 r4 r8 c,8
-        c8[( e g  bes)]  a[( c f  d)]
-       c r e r f4 r4   
-       g,1
-       c,2 c4. c8
-        c8[( e g  bes)]  a[( c f  d)]
-       c r e r f4 r4                   % -. ? 
-
-       R1
-       c8-.   r e-. r f4 r4
-
-       % Finish with F if played separately 
-       c8-.(   r c,-. r  c4) r4| 
-       \bar "|."
+  c'4.( _\markup { \dynamic "p" \italic { "" con molto espressione } }
+  f8) a,4 a
+  bes8[( c d bes] g4) r8 g
+  a r bes r c r d[( bes)]
+  a2( g8[) a( bes b)]
+  c4. ( f8) a,4 a |
+  % 6
+  bes8[ (c d bes)] g4 r8 c,
+  c8[( e g bes)] a[( c f d)]
+  c r e r f r r4
+  \mark "A"
+  R1*8
+  g4.\mf f8   e[ d c bes]
+  % 18
+  bes[( a d c)] c4 r
+  R1*2
+  g'4. f8  e[ d c bes]
+  bes[ (a d c)] c4 r
+  R1
+  % 25
+  c16[ ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.]
+  c16[\p ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.]
+  c8[ \< c, c c] c[ c c c\!]
+  \mark "B"
+  c1\f
+  R1*9
+  f'4.(\p  d8) b4 r8 g
+  g'4.( e8) c4 r8 cis |
+  % 39
+  d4(~  d16[ e d e)] f8[ ( d) f( d)]
+  c2( b4) r
+  R1*4
+  e4. ( g8) c,4 ( cis)
+  d8[( e f d)] b4 r8 g
+  c[ ( e) g g] g[( f e d)]
+  c4(
+  \grace e16
+  d8.[  c16) \< ]  c8[ c-.( c-. c)-.]\!
+  \mark "C"
+  \override DynamicLineSpanner #'staff-padding = #2.5
+  des1\sfp
+  g,1\sfp
+  c\sfp
+  c,\sfp
+  \revert DynamicLineSpanner #'staff-padding
+  R1*3
+  r8  c[\p c c] c2~
+  c8[ c' c c] c2~
+  c8[ \< e( g f] e[ d\!\> c bes]
+  \mark "D"
+  a4\!) r r2
+  R1*3
+  c4.\p ( f8) a,4 a |
+  bes8[ (c d bes)] g4 r8 c,
+  c8[( e g bes)] a[( c f d)]
+  c r e r f4 r4
+  R1*3
+  r2 r4 r8 c,8
+  c8[( e g bes)] a[( c f d)]
+  c r e r f4 r4
+  g,1
+  c,2 c4. c8
+  c8[( e g bes)] a[( c f d)]
+  c r e r f4 r4
+  R1
+  c8-. r e-. r f4 r4
+  % Finish with F if played separately
+  c8-.( r c,-. r c4) r4|
+  \bar "|."
 }
 
 
index 81e783441778b462224e9caada84ab6848b0d3ac..aeeb211fee862e0e90bd7dbffe6e72311ae651c6 100644 (file)
-\version "2.11.61"
+\version "2.14.0"
 
-\include "mozart-hrn3-defs.ily"
+\include "mozart-hrn3-defs.ily"
 
-rondotheme =  \relative c' {
-        c'8[ c c]  c[ c c]
-       c4( cis8  d) r g,
-        d'8[ d d]  d[ d d]
-       d4( dis8  e) r c |
-        c[( d) e]  f[ g a]
-        g[ ( e) c] c4 d8
-       e4( d8) e4( f8)
-       e4.( d8) r r |
+rondotheme = \relative c' {
+  c'8[ c c] c[ c c]
+  c4( cis8  d) r g,
+  d'8[ d d] d[ d d]
+  d4( dis8  e) r c |
+  c[( d) e] f[ g a]
+  g[ ( e) c] c4 d8
+  e4( d8) e4( f8)
+  e4.( d8) r r |
 }
 
-lipbreaker =  \relative c'
-{
-       r8  g'[-. g-.]  c[( e) g,-.]
-        c[( e) g,-.]  c[( e) g,-.]
-        c[ c, c]  c[ c c]
-        c[ c c]  c[ c c]
+lipbreaker = \relative c' {
+  r8  g'[-. g-.] c[( e) g,-.]
+  c[( e) g,-.] c[( e) g,-.]
+  c[ c, c] c[ c c]
+  c[ c c] c[ c c]
 }
 
-rightsixteenth = { \set stemLeftBeamCount =  1
-  \set stemRightBeamCount =  2 }
-leftsixteenth = { \set stemLeftBeamCount =  2
-  \set stemRightBeamCount =  1 }
-bothsixteenth = { \set stemLeftBeamCount =  2
-  \set stemRightBeamCount =  2 }
+rondo = \relative c' {
+  \partial 8
+  \time 6/8
+  \key c \major
 
-rondo =        \relative c'
-{
-       \partial 8
-       \time 6/8
-       \key c \major
-       
-       g'8\p |
-       
-       \rondotheme
-       
-       R2.*13 |
-       r8 r^\fermata d'  d[ e f]
-        g[ ( e) c-.]  d[( e) d-.]
-       c4 c8  d[ e f]
-        g[( e) c-.]  d[( e) d-.]
-       c4 r8 r4 r8 |
-       R2.*7
-       \mark  "A"
-       c4.\p \grace {
-  \override Stem   #'stroke-style = #"grace"
-   e16( 
-  \revert Stem #'stroke-style }
-  d8[) c d]
-       c4 r8 r4 r8
-       e4. \grace {
-  \override Stem   #'stroke-style = #"grace"
-   g16( 
-  \revert Stem #'stroke-style }
-  f8[) e f]
-       e4 r8 r4 r8
-       g4. e4 c8
-       g2.~
-        g8[ a b]  c[ d e ]
-       e4.( d8) r r
-       R2.*4
-       e2.~ |
-        e8[ d c]  c[ b a]
-       d2.~
-        d8[ c b]  b[ a g]
-       g'4( e8) b4( cis8)
-       \mark "B"
-       d4 r8 r4 r8
-       R2.*3 |
-       r8  d[-. d-.]  d[( g) d-.]
-        d[( g) d-.]  d[ d d]
-        d[( g)] r r4 r8
-       R2.*1
-       \lipbreaker
-       c,,4 r8  c'[ d e]
-       d4( g8)  c,[ d e]
-       d4 r8 r4 r8
-       R2. |
-       r4 r8  c[-. d-. e-.]
-       d4( g8)  c,[ d e]
-        d[( g) fis]  e[ d c]
-        b[ ( e) d]  c[ b a]
-       \mark "C"
-       g4 r8 r4 r8
-       R2. |
-       %
-       r8  g[\f g]  g[(  b) b-.]
-        b[( d) d-.]  d[( g) g-.]
-       g2.~
-        g8[ \> a g]  f[ e d]
-       << \rondotheme
-         { s8\!\p } >>
-         
-       R2.*12
-       r4 r8 r4 c8
-       \mark "D"
-       c4 f8 c4 a8
-       a4.~a4 a8
-       bes4 c8 d4 bes8
-       g4. ~ g8 r r
-       R2.*3
-       r4 r8 r4 c8
-       a4. c
-       f ~  f8.[ \rightsixteenth e16(  \bothsixteenth d  c)]
-       bes4 g8 e4 g8
-       c,4. ~ c8 r r
-       R2.*3| 
-       r4 r8 r4 c'8
-       b4( c8) b4( c8)
-       bes4. ~ bes4 g8
-       a4 ( c8) f4 ( b,8)
-       d4. ( c8) r r
-       R2.*3| 
-       r4 r8 r4 c8
-       b4( c8) b4( c8)
-       bes4. ~ bes4 g8
-       a4 c8  f[ ( d) b!]
-       d4. ( c8) r r
-       \mark "E"
-       R2.*9  |
-       \lipbreaker 
-       c,8[ c' c] c4.~
-       c8[ c d]  e[ e fis] 
-       g4 r8 r4 r8
-       R2.
-       r8  g,[ g]  g[ g g] |
-       es'4. ~  es8[ d c]
-       b4 r8 r4 r8
-       R2. |
-       r8  g[ g]  g[ g g]
-       es'4. ~  es8[ d c]
-       b4.\cresc  c4. d4. e4.
-       \mark "F"
-       
-       f2.\!\f ~ |
-       f4 r8 r4 r8
-       r8  g,[\> g]  g[ g g]
-       
-       % Edition breitkopf says a-flat (silly!)
-        fis[  g gis] 
-                 a[ bes b]\!
+  g'8\p |
 
-       %% EB does the slur in the Rondo differently from the 1st adn 2nd time.
-       %% why. Should check with MS.
-       << \rondotheme
-         { s8\p } >>
-       R2.*7
-       \mark "G"
-       R2.*4
-       c,4.\mf c4 c8
-       c4. e4 c8
-       g'4. g4 g8
-       g4. g,4 g8
-       c4 r8 r4 r8
-       r4 r8 r4 g'8
-        c[ ( e) g,-.]   c[ ( e) g,-.]
-        c[ ( e) g,-.]   c[ ( e) g,-.]
-       \mark "H"
-       g'2.\cresc  bes,2.
-       a4.  b16[ c d e f g]
-       a4. f4 d8
-       c8[\!\f g' e]  c[ g e]
-        c[ e' c]   g[ e c]
-       g4 r8  g''8[ e c]
+  \rondotheme
 
-       
-       << d2._(\trill
-         { s2  \grace {
-  \override Stem   #'stroke-style = #"grace"
-     c16[ d] 
-  \revert Stem #'stroke-style }
- } >>
-       
-       
-        c4) r8 r4 r8
-       R2.*5
-       r8 r8^\fermata d8\p  d[ e f]
-        g[ ( e) c]  d[( e) d]
-       c[\cresc  c c]  d[ e f]
-        g[( e) c]  d[( e) d]
-       c4\!\f  r8 r4 r8
-       R2.*5
-        c8[\f c, c]  c[ c c]
-       c4 r8 c4 r8
+  R2.*13 |
+  r8 r^\fermata d' d[ e f]
+  g[ ( e) c-.] d[( e) d-.]
+  c4 c8  d[ e f]
+  g[( e) c-.] d[( e) d-.]
+  c4 r8 r4 r8 |
+  R2.*7
+  \mark  "A"
+  c4.\p \acciaccatura e16
+  d8[ c d]
+  c4 r8 r4 r8
+  e4. \acciaccatura g16
+  f8[ e f]
+  e4 r8 r4 r8
+  g4. e4 c8
+  g2.~
+  g8[ a b] c[ d e ]
+  e4.( d8) r r
+  R2.*4
+  e2.~ |
+  e8[ d c] c[ b a]
+  d2.~
+  d8[ c b] b[ a g]
+  g'4( e8) b4( cis8)
+  \mark "B"
+  d4 r8 r4 r8
+  R2.*3 |
+  r8  d[-. d-.] d[( g) d-.]
+  d[( g) d-.] d[ d d]
+  d[( g)] r r4 r8
+  R2.*1
+  \lipbreaker
+  c,,4 r8  c'[ d e]
+  d4( g8)  c,[ d e]
+  d4 r8 r4 r8
+  R2. |
+  r4 r8  c[-. d-. e-.]
+  d4( g8)  c,[ d e]
+  d[( g) fis] e[ d c]
+  b[ ( e) d] c[ b a]
+  \mark "C"
+  g4 r8 r4 r8
+  R2. |
+  r8  g[\f g] g[( b) b-.]
+  b[( d) d-.] d[( g) g-.]
+  g2.~
+  g8[ \> a g] f[ e d]
 
-       % This is technically incorrect, since we started with an 8th
-       % note pickup, but both eulenburg and EB do this as well.
-       c4 r8 r4 r8 \bar "|."           
+  <<
+    \rondotheme
+    { s8\p }
+  >>
+
+  R2.*12
+  r4 r8 r4 c8
+  \mark "D"
+  c4 f8 c4 a8
+  a4.~a4 a8
+  bes4 c8 d4 bes8
+  g4. ~ g8 r r
+  R2.*3
+  r4 r8 r4 c8
+  a4. c
+  f ~  f8.[ e16( d c)]
+  bes4 g8 e4 g8
+  c,4. ~ c8 r r
+  R2.*3|
+  r4 r8 r4 c'8
+  b4( c8) b4( c8)
+  bes4. ~ bes4 g8
+  a4 ( c8) f4 ( b,8)
+  d4. ( c8) r r
+  R2.*3|
+  r4 r8 r4 c8
+  b4( c8) b4( c8)
+  bes4. ~ bes4 g8
+  a4 c8  f[ ( d) b!]
+  d4. ( c8) r r
+  \mark "E"
+  R2.*9  |
+  \lipbreaker
+  c,8[ c' c] c4.~
+  c8[ c d] e[ e fis]
+  g4 r8 r4 r8
+  R2.
+  r8  g,[ g] g[ g g] |
+  es'4. ~  es8[ d c]
+  b4 r8 r4 r8
+  R2. |
+  r8  g[ g] g[ g g]
+  es'4. ~  es8[ d c]
+  b4.\cresc c4. d4. e4.
+  \mark "F"
+  f2.\f ~ |
+  f4 r8 r4 r8
+  r8  g,[\> g] g[ g g]
+
+  % Edition breitkopf says a-flat (silly!)
+  fis[ g gis]
+  a[ bes b]\!
+
+  %% EB does the slur in the Rondo differently from the 1st adn 2nd time.
+  %% why. Should check with MS.
+  <<
+    \rondotheme
+    { s8\p }
+  >>
+
+  R2.*7
+  \mark "G"
+  R2.*4
+  c,4.\mf c4 c8
+  c4. e4 c8
+  g'4. g4 g8
+  g4. g,4 g8
+  c4 r8 r4 r8
+  r4 r8 r4 g'8
+  c[ ( e) g,-.] c[ ( e) g,-.]
+  c[ ( e) g,-.] c[ ( e) g,-.]
+  \mark "H"
+  g'2.\cresc bes,2.
+  a4. b16[ c d e f g]
+  a4. f4 d8
+  c8[\f g' e] c[ g e]
+  c[ e' c]   g[ e c]
+  g4 r8 g''8[ e c]
+  \afterGrace d2._(\trill { c16[ d] }
+  c4) r8 r4 r8
+  R2.*5
+  r8 r8^\fermata d8\p  d[ e f]
+  g[ ( e) c] d[( e) d]
+  c[\cresc c c] d[ e f]
+  g[( e) c] d[( e) d]
+  c4\f  r8 r4 r8
+  R2.*5
+  c8[\f c, c] c[ c c]
+  c4 r8 c4 r8
+
+  % This is technically incorrect, since we started with an 8th
+  % note pickup, but both eulenburg and EB do this as well.
+  c4 r8 r4 r8 \bar "|."
 }
 
diff --git a/input/regression/multi-measure-rest-staff-position.ly b/input/regression/multi-measure-rest-staff-position.ly
new file mode 100644 (file)
index 0000000..c8d94f9
--- /dev/null
@@ -0,0 +1,12 @@
+\version "2.15.9"
+
+\header {
+  texidoc = "Multi measure rest staff position can be overridden
+to 0.
+"
+}
+
+\relative c' {
+  \override MultiMeasureRest #'staff-position = #0
+  R1
+}
index 5a70e23f50a3fb611dad51d1e66fddc8e6dfe613..f1c95bfedbca6d85c6ea996d7ccd797c62ff6bd8 100644 (file)
@@ -2,13 +2,24 @@
   texidoc = "Multi-measure rests standard values can be tweaked."
 }
 
-\version "2.15.2"
+\version "2.15.6"
+
+\markup "Use non-standard multi-measure rests:"
 \new Staff {
-  \override MultiMeasureRest #'usable-duration-logs = #'(2 1)
-  \time 1/4 R4-"Use non-standard multi-measure rests."
+  \override MultiMeasureRest #'usable-duration-logs = #(iota 2 1)
+  \time 1/4 R4
   \time 2/4 R2
 }
+\markup "Round up to the longer rest:"
+\new Staff {
+  \override MultiMeasureRest #'round-up-to-longer-rest = ##t
+  \time 3/2 R1.
+  \time 7/2 R\breve..
+}
+\markup "Round up to the longer rest only in specified time signatures:"
 \new Staff {
-  \override MultiMeasureRest #'round-to-longer-rest = ##t
-  \time 3/2 R1.-"Round to the longer rest." \time 7/2 R\breve..
+  \override MultiMeasureRest #'round-up-exceptions = #'((3 . 2))
+  \time 3/2 R1.
+  \time 7/2 R\breve..
+  \time 3/2 R1.
 }
diff --git a/input/regression/quote-during-subvoice.ly b/input/regression/quote-during-subvoice.ly
new file mode 100644 (file)
index 0000000..6b39f07
--- /dev/null
@@ -0,0 +1,68 @@
+\version "2.15.9"
+
+\header {
+  texidoc = "@code{\\quoteDuring} and @code{\\cueDuring} shall properly quote
+voices that create a sub-voice.  The sub-voice will not be quoted, though.
+Exceptions are sections of parallel music @code{<< @{...@} \\ @{...@} >>},
+which will be quoted.
+"
+}
+
+% Simple case, normal sub-voice
+quoteMe = \relative c' {
+  c4 c
+  \new Voice {
+    c4 c
+  }
+}
+\addQuote "quoteMe" \quoteMe
+% Also works if wrapped with \new Voice
+\addQuote "quoteMeA" \new Voice \quoteMe
+
+% Also works with voice directly inside relative
+quoteMeI = \relative c' \new Voice {
+  c4 c4
+}
+\addQuote "quoteMeI" \quoteMeI
+
+% Quoting music with some parallel sections (identical rhythm)
+quoteMeII = \relative c' {
+  c4 c
+  << { d4 e4 } \\ { c4 b4 } >>
+  c4
+}
+\addQuote "quoteMeII" \quoteMeII
+
+% Quoting music with some parallel sections (different rhythm)
+quoteMeIII = \relative c' {
+  c4 c
+  << { d4 e4 } \\ { c4. b8 } >>
+  c4
+}
+\addQuote "quoteMeIII" \quoteMeIII
+
+
+
+
+<<
+  \new Staff \relative c'' {
+    c4 \cueDuring #"quoteMe" #DOWN { r4 }
+    c4 \cueDuring #"quoteMe" #DOWN { r4 } % <- no cue note due to sub-voice
+  }
+  \new Staff \relative c'' {
+    c4 \cueDuring #"quoteMeA" #DOWN { r4 }
+    c4 \cueDuring #"quoteMeA" #DOWN { r4 } % <- no cue note due to sub-voice
+  }
+  \new Staff \relative c'' {
+    c4 \cueDuring #"quoteMeI" #DOWN { r4 }
+    c4
+  }
+  \new Staff \relative c'' {
+    c4 \cueDuring #"quoteMeII" #DOWN { r4 }
+    c4 \cueDuring #"quoteMeII" #DOWN { r4 } % <- quoted parallel notes
+  }
+  \new Staff \relative c'' {
+    c4 \cueDuring #"quoteMeIII" #DOWN { r4 }
+    c4 \cueDuring #"quoteMeIII" #DOWN { r4 } % <- quoted parallel notes
+  }
+>>
diff --git a/input/regression/slur-height-capping.ly b/input/regression/slur-height-capping.ly
new file mode 100644 (file)
index 0000000..99a8dd8
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.15.9"
+
+\header {
+  texidoc = "Slur shaping is not adapted to accommodate objects
+towards the edges of slur.  Said objects are thus ignored,
+which should make the slur in this regtest flat.  Objects towards
+the edges are not, however, ignored in the slur scoring.
+"
+}
+
+\relative c {
+  \clef bass
+  c8( d' a d c, d' a d)
+  c,8( des' as des c, des' as des) |
+}
diff --git a/input/regression/staff-change-autobeam.ly b/input/regression/staff-change-autobeam.ly
new file mode 100644 (file)
index 0000000..57442f5
--- /dev/null
@@ -0,0 +1,14 @@
+\header {
+  texidoc = "Staves stay alive long enough to complete an automatic beam."
+}
+
+\version "2.15.9"
+
+<<
+  {
+    g'2 g'8 g'
+    \change Staff = "down"
+    b' b'
+  }
+  \context Staff = "down" s1
+>>
index 8d8a4b6c56674348d472b9e786788917e290ad40..76a3023e10bb1d251619270e1040cf8e85459d1a 100644 (file)
@@ -21,6 +21,7 @@
 #include "beaming-pattern.hh"
 #include "beam.hh"
 #include "context.hh"
+#include "context-handle.hh"
 #include "duration.hh"
 #include "engraver.hh"
 #include "item.hh"
@@ -80,7 +81,10 @@ private:
   Moment extend_mom_;
   Moment beam_start_moment_;
   Moment beam_start_location_;
-  Context *beam_start_context_;
+  /*
+    Handle on the starting staff keeps it alive until beam is comlete
+  */
+  Context_handle beam_start_context_;
 
   // We act as if beam were created, and start a grouping anyway.
   Beaming_pattern *grouping_;
@@ -219,7 +223,7 @@ Auto_beam_engraver::create_beam ()
     Beam::add_stem (beam, (*stems_)[i]);
 
   Grob_info i = make_grob_info (beam, (*stems_)[0]->self_scm ());
-  i.rerouting_daddy_context_ = beam_start_context_;
+  i.rerouting_daddy_context_ = beam_start_context_.get_context ();
   announce_grob (i);
 
   return beam;
@@ -239,7 +243,7 @@ Auto_beam_engraver::begin_beam ()
   beaming_options_.from_context (context ());
   beam_settings_ = updated_grob_properties (context (), ly_symbol2scm ("Beam"));
 
-  beam_start_context_ = context ()->get_parent_context ();
+  beam_start_context_.set_context (context ()->get_parent_context ());
   beam_start_moment_ = now_mom ();
   beam_start_location_
     = robust_scm2moment (get_property ("measurePosition"), Moment (0));
@@ -272,7 +276,7 @@ Auto_beam_engraver::end_beam ()
       if (finished_beam_)
         {
           Grob_info i = make_grob_info (finished_beam_, SCM_EOL);
-          i.rerouting_daddy_context_ = beam_start_context_;
+          i.rerouting_daddy_context_ = beam_start_context_.get_context ();
 
           announce_end_grob (i);
           finished_grouping_ = grouping_;
@@ -284,6 +288,7 @@ Auto_beam_engraver::end_beam ()
       beam_settings_ = SCM_EOL;
     }
 
+  beam_start_context_.set_context (NULL);
   shortest_mom_ = Moment (Rational (1, 4));
 }
 
index 0ee1778661529a029963841dd06a4561044037d3..639b2292a548f1a525ec8430b61990ca572be036 100644 (file)
@@ -48,13 +48,13 @@ void
 Context_handle::up (Context *t)
 {
   outlet_ = t;
-  t->iterator_count_++;
+  t->client_count_++;
 }
 
 void
 Context_handle::down ()
 {
-  outlet_->iterator_count_--;
+  outlet_->client_count_--;
   outlet_ = 0;
 }
 
@@ -76,7 +76,7 @@ Context_handle::set_context (Context *trans)
 }
 
 Context *
-Context_handle::get_outlet () const
+Context_handle::get_context () const
 {
 
   return outlet_;
@@ -85,5 +85,5 @@ Context_handle::get_outlet () const
 int
 Context_handle::get_count () const
 {
-  return outlet_->iterator_count_;
+  return outlet_->client_count_;
 }
index 3454ab1f1735fcc257ec58a46c46d0adc21c1e3f..83b8ae17dd21d6f1e2575f6303a039b921b1b9c1 100644 (file)
@@ -35,7 +35,7 @@
 bool
 Context::is_removable () const
 {
-  return context_list_ == SCM_EOL && ! iterator_count_
+  return context_list_ == SCM_EOL && ! client_count_
          && !dynamic_cast<Global_context const *> (daddy_context_);
 }
 
@@ -82,7 +82,7 @@ Context::Context ()
 {
   daddy_context_ = 0;
   aliases_ = SCM_EOL;
-  iterator_count_ = 0;
+  client_count_ = 0;
   implementation_ = 0;
   properties_scm_ = SCM_EOL;
   accepts_list_ = SCM_EOL;
index aa5850afc883a6cb50f85ae91b98def5c6b1ad38..f88298a026d9f3c5b5e5c15f0efdea370ef226e6 100644 (file)
@@ -31,7 +31,7 @@ public:
   void set_context (Context *);
   void operator = (Context_handle const &);
   Context_handle (Context_handle const &);
-  Context *get_outlet () const;
+  Context *get_context () const;
 
   int get_count () const;
 private:
index 9cf21cbce46a9f67f2f6069f54f3c35deedb8885..b946ebdc079677d2667befb7a97016587434c874 100644 (file)
@@ -39,7 +39,8 @@ class Context
 
 private:
   friend class Context_handle;
-  int iterator_count_;
+  /* how many Context_handles point to this Context */
+  int client_count_;
 
   /* Used internally by create_context */
   Stream_event *infant_event_;
index 49d159b9390da0a2aebb9589e62d1947b1ea1bd2..cae53a4d8e70cd3742794a784af68860e07df073 100644 (file)
@@ -43,6 +43,7 @@ struct Slur_score_parameters
   Real extra_encompass_free_distance_;
   Real absolute_closeness_measure_;
   Real edge_slope_exponent_;
+  Real close_to_edge_length_;
   Real head_slur_distance_max_ratio_;
   Real head_slur_distance_factor_;
 
index 09f92b58a35df5f39a56c13b6b0ccfdf944d8d53..72a509cffaf989bf245684c975b8604c71c2b17b 100644 (file)
@@ -20,6 +20,7 @@
 #include "multi-measure-rest.hh"
 
 #include "font-interface.hh"
+#include "international.hh"
 #include "lookup.hh"
 #include "misc.hh"
 #include "moment.hh"
@@ -110,55 +111,97 @@ Multi_measure_rest::print (SCM smob)
   Stencil mol;
   mol.add_stencil (symbol_stencil (me, space));
 
-  int measures = 0;
+  int measure_count = 0;
   SCM m (me->get_property ("measure-count"));
   if (scm_is_number (m))
-    measures = scm_to_int (m);
+    measure_count = scm_to_int (m);
 
   mol.translate_axis (x_off, X_AXIS);
   return mol.smobbed_copy ();
 }
 
 int
-measure_duration_log (Grob *me)
+calc_closest_duration_log (Grob *me, double duration, bool force_round_up)
 {
-  SCM sml = dynamic_cast<Spanner *> (me)->get_bound (LEFT)
-            ->get_property ("measure-length");
-  bool round = to_boolean (me->get_property ("round-to-longer-rest"));
-  Rational ml = (unsmob_moment (sml)) ? unsmob_moment (sml)->main_part_ : Rational (1);
+  bool round_up = force_round_up
+                  || to_boolean (me->get_property ("round-up-to-longer-rest"));
+  int closest_usable_duration_log;
 
-  double duration_log = -log_2 (ml.Rational::to_double ());
-  int measure_duration_log = int (ceil (duration_log));
-  if (round && duration_log - measure_duration_log < 0)
-    measure_duration_log--;
+  // Out of range initial values.
+  if (round_up)
+    closest_usable_duration_log = -15; // high value
+  else
+    closest_usable_duration_log = 15; // low value
+  int minimum_usable_duration_log = -15;
+  int maximum_usable_duration_log = 15;
 
   SCM duration_logs_list = me->get_property ("usable-duration-logs");
-  int closest_list_elt = -15; // -15 is out of range.
-
-  for (int i = 0; i < scm_to_int (scm_length (duration_logs_list)); i++)
+  if (to_boolean (scm_null_p (duration_logs_list))
+                    || !to_boolean (scm_list_p (duration_logs_list)))
     {
-      int list_elt = scm_to_int (scm_list_ref (duration_logs_list, scm_from_int (i)));
-      int shortest_distance = abs (measure_duration_log - closest_list_elt);
-      int distance = abs (measure_duration_log - list_elt);
-      if (distance < shortest_distance)
-        closest_list_elt = list_elt;
+      warning (_ ("usable-duration-logs must be a non-empty list.  Falling back to whole rests."));
+      closest_usable_duration_log = 0;
     }
+  else
+    {
+      for (SCM s = duration_logs_list; scm_is_pair (s); s = scm_cdr (s))
+        {
+          int dur_log = scm_to_int (scm_car (s));
+          if (dur_log > minimum_usable_duration_log)
+            minimum_usable_duration_log = dur_log;
+          if (dur_log < maximum_usable_duration_log)
+            maximum_usable_duration_log = dur_log;
+          double dur = pow (2.0, -dur_log);
+          if (round_up)
+            {
+              if (duration <= dur && dur_log > closest_usable_duration_log)
+                closest_usable_duration_log = dur_log;
+            }
+          else
+            {
+              if (duration >= dur && dur_log < closest_usable_duration_log)
+                closest_usable_duration_log = dur_log;
+            }
+        }
+    }
+
+  if (closest_usable_duration_log == 15)
+    closest_usable_duration_log = minimum_usable_duration_log;
+  if (closest_usable_duration_log == -15)
+    closest_usable_duration_log = maximum_usable_duration_log;
 
-  return closest_list_elt;
+  return closest_usable_duration_log;
+}
+
+int
+calc_measure_duration_log (Grob *me)
+{
+  SCM sml = dynamic_cast<Spanner *> (me)->get_bound (LEFT)
+                                          ->get_property ("measure-length");
+  Rational ml = (unsmob_moment (sml)) ? unsmob_moment (sml)->main_part_
+                                      : Rational (1);
+  double measure_duration = ml.Rational::to_double ();
+  bool force_round_up = to_boolean (
+                          scm_list_p (
+                            scm_member (
+                              scm_cons (scm_from_int64 (ml.numerator ()),
+                                        scm_from_int64 (ml.denominator ())),
+                              me->get_property ("round-up-exceptions"))));
+  return calc_closest_duration_log (me, measure_duration, force_round_up);
 }
 
 Stencil
 Multi_measure_rest::symbol_stencil (Grob *me, Real space)
 {
-  int measures = 0;
+  int measure_count = 0;
   SCM m (me->get_property ("measure-count"));
   if (scm_is_number (m))
-    measures = scm_to_int (m);
-  if (measures <= 0)
+    measure_count = scm_to_int (m);
+  if (measure_count <= 0)
     return Stencil ();
 
   SCM limit = me->get_property ("expand-limit");
-  if (measures > scm_to_int (limit))
+  if (measure_count > scm_to_int (limit))
     {
       Real padding = 0.15;
       Stencil s = big_rest (me, (1.0 - 2 * padding) * space);
@@ -169,19 +212,19 @@ Multi_measure_rest::symbol_stencil (Grob *me, Real space)
   Real staff_space = Staff_symbol_referencer::staff_space (me);
 
   Font_metric *musfont = Font_interface::get_default_font (me);
-  int mdl = measure_duration_log (me);
+  int mdl = calc_measure_duration_log (me);
 
-  if (measures == 1)
+  if (measure_count == 1)
     {
       Stencil s = musfont->find_by_name (Rest::glyph_name (me, mdl, "", true));
-      if (mdl == 0 && Staff_symbol_referencer::get_position (me) == 0.0)
+      if (mdl == 0 && me->get_property ("staff-position") == SCM_EOL)
         s.translate_axis (staff_space, Y_AXIS);
 
       s.translate_axis ((space - s.extent (X_AXIS).length ()) / 2, X_AXIS);
       return s;
     }
   else
-    return church_rest (me, musfont, measures, space);
+    return church_rest (me, musfont, measure_count, space);
 }
 
 /*
@@ -216,56 +259,36 @@ Multi_measure_rest::big_rest (Grob *me, Real width)
   Kirchenpause (?)
 */
 Stencil
-Multi_measure_rest::church_rest (Grob *me, Font_metric *musfont, int measures,
+Multi_measure_rest::church_rest (Grob *me, Font_metric *musfont, int measure_count,
                                  Real space)
 {
   SCM mols = SCM_EOL;
-
-  int l = measures;
-  int count = 0;
+  int symbol_count = 0;
   Real symbols_width = 0.0;
-  SCM duration_logs_list = me->get_property ("usable-duration-logs");
-  int longest_church_rest = 10; // 10 is out of range.
-  for (int i = 0; i < scm_to_int (scm_length (duration_logs_list)); i++)
-    {
-      longest_church_rest = min (longest_church_rest,
-                                 scm_to_int (scm_list_ref (duration_logs_list,
-                                                           scm_from_int (i))));
-    }
+  double total_duration = measure_count * pow (2.0, -calc_measure_duration_log (me));
 
-  while (l)
+  while (total_duration > 0)
     {
-      int k;
-      int i = longest_church_rest - 1;
-      int length;
-      int mdl = measure_duration_log (me);
-
-      do
-        {
-          i++;
-          length = int (pow (2.0, -i));
-        }
-      while (i <= 0
-             && !(l >= length && mdl >= longest_church_rest - i));
+      int dl = calc_closest_duration_log (me, total_duration, false);
+      double duration = pow (2.0, -dl);
 
-      l -= length;
-      k = mdl + i;
+      total_duration -= duration;
 
-      Stencil r (musfont->find_by_name ("rests." + to_string (k)));
-      if (k == 0)
+      Stencil r = musfont->find_by_name (Rest::glyph_name (me, dl, "", true));
+      if (dl == 0)
         {
           Real staff_space = Staff_symbol_referencer::staff_space (me);
           r.translate_axis (staff_space, Y_AXIS);
         }
       symbols_width += r.extent (X_AXIS).length ();
       mols = scm_cons (r.smobbed_copy (), mols);
-      count++;
+      symbol_count++;
     }
 
   /* Make outer padding this much bigger.  */
   Real outer_padding_factor = 1.5;
   Real inner_padding = (space - symbols_width)
-                       / (2 * outer_padding_factor + (count - 1));
+                       / (2 * outer_padding_factor + (symbol_count - 1));
   if (inner_padding < 0)
     inner_padding = 1.0;
 
@@ -364,7 +387,8 @@ ADD_INTERFACE (Multi_measure_rest,
                "hair-thickness "
                "measure-count "
                "minimum-length "
-               "round-to-longer-rest "
+               "round-up-exceptions "
+               "round-up-to-longer-rest "
                "spacing-pair "
                "thick-thickness "
                "usable-duration-logs "
index c1603c8709f10353d739f6063228a22b982268cf..52f280c58ecadb697487380a4d462df971c812df 100644 (file)
@@ -50,7 +50,7 @@ Music_iterator::~Music_iterator ()
 Context *
 Music_iterator::get_outlet () const
 {
-  return handle_.get_outlet ();
+  return handle_.get_context ();
 }
 
 void
index ef591c2b6dc17ed910d6359ab89ae30ee006b505..24c9ce92a47f4393680006651d336226a45d2876 100644 (file)
@@ -100,33 +100,33 @@ check_meshing_chords (Grob *me,
     merge_possible = false;
 
   /*
-    this case (distant half collide),
-
-    |
-    x |
-    | x
-    |
-
-    the noteheads may be closer than this case (close half collide)
-
-    |
-    |
-    x
-    x
-    |
-    |
-
-  */
+   * this case (distant half collide),
+   *
+   *    |
+    x |
+   * | x
+   * |
+   *
+   * the noteheads may be closer than this case (close half collide)
+   *
+   *    |
+   *    |
+   *   x
+    x
+   * |
+   * |
+   *
+   */
 
   /* TODO: filter out the 'o's in this configuration, since they're no
-     part in the collision.
-
-     |
-     x|o
-     x|o
-     x
-
-  */
+   * part in the collision.
+   *
+   *  |
+   * x|o
+   * x|o
+   * x
+   *
+   */
 
   bool close_half_collide = false;
   bool distant_half_collide = false;
@@ -163,29 +163,45 @@ check_meshing_chords (Grob *me,
   full_collide = full_collide || (close_half_collide
                                   && distant_half_collide);
 
-  Real shift_amount = 1;
-
-  bool touch = (ups[0] >= dps.back ());
-  /* As a special case, if the topmost part of the downstem chord is a second,
-     the top note of which is the same pitch as the lowest upstem note, they
-     shouldn't count as touching.
+  /* If the only collision is in the extreme noteheads,
+     then their stems can line up and the chords just 'touch'.
+     A half collision with the next note along the chord prevents touching.
   */
-  if (dps.back () == ups[0] && dps.size () > 1 && dps[dps.size () - 2] == ups[0] - 1)
-    touch = false;
-
-  if (touch)
-    shift_amount *= -1;
-
-  /* For full collisions, the right hand head may obscure dots, so
-     make sure the dotted heads go to the right. */
+  bool touch = false;
+  if (ups[0] >= dps.back ()
+      && (dps.size () < 2 || ups[0] >= dps[dps.size () - 2] + 2)
+      && (ups.size () < 2 || ups[1] >= dps.back () + 2))
+    touch = true;
+
+  /* Determine which chord goes on the left, and which goes right.
+     Up-stem usually goes on the right, but if chords just 'touch' we can put
+     both stems on a common vertical line.  In the presense of collisions,
+     right hand heads may obscure dots, so dotted heads to go the right.
+  */
+  Real shift_amount = 1;
   bool stem_to_stem = false;
-  if (full_collide)
+  if ((full_collide
+       || ((close_half_collide || distant_half_collide)
+           && to_boolean (me->get_property ("prefer-dotted-right"))))
+      && Rhythmic_head::dot_count (head_up) < Rhythmic_head::dot_count (head_down))
     {
-      if (Rhythmic_head::dot_count (head_up) > Rhythmic_head::dot_count (head_down))
-        shift_amount = 1;
-      else if (Rhythmic_head::dot_count (head_up) < Rhythmic_head::dot_count (head_down))
+      shift_amount = -1;
+      if (!touch || full_collide)
+        // remember to leave clearance between stems
         stem_to_stem = true;
     }
+  else if (touch)
+    {
+      // Up-stem note on a line has a raised dot, so no risk of collision
+      Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
+      if ((full_collide
+           || (!Staff_symbol_referencer::on_line (staff, ups[0])
+               && to_boolean (me->get_property ("prefer-dotted-right"))))
+          && Rhythmic_head::dot_count (head_up) > Rhythmic_head::dot_count (head_down))
+        touch = false;
+      else
+        shift_amount = -1;
+    }
 
   /* The solfa is a triangle, which is inverted depending on stem
      direction.  In case of a collision, one of them should be removed,
@@ -260,13 +276,15 @@ check_meshing_chords (Grob *me,
   /* TODO: these numbers are magic; should devise a set of grob props
      to tune this behavior. */
   else if (stem_to_stem)
-    shift_amount = -abs (shift_amount) * 0.65;
-  else if (close_half_collide && !touch)
+    shift_amount *= 0.65;
+  else if (touch)
+    shift_amount *= 0.5;
+  else if (close_half_collide)
     shift_amount *= 0.52;
-  else if (distant_half_collide && !touch)
-    shift_amount *= 0.4;
-  else if (distant_half_collide || close_half_collide || full_collide)
+  else if (full_collide)
     shift_amount *= 0.5;
+  else if (distant_half_collide)
+    shift_amount *= 0.4;
 
   /* we're meshing. */
   else if (Rhythmic_head::dot_count (head_up) || Rhythmic_head::dot_count (head_down))
@@ -289,62 +307,32 @@ check_meshing_chords (Grob *me,
         shift_amount *= 0.75;
     }
 
-  /*
-   * Fix issue #44:
-   *
-   * Dots from left note head collide with right note head. Only occurs
-   * with a close half collide, if the left note head is between
-   * lines and the right note head is on a line, and if right note head
-   * hasn't got any dots.
+  /* If the dotted notes ended up on the left, and there are collisions,
+     tell the Dot_Columnn to avoid the notes on the right.
    */
-  if (close_half_collide
-      && Rhythmic_head::dot_count (head_up)
-      && !Rhythmic_head::dot_count (head_down))
+  if (full_collide || close_half_collide || distant_half_collide)
     {
-      Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
-      if (!Staff_symbol_referencer::on_line (staff, ups[0]))
+      if (shift_amount < -1e-6
+          && Rhythmic_head::dot_count (head_up)
+          && !Rhythmic_head::dot_count (head_down))
         {
-          /*
-            TODO: consider junking the else body.
-          */
-          if (to_boolean (me->get_property ("prefer-dotted-right")))
-            shift_amount = 0.5;
-          else
-            {
-              Grob *d = unsmob_grob (head_up->get_object ("dot"));
-              Grob *parent = d->get_parent (X_AXIS);
-              if (Dot_column::has_interface (parent))
-                Side_position_interface::add_support (parent, head_down);
-            }
+          Grob *d = unsmob_grob (head_up->get_object ("dot"));
+          Grob *parent = d->get_parent (X_AXIS);
+          if (Dot_column::has_interface (parent))
+            Side_position_interface::add_support (parent, head_down);
         }
-    }
-
-  /* For full or close half collisions, the right hand head may
-     obscure dots.  Move dots to the right. */
-  if (abs (shift_amount) > 1e-6
-      && Rhythmic_head::dot_count (head_down) > Rhythmic_head::dot_count (head_up)
-      && (full_collide || close_half_collide))
-    {
-      Grob *d = unsmob_grob (head_down->get_object ("dot"));
-      Grob *parent = d->get_parent (X_AXIS);
-
-      /*
-        FIXME:
-
-        |
-        x . o
-        |
-
-
-        the . is put right of o which is erroneous o force-shifted
-        far to the right.
-      */
-      if (Dot_column::has_interface (parent))
+      else if (Rhythmic_head::dot_count (head_down)
+               && !Rhythmic_head::dot_count (head_up))
         {
-          Grob *stem = unsmob_grob (head_up->get_object ("stem"));
-          extract_grob_set (stem, "note-heads", heads);
-          for (vsize i = 0; i < heads.size (); i++)
-            Side_position_interface::add_support (parent, heads[i]);
+          Grob *d = unsmob_grob (head_down->get_object ("dot"));
+          Grob *parent = d->get_parent (X_AXIS);
+          if (Dot_column::has_interface (parent))
+            {
+              Grob *stem = unsmob_grob (head_up->get_object ("stem"));
+              extract_grob_set (stem, "note-heads", heads);
+              for (vsize i = 0; i < heads.size (); i++)
+                Side_position_interface::add_support (parent, heads[i]);
+            }
         }
     }
 
index 2e5854885e02eb432458442628696f329fb844e2..f81683a2573277f2de404409219cba8d31aef005 100644 (file)
@@ -577,7 +577,8 @@ Page_breaking::draw_page (SCM systems, SCM configuration, int page_num, int foot
 
   Page_layout_problem::add_footnotes_to_footer (footnotes, foot, book_);
 
-  p->set_property ("foot-stencil", foot->smobbed_copy ());
+  if (foot)
+    p->set_property ("foot-stencil", foot->smobbed_copy ());
   scm_apply_1 (page_stencil, page, SCM_EOL);
 
   return page;
index c9301ff3843f6812c1c39a129df9511c01817aca..2988a091b69436f377c54f4e618584703c9dbaff 100644 (file)
@@ -277,6 +277,11 @@ Page_layout_problem::get_footnote_separator_stencil (Output_def *paper)
 void
 Page_layout_problem::add_footnotes_to_footer (SCM footnotes, Stencil *foot, Paper_book *pb)
 {
+  if (!foot && scm_is_pair (footnotes))
+    {
+      warning ("Must have a footer to add footnotes.");
+      return;
+    }
   bool footnotes_found = false;
   Real footnote_padding = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0);
   Real footnote_footer_padding = robust_scm2double (pb->paper_->c_variable ("footnote-footer-padding"), 0.0);
index 5bd85b05b372fb4c8aad6934f0b5f857dfbd7dfa..4521abc15e24889b8004e0f4afad5643f5a61c95 100644 (file)
@@ -116,7 +116,7 @@ Part_combine_iterator::do_quit ()
   // Add listeners to all contexts except Devnull.
   for (int i = 0; i < NUM_OUTLETS; i++)
     {
-      Context *c = handles_[i].get_outlet ();
+      Context *c = handles_[i].get_context ();
       if (c->is_alias (ly_symbol2scm ("Voice")))
         c->event_source ()->remove_listener (GET_LISTENER (set_busy), ly_symbol2scm ("music-event"));
       handles_[i].set_context (0);
@@ -200,7 +200,7 @@ Part_combine_iterator::substitute_both (Outlet_type to1,
     {
       for (int j = 0; j < NUM_OUTLETS; j++)
         if (j != tos[i])
-          mis[i]->substitute_outlet (handles_[j].get_outlet (), handles_[tos[i]].get_outlet ());
+          mis[i]->substitute_outlet (handles_[j].get_context (), handles_[tos[i]].get_context ());
     }
 
   for (int j = 0; j < NUM_OUTLETS; j++)
@@ -221,7 +221,7 @@ Part_combine_iterator::kill_mmrest (int in)
       mmrest_event_->unprotect ();
     }
 
-  handles_[in].get_outlet ()->event_source ()->broadcast (mmrest_event_);
+  handles_[in].get_context ()->event_source ()->broadcast (mmrest_event_);
 }
 
 void
@@ -363,10 +363,10 @@ Part_combine_iterator::construct_children ()
     }
 
   SCM lst = get_music ()->get_property ("elements");
-  Context *one = handles_[CONTEXT_ONE].get_outlet ();
+  Context *one = handles_[CONTEXT_ONE].get_context ();
   set_context (one);
   first_iter_ = unsmob_iterator (get_iterator (unsmob_music (scm_car (lst))));
-  Context *two = handles_[CONTEXT_TWO].get_outlet ();
+  Context *two = handles_[CONTEXT_TWO].get_context ();
   set_context (two);
   second_iter_ = unsmob_iterator (get_iterator (unsmob_music (scm_cadr (lst))));
 
index b13d5e1cd5bee4f09008834a741825815a816d9c..c8bcee378b39128ce671dd14c8e7482bbbf3e1b0 100644 (file)
@@ -269,7 +269,7 @@ Quote_iterator::process (Moment m)
                   transpose_mutable (ev->get_property_alist (true), diff);
                   transposed_musics_ = scm_cons (ev->unprotect (), transposed_musics_);
                 }
-              quote_outlet_.get_outlet ()->event_source ()->broadcast (ev);
+              quote_outlet_.get_context ()->event_source ()->broadcast (ev);
             }
         }
 
index 8fdea86edb73b0a1fb4829e0a4fcf39932828a8f..99577018129afd9dc8187864675e252e50fb6fcb 100644 (file)
@@ -73,7 +73,7 @@ avoid_staff_line (Slur_score_state const &state,
 }
 
 Real
-fit_factor (Offset dz_unit, Offset dz_perp,
+fit_factor (Offset dz_unit, Offset dz_perp, Real close_to_edge_length,
             Bezier curve, Direction d, vector<Offset> const &avoid)
 {
   Real fit_factor = 0.0;
@@ -92,9 +92,19 @@ fit_factor (Offset dz_unit, Offset dz_perp,
       Offset p (dot_product (z, dz_unit),
                 d * dot_product (z, dz_perp));
 
+      bool close_to_edge = false;
+      Direction d = LEFT;
+      do
+        close_to_edge = close_to_edge || -d * (p[X_AXIS] - curve_xext[d]) < close_to_edge_length;
+      while (flip (&d) != LEFT);
+
+      if (close_to_edge)
+        continue;
+
       Real eps = 0.01;
       Interval pext = eps * Interval (-1, 1) + p[X_AXIS];
       pext.intersect (curve_xext);
+
       if (pext.is_empty () || pext.length () <= 1.999 * eps)
         continue;
 
@@ -159,7 +169,8 @@ Slur_configuration::generate_curve (Slur_score_state const &state,
                       + dz_unit * x2;
   curve.control_[3] = attachment_[RIGHT];
 
-  Real ff = fit_factor (dz_unit, dz_perp, curve, state.dir_, avoid);
+  Real ff = fit_factor (dz_unit, dz_perp, state.parameters_.close_to_edge_length_,
+                        curve, state.dir_, avoid);
 
   height = max (height, min (height * ff, max_h));
 
index 00f2d60312e2c2b74439164b4e064e9dad7615fa..886799d9818dfd495044008710a901928b9fb942 100644 (file)
@@ -76,4 +76,6 @@ Slur_score_parameters::fill (Grob *me)
     = get_detail (details, ly_symbol2scm ("free-slur-distance"));
   edge_slope_exponent_
     = get_detail (details, ly_symbol2scm ("edge-slope-exponent"));
+  close_to_edge_length_
+    = get_detail (details, ly_symbol2scm ("close-to-edge-length"));
 }
index 5f3548e4905975f41392f5b5d40ca3a98dce631b..f3c3c8285696ae7a30fd01b592cbea1de235a1f6 100644 (file)
@@ -104,8 +104,8 @@ Tuplet_iterator::process (Moment m)
       && m.main_part_ == next_split_mom_)
     {
       descend_to_bottom_context ();
-      if (tuplet_handler_.get_outlet ())
-        create_event (STOP)->send_to_context (tuplet_handler_.get_outlet ());
+      if (tuplet_handler_.get_context ())
+        create_event (STOP)->send_to_context (tuplet_handler_.get_context ());
 
       if (m.main_part_ < music_get_length ().main_part_)
         {
index 626dc9963fbf9e4869bbdf646c9a4d27cd60770e..67b8b8758fa2a023e643201f35335ddb105ea994 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -7,10 +7,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.13.53\n"
+"Project-Id-Version: lilypond 2.15.9\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2011-03-02 10:34+0100\n"
-"PO-Revision-Date: 2011-03-03 22:19+0200\n"
+"POT-Creation-Date: 2011-08-02 19:43+0200\n"
+"PO-Revision-Date: 2011-08-10 21:45+0300\n"
 "Last-Translator: Till Paala <till.rettig@gmx.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
@@ -86,8 +86,8 @@ msgstr "Für Details Benutzerhandbuch lesen und manuell aktualisieren."
 msgid "%s has been replaced by %s"
 msgstr "%s wurde durch %s ersetzt"
 
-#: convertrules.py:24 lilylib.py:78 musicexp.py:17 convert-ly.py:64 warn.cc:66
-#: input.cc:109
+#: convertrules.py:24 lilylib.py:85 musicexp.py:17 convert-ly.py:64 warn.cc:66
+#: input.cc:108
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "Warnung: %s"
@@ -107,6 +107,7 @@ msgstr "verworfener \\textstyle, neue \\key Syntax"
 
 #: convertrules.py:86 convertrules.py:1905 convertrules.py:2084
 #: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862
+#: convertrules.py:3206
 msgid "bump version for release"
 msgstr "aktuelle Version ausgeben"
 
@@ -748,6 +749,22 @@ msgstr "Holsbläserdiagramme: Änderungen im Klarinetten-Diagramm."
 msgid "woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"
 msgstr "woodwind-diagrams.  Klarinetten-Fingersatz verändert um Anatomie des Instruments wiederzugeben.\n"
 
+#: convertrules.py:3211
+msgid "Change in internal property for MultiMeasureRest"
+msgstr "Änderung in der internen Eigenschaft für MultiMeasureRest"
+
+#: convertrules.py:3214
+msgid "use-breve-rest.  This internal property has been replaced by round-to-longer-rest and usable-duration-logs.\n"
+msgstr "use-breve-rest.  Diese interene Eigenschaft wurde ersetzt durch round-to-longer-rest und usable-duration-logs.\n"
+
+#: convertrules.py:3219
+msgid "Handling of non-automatic footnotes."
+msgstr "Behandlung von nicht-automatischen Fußnoten."
+
+#: convertrules.py:3223
+msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n"
+msgstr "Wenn sie nichtautomatische Fußnoten einsetzen, stellen Sie sicher, die Eigenschaft footnote-auto-numbering = ##f in der paper-Umgebund einzustellen.\n"
+
 #: book_base.py:24
 #, python-format
 msgid "file not found: %s"
@@ -757,23 +774,28 @@ msgstr "Datei `%s' nicht gefunden"
 msgid "Output function not implemented"
 msgstr "Ausgabefunktion nicht implementiert"
 
-#: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115
-#: input.cc:123
+#: lilylib.py:88 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:114
+#: input.cc:122
 #, c-format, python-format
 msgid "error: %s"
 msgstr "Fehler: %s"
 
-#: lilylib.py:124 lilylib.py:175
+#: lilylib.py:131
+#, python-format
+msgid "Processing %s.ly"
+msgstr "»%s.ly« wird verarbeitet"
+
+#: lilylib.py:135 lilylib.py:198
 #, python-format
 msgid "Invoking `%s'"
 msgstr "`%s' wird aufgerufen"
 
-#: lilylib.py:126 lilylib.py:177
+#: lilylib.py:137 lilylib.py:200
 #, python-format
 msgid "Running %s..."
 msgstr "%s wird ausgeführt..."
 
-#: lilylib.py:253
+#: lilylib.py:276
 #, python-format
 msgid "Usage: %s"
 msgstr "Aufruf: %s"
@@ -834,118 +856,118 @@ msgstr "Kann kein Instrument für ID=%s finden\n"
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr "\\begin{document} im LaTeX-Dokument kann nicht gefunden werden"
 
-#: musicxml2ly.py:223
+#: musicxml2ly.py:224
 #, python-format
 msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
 msgstr "Die Datei wurde von %s erstellt und enthält falsche Balkeninformation. Alle Balkeninformation in der MusicXML-Datei wird ignoriert"
 
-#: musicxml2ly.py:239 musicxml2ly.py:241
+#: musicxml2ly.py:240 musicxml2ly.py:242
 #, python-format
 msgid "Unprocessed PartGroupInfo %s encountered"
 msgstr "Unverarbeitetes PartGroupInfo %s angetroffen"
 
-#: musicxml2ly.py:494
+#: musicxml2ly.py:495
 #, python-format
 msgid "Encountered note at %s without type and duration (=%s)"
 msgstr "Note bei %s ohne Art und Dauer angetroffen (=%s)"
 
-#: musicxml2ly.py:514
+#: musicxml2ly.py:515
 #, python-format
 msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
 msgstr "Rationale Dauer mit Nenner %s angetroffen, kann nicht in lilypond-Dauer umgewandelt werden"
 
-#: musicxml2ly.py:761
+#: musicxml2ly.py:762
 msgid "Unable to extract key signature!"
 msgstr "Kann die Tonart nicht extrahieren!"
 
-#: musicxml2ly.py:788
+#: musicxml2ly.py:789
 #, python-format
 msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
 msgstr "unbekannter Modus %s, 'major' (Dur) oder 'minor' (Moll) oder eine Kirchentonart wird erwartet"
 
-#: musicxml2ly.py:926
+#: musicxml2ly.py:927
 #, python-format
 msgid "Encountered unprocessed marker %s\n"
 msgstr "Unverarbeiteter Marker %s angetroffen\n"
 
-#: musicxml2ly.py:1020
+#: musicxml2ly.py:1021
 #, python-format
 msgid "unknown span event %s"
 msgstr "Unbekannte Spannerklasse »%s«"
 
-#: musicxml2ly.py:1030
+#: musicxml2ly.py:1031
 #, python-format
 msgid "unknown span type %s for %s"
 msgstr "Unbekannter Spannertyp %s für %s"
 
-#: musicxml2ly.py:1450
+#: musicxml2ly.py:1451
 msgid "Unknown metronome mark, ignoring"
 msgstr "Unbekanntes Metronom-Zeichen, wird ignoriert"
 
 #. TODO: Implement the other (more complex) way for tempo marks!
-#: musicxml2ly.py:1455
+#: musicxml2ly.py:1456
 msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
 msgstr "Metronommakern mit komplexen Beziehungen (<metronome-note> in MusicXML) sind noch nicht implementiert."
 
-#: musicxml2ly.py:1657
+#: musicxml2ly.py:1658
 #, python-format
 msgid "Unable to convert chord type %s to lilypond."
 msgstr "Kann Akkordtyp %s nicht nach lilypond umwandeln"
 
-#: musicxml2ly.py:1806
+#: musicxml2ly.py:1807
 #, python-format
 msgid "drum %s type unknown, please add to instrument_drumtype_dict"
 msgstr "Schlagzeug %s Typ unbekannt, bitte zum instrument_drumtype_dict hinzufügen"
 
-#: musicxml2ly.py:1810
+#: musicxml2ly.py:1811
 msgid "cannot find suitable event"
 msgstr "passendes Ereignis kann nicht gefunden werden"
 
-#: musicxml2ly.py:1958
+#: musicxml2ly.py:1959
 #, python-format
 msgid "Negative skip %s (from position %s to %s)"
 msgstr "Negativer Sprung (skip) %s (von Position %s bis %s)"
 
-#: musicxml2ly.py:2099
+#: musicxml2ly.py:2100
 #, python-format
 msgid "Negative skip found: from %s to %s, difference is %s"
 msgstr "Negativer Sprung (skip) gefunden: von %s bis %s, Differenz ist %s"
 
-#: musicxml2ly.py:2180
+#: musicxml2ly.py:2181
 #, python-format
 msgid "unexpected %s; expected %s or %s or %s"
 msgstr "unerwartetes %s; %s oder %s oder %s erwartet"
 
-#: musicxml2ly.py:2286
+#: musicxml2ly.py:2287
 msgid "Encountered closing slur, but no slur is open"
 msgstr "Auf schließenden Legatobogen gestoßen, aber es wurde kein Bogen begonnen"
 
-#: musicxml2ly.py:2289
+#: musicxml2ly.py:2290
 msgid "Cannot have two simultaneous (closing) slurs"
 msgstr "Zwei gleichzeitige (schließende) Legatobögen sind nicht möglich"
 
-#: musicxml2ly.py:2298
+#: musicxml2ly.py:2299
 msgid "Cannot have a slur inside another slur"
 msgstr "Ein Legatobogen innerhalb eines anderen Legatobogens ist nicht möglich"
 
-#: musicxml2ly.py:2301
+#: musicxml2ly.py:2302
 msgid "Cannot have two simultaneous slurs"
 msgstr "Zwei gleichzeitige Legatobögen sind nicht möglich"
 
-#: musicxml2ly.py:2435
+#: musicxml2ly.py:2436
 #, python-format
 msgid "cannot simultaneously have more than one mode: %s"
 msgstr "Kann nicht gleichzeitig mehr als einen Modus haben: %s"
 
-#: musicxml2ly.py:2543
+#: musicxml2ly.py:2544
 msgid "Converting to LilyPond expressions..."
 msgstr "In LilyPond-Ausdrücke umwandeln..."
 
-#: musicxml2ly.py:2554
+#: musicxml2ly.py:2555
 msgid "musicxml2ly [OPTION]... FILE.xml"
 msgstr "musicxml2ly [Optionen]... DATEI.xml"
 
-#: musicxml2ly.py:2556
+#: musicxml2ly.py:2557
 msgid ""
 "Convert MusicXML from FILE.xml to LilyPond input.\n"
 "If the given filename is -, musicxml2ly reads from the command line.\n"
@@ -953,12 +975,12 @@ msgstr ""
 "Wandle MusicXML-Datei von DAT.xml nach LilyPond-Eingabe um.\n"
 "Wenn der angegebene Dateiname - ist, list musicxml2ly von der Kommandozeile.\n"
 
-#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140
-#: convert-ly.py:98 etf2ly.py:1202 main.cc:157
+#: musicxml2ly.py:2563 midi2ly.py:1060 abc2ly.py:1386 lilypond-book.py:140
+#: convert-ly.py:98 etf2ly.py:1202 main.cc:159
 msgid "show this help and exit"
 msgstr "diese Hilfe anzeigen und beenden"
 
-#: musicxml2ly.py:2566
+#: musicxml2ly.py:2567
 msgid ""
 "Copyright (c) 2005--2011 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
@@ -970,61 +992,61 @@ msgstr ""
 "····Jan·Nieuwenhuizen·<janneke@gnu.org>·and\n"
 "····Reinhold·Kainhofer·<reinhold@kainhofer.com>\n"
 
-#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212
-#: convert-ly.py:94 etf2ly.py:1206 main.cc:168
+#: musicxml2ly.py:2581 midi2ly.py:1091 abc2ly.py:1382 lilypond-book.py:217
+#: convert-ly.py:94 etf2ly.py:1206 main.cc:174
 msgid "show version number and exit"
 msgstr "Versionsnummer ausgeben und beenden"
 
-#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169
+#: musicxml2ly.py:2586 midi2ly.py:1085 lilypond-book.py:209 main.cc:175
 msgid "be verbose"
 msgstr "wortreich sein"
 
-#: musicxml2ly.py:2591
+#: musicxml2ly.py:2592
 msgid "use lxml.etree; uses less memory and cpu time"
 msgstr "lxml.etree verwenden; benötigt weniger Speicher und Prozessorzeit"
 
-#: musicxml2ly.py:2597
+#: musicxml2ly.py:2598
 msgid "input file is a zip-compressed MusicXML file"
 msgstr "Eingabedatei ist eine zip-komprimierte MusicXML-Datei"
 
-#: musicxml2ly.py:2603
+#: musicxml2ly.py:2604
 msgid "convert pitches in relative mode (default)"
 msgstr "Tonhöhen im relativen Modus konvertieren (Standard)"
 
-#: musicxml2ly.py:2608
+#: musicxml2ly.py:2609
 msgid "convert pitches in absolute mode"
 msgstr "Tonhöhen im absoluten Modus konvertieren"
 
-#: musicxml2ly.py:2611
+#: musicxml2ly.py:2612
 msgid "LANG"
 msgstr "SPRA"
 
-#: musicxml2ly.py:2613
+#: musicxml2ly.py:2614
 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
 msgstr "benutzte SPRA für Notenbezeichnugen, z. B. 'deutsch' für deutsche Notenbezeichnungen"
 
-#: musicxml2ly.py:2619
+#: musicxml2ly.py:2620
 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
 msgstr "Richtungen (^, _ oder -) for Artikulationen, Dynamik usw. nicht konvertieren"
 
-#: musicxml2ly.py:2625
+#: musicxml2ly.py:2626
 msgid "do not convert exact vertical positions of rests"
 msgstr "zusätzliche vertikale Positionen von Pausen nicht konvertieren"
 
-#: musicxml2ly.py:2631
+#: musicxml2ly.py:2632
 msgid "do not convert the exact page layout and breaks"
 msgstr "nicht das exakte Seitenlayout und Umbrüche konvertieren"
 
-#: musicxml2ly.py:2637
+#: musicxml2ly.py:2638
 msgid "do not convert beaming information, use lilypond's automatic beaming instead"
 msgstr "Balkeninformation nicht konvertieren, benutze die automatischen Balken von lilypond statt dessen"
 
-#: musicxml2ly.py:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208
-#: main.cc:161 main.cc:166
+#: musicxml2ly.py:2641 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1208
+#: main.cc:165 main.cc:172
 msgid "FILE"
 msgstr "DATEI"
 
-#: musicxml2ly.py:2645
+#: musicxml2ly.py:2646
 msgid "set output filename to FILE, stdout if -"
 msgstr "Ausgabedateiname auf DATEI setzen, stout if -"
 
@@ -1032,148 +1054,160 @@ msgstr "Ausgabedateiname auf DATEI setzen, stout if -"
 #. "Report bugs in English via %s",
 #. or if there is a LilyPond users list or forum in your language
 #. "Report bugs in English via %s or in YOUR_LANG via URI"
-#: musicxml2ly.py:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234
-#: convert-ly.py:144 etf2ly.py:1216 main.cc:281
+#: musicxml2ly.py:2649 midi2ly.py:1104 abc2ly.py:1395 lilypond-book.py:239
+#: convert-ly.py:144 etf2ly.py:1216 main.cc:285
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr "Melden Sie Fehler an %s"
 
-#: musicxml2ly.py:2728
+#: musicxml2ly.py:2729
 #, python-format
 msgid "unknown part in part-list: %s"
 msgstr "unbekannte Stimme in part-list (Stimmen-Liste): %s"
 
-#: musicxml2ly.py:2790
+#: musicxml2ly.py:2791
 msgid "Input is compressed, extracting raw MusicXML data from stdin"
 msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten von stdin"
 
-#: musicxml2ly.py:2793
+#: musicxml2ly.py:2804
 #, python-format
 msgid "Input file %s is compressed, extracting raw MusicXML data"
 msgstr "Eingabedatei %s ist komprimiert, entpacke die MusicXML-Daten"
 
-#: musicxml2ly.py:2823
+#: musicxml2ly.py:2834
 msgid "Reading MusicXML from Standard input ..."
 msgstr "MusicXML von standard input lesen..."
 
-#: musicxml2ly.py:2825
+#: musicxml2ly.py:2836
 #, python-format
 msgid "Reading MusicXML from %s ..."
 msgstr "MusicXML aus %s lesen..."
 
-#: musicxml2ly.py:2858
+#: musicxml2ly.py:2869
 #, python-format
 msgid "Output to `%s'"
 msgstr "Ausgabe nach »%s«"
 
-#: musicxml2ly.py:2925
+#: musicxml2ly.py:2936
 #, python-format
 msgid "Unable to find input file %s"
 msgstr "Eingabedatei kann nicht gefunden werden %s"
 
-#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s bei"
 
-#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
 msgid "Distributed under terms of the GNU General Public License."
 msgstr "Vertrieben unter den Bedingungen der GNU General Public License."
 
-#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
 msgid "It comes with NO WARRANTY."
 msgstr "Es wird OHNE GARANTIE ausgeliefert."
 
-#: midi2ly.py:99
+#: midi2ly.py:90
 msgid "warning: "
 msgstr "Warnung: "
 
-#: midi2ly.py:102 midi2ly.py:1041
+#: midi2ly.py:93 midi2ly.py:1121
 msgid "error: "
 msgstr "Fehler: "
 
-#: midi2ly.py:103
+#: midi2ly.py:94
 msgid "Exiting... "
 msgstr "Beenden... "
 
-#: midi2ly.py:960
+#: midi2ly.py:834
+msgid "found more than 5 voices on a staff, expect bad output"
+msgstr "mehr als fünf Stimmen auf einem System, schlechte Ausgabe kann erwartet werden"
+
+#: midi2ly.py:1030
 #, python-format
 msgid "%s output to `%s'..."
 msgstr "%s nach »%s« ausgeben..."
 
-#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#: midi2ly.py:1042 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [OPTIONEN]... DATEI"
 
-#: midi2ly.py:973
+#: midi2ly.py:1043
 #, python-format
 msgid "Convert %s to LilyPond input.\n"
 msgstr "%s in LilyPond-Quelltext umwandeln.\n"
 
-#: midi2ly.py:978
+#: midi2ly.py:1048
 msgid "print absolute pitches"
 msgstr "Absolute Tonhöhen ausgeben"
 
-#: midi2ly.py:980 midi2ly.py:1002
+#: midi2ly.py:1050 midi2ly.py:1075
 msgid "DUR"
 msgstr "DAUER"
 
-#: midi2ly.py:981
+#: midi2ly.py:1051
 msgid "quantise note durations on DUR"
 msgstr "Notenlängen auf DAUER quantisieren"
 
-#: midi2ly.py:984
+#: midi2ly.py:1054
+msgid "debug printing"
+msgstr "Drucken auf Fehler untersuchen"
+
+#: midi2ly.py:1057
 msgid "print explicit durations"
 msgstr "Explizite Notenlängen ausgeben"
 
-#: midi2ly.py:989
+#: midi2ly.py:1062
 msgid "prepend FILE to output"
 msgstr "DATEI an die Ausgabe anfügen"
 
-#: midi2ly.py:993
+#: midi2ly.py:1066
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
 msgstr "Tonart setzen: VORZ=+Kreuze|-B's; MOLL=1"
 
-#: midi2ly.py:994
+#: midi2ly.py:1067
 msgid "ALT[:MINOR]"
 msgstr "VORZ[:MOLL]"
 
-#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207
+#: midi2ly.py:1069 abc2ly.py:1388 etf2ly.py:1207
 msgid "write output to FILE"
 msgstr "Ausgabe in DATEI schreiben"
 
-#: midi2ly.py:999
+#: midi2ly.py:1072
 msgid "preview of first 4 bars"
 msgstr "Vorschau der ersten 4 Takte"
 
-#: midi2ly.py:1001
+#: midi2ly.py:1074
 msgid "quantise note starts on DUR"
 msgstr "Notenanfänge auf DAUER quantisieren"
 
-#: midi2ly.py:1004
+#: midi2ly.py:1078
+msgid "use s instead of r for rests"
+msgstr "s anstelle von r für Pausen benutzen"
+
+#: midi2ly.py:1080
 msgid "DUR*NUM/DEN"
 msgstr "DAUER*ZÄHLER/NENNER"
 
 # tuplet = Wertaufteilung nach: Peter Giger: Die Kunst des Rhythmus, Seite 25
-#: midi2ly.py:1007
+#: midi2ly.py:1083
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr "Wertaufteilungsdauern DAUER*ZÄHLER/NENNER erlauben"
 
-#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210
-#: main.cc:170
+#: midi2ly.py:1092 lilypond-book.py:220 convert-ly.py:139 etf2ly.py:1210
+#: main.cc:176
 msgid "show warranty and copyright"
 msgstr "Informationen zu Gewährleistung und Copyright anzeigen"
 
-#: midi2ly.py:1019
+#: midi2ly.py:1095
 msgid "treat every text as a lyric"
 msgstr "Jeden Text als Liedtext behandeln"
 
-#: midi2ly.py:1022
+#: midi2ly.py:1098
 msgid "Examples"
 msgstr "Beispiele"
 
-#: midi2ly.py:1042
+#: midi2ly.py:1122
 msgid "no files specified on command line."
 msgstr "Keine Dateien auf der Kommandozeile angegeben."
 
@@ -1232,7 +1266,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:163
-#: lilypond-book.py:173 lilypond-book.py:189 lilypond-book.py:195 main.cc:160
+#: lilypond-book.py:173 lilypond-book.py:194 lilypond-book.py:200 main.cc:164
 msgid "DIR"
 msgstr "VERZ"
 
@@ -1272,23 +1306,27 @@ msgstr "BEFEHL"
 msgid "process ly_files using COMMAND FILE..."
 msgstr "ly_files mit BEFEHL DATEI... verarbeiten"
 
-#: lilypond-book.py:182
+#: lilypond-book.py:183
+msgid "Redirect the lilypond output"
+msgstr "Die Ausgabe von lilypond umleiten"
+
+#: lilypond-book.py:187
 msgid "Compile snippets in safe mode"
 msgstr "Schnipsel im sicheren Modus kompilieren"
 
-#: lilypond-book.py:188
+#: lilypond-book.py:193
 msgid "do not fail if no lilypond output is found"
 msgstr "nicht abbrechen wenn keine lilypond-Ausgabe gefunden wird"
 
-#: lilypond-book.py:194
+#: lilypond-book.py:199
 msgid "do not fail if no PNG images are found for EPS files"
 msgstr "nicht abbrechen wenn, keine PNG-Bilder für EPS-Dateien gefunden werden"
 
-#: lilypond-book.py:200
+#: lilypond-book.py:205
 msgid "write snippet output files with the same base name as their source file"
 msgstr "schreibe Schnipsel-Ausgabedatei mit der gleichen Basis-Bezeichnung wie die Quelldatei"
 
-#: lilypond-book.py:220
+#: lilypond-book.py:225
 msgid ""
 "run executable PROG instead of latex, or in\n"
 "case --pdf option is set instead of pdflatex"
@@ -1296,65 +1334,65 @@ msgstr ""
 "Führe die Datei PROG anstelle von latex aus, oder\n"
 "im Falle dass die Option --pdf gesetzt ist, anstelle von pdflatex"
 
-#: lilypond-book.py:222
+#: lilypond-book.py:227
 msgid "PROG"
 msgstr "PROG"
 
-#: lilypond-book.py:228
+#: lilypond-book.py:233
 msgid "create PDF files for use with PDFTeX"
 msgstr "PDF-Dateien für Verwendung mit PDFTeX erzeugen"
 
-#: lilypond-book.py:419
+#: lilypond-book.py:428
 msgid "Writing snippets..."
 msgstr "Auszüge werden geschrieben..."
 
-#: lilypond-book.py:425
+#: lilypond-book.py:434
 msgid "Processing..."
 msgstr "Verarbeiten..."
 
-#: lilypond-book.py:431
+#: lilypond-book.py:440
 msgid "All snippets are up to date..."
 msgstr "Alle Auszüge sind auf dem neuesten Stand..."
 
-#: lilypond-book.py:452
+#: lilypond-book.py:461
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr "Format für %s kann nicht ermittelt werden"
 
-#: lilypond-book.py:461
+#: lilypond-book.py:470
 #, python-format
 msgid "%s is up to date."
 msgstr "%s ist aktuell."
 
-#: lilypond-book.py:475
+#: lilypond-book.py:484
 #, python-format
 msgid "Writing `%s'..."
 msgstr "»%s« wird geschrieben..."
 
-#: lilypond-book.py:537
+#: lilypond-book.py:546
 msgid "Output would overwrite input file; use --output."
 msgstr "Ausgabe würde Eingabedatei überschreiben; verwenden Sie --output."
 
-#: lilypond-book.py:541
+#: lilypond-book.py:550
 #, python-format
 msgid "Reading %s..."
 msgstr "%s lesen..."
 
-#: lilypond-book.py:549
+#: lilypond-book.py:558
 msgid "Dissecting..."
 msgstr "Zerlegen..."
 
-#: lilypond-book.py:561
+#: lilypond-book.py:570
 #, python-format
 msgid "Compiling %s..."
 msgstr "%s kompilieren..."
 
-#: lilypond-book.py:570
+#: lilypond-book.py:579
 #, python-format
 msgid "Processing include: %s"
 msgstr "Einfügung wird verarbeitet: %s"
 
-#: lilypond-book.py:582
+#: lilypond-book.py:591
 #, python-format
 msgid "Removing `%s'"
 msgstr "»%s« wird gelöscht"
@@ -1465,7 +1503,7 @@ msgstr "Andere Sprachen"
 msgid "success: %s"
 msgstr "Erfolg: %s"
 
-#: warn.cc:86 grob.cc:617 input.cc:97
+#: warn.cc:86 grob.cc:613 input.cc:97
 #, c-format
 msgid "programming error: %s"
 msgstr "Programmierfehler: %s"
@@ -1510,7 +1548,7 @@ msgstr "aufsteigender Vaticana-Stil flexa"
 msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
 msgstr "Vaticana_ligature: nichts zusammengefügt (delta_pitch == 0)"
 
-#: parse-scm.cc:101
+#: parse-scm.cc:100
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck"
 
@@ -1519,15 +1557,15 @@ msgid "rhythmic head is not part of a rhythmic column"
 msgstr "der rhythmische Kopf gehört nicht zu einer rhythmischen Kolumne"
 
 #. if we get to here, just put everything on one line
-#: constrained-breaking.cc:189 constrained-breaking.cc:207
+#: constrained-breaking.cc:187 constrained-breaking.cc:205
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "es kann kein Zeilenumbruch gefunden werden, der die Bedingungen erfüllen"
 
-#: horizontal-bracket-engraver.cc:78
+#: horizontal-bracket-engraver.cc:62
 msgid "do not have that many brackets"
 msgstr "so viele Klammern gibt es nicht"
 
-#: horizontal-bracket-engraver.cc:87
+#: horizontal-bracket-engraver.cc:71
 msgid "conflicting note group events"
 msgstr "in Konflikt stehende Notengruppenereignisse"
 
@@ -1539,12 +1577,12 @@ msgstr "unbegrenzter Bindestrich wird entfernt"
 msgid "unterminated hyphen; removing"
 msgstr "unbegrenzter Bindestrich; entfernt"
 
-#: pango-font.cc:187 open-type-font.cc:319
+#: pango-font.cc:189 open-type-font.cc:318
 #, c-format
 msgid "FT_Get_Glyph_Name () error: %s"
 msgstr "FT_Get_Glyph_Name() Fehler: %s"
 
-#: pango-font.cc:204
+#: pango-font.cc:205
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
@@ -1553,16 +1591,16 @@ msgstr ""
 "Glyph hat keinen Namen, aber Zeichensatz unterstützt Glyphnamen.\n"
 "Glyph U+%0X wird übersprungen, Datei %s"
 
-#: pango-font.cc:241
+#: pango-font.cc:242
 #, c-format
 msgid "no PostScript font name for font `%s'"
 msgstr "Kein PostScript-Schriftartname für Schriftart: »%s«"
 
-#: pango-font.cc:290
+#: pango-font.cc:291
 msgid "FreeType face has no PostScript font name"
 msgstr "FreeType-Schriftart hat keinen PostScript-Schriftartnamen"
 
-#: midi-item.cc:92
+#: midi-item.cc:89
 #, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "kein MIDI-Instrument: `%s'"
@@ -1571,7 +1609,7 @@ msgstr "kein MIDI-Instrument: `%s'"
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent ohne Tonhöhe"
 
-#: rest.cc:159
+#: rest.cc:160
 #, c-format
 msgid "rest `%s' not found"
 msgstr "Pause »%s« nicht gefunden"
@@ -1589,7 +1627,7 @@ msgstr "Balken bereits vorhanden"
 msgid "unterminated beam"
 msgstr "unbegrenzter Balken"
 
-#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150
+#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
 msgid "stem must have Rhythmic structure"
 msgstr "Notenhals muss rhythmische Struktur aufweisen"
 
@@ -1601,26 +1639,26 @@ msgstr "Notenhals passt nicht in Balken"
 msgid "beam was started here"
 msgstr "Balken wurde hier begonnen"
 
-#: music-iterator.cc:182
+#: music-iterator.cc:181
 msgid "Sending non-event to context"
 msgstr "Nicht-Ereignis wird an Kontext gesendet"
 
-#: context.cc:149
+#: context.cc:148
 #, c-format
 msgid "cannot find or create new `%s'"
 msgstr "ein neues »%s« kann weder gefunden noch erzeugt werden"
 
-#: context.cc:207
+#: context.cc:206
 #, c-format
 msgid "cannot find or create `%s' called `%s'"
 msgstr "»%s« (»%s« genannt) kann weder gefunden noch erzeugt werden"
 
-#: context.cc:269
+#: context.cc:268
 #, c-format
 msgid "Invalid CreateContext event: Cannot create %s context"
 msgstr "Ungültiges CreateContext-Ereignis: Kontext %s kann nicht erzeugt werden"
 
-#: context.cc:400
+#: context.cc:399
 #, c-format
 msgid "cannot find or create: `%s'"
 msgstr "»%s« kann weder gefunden noch erzeugt werden"
@@ -1638,11 +1676,11 @@ msgstr "Unbekannte Ereignisklasse »%s«"
 msgid "forced break was overridden by some other event, should you be using bar checks?"
 msgstr "erzwungener Umbruch war durch anderes Ereignis aufgehoben, sollten Taktüberprüfungen vorgenommen werden?"
 
-#: tie-engraver.cc:116
+#: tie-engraver.cc:117
 msgid "unterminated tie"
 msgstr "unbegrenzter Bindebogen"
 
-#: tie-engraver.cc:312
+#: tie-engraver.cc:348
 msgid "lonely tie"
 msgstr "einsamer Bindebogen"
 
@@ -1728,27 +1766,27 @@ msgstr ""
 "muss die vorletzte Note eine weitere sein,\n"
 "oder die Ligatur muss LB oder SSB sein"
 
-#: mensural-ligature-engraver.cc:386
+#: mensural-ligature-engraver.cc:387
 msgid "unexpected case fall-through"
 msgstr "unerwarteter case-Ausgang"
 
-#: piano-pedal-engraver.cc:298
+#: piano-pedal-engraver.cc:296
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
 msgstr "3 Textketten für Piano-Pedal erwartet, %ld gefunden"
 
-#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
+#: piano-pedal-engraver.cc:311 piano-pedal-engraver.cc:322
 #: piano-pedal-performer.cc:104
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
 msgstr "es kann kein Anfang für Piano-Pedal gefunden werden: »%s«"
 
-#: piano-pedal-engraver.cc:359
+#: piano-pedal-engraver.cc:357
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
 msgstr "es kann kein Anfang für Piano-Pedal-Klammer gefunden werden: »%s«"
 
-#: input.cc:131 source-file.cc:179 source-file.cc:194
+#: input.cc:130 source-file.cc:178 source-file.cc:193
 msgid "position unknown"
 msgstr "Position unbekannt"
 
@@ -1757,28 +1795,28 @@ msgstr "Position unbekannt"
 msgid "Layout output to `%s'..."
 msgstr "Layout nach »%s« ausgeben..."
 
-#: general-scheme.cc:306
+#: general-scheme.cc:305
 msgid "infinity or NaN encountered while converting Real number"
 msgstr "Unendlichkeit oder NaN bei Umwandlung einer Realen Zahl gefunden"
 
-#: general-scheme.cc:307
+#: general-scheme.cc:306
 msgid "setting to zero"
 msgstr "auf Null gesetzt"
 
-#: general-scheme.cc:543
+#: general-scheme.cc:540
 msgid "Found infinity or nan in output. Substituting 0.0"
 msgstr "Unendlich oder NaN in Ausgabe gefunden. Wird durch 0.0 ersetzt"
 
-#: music.cc:151
+#: music.cc:150
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
 msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden"
 
-#: music.cc:219
+#: music.cc:218
 msgid "(normalized pitch)"
 msgstr "(normalisierte Tonhöhe)"
 
-#: music.cc:223
+#: music.cc:222
 #, c-format
 msgid "Transposing %s by %s makes alteration larger than double"
 msgstr "Transponieren von %s um %s erzeugt mehr als ein Doppel-Vorzeichen"
@@ -1792,15 +1830,15 @@ msgstr "unbekannter Übersetzer: »%s«"
 msgid "trying to use \\partial after the start of a piece"
 msgstr "versuche, \\partial nach dem Beginn eines Stückes einzusetzen"
 
-#: new-fingering-engraver.cc:106
+#: new-fingering-engraver.cc:105
 msgid "cannot add text scripts to individual note heads"
 msgstr "es kann kein Text zu einzelnen Notenköpfen hinzugefügt werden"
 
-#: new-fingering-engraver.cc:250
+#: new-fingering-engraver.cc:249
 msgid "no placement found for fingerings"
 msgstr "Keine Platzierung für Fingersatz gefunden"
 
-#: new-fingering-engraver.cc:251
+#: new-fingering-engraver.cc:250
 msgid "placing below"
 msgstr "Platzierung darunter"
 
@@ -1820,15 +1858,15 @@ msgstr "habe bereits eine Ligatur"
 msgid "no left bound"
 msgstr "keine linke Begrenzung"
 
-#: ligature-engraver.cc:185
+#: ligature-engraver.cc:184
 msgid "unterminated ligature"
 msgstr "unbegrenzte Ligatur"
 
-#: ligature-engraver.cc:214
+#: ligature-engraver.cc:211
 msgid "ignoring rest: ligature may not contain rest"
 msgstr "Pause wird ignoriert: Ligatur darf keine Pause enthalten"
 
-#: ligature-engraver.cc:215
+#: ligature-engraver.cc:212
 msgid "ligature was started here"
 msgstr "Ligatur wurde hier begonnen"
 
@@ -1837,26 +1875,26 @@ msgstr "Ligatur wurde hier begonnen"
 msgid "cannot change, already in translator: %s"
 msgstr "kann nicht geändert werden, bereits im Übersetzer: %s"
 
-#: accidental-engraver.cc:180
+#: accidental-engraver.cc:179
 #, c-format
 msgid "accidental typesetting list must begin with context-name: %s"
 msgstr "Versetzungszeichensatzliste muss mit Kontextnamen beginnen: %s"
 
-#: accidental-engraver.cc:210
+#: accidental-engraver.cc:209
 #, c-format
 msgid "procedure or context-name expected for accidental rule, found %s"
 msgstr "Prozedur oder Kontextname für Versetzungszeichenregel erwartet, %s gefunden"
 
-#: ttf.cc:481 ttf.cc:530
+#: ttf.cc:480 ttf.cc:529
 #, c-format
 msgid "font index %d too large for font `%s', using index 0"
 msgstr "Font-Intex %d zu groß für Font »%s«, benutze Index 0"
 
-#: ttf.cc:513 ttf.cc:565
+#: ttf.cc:512 ttf.cc:564
 msgid "font index must be non-negative, using index 0"
 msgstr "font-index muss nicht-negativ sein, benutze Index 0"
 
-#: break-alignment-interface.cc:206
+#: break-alignment-interface.cc:199
 #, c-format
 msgid "No spacing entry from %s to `%s'"
 msgstr "Kein Abstandeintrag von %s nach »%s«"
@@ -1911,7 +1949,7 @@ msgstr "Suchpfad »%s«"
 msgid "Aborting"
 msgstr "Abbruch"
 
-#: note-collision.cc:497
+#: note-collision.cc:494
 msgid "ignoring too many clashing note columns"
 msgstr "zu viele kollidierende Notenspalten werden ignoriert"
 
@@ -1932,20 +1970,20 @@ msgstr "endende Textklammer auch bereits vorhanden"
 msgid "giving up"
 msgstr "aufgeben"
 
-#: page-layout-problem.cc:322
+#: page-layout-problem.cc:603
 msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed"
 msgstr "Noten passen nicht auf die Seite: ragged-spacing wurde verlangt, aber die Seite wurde komprimiert"
 
-#: page-layout-problem.cc:325
+#: page-layout-problem.cc:606
 #, c-format
 msgid "cannot fit music on page: overflow is %f"
 msgstr "Noten passen nicht auf die Seite: Überhang ist %f"
 
-#: page-layout-problem.cc:327
+#: page-layout-problem.cc:608
 msgid "compressing music to fit"
 msgstr "Noten werden komprimiert um zu passen"
 
-#: page-layout-problem.cc:765
+#: page-layout-problem.cc:1047
 msgid "staff-affinities should only decrease"
 msgstr "staff-affinities sollten nur abnehmen"
 
@@ -1962,7 +2000,7 @@ msgstr "rehearsalMark muss Ganzzahlwert haben"
 msgid "mark label must be a markup object"
 msgstr "Marke muss ein Textbeschriftungsobjekt sein"
 
-#: new-dynamic-engraver.cc:142
+#: new-dynamic-engraver.cc:168
 #, c-format
 msgid ""
 "unknown crescendo style: %s\n"
@@ -1971,35 +2009,34 @@ msgstr ""
 "unbekannter crescendo-Stil: %s\n"
 "wird als spitze Klammer gesetzt."
 
-#: new-dynamic-engraver.cc:200
+#: new-dynamic-engraver.cc:233
 #, c-format
 msgid "unterminated %s"
 msgstr "unbegrenzt: »%s«"
 
-#: stem-engraver.cc:103
+#: stem-engraver.cc:102
 msgid "tremolo duration is too long"
 msgstr "Tremolodauer ist zu lang"
 
-#. FIXME:
-#: stem-engraver.cc:140
+#: stem-engraver.cc:154
 #, c-format
-msgid "adding note head to incompatible stem (type = %d)"
-msgstr "Notenkopf wird zu inkompatiblem Hals (Typ = %d) hinzugefügt"
+msgid "adding note head to incompatible stem (type = %d/%d)"
+msgstr "Notenkopf wird zu inkompatiblem Hals (Typ = %d/%d) hinzugefügt"
 
-#: stem-engraver.cc:142
+#: stem-engraver.cc:157
 msgid "maybe input should specify polyphonic voices"
 msgstr "vielleicht sollte die Eingabe mehrere Stimmen erstellen"
 
-#: lily-lexer.cc:264
+#: lily-lexer.cc:265
 msgid "include files are not allowed in safe mode"
 msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt"
 
-#: lily-lexer.cc:291
+#: lily-lexer.cc:292
 #, c-format
 msgid "identifier name is a keyword: `%s'"
 msgstr "Bezeichnername ist ein Schlüsselwort: »%s«"
 
-#: lily-lexer.cc:312
+#: lily-lexer.cc:313
 #, c-format
 msgid "error at EOF: %s"
 msgstr "Fehler am Dateiende (EOF): %s"
@@ -2009,12 +2046,12 @@ msgstr "Fehler am Dateiende (EOF): %s"
 msgid "cannot find Voice `%s'"
 msgstr "Stimme kann nicht gefunden werden: »%s«"
 
-#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
+#: includable-lexer.cc:71 lily-guile.cc:86 lily-parser-scheme.cc:109
 #, c-format
 msgid "cannot find file: `%s'"
 msgstr "Datei »%s« kann nicht gefunden werden"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:100
+#: includable-lexer.cc:73 lily-parser-scheme.cc:101
 #, c-format
 msgid "(search path: `%s')"
 msgstr "(Suchpfad: »%s«)"
@@ -2028,38 +2065,52 @@ msgid "removing beam with no stems"
 msgstr "Balken ohne Notenhälse wird entfernt"
 
 #. We are completely screwed.
-#: beam.cc:1274
+#: beam.cc:1350
 msgid "no viable initial configuration found: may not find good beam slope"
 msgstr "Keine funktionsfähige Anfangskonfiguration gefunden: Es kann evtl. keine optimale Balkenneigung gefunden werden"
 
-#: slur-engraver.cc:93
+#: staff-performer.cc:257
+msgid "MIDI channel wrapped around"
+msgstr "MIDI-Kanal zurückgesprungen"
+
+#: staff-performer.cc:258
+msgid "remapping modulo 16"
+msgstr "modulo 16 neu zuordnen"
+
+#: slur-engraver.cc:90 phrasing-slur-engraver.cc:89
 #, c-format
 msgid "direction of %s invalid: %d"
 msgstr "Richtung von %s ungültig: %d"
 
-#: slur-engraver.cc:162
+#: slur-engraver.cc:158
 msgid "unterminated slur"
 msgstr "unbegrenzter Legatobogen"
 
-#: slur-engraver.cc:174
+#: slur-engraver.cc:183
 msgid "cannot end slur"
 msgstr "Legatobogen kann nicht beendet werden"
 
-#: font-config.cc:40
+#. We already have a slur, so give a warning and completely ignore
+#. the new slur.
+#: slur-engraver.cc:200
+msgid "already have slur"
+msgstr "habe bereits einen Bogen"
+
+#: font-config.cc:39
 msgid "Initializing FontConfig..."
 msgstr "FontConfig wird initialisiert..."
 
-#: font-config.cc:55 font-config-scheme.cc:152
+#: font-config.cc:54 font-config-scheme.cc:151
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "Schriftartverzeichnis konnte nicht hinzugefügt werden: %s"
 
-#: font-config.cc:57 font-config-scheme.cc:154
+#: font-config.cc:56 font-config-scheme.cc:153
 #, c-format
 msgid "adding font directory: %s"
 msgstr "Schriftartverzeichnis wird hinzugefügt: %s"
 
-#: font-config.cc:61
+#: font-config.cc:60
 msgid "Building font database..."
 msgstr "Schriftartendatenbank erstellen..."
 
@@ -2105,27 +2156,27 @@ msgstr "Glyph-Name für Versetzungszeichen %s konnte nicht gefunden werden"
 msgid "natural alteration glyph not found"
 msgstr "Auflösungszeichen konnte nicht gefunden werden"
 
-#: system.cc:197
+#: system.cc:201
 #, c-format
 msgid "Element count %d"
 msgstr "Elementanzahl %d."
 
-#: system.cc:303
+#: system.cc:402
 #, c-format
 msgid "Grob count %d"
 msgstr "Anzahl der grafischen Objekte (grob): %d"
 
-#: slur.cc:362
+#: slur.cc:359
 #, c-format
 msgid "Ignoring grob for slur: %s. avoid-slur not set?"
 msgstr "Grob für Legatobogen wird ignoriert: %s. avoid-slur nicht gesetzt?"
 
-#: font-config-scheme.cc:168
+#: font-config-scheme.cc:167
 #, c-format
 msgid "failed adding font file: %s"
 msgstr "Schriftartdatei konnte nicht hinzugefügt werden: %s"
 
-#: font-config-scheme.cc:170
+#: font-config-scheme.cc:169
 #, c-format
 msgid "adding font file: %s"
 msgstr "Schriftartdatei wird hinzugefügt: %s"
@@ -2134,34 +2185,34 @@ msgstr "Schriftartdatei wird hinzugefügt: %s"
 msgid "decrescendo too small"
 msgstr "Decrescendo zu kurz"
 
-#: extender-engraver.cc:170 extender-engraver.cc:179
+#: extender-engraver.cc:169 extender-engraver.cc:178
 msgid "unterminated extender"
 msgstr "unbegrenzter Textunterstrich"
 
-#: lily-guile.cc:89
+#: lily-guile.cc:88
 #, c-format
 msgid "(load path: `%s')"
 msgstr "(Lade-Pfad: `%s')"
 
-#: lily-guile.cc:437
+#: lily-guile.cc:431
 #, c-format
 msgid "cannot find property type-check for `%s' (%s)."
 msgstr "Eigenschafts-Typprüfung für »%s« (%s) kann nicht gefunden werden."
 
-#: lily-guile.cc:440
+#: lily-guile.cc:434
 msgid "perhaps a typing error?"
 msgstr "vielleicht ein Tippfehler?"
 
-#: lily-guile.cc:447
+#: lily-guile.cc:441
 msgid "doing assignment anyway"
 msgstr "Zuweisung wird trotzdem durchgeführt"
 
-#: lily-guile.cc:459
+#: lily-guile.cc:453
 #, c-format
 msgid "type check for `%s' failed; value `%s' must be of type `%s'"
 msgstr "Typprüfung für »%s« gescheitert; Wert »%s« muss vom Typ »%s« sein"
 
-#: main.cc:109
+#: main.cc:107
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2174,11 +2225,12 @@ msgstr ""
 "Bedingungen weitergeben. Rufen Sie »%s --warranty« für weitere\n"
 "Informationen auf.\n"
 
-#: main.cc:115
+#: main.cc:113
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
+"modify it under the terms of the GNU General Public License as \n"
+"published by the Free Software Foundation, either version 3 of\n"
+"the License, or (at your option) any later version.\n"
 "\n"
 "    This program is distributed in the hope that it will be useful,\n"
 "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -2191,11 +2243,11 @@ msgid ""
 "Boston, MA 02111-1307, USA.\n"
 msgstr ""
 "    Dieses Programm ist Freie Software; Sie können es unter den\n"
-"Bedingungen der GNU General Public License Version 2, wie von der\n"
-"Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren.\n"
+"Bedingungen der GNU General Public License, wie von der\n"
+"Free Software Foundation veröffentlicht (entweder Version 3 oder (nach eigener Vorliebe) eine spätere Version), weitergeben und/oder modifizieren.\n"
 "\n"
 "    Dieses Programm wird herausgegeben in der Hoffnung, dass es nützlich sein wird\n"
-"Es wird jedoch KEINE GARANTIE übernommen. Selbst die\n"
+"Es wird jedoch KEINE GEWÄHRLEISTUNG übernommen. Selbst die\n"
 "implizite Garantie der MARKTGÄNGIGKEIT oder TAUGLICHKEIT FÜR EINEN\n"
 "BESTIMMTEN ZWECK kann nicht gewährleistet werden. Siehe GNU General Public\n"
 "License für weitere Details.\n"
@@ -2205,11 +2257,11 @@ msgstr ""
 "Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:146
+#: main.cc:147
 msgid "SYM[=VAL]"
 msgstr "SYM[=WERT]"
 
-#: main.cc:147
+#: main.cc:148
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
@@ -2217,59 +2269,59 @@ msgstr ""
 "Scheme-Option SYM auf WERT setzen (Vorgabe: #t).\n"
 "-dhelp für Hilfe verwenden."
 
-#: main.cc:150
+#: main.cc:152
 msgid "EXPR"
 msgstr "AUSD"
 
-#: main.cc:150
+#: main.cc:152
 msgid "evaluate scheme code"
 msgstr "Scheme-Code auswerten"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:153
+#: main.cc:155
 msgid "FORMATs"
 msgstr "FORMATe"
 
-#: main.cc:153
+#: main.cc:155
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "dump FORMAT,... Auch als separate Optionen:"
 
-#: main.cc:154
+#: main.cc:156
 msgid "generate PDF (default)"
 msgstr "PDF erzeugen (Standard)"
 
-#: main.cc:155
+#: main.cc:157
 msgid "generate PNG"
 msgstr "PNG erzeugen"
 
-#: main.cc:156
+#: main.cc:158
 msgid "generate PostScript"
 msgstr "PostScript erzeugen"
 
-#: main.cc:158
+#: main.cc:161
 msgid "FIELD"
 msgstr "FELD"
 
-#: main.cc:158
+#: main.cc:161
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
 msgstr "Header-Feld FELD in Datei BASISNAME.FELD schreiben"
 
-#: main.cc:160
+#: main.cc:164
 msgid "add DIR to search path"
 msgstr "VERZ zum Suchpfad hinzufügen"
 
-#: main.cc:161
+#: main.cc:165
 msgid "use FILE as init file"
 msgstr "DATEI als Anfangsdatei verwenden"
 
-#: main.cc:163
+#: main.cc:168
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "BENUTZER,GRUPPE,KERKER,VERZ"
 
-#: main.cc:163
+#: main.cc:168
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2277,16 +2329,16 @@ msgstr ""
 "chroot in KERKER, wird BENUTZER:GRUPPE\n"
 "und cd in VERZ"
 
-#: main.cc:166
+#: main.cc:172
 msgid "write output to FILE (suffix will be added)"
 msgstr "Ausgabe in DATEI schreiben (Endung wird hinzugefügt)"
 
-#: main.cc:167
+#: main.cc:173
 msgid "relocate using directory of lilypond program"
 msgstr "wiederfinden mit Hilfe des Lilypond-Programmverzeichnisses"
 
 #. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:238
+#: main.cc:242
 #, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -2296,84 +2348,84 @@ msgstr ""
 "%s und anderen."
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:265
+#: main.cc:269
 #, c-format
 msgid "Usage: %s [OPTION]... FILE..."
 msgstr "Aufruf: %s [OPTION]... DATEI..."
 
-#: main.cc:267
+#: main.cc:271
 msgid "Typeset music and/or produce MIDI from FILE."
 msgstr "Musiksatz und/oder MIDI aus DATEI erzeugen."
 
-#: main.cc:269
+#: main.cc:273
 msgid "LilyPond produces beautiful music notation."
 msgstr "LilyPond erzeugt ansprechenden Notensatz."
 
-#: main.cc:271
+#: main.cc:275
 #, c-format
 msgid "For more information, see %s"
 msgstr "Für weitere Informationen siehe %s"
 
-#: main.cc:273
+#: main.cc:277
 msgid "Options:"
 msgstr "Optionen:"
 
-#: main.cc:327
+#: main.cc:331
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr "%d Argumente mit Kerker erwartet, %u gefunden"
 
-#: main.cc:341
+#: main.cc:345
 #, c-format
 msgid "no such user: %s"
 msgstr "kein solcher Benutzer: %s"
 
-#: main.cc:343
+#: main.cc:347
 #, 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:358
+#: main.cc:362
 #, c-format
 msgid "no such group: %s"
 msgstr "keine solche Gruppe: %s"
 
-#: main.cc:360
+#: main.cc:364
 #, 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:368
+#: main.cc:372
 #, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr "kein chroot möglich nach: %s: %s"
 
-#: main.cc:375
+#: main.cc:379
 #, c-format
 msgid "cannot change group id to: %d: %s"
 msgstr "Gruppen-ID kann nicht geändert werden in: %d: %s"
 
-#: main.cc:381
+#: main.cc:385
 #, c-format
 msgid "cannot change user id to: %d: %s"
 msgstr "Benutzer-ID kann nicht geändert werden in: %d: %s"
 
-#: main.cc:387
+#: main.cc:391
 #, c-format
 msgid "cannot change working directory to: %s: %s"
 msgstr "aktuelles Verzeichnis kann nicht geändert werden in: %s: %s"
 
-#: main.cc:628
+#: main.cc:631
 #, c-format
 msgid "exception caught: %s"
 msgstr "Ausnahme gefangen: %s"
 
-#: key-signature-interface.cc:78
+#: key-signature-interface.cc:77
 #, c-format
 msgid "No glyph found for alteration: %s"
 msgstr "Kein Glyph für Vorzeichen gefunden: %s"
 
-#: key-signature-interface.cc:88
+#: key-signature-interface.cc:87
 msgid "alteration not found"
 msgstr "Alterierung nicht gefunden"
 
@@ -2382,29 +2434,29 @@ msgstr "Alterierung nicht gefunden"
 msgid "dot `%s' not found"
 msgstr "Punkt »%s« nicht gefunden"
 
-#: translator.cc:359
+#: translator.cc:356
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
 msgstr "Zwei gleichzeitige %s-Ereignisse, dieses wird verworfen"
 
-#: translator.cc:360
+#: translator.cc:357
 #, c-format
 msgid "Previous %s event here"
 msgstr "Vorheriges %s-Ereignis hier"
 
-#: glissando-engraver.cc:105
+#: glissando-engraver.cc:156
 msgid "unterminated glissando"
 msgstr "unbegrenztes Glissando."
 
-#: text-spanner-engraver.cc:73
+#: text-spanner-engraver.cc:72
 msgid "cannot find start of text spanner"
 msgstr "Anfang der Textklammer kann nicht gefunden werden"
 
-#: text-spanner-engraver.cc:86
+#: text-spanner-engraver.cc:85
 msgid "already have a text spanner"
 msgstr "Textklammer bereits vorhanden"
 
-#: text-spanner-engraver.cc:132
+#: text-spanner-engraver.cc:130
 msgid "unterminated text spanner"
 msgstr "unbegrenzte Textklammer"
 
@@ -2423,12 +2475,12 @@ msgstr "Schlüssel »%s« nicht gefunden"
 msgid "strange time signature found: %d/%d"
 msgstr "seltsame Taktart gefunden: %d/%d"
 
-#: lily-parser-scheme.cc:82
+#: lily-parser-scheme.cc:83
 #, c-format
 msgid "Changing working directory to: `%s'"
 msgstr "Aktuelles Verzeichnis wird zu »%s« geändert"
 
-#: lily-parser-scheme.cc:99
+#: lily-parser-scheme.cc:100
 #, c-format
 msgid "cannot find init file: `%s'"
 msgstr "Init-Datei kann nicht gefunden werden: »%s«"
@@ -2438,7 +2490,7 @@ msgstr "Init-Datei kann nicht gefunden werden: »%s«"
 msgid "Processing `%s'"
 msgstr "»%s« wird verarbeitet"
 
-#: lily-parser-scheme.cc:204
+#: lily-parser-scheme.cc:203
 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."
 
@@ -2447,7 +2499,7 @@ msgstr "ly:parser-parse-string ist nur mit einem neuen Parser gültig.  Anstelle
 msgid "custos `%s' not found"
 msgstr "Custos »%s« nicht gefunden"
 
-#: program-option-scheme.cc:237
+#: program-option-scheme.cc:232
 #, c-format
 msgid "no such internal option: %s"
 msgstr "keine solche interne Option: %s"
@@ -2456,10 +2508,15 @@ msgstr "keine solche interne Option: %s"
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr "Zusammenstoß von Pausen kann nicht aufgelöst werden: Richtung von Pausen nicht gesetzt"
 
-#: rest-collision.cc:160 rest-collision.cc:205
+#: rest-collision.cc:160 rest-collision.cc:275
 msgid "too many colliding rests"
 msgstr "zu viele kollidierende Pausen"
 
+#: pdf-scheme.cc:50
+#, c-format
+msgid "Conversion of string `%s' to UTF-16be failed: %s"
+msgstr "Konversion der Zeichenkette »%s« nach UTF16be fehlgeschlagen: %s"
+
 #: episema-engraver.cc:75
 msgid "already have an episema"
 msgstr "Episema bereits vorhanden"
@@ -2477,57 +2534,57 @@ msgstr "unbegrenztes Episema"
 msgid "%d: %s"
 msgstr "%d: %s"
 
-#: grob-property.cc:173
+#: grob-property.cc:169
 #, c-format
 msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
 msgstr "Zyklische Abhängigkeit: Laufende Verarbeitung für #'%s (%s) gefunden"
 
-#: relocate.cc:54
+#: relocate.cc:53
 #, c-format
 msgid "Setting %s to %s"
 msgstr "%s wird auf %s gesetzt"
 
-#: relocate.cc:74
+#: relocate.cc:73
 #, c-format
 msgid "no such file: %s for %s"
 msgstr "keine solche Datei: %s für %s"
 
-#: relocate.cc:84 relocate.cc:102
+#: relocate.cc:83 relocate.cc:101
 #, c-format
 msgid "no such directory: %s for %s"
 msgstr "kein solches Verzeichnis: %s für %s"
 
-#: relocate.cc:94
+#: relocate.cc:93
 #, c-format
 msgid "%s=%s (prepend)\n"
 msgstr "%s=%s (voranstellen)\n"
 
-#: relocate.cc:124
+#: relocate.cc:123
 #, c-format
 msgid "not relocating, no %s/ or current/ found under %s"
 msgstr "keine Verlagerung, kein %s/ oder current/ unter %s gefunden"
 
-#: relocate.cc:135
+#: relocate.cc:134
 #, c-format
 msgid "Relocation: compile datadir=%s, new datadir=%s"
 msgstr "Verlagerung: Kompilier-Datenverzeichnis=%s, neues Datenverzeichnis=%s"
 
-#: relocate.cc:148
+#: relocate.cc:147
 #, c-format
 msgid "Relocation: framework_prefix=%s"
 msgstr "Verlagerung: framework_prefix=%s"
 
-#: relocate.cc:189
+#: relocate.cc:188
 #, c-format
 msgid "Relocation: is absolute: argv0=%s"
 msgstr "Verlagerung: ist absolut: argv0=%s"
 
-#: relocate.cc:196
+#: relocate.cc:195
 #, c-format
 msgid "Relocation: from cwd: argv0=%s"
 msgstr "Verlagerung: von cwd: argv0=%s"
 
-#: relocate.cc:213
+#: relocate.cc:212
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
@@ -2536,25 +2593,45 @@ msgstr ""
 "Verlagerung: von PATH=%s\n"
 "argv0=%s"
 
-#: relocate.cc:240
+#: relocate.cc:239
 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
 msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden"
 
-#: relocate.cc:367
+#: relocate.cc:365
 #, c-format
 msgid "Relocation file: %s"
 msgstr "Verlagerungsdatei: %s"
 
-#: relocate.cc:373 source-file.cc:65
+#: relocate.cc:371 source-file.cc:65
 #, c-format
 msgid "cannot open file: `%s'"
 msgstr "Datei kann nicht geöffnet werden: »%s«"
 
-#: relocate.cc:403
+#: relocate.cc:401
 #, c-format
 msgid "Unknown relocation command %s"
 msgstr "Unbekannter Verlagerungsbefehl %s"
 
+#: gregorian-ligature-engraver.cc:70
+#, c-format
+msgid "\\%s ignored"
+msgstr "\\%s ignoriert"
+
+#: gregorian-ligature-engraver.cc:75
+#, c-format
+msgid "implied \\%s added"
+msgstr "implizites \\%s hinzugefügt"
+
+#. ligature may not start with 2nd head of pes or flexa
+#: gregorian-ligature-engraver.cc:224
+msgid "cannot apply `\\~' on first head of ligature"
+msgstr "»\\~« kann nicht auf erste Note der Ligatur angewendet werden"
+
+#. (pitch == prev_pitch)
+#: gregorian-ligature-engraver.cc:236
+msgid "cannot apply `\\~' on heads with identical pitch"
+msgstr "»\\~« kann nicht auf Noten mit gleicher Tonhöhe angewendet werden"
+
 #: translator-group.cc:188
 #, c-format
 msgid "cannot find: `%s'"
@@ -2564,31 +2641,31 @@ msgstr "»%s« kann nicht gefunden werden"
 msgid "unterminated phrasing slur"
 msgstr "nicht beendeter Phrasierungsbogen"
 
-#: lyric-engraver.cc:176
+#: phrasing-slur-engraver.cc:182
+msgid "cannot end phrasing slur"
+msgstr "Phrasierungsbogen kann nicht beendet werden"
+
+#: phrasing-slur-engraver.cc:196
+msgid "already have phrasing slur"
+msgstr "habe bereits einen Phrasierungsbogen"
+
+#: lyric-engraver.cc:186
 msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
 msgstr "Textsilbe hat keine Note. \\lyricsto oder associatedVoice verwenden."
 
-#: page-breaking.cc:248
+#: page-breaking.cc:274
 msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
 msgstr "ignoriere min-systems-per-page und max-systems-per-page weil systems-per-page definiert wurde"
 
-#: page-breaking.cc:253
+#: page-breaking.cc:279
 msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
 msgstr "min-systems-per-page ist größer als max-systems-per-page, beide Werte werden ignoriert"
 
-#: performance.cc:54
+#: performance.cc:55
 msgid "Track..."
 msgstr "Spur..."
 
-#: performance.cc:83
-msgid "MIDI channel wrapped around"
-msgstr "MIDI-Kanal zurückgesprungen"
-
-#: performance.cc:84
-msgid "remapping modulo 16"
-msgstr "modulo 16 neu zuordnen"
-
-#: performance.cc:111
+#: performance.cc:85
 #, c-format
 msgid "MIDI output to `%s'..."
 msgstr "MIDI-Ausgabe nach »%s«..."
@@ -2597,26 +2674,6 @@ msgstr "MIDI-Ausgabe nach »%s«..."
 msgid "No tuplet to end"
 msgstr "Keine rhythmische Gruppe zu beenden"
 
-#: gregorian-ligature-engraver.cc:70
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignoriert"
-
-#: gregorian-ligature-engraver.cc:75
-#, c-format
-msgid "implied \\%s added"
-msgstr "implizites \\%s hinzugefügt"
-
-#. ligature may not start with 2nd head of pes or flexa
-#: gregorian-ligature-engraver.cc:224
-msgid "cannot apply `\\~' on first head of ligature"
-msgstr "»\\~« kann nicht auf erste Note der Ligatur angewendet werden"
-
-#. (pitch == prev_pitch)
-#: gregorian-ligature-engraver.cc:236
-msgid "cannot apply `\\~' on heads with identical pitch"
-msgstr "»\\~« kann nicht auf Noten mit gleicher Tonhöhe angewendet werden"
-
 #: chord-tremolo-engraver.cc:88
 msgid "No tremolo to end"
 msgstr "Kein Tremolo zu beenden"
@@ -2655,20 +2712,20 @@ msgstr "Symbol-Argumente für \\override und \\revert benötigt"
 msgid "expected to read %d characters, got %d"
 msgstr "%d Zeichen erwartet, %d erhalten"
 
-#: axis-group-interface.cc:631
+#: axis-group-interface.cc:627
 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«"
 
-#: coherent-ligature-engraver.cc:111
+#: coherent-ligature-engraver.cc:110
 #, c-format
 msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr "Coherent_ligature_engraver: setze »spacing-increment=0.01«: ptr=%ul"
 
-#: percent-repeat-engraver.cc:148
+#: percent-repeat-engraver.cc:147
 msgid "unterminated percent repeat"
 msgstr "unbegrenzte Prozentwiederholung"
 
-#: note-head.cc:76
+#: note-head.cc:75
 #, c-format
 msgid "none of note heads `%s' or `%s' found"
 msgstr "Keinen der Notenköpfe »%s« und »%s« gefunden"
@@ -2686,12 +2743,12 @@ msgstr "Interpretation für Artikulation unbekannt:"
 msgid " scheme encoding: "
 msgstr " Scheme-Kodierung: "
 
-#: all-font-metrics.cc:156
+#: all-font-metrics.cc:153
 #, c-format
 msgid "cannot find font: `%s'"
 msgstr "Schriftart kann nicht gefunden werden: »%s«"
 
-#: property-iterator.cc:85
+#: property-iterator.cc:93
 #, c-format
 msgid "not a grob name, `%s'"
 msgstr "Kein Name für grafische Objekte (grob): »%s«"
@@ -2701,16 +2758,16 @@ msgstr "Kein Name für grafische Objekte (grob): »%s«"
 msgid "barcheck failed at: %s"
 msgstr "Taktüberprüfung gescheitert bei: %s"
 
-#: stem.cc:116
+#: stem.cc:114
 msgid "weird stem size, check for narrow beams"
 msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen"
 
-#: stem.cc:657
+#: stem.cc:652
 #, c-format
 msgid "flag `%s' not found"
 msgstr "Fähnchen »%s« nicht gefunden"
 
-#: stem.cc:673
+#: stem.cc:668
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr "Fähnchenstrich »%s« nicht gefunden"
@@ -2780,23 +2837,23 @@ msgstr "\tSeitenanzahl: %d"
 msgid "\tprevious break: %d"
 msgstr "\tvorheriger Umbruch: %d"
 
-#: lily-parser.cc:106
+#: lily-parser.cc:105
 msgid "Parsing..."
 msgstr "Analysieren..."
 
-#: lily-parser.cc:134
+#: lily-parser.cc:133
 msgid "braces do not match"
 msgstr "Klammern passen nicht zueinander"
 
-#: score.cc:178
+#: score.cc:176
 msgid "already have music in score"
 msgstr "es sind bereits Noten in der Partitur"
 
-#: score.cc:179
+#: score.cc:177
 msgid "this is the previous music"
 msgstr "Dies sind die vorhergehenden Noten"
 
-#: score.cc:184
+#: score.cc:182
 msgid "errors found, ignoring music expression"
 msgstr "Fehler gefunden, musikalischer Ausdruck wird ignoriert"
 
@@ -2857,17 +2914,17 @@ msgstr "Schriftarttabelle kann nicht geladen werden: %s"
 msgid "FreeType error: %s"
 msgstr "FreeType-Fehler: %s"
 
-#: open-type-font.cc:111
+#: open-type-font.cc:110
 #, c-format
 msgid "unsupported font format: %s"
 msgstr "nicht unterstütztes Schriftartformat: %s"
 
-#: open-type-font.cc:113
+#: open-type-font.cc:112
 #, c-format
 msgid "error reading font file %s: %s"
 msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s"
 
-#: open-type-font.cc:188
+#: open-type-font.cc:187
 #, c-format
 msgid "FT_Get_Glyph_Name () Freetype error: %s"
 msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s"
@@ -2882,118 +2939,118 @@ msgstr "Es kann nicht zum Schreiben geöffnet werden: %s: %s"
 msgid "cannot write to file: `%s'"
 msgstr "Es kann nicht in Datei geschrieben werden: »%s«"
 
-#: parser.yy:820
+#: parser.yy:825
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "\\paper kann nicht in \\source verwendet werden; stattdessen \\layout verwenden"
 
-#: parser.yy:844
+#: parser.yy:849
 msgid "need \\paper for paper block"
 msgstr "Für Papier-Block wird \\paper benötigt"
 
-#: parser.yy:1363
+#: parser.yy:1369
 msgid "only \\consists takes non-string argument."
 msgstr "nur \\consists versteht ein Nicht-Zeichenketten-Argument"
 
-#: parser.yy:1376
+#: parser.yy:1382
 msgid "Grob name should be alphanumeric"
 msgstr "Grob-Name sollte alphanumerisch sein"
 
-#: parser.yy:1685
+#: parser.yy:1697
 msgid "second argument must be pitch list"
 msgstr "zweites Argument muss eine Tonhöhenliste sein"
 
-#: parser.yy:1716 parser.yy:1721 parser.yy:2194
+#: parser.yy:1728 parser.yy:1733 parser.yy:2206
 msgid "have to be in Lyric mode for lyrics"
 msgstr "muss in Liedtextmodus sein um Liedtext setzen zu können"
 
-#: parser.yy:1818
+#: parser.yy:1830
 msgid "expecting string as script definition"
 msgstr "Zeichenkette als Skriptdefinition erwartet"
 
-#: parser.yy:1973 parser.yy:2024
+#: parser.yy:1985 parser.yy:2036
 #, c-format
 msgid "not a duration: %d"
 msgstr "keine gültige Dauer: %d"
 
-#: parser.yy:2148
+#: parser.yy:2160
 msgid "have to be in Note mode for notes"
 msgstr "Muss im Notenmodus sein für Noten"
 
-#: parser.yy:2209
+#: parser.yy:2221
 msgid "have to be in Chord mode for chords"
 msgstr "Muss im Akkordmodus sein für Akkorde"
 
-#: lexer.ll:190
+#: lexer.ll:192
 msgid "stray UTF-8 BOM encountered"
 msgstr "verirrtes UTF-8 BOM gefunden"
 
-#: lexer.ll:194
+#: lexer.ll:196
 msgid "Skipping UTF-8 BOM"
 msgstr "UTF-8 BOM wird übersprungen"
 
-#: lexer.ll:249
+#: lexer.ll:251
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Eingabe in »%s« umbenannt"
 
-#: lexer.ll:266
+#: lexer.ll:268
 msgid "quoted string expected after \\version"
 msgstr "zitierte Zeichenkette hinter \\version erwartet"
 
-#: lexer.ll:270
+#: lexer.ll:272
 msgid "quoted string expected after \\sourcefilename"
 msgstr "zitierte Zeichenkette hinter \\sourcefilename erwartet"
 
-#: lexer.ll:274
+#: lexer.ll:276
 msgid "integer expected after \\sourcefileline"
 msgstr "Ganzzahl hinter \\sourcefilename erwartet"
 
-#: lexer.ll:287
+#: lexer.ll:289
 msgid "EOF found inside a comment"
 msgstr "EOF innerhalb eines Kommentares gefunden"
 
-#: lexer.ll:302
+#: lexer.ll:304
 msgid "\\maininput not allowed outside init files"
 msgstr "\\maininput ist außerhalb von Init-Dateien nicht erlaubt"
 
-#: lexer.ll:326
+#: lexer.ll:328
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "falscher oder ungültiger Bezeichner: »%s«"
 
 #. backup rule
-#: lexer.ll:335
+#: lexer.ll:337
 msgid "end quote missing"
 msgstr "schließendes Anführungszeichen fehlt"
 
-#: lexer.ll:485
+#: lexer.ll:487
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr "Klammer am Ende von Liedtext gefunden. Haben Sie ein Leerzeichen vergessen?"
 
-#: lexer.ll:595
+#: lexer.ll:597
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr "Klammer am Ende des Auszugs gefunden. Haben Sie ein Leerzeichen vergessen?"
 
-#: lexer.ll:699
+#: lexer.ll:701
 #, c-format
 msgid "invalid character: `%c'"
 msgstr "Ungültiges Zeichen: »%c«"
 
-#: lexer.ll:814 lexer.ll:815
+#: lexer.ll:822 lexer.ll:823
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "Ungültige Fluchtsequenz: »\\%s«"
 
-#: lexer.ll:924 lexer.ll:925
+#: lexer.ll:932 lexer.ll:933
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "Datei zu alt: %s (älteste unterstützte: %s)"
 
-#: lexer.ll:925 lexer.ll:926
+#: lexer.ll:933 lexer.ll:934
 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:931 lexer.ll:932
+#: lexer.ll:939 lexer.ll:940
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "Programm zu alt: %s (Datei erfordert: %s)"
@@ -3008,7 +3065,12 @@ msgstr "~S wird verarbeitet..."
 msgid "Writing ~S..."
 msgstr "~S wird geschrieben..."
 
-#: documentation-lib.scm:198
+#: documentation-lib.scm:184
+#, scheme-format
+msgid "cannot find description for property `~S' (~S)"
+msgstr "Beschreibung für Eigenschaft ~S' (~S) kann nicht gefunden werden"
+
+#: documentation-lib.scm:205
 #, scheme-format
 msgid "cannot find description for property ~S (~S)"
 msgstr "Beschreibung für Eigenschaft ~S (~S) kann nicht gefunden werden"
@@ -3049,23 +3111,23 @@ msgstr "~a wird geschrieben..."
 msgid "symbol ~S redefined"
 msgstr "Symbol ~S redefiniert"
 
-#: paper.scm:115
+#: paper.scm:117
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size: Nicht auf höchster Ebene im Gültigkeitsbereich"
 
-#: paper.scm:296
+#: paper.scm:301
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Dies ist kein \\layout {} Objekt, ~S"
 
-#: paper.scm:308
+#: paper.scm:313
 #, scheme-format
 msgid "Unknown paper size: ~a"
 msgstr "Unbekannte Papiergröße: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:323
+#: paper.scm:328
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "#(set-paper-size ..) muss innerhalb von \\paper { ... } verwendet werden"
 
@@ -3087,20 +3149,20 @@ msgstr "~A kann nicht gefunden werden"
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr "falscher Typ für Argument ~a; ~a erwartet, ~s gefunden"
 
-#: lily.scm:716
+#: lily.scm:710
 msgid "Compilation successfully completed"
 msgstr "Kompilation erfolgreich beendet"
 
-#: lily.scm:717
+#: lily.scm:711
 msgid "Compilation completed with warnings or errors"
 msgstr "Kompilation mit Warnungen bzw. Fehlermeldungen beendet"
 
-#: lily.scm:779
+#: lily.scm:773
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
 msgstr "Auftrag ~a mit Signal ~a beendet"
 
-#: lily.scm:782
+#: lily.scm:776
 #, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
@@ -3109,17 +3171,17 @@ msgstr ""
 "Logdatei ~a (Ende ~a):\n"
 "~a"
 
-#: lily.scm:804 lily.scm:882
+#: lily.scm:798 lily.scm:876
 #, scheme-format
 msgid "failed files: ~S"
 msgstr "gescheiterte Dateien: ~S"
 
-#: lily.scm:873
+#: lily.scm:867
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr "Ausgabeumleitung nach ~a..."
 
-#: lily.scm:892
+#: lily.scm:886
 #, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr "»~a« wird aufgerufen...\n"
@@ -3242,12 +3304,12 @@ msgstr "alte relative Kompatibilität nicht verwendet"
 msgid "Found infinity or nan in output.  Substituting 0.0"
 msgstr "Unendlich oder nan in Ausgabe gefunden. Wird durch 0.0 ersetzt"
 
-#: output-ps.scm:289 output-svg.scm:550
+#: output-ps.scm:299 output-svg.scm:550
 #, scheme-format
 msgid "unknown line-cap-style: ~S"
 msgstr "unbekannter line-cap-style: ~S"
 
-#: output-ps.scm:294 output-svg.scm:556
+#: output-ps.scm:304 output-svg.scm:556
 #, scheme-format
 msgid "unknown line-join-style: ~S"
 msgstr "unbekannter line-join-style: ~S"
@@ -3290,50 +3352,54 @@ msgstr "Benutze Notenbezeichnung »~a«..."
 msgid "Could not find language `~a'.  Ignoring."
 msgstr "Konnte Sprache »~a« nicht finden.  Wird ignoriert."
 
-#: define-music-types.scm:740
+#: define-music-types.scm:747
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "Symbol erwartet: ~S"
 
-#: define-music-types.scm:743
+#: define-music-types.scm:750
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "Musikobjekt kann nicht gefunden werden: ~S"
 
-#: define-music-types.scm:762
+#: define-music-types.scm:769
 #, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "unbekannter Wiederholungstyp »~S«"
 
-#: define-music-types.scm:763
+#: define-music-types.scm:770
 msgid "See define-music-types.scm for supported repeats"
 msgstr "Siehe define-music-types.scm für unterstützte Wiederholungen"
 
-#: translation-functions.scm:341
+#: translation-functions.scm:350
 #, scheme-format
 msgid "Negative fret for pitch ~a on string ~a"
 msgstr "Negativer Bund für Tonhöhe ~a auf Saite ~a"
 
-#: translation-functions.scm:385
+#: translation-functions.scm:401
 #, scheme-format
 msgid "No open string for pitch ~a"
 msgstr "Keine leere Saite für Tonhöhe ~a"
 
-#: translation-functions.scm:400
+#: translation-functions.scm:416 translation-functions.scm:428
 #, scheme-format
 msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
 msgstr "Geforderte Saite für Tonhöhe erfordert negativen Bund: Saite ~a Tonhöhe ~a"
 
-#: translation-functions.scm:401
-msgid "Ignoring string request."
-msgstr "Saiten-Anforderung wird ignoriert."
+#: translation-functions.scm:419
+msgid "Ignoring string request and recalculating."
+msgstr "Saiten-Anforderung wird ignoriert und neu berechnet"
+
+#: translation-functions.scm:431
+msgid "Ignoring note in tablature."
+msgstr "Note in der Tabulatur wird ignoriert."
 
-#: translation-functions.scm:414
+#: translation-functions.scm:454
 #, scheme-format
 msgid "No string for pitch ~a (given frets ~a)"
 msgstr "Keine Saite für Tonhöhe ~a (Bund ~a angegeben)"
 
-#: translation-functions.scm:515
+#: translation-functions.scm:559
 #, scheme-format
 msgid ""
 "No label for fret ~a (on string ~a);\n"
@@ -3362,7 +3428,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:669
+#: framework-ps.scm:686
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3400,7 +3466,7 @@ msgstr "mehr Alternativen als Wiederholungen. Überschüssige Alternativen werde
 msgid "invalid tremolo repeat count: ~a"
 msgstr "ungültige Tremolo-Wiederholung: ~a"
 
-#: music-functions.scm:618
+#: music-functions.scm:619
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "Musik erwartet: ~S"
@@ -3411,21 +3477,21 @@ msgstr "Musik erwartet: ~S"
 msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
 msgstr "Taktüberprüfung gescheitert. bei ~a erwartet, stattdessen bei ~a"
 
-#: music-functions.scm:846
+#: music-functions.scm:845
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "zitierte Musik »~S« kann nicht gefunden werden"
 
-#: music-functions.scm:982
+#: music-functions.scm:979
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr "Füge @var{octave-shift} zur Oktave von @var{pitch} hinzu."
 
-#: music-functions.scm:1037
+#: music-functions.scm:1039
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "Unbekannter Oktaven-Typ: »~S«"
 
-#: music-functions.scm:1038
+#: music-functions.scm:1040
 msgid "Defaulting to 'any-octave."
 msgstr "Setze Standard 'any-octave"
 
@@ -3473,26 +3539,26 @@ msgstr "Kein Textbeschriftungsbefehl: ~A"
 msgid "~a exited with status: ~S"
 msgstr "~a mit Rückgabewert ~S beendet"
 
-#: define-markup-commands.scm:803
+#: define-markup-commands.scm:883
 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:2404
+#: define-markup-commands.scm:2561
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "Kann kein Zeichen ~a finden"
 
-#: define-markup-commands.scm:2830
+#: define-markup-commands.scm:2987
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "Keine Klammer in Größe ~S pt gefunden"
 
-#: define-markup-commands.scm:2831
+#: define-markup-commands.scm:2988
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr "Setze Standard ~S pt"
 
-#: define-markup-commands.scm:2984
+#: define-markup-commands.scm:3141
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "keine gültige Dauer: ~a"
index 032d2732db91902765ced2561fd3a23715e614b0..070a7ded050d98d78d7bdf62796b3a59eb0f46d2 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -1,4 +1,4 @@
-# translation of lilypond-2.13.53.po to Español
+# translation of lilypond-2.15.9.po to Español
 # Spanish translation of GNU Lilypond - http://lilypond.org
 # Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 #
 # This file is distributed under the same license as the lilypond package.
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond-2.13.53\n"
+"Project-Id-Version: lilypond-2.15.9\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2011-03-02 10:34+0100\n"
-"PO-Revision-Date: 2011-03-03 15:03+0100\n"
+"POT-Creation-Date: 2011-08-02 19:43+0200\n"
+"PO-Revision-Date: 2011-08-11 17:38+0200\n"
 "Last-Translator: Francisco Vila <francisco.vila@hispalinux.es>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "Language: es\n"
@@ -91,8 +91,8 @@ msgstr "Consulte el manual para ver los detalles, y efectúe una actualización
 msgid "%s has been replaced by %s"
 msgstr "%s se ha sustituido por %s"
 
-#: convertrules.py:24 lilylib.py:78 musicexp.py:17 convert-ly.py:64 warn.cc:66
-#: input.cc:109
+#: convertrules.py:24 lilylib.py:85 musicexp.py:17 convert-ly.py:64 warn.cc:66
+#: input.cc:108
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "advertencia: %s"
@@ -112,6 +112,7 @@ msgstr "\\textstyle en desuso, sintaxis nueva para \\key"
 
 #: convertrules.py:86 convertrules.py:1905 convertrules.py:2084
 #: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862
+#: convertrules.py:3206
 msgid "bump version for release"
 msgstr "actualizar la versión para el lanzamiento"
 
@@ -761,6 +762,22 @@ msgstr "Diagramas de viento madera: cambios en el diagrama de clarinete."
 msgid "woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"
 msgstr "Diagramas de viento madera: se cambia la digitación del clarinete para que refleje la anatomía real del instrumento.\n"
 
+#: convertrules.py:3211
+msgid "Change in internal property for MultiMeasureRest"
+msgstr "Cambio en propiedad interna de MultiMeasureRest"
+
+#: convertrules.py:3214
+msgid "use-breve-rest.  This internal property has been replaced by round-to-longer-rest and usable-duration-logs.\n"
+msgstr "use-breve-rest.  Esta propiedad interna se ha sustituido por round-to-longer-rest y usable-duration-logs.\n"
+
+#: convertrules.py:3219
+msgid "Handling of non-automatic footnotes."
+msgstr "Manejo de notas al pie no automáticas."
+
+#: convertrules.py:3223
+msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n"
+msgstr "Si está utilizando notas al pie no automáticas, asegúrese de establecer footnote-auto-numbering = ##f en el bloque paper.\n"
+
 #: book_base.py:24
 #, python-format
 msgid "file not found: %s"
@@ -770,23 +787,28 @@ msgstr "archivo no encontrado: %s"
 msgid "Output function not implemented"
 msgstr "Función de salida sin implementar"
 
-#: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115
-#: input.cc:123
+#: lilylib.py:88 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:114
+#: input.cc:122
 #, c-format, python-format
 msgid "error: %s"
 msgstr "error: %s"
 
-#: lilylib.py:124 lilylib.py:175
+#: lilylib.py:131
+#, python-format
+msgid "Processing %s.ly"
+msgstr "Procesando «%s.ly»"
+
+#: lilylib.py:135 lilylib.py:198
 #, python-format
 msgid "Invoking `%s'"
 msgstr "Invocando «%s»"
 
-#: lilylib.py:126 lilylib.py:177
+#: lilylib.py:137 lilylib.py:200
 #, python-format
 msgid "Running %s..."
 msgstr "Ejecutando %s..."
 
-#: lilylib.py:253
+#: lilylib.py:276
 #, python-format
 msgid "Usage: %s"
 msgstr "uso: %s"
@@ -847,118 +869,118 @@ msgstr "No se ha podido encontrar el instrumento con el ID=%s\n"
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr "no se encuentra \\begin{document} en el documento de LaTeX"
 
-#: musicxml2ly.py:223
+#: musicxml2ly.py:224
 #, python-format
 msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
 msgstr "Se encontró un archivo creado por %s, que contiene información de barrado errónea. Toda la información de barrado del archivo MusicXML se ignorará"
 
-#: musicxml2ly.py:239 musicxml2ly.py:241
+#: musicxml2ly.py:240 musicxml2ly.py:242
 #, python-format
 msgid "Unprocessed PartGroupInfo %s encountered"
 msgstr "Se ha encontrado el PartGroupInfo sin procesar %s"
 
-#: musicxml2ly.py:494
+#: musicxml2ly.py:495
 #, python-format
 msgid "Encountered note at %s without type and duration (=%s)"
 msgstr "Se ha encontrado una nota en %s sin typo y duración (=%s)"
 
-#: musicxml2ly.py:514
+#: musicxml2ly.py:515
 #, python-format
 msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
 msgstr "Se ha encontrado una duración racional con denominador %s, no se puede convertir a duracion de lilypond"
 
-#: musicxml2ly.py:761
+#: musicxml2ly.py:762
 msgid "Unable to extract key signature!"
 msgstr "¡No se ha podido extraer la armadura de la tonalidad!"
 
-#: musicxml2ly.py:788
+#: musicxml2ly.py:789
 #, python-format
 msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
 msgstr "¡Modo %s desconocido, se esperaba «major», «minor» o un modo eclesiástico!"
 
-#: musicxml2ly.py:926
+#: musicxml2ly.py:927
 #, python-format
 msgid "Encountered unprocessed marker %s\n"
 msgstr "Se ha encontrado el marcador sin procesar %s\n"
 
-#: musicxml2ly.py:1020
+#: musicxml2ly.py:1021
 #, python-format
 msgid "unknown span event %s"
 msgstr "evento de extensión %s desconocido"
 
-#: musicxml2ly.py:1030
+#: musicxml2ly.py:1031
 #, python-format
 msgid "unknown span type %s for %s"
 msgstr "tipo de extensión %s deconocido para %s"
 
-#: musicxml2ly.py:1450
+#: musicxml2ly.py:1451
 msgid "Unknown metronome mark, ignoring"
 msgstr "Marca de metrónomo desconocida, se ignora"
 
 #. TODO: Implement the other (more complex) way for tempo marks!
-#: musicxml2ly.py:1455
+#: musicxml2ly.py:1456
 msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
 msgstr "Las marcas metronómicas con relaciones complejas (<metronome-note> en MusicXML) no se encuentran implementadas aún."
 
-#: musicxml2ly.py:1657
+#: musicxml2ly.py:1658
 #, python-format
 msgid "Unable to convert chord type %s to lilypond."
 msgstr "No se pudo convertir el acorde de tipo %s a lilypond."
 
-#: musicxml2ly.py:1806
+#: musicxml2ly.py:1807
 #, python-format
 msgid "drum %s type unknown, please add to instrument_drumtype_dict"
 msgstr "tipo de percusión %s desconocido, añádalo al diccionario instrument_drumtype_dict"
 
-#: musicxml2ly.py:1810
+#: musicxml2ly.py:1811
 msgid "cannot find suitable event"
 msgstr "no se encuentra un evento adecuado"
 
-#: musicxml2ly.py:1958
+#: musicxml2ly.py:1959
 #, python-format
 msgid "Negative skip %s (from position %s to %s)"
 msgstr "Desplazamiento negativo %s (desde la posición %s hasta la %s)"
 
-#: musicxml2ly.py:2099
+#: musicxml2ly.py:2100
 #, python-format
 msgid "Negative skip found: from %s to %s, difference is %s"
 msgstr "Se ha encontrado un desplazamiento negativo: desde %s hasta %s, la diferencia es %s"
 
-#: musicxml2ly.py:2180
+#: musicxml2ly.py:2181
 #, python-format
 msgid "unexpected %s; expected %s or %s or %s"
 msgstr "%s inesperado; se esperaba %s o %s o %s"
 
-#: musicxml2ly.py:2286
+#: musicxml2ly.py:2287
 msgid "Encountered closing slur, but no slur is open"
 msgstr "Se ha encontrado el cierre de una ligadura de expresión, pero no hay ninguna abierta"
 
-#: musicxml2ly.py:2289
+#: musicxml2ly.py:2290
 msgid "Cannot have two simultaneous (closing) slurs"
 msgstr "No puede haber dos ligaduras de expresión (cerrándose) simultáneas"
 
-#: musicxml2ly.py:2298
+#: musicxml2ly.py:2299
 msgid "Cannot have a slur inside another slur"
 msgstr "No puede haber una ligadura de expresión dentro de otra"
 
-#: musicxml2ly.py:2301
+#: musicxml2ly.py:2302
 msgid "Cannot have two simultaneous slurs"
 msgstr "No puede haber dos ligaduras de expresión simultáneas"
 
-#: musicxml2ly.py:2435
+#: musicxml2ly.py:2436
 #, python-format
 msgid "cannot simultaneously have more than one mode: %s"
 msgstr "no puede haber más de un modo al mismo tiempo: %s"
 
-#: musicxml2ly.py:2543
+#: musicxml2ly.py:2544
 msgid "Converting to LilyPond expressions..."
 msgstr "Conversión a expresiones de LilyPond..."
 
-#: musicxml2ly.py:2554
+#: musicxml2ly.py:2555
 msgid "musicxml2ly [OPTION]... FILE.xml"
 msgstr "musicxml2ly [OPCIÓN]... ARCHIVO.xml"
 
-#: musicxml2ly.py:2556
+#: musicxml2ly.py:2557
 msgid ""
 "Convert MusicXML from FILE.xml to LilyPond input.\n"
 "If the given filename is -, musicxml2ly reads from the command line.\n"
@@ -966,12 +988,12 @@ msgstr ""
 "Convertir MusicXML desde ARCHIVO.xml a entrada de LilyPond.\n"
 "SI el nombre de archivo aportado es -, musicxml2ly lee de la línea de órdenes.\n"
 
-#: musicxml2ly.py:2562 midi2ly.py:987 abc2ly.py:1386 lilypond-book.py:140
-#: convert-ly.py:98 etf2ly.py:1202 main.cc:157
+#: musicxml2ly.py:2563 midi2ly.py:1060 abc2ly.py:1386 lilypond-book.py:140
+#: convert-ly.py:98 etf2ly.py:1202 main.cc:159
 msgid "show this help and exit"
 msgstr "mostrar esta ayuda y salir"
 
-#: musicxml2ly.py:2566
+#: musicxml2ly.py:2567
 msgid ""
 "Copyright (c) 2005--2011 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
@@ -983,61 +1005,61 @@ msgstr ""
 "    Jan Nieuwenhuizen <janneke@gnu.org> y\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 
-#: musicxml2ly.py:2580 midi2ly.py:1015 abc2ly.py:1382 lilypond-book.py:212
-#: convert-ly.py:94 etf2ly.py:1206 main.cc:168
+#: musicxml2ly.py:2581 midi2ly.py:1091 abc2ly.py:1382 lilypond-book.py:217
+#: convert-ly.py:94 etf2ly.py:1206 main.cc:174
 msgid "show version number and exit"
 msgstr "mostrar el número de versión y salir"
 
-#: musicxml2ly.py:2585 midi2ly.py:1009 lilypond-book.py:204 main.cc:169
+#: musicxml2ly.py:2586 midi2ly.py:1085 lilypond-book.py:209 main.cc:175
 msgid "be verbose"
 msgstr "ser prolijo"
 
-#: musicxml2ly.py:2591
+#: musicxml2ly.py:2592
 msgid "use lxml.etree; uses less memory and cpu time"
 msgstr "usar lxml.etree; utiliza menos memoria y tiempo de procesador"
 
-#: musicxml2ly.py:2597
+#: musicxml2ly.py:2598
 msgid "input file is a zip-compressed MusicXML file"
 msgstr "el archivo de entrada es un archivo MusicXML comprimido en zip"
 
-#: musicxml2ly.py:2603
+#: musicxml2ly.py:2604
 msgid "convert pitches in relative mode (default)"
 msgstr "convertir las notas al modo relativo (por omisión)"
 
-#: musicxml2ly.py:2608
+#: musicxml2ly.py:2609
 msgid "convert pitches in absolute mode"
 msgstr "convertir las notas al modo absoluto"
 
-#: musicxml2ly.py:2611
+#: musicxml2ly.py:2612
 msgid "LANG"
 msgstr "IDIOMA"
 
-#: musicxml2ly.py:2613
+#: musicxml2ly.py:2614
 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
 msgstr "usar IDIOMA para los nombres de las notas, p.ej. 'espanol' para los nombres de las notas en español"
 
-#: musicxml2ly.py:2619
+#: musicxml2ly.py:2620
 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
 msgstr "no convertir las direcciones (^, _ o -) para las articulaciones, expresiones de dinámica, etc."
 
-#: musicxml2ly.py:2625
+#: musicxml2ly.py:2626
 msgid "do not convert exact vertical positions of rests"
 msgstr "no convertir las posiciones verticales exactas de los silencios"
 
-#: musicxml2ly.py:2631
+#: musicxml2ly.py:2632
 msgid "do not convert the exact page layout and breaks"
 msgstr "no convertir la disposición y saltos de página exactos"
 
-#: musicxml2ly.py:2637
+#: musicxml2ly.py:2638
 msgid "do not convert beaming information, use lilypond's automatic beaming instead"
 msgstr "no convertir la información de barrado, en vez de ello utilizar el barrado automático de lilypond"
 
-#: musicxml2ly.py:2640 midi2ly.py:992 midi2ly.py:997 etf2ly.py:1208
-#: main.cc:161 main.cc:166
+#: musicxml2ly.py:2641 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1208
+#: main.cc:165 main.cc:172
 msgid "FILE"
 msgstr "ARCHIVO"
 
-#: musicxml2ly.py:2645
+#: musicxml2ly.py:2646
 msgid "set output filename to FILE, stdout if -"
 msgstr "establecer el nombre del archivo de salida a ARCHIVO, y a la salida estándar si es -"
 
@@ -1045,149 +1067,161 @@ msgstr "establecer el nombre del archivo de salida a ARCHIVO, y a la salida est
 #. "Report bugs in English via %s",
 #. or if there is a LilyPond users list or forum in your language
 #. "Report bugs in English via %s or in YOUR_LANG via URI"
-#: musicxml2ly.py:2648 midi2ly.py:1028 abc2ly.py:1395 lilypond-book.py:234
-#: convert-ly.py:144 etf2ly.py:1216 main.cc:281
+#: musicxml2ly.py:2649 midi2ly.py:1104 abc2ly.py:1395 lilypond-book.py:239
+#: convert-ly.py:144 etf2ly.py:1216 main.cc:285
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr ""
 "Informe de los fallos en español a http://lists.gnu.org/mailman/listinfo/lilypond-es\n"
 "o en inglés a %s"
 
-#: musicxml2ly.py:2728
+#: musicxml2ly.py:2729
 #, python-format
 msgid "unknown part in part-list: %s"
 msgstr "parte desconocida en la lista part-list: %s"
 
-#: musicxml2ly.py:2790
+#: musicxml2ly.py:2791
 msgid "Input is compressed, extracting raw MusicXML data from stdin"
 msgstr "El archivo de entrada está comprimido, extrayendo los datos de MusicXML en bruto a partir de la entrada estándar"
 
-#: musicxml2ly.py:2793
+#: musicxml2ly.py:2804
 #, python-format
 msgid "Input file %s is compressed, extracting raw MusicXML data"
 msgstr "El archivo de entrada %s está comprimido, extrayendo los datos de MusicXML en bruto"
 
-#: musicxml2ly.py:2823
+#: musicxml2ly.py:2834
 msgid "Reading MusicXML from Standard input ..."
 msgstr "Leyendo MusicXML desde la entrada estándar..."
 
-#: musicxml2ly.py:2825
+#: musicxml2ly.py:2836
 #, python-format
 msgid "Reading MusicXML from %s ..."
 msgstr "Leyendo MusicXML desde %s ..."
 
-#: musicxml2ly.py:2858
+#: musicxml2ly.py:2869
 #, python-format
 msgid "Output to `%s'"
 msgstr "La salida se dirige hacia `%s'"
 
-#: musicxml2ly.py:2925
+#: musicxml2ly.py:2936
 #, python-format
 msgid "Unable to find input file %s"
 msgstr "No se encuentra el archivo de entrada %s"
 
-#: midi2ly.py:90 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s por"
 
-#: midi2ly.py:92 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
 msgid "Distributed under terms of the GNU General Public License."
 msgstr "Distribuido bajo los términos de la Licencia Pública General de GNU."
 
-#: midi2ly.py:93 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
 msgid "It comes with NO WARRANTY."
 msgstr "Se distribuye SIN NINGUNA GARANTÍA."
 
-#: midi2ly.py:99
+#: midi2ly.py:90
 msgid "warning: "
 msgstr "advertencia: "
 
-#: midi2ly.py:102 midi2ly.py:1041
+#: midi2ly.py:93 midi2ly.py:1121
 msgid "error: "
 msgstr "error: "
 
-#: midi2ly.py:103
+#: midi2ly.py:94
 msgid "Exiting... "
 msgstr "Saliendo... "
 
-#: midi2ly.py:960
+#: midi2ly.py:834
+msgid "found more than 5 voices on a staff, expect bad output"
+msgstr "se han encontrado más de 5 voces en una sola pauta, es de esperar un resultado defectuoso"
+
+#: midi2ly.py:1030
 #, python-format
 msgid "%s output to `%s'..."
 msgstr "salida de %s hacia «%s»..."
 
-#: midi2ly.py:972 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#: midi2ly.py:1042 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [OPCIÓN]... ARCHIVO"
 
-#: midi2ly.py:973
+#: midi2ly.py:1043
 #, python-format
 msgid "Convert %s to LilyPond input.\n"
 msgstr "Convertir %s a entrada de LilyPond.\n"
 
-#: midi2ly.py:978
+#: midi2ly.py:1048
 msgid "print absolute pitches"
 msgstr "mostrar las alturas absolutas"
 
-#: midi2ly.py:980 midi2ly.py:1002
+#: midi2ly.py:1050 midi2ly.py:1075
 msgid "DUR"
 msgstr "DURACIÓN"
 
-#: midi2ly.py:981
+#: midi2ly.py:1051
 msgid "quantise note durations on DUR"
 msgstr "cuantizar las duraciones de las notas sobre DURACIÓN"
 
-#: midi2ly.py:984
+#: midi2ly.py:1054
+msgid "debug printing"
+msgstr "impresión de depuración"
+
+#: midi2ly.py:1057
 msgid "print explicit durations"
 msgstr "mostrar las duraciones explícitas"
 
-#: midi2ly.py:989
+#: midi2ly.py:1062
 msgid "prepend FILE to output"
 msgstr "anteponer AARCHIVO a la salida"
 
-#: midi2ly.py:993
+#: midi2ly.py:1066
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
 msgstr "establecer la tonalidad: ALT=+sostenidos|-bemoles; MENOR=1"
 
-#: midi2ly.py:994
+#: midi2ly.py:1067
 msgid "ALT[:MINOR]"
 msgstr "ALT[:MENOR]"
 
-#: midi2ly.py:996 abc2ly.py:1388 etf2ly.py:1207
+#: midi2ly.py:1069 abc2ly.py:1388 etf2ly.py:1207
 msgid "write output to FILE"
 msgstr "escribir la salida en el ARCHIVO"
 
-#: midi2ly.py:999
+#: midi2ly.py:1072
 msgid "preview of first 4 bars"
 msgstr "vista previa de los cuatro primeros compases"
 
-#: midi2ly.py:1001
+#: midi2ly.py:1074
 msgid "quantise note starts on DUR"
 msgstr "cuantizar los comienzos de las notras sobre DURACIÓN"
 
-#: midi2ly.py:1004
+#: midi2ly.py:1078
+msgid "use s instead of r for rests"
+msgstr "use s en lugar de r para silencios"
+
+#: midi2ly.py:1080
 msgid "DUR*NUM/DEN"
 msgstr "DURACIÓN*NUMERADOR/DENOMINADOR"
 
-#: midi2ly.py:1007
+#: midi2ly.py:1083
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr "permitir duraciones de grupos irregulares DURACIÓN*NUMERADOR/DENOMINADOR"
 
-#: midi2ly.py:1016 lilypond-book.py:215 convert-ly.py:139 etf2ly.py:1210
-#: main.cc:170
+#: midi2ly.py:1092 lilypond-book.py:220 convert-ly.py:139 etf2ly.py:1210
+#: main.cc:176
 msgid "show warranty and copyright"
 msgstr "mostrar los avisos de garantía y de copyright"
 
-#: midi2ly.py:1019
+#: midi2ly.py:1095
 msgid "treat every text as a lyric"
 msgstr "tratar todos los textos como letra"
 
-#: midi2ly.py:1022
+#: midi2ly.py:1098
 msgid "Examples"
 msgstr "Ejemplos"
 
-#: midi2ly.py:1042
+#: midi2ly.py:1122
 msgid "no files specified on command line."
 msgstr "no se ha especificado ningún archivo en la línea de órdenes."
 
@@ -1246,7 +1280,7 @@ msgid "add DIR to include path"
 msgstr "añadir DIRECTORIO a la ruta de inclusión"
 
 #: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163
-#: lilypond-book.py:173 lilypond-book.py:189 lilypond-book.py:195 main.cc:160
+#: lilypond-book.py:173 lilypond-book.py:194 lilypond-book.py:200 main.cc:164
 msgid "DIR"
 msgstr "DIRECTORIO"
 
@@ -1286,23 +1320,27 @@ msgstr "INSTRUCCIÓN"
 msgid "process ly_files using COMMAND FILE..."
 msgstr "procesar ly_files utilizando INSTRUCCIÓN ARCHIVO..."
 
-#: lilypond-book.py:182
+#: lilypond-book.py:183
+msgid "Redirect the lilypond output"
+msgstr "Redirigir la salida de lilypond"
+
+#: lilypond-book.py:187
 msgid "Compile snippets in safe mode"
 msgstr "Compilar los fragmentos de código en modo seguro"
 
-#: lilypond-book.py:188
+#: lilypond-book.py:193
 msgid "do not fail if no lilypond output is found"
 msgstr "no fracasar si no se encuentra ninguna salida de lilypond"
 
-#: lilypond-book.py:194
+#: lilypond-book.py:199
 msgid "do not fail if no PNG images are found for EPS files"
 msgstr "no fracasar si no se encuentra ninguna imagen PNG para los archivos EPS"
 
-#: lilypond-book.py:200
+#: lilypond-book.py:205
 msgid "write snippet output files with the same base name as their source file"
 msgstr "escribir los archivos de salida de los fragmentos de código con el mismo nombra de base que su archivo fuente"
 
-#: lilypond-book.py:220
+#: lilypond-book.py:225
 msgid ""
 "run executable PROG instead of latex, or in\n"
 "case --pdf option is set instead of pdflatex"
@@ -1310,65 +1348,65 @@ msgstr ""
 "ejecutar PROG en lugar de latex, o en caso de que\n"
 "esté seleccionada la opción --pdf, en lugar de pdflatex"
 
-#: lilypond-book.py:222
+#: lilypond-book.py:227
 msgid "PROG"
 msgstr "PROGRAMA"
 
-#: lilypond-book.py:228
+#: lilypond-book.py:233
 msgid "create PDF files for use with PDFTeX"
 msgstr "crear archivos PDF para su utilización con PDFTeX"
 
-#: lilypond-book.py:419
+#: lilypond-book.py:428
 msgid "Writing snippets..."
 msgstr "Escribiendo fragmentos..."
 
-#: lilypond-book.py:425
+#: lilypond-book.py:434
 msgid "Processing..."
 msgstr "Procesando..."
 
-#: lilypond-book.py:431
+#: lilypond-book.py:440
 msgid "All snippets are up to date..."
 msgstr "Todos los fragmentos están actualizados..."
 
-#: lilypond-book.py:452
+#: lilypond-book.py:461
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr "no se puede determinar el formato de: %s"
 
-#: lilypond-book.py:461
+#: lilypond-book.py:470
 #, python-format
 msgid "%s is up to date."
 msgstr "%s está actualizado."
 
-#: lilypond-book.py:475
+#: lilypond-book.py:484
 #, python-format
 msgid "Writing `%s'..."
 msgstr "Escribiendo «%s»..."
 
-#: lilypond-book.py:537
+#: lilypond-book.py:546
 msgid "Output would overwrite input file; use --output."
 msgstr "La salida sobreescribiría el archivo de entrada; utilice --output."
 
-#: lilypond-book.py:541
+#: lilypond-book.py:550
 #, python-format
 msgid "Reading %s..."
 msgstr "Leyendo %s..."
 
-#: lilypond-book.py:549
+#: lilypond-book.py:558
 msgid "Dissecting..."
 msgstr "Diseccionando..."
 
-#: lilypond-book.py:561
+#: lilypond-book.py:570
 #, python-format
 msgid "Compiling %s..."
 msgstr "Compilando %s..."
 
-#: lilypond-book.py:570
+#: lilypond-book.py:579
 #, python-format
 msgid "Processing include: %s"
 msgstr "Procesando el archivo de inclusión: %s"
 
-#: lilypond-book.py:582
+#: lilypond-book.py:591
 #, python-format
 msgid "Removing `%s'"
 msgstr "Suprimiendo «%s»"
@@ -1480,7 +1518,7 @@ msgstr "Otros idiomas"
 msgid "success: %s"
 msgstr "finalizado correctamente: %s"
 
-#: warn.cc:86 grob.cc:617 input.cc:97
+#: warn.cc:86 grob.cc:613 input.cc:97
 #, c-format
 msgid "programming error: %s"
 msgstr "error de programación: %s"
@@ -1525,7 +1563,7 @@ msgstr "flexa ascendente de estilo vaticana"
 msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
 msgstr "Vaticana_ligature: unión nula (delta_pitch == 0)"
 
-#: parse-scm.cc:101
+#: parse-scm.cc:100
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE ha señalado un error para la expresión que comienza aquí"
 
@@ -1534,15 +1572,15 @@ msgid "rhythmic head is not part of a rhythmic column"
 msgstr "la cabeza rítmica no es parte de una columna rítmica"
 
 #. if we get to here, just put everything on one line
-#: constrained-breaking.cc:189 constrained-breaking.cc:207
+#: constrained-breaking.cc:187 constrained-breaking.cc:205
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "no se ecnuentra un salto de línea que cumpla las restricciones"
 
-#: horizontal-bracket-engraver.cc:78
+#: horizontal-bracket-engraver.cc:62
 msgid "do not have that many brackets"
 msgstr "no tiene tantos corchetes"
 
-#: horizontal-bracket-engraver.cc:87
+#: horizontal-bracket-engraver.cc:71
 msgid "conflicting note group events"
 msgstr "eventos de grupo de notas en conflicto"
 
@@ -1554,12 +1592,12 @@ msgstr "se suprime el guión separador sin terminación"
 msgid "unterminated hyphen; removing"
 msgstr "guión separador sin terminar; se suprime"
 
-#: pango-font.cc:187 open-type-font.cc:319
+#: pango-font.cc:189 open-type-font.cc:318
 #, c-format
 msgid "FT_Get_Glyph_Name () error: %s"
 msgstr "error en FT_Get_Glyph_Name (): %s"
 
-#: pango-font.cc:204
+#: pango-font.cc:205
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
@@ -1568,16 +1606,16 @@ msgstr ""
 "El glifo no tiene nombre, pero la tipografía soporta nombres de glifo.\n"
 "Se salta el glifo U+%0X, archivo %s"
 
-#: pango-font.cc:241
+#: pango-font.cc:242
 #, c-format
 msgid "no PostScript font name for font `%s'"
 msgstr "no hay un nombre de tipografía PostScript para «%s»"
 
-#: pango-font.cc:290
+#: pango-font.cc:291
 msgid "FreeType face has no PostScript font name"
 msgstr "El tipo FreeType no tiene un nombre de tipografía PostScript"
 
-#: midi-item.cc:92
+#: midi-item.cc:89
 #, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "no existe este instrumento MIDI: «%s»"
@@ -1586,7 +1624,7 @@ msgstr "no existe este instrumento MIDI: «%s»"
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent sin altura"
 
-#: rest.cc:159
+#: rest.cc:160
 #, c-format
 msgid "rest `%s' not found"
 msgstr "no se ha encontrado el silencio «%s»"
@@ -1604,7 +1642,7 @@ msgstr "ya tiene una barra"
 msgid "unterminated beam"
 msgstr "barra sin terminar"
 
-#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150
+#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
 msgid "stem must have Rhythmic structure"
 msgstr "la plica debe tener estructura rítmica"
 
@@ -1616,26 +1654,26 @@ msgstr "la plica no cabe dentro de la barra"
 msgid "beam was started here"
 msgstr "la barra comenzó aquí"
 
-#: music-iterator.cc:182
+#: music-iterator.cc:181
 msgid "Sending non-event to context"
 msgstr "Enviando elemento que no es un evento a un contexto"
 
-#: context.cc:149
+#: context.cc:148
 #, c-format
 msgid "cannot find or create new `%s'"
 msgstr "no se encuentra o no se puede crear un «%s» nuevo"
 
-#: context.cc:207
+#: context.cc:206
 #, c-format
 msgid "cannot find or create `%s' called `%s'"
 msgstr "no se encuentra o no se puede crear «%s» llamado «%s»"
 
-#: context.cc:269
+#: context.cc:268
 #, c-format
 msgid "Invalid CreateContext event: Cannot create %s context"
 msgstr "evento CreateContext inválido: No se puede crear el contexto %s"
 
-#: context.cc:400
+#: context.cc:399
 #, c-format
 msgid "cannot find or create: `%s'"
 msgstr "no se encuentra o no se puede crear «%s»"
@@ -1653,11 +1691,11 @@ msgstr "Clase de evento %s desconocida"
 msgid "forced break was overridden by some other event, should you be using bar checks?"
 msgstr "el salto forzado ha sido sobreestablecido por algún otro evento, ¿quizá deba usar comprobaciones de compás?"
 
-#: tie-engraver.cc:116
+#: tie-engraver.cc:117
 msgid "unterminated tie"
 msgstr "ligadura de unión sin terminar"
 
-#: tie-engraver.cc:312
+#: tie-engraver.cc:348
 msgid "lonely tie"
 msgstr "ligadura de unión solitaria"
 
@@ -1743,27 +1781,27 @@ msgstr ""
 "la penúltima nota debe ser otra breve,\n"
 "o la ligadura debe ser LB o SSB"
 
-#: mensural-ligature-engraver.cc:386
+#: mensural-ligature-engraver.cc:387
 msgid "unexpected case fall-through"
 msgstr "opción de caso por defecto inesperada"
 
-#: piano-pedal-engraver.cc:298
+#: piano-pedal-engraver.cc:296
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
 msgstr "se eseperaban 3 cadenas para los pedales de piano, se han encontrado: %ld"
 
-#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
+#: piano-pedal-engraver.cc:311 piano-pedal-engraver.cc:322
 #: piano-pedal-performer.cc:104
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
 msgstr "no se encuentra el comienzo del pedal de piano «%s»"
 
-#: piano-pedal-engraver.cc:359
+#: piano-pedal-engraver.cc:357
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
 msgstr "no se encuentra el comienzo del corchete de pedal de piano «%s»"
 
-#: input.cc:131 source-file.cc:179 source-file.cc:194
+#: input.cc:130 source-file.cc:178 source-file.cc:193
 msgid "position unknown"
 msgstr "posición desconocida"
 
@@ -1772,28 +1810,28 @@ msgstr "posición desconocida"
 msgid "Layout output to `%s'..."
 msgstr "Salida de la página hacia «%s»..."
 
-#: general-scheme.cc:306
+#: general-scheme.cc:305
 msgid "infinity or NaN encountered while converting Real number"
 msgstr "se ha encontrado infinito o NaN durante la conversión de un número Real"
 
-#: general-scheme.cc:307
+#: general-scheme.cc:306
 msgid "setting to zero"
 msgstr "estableciendo al valor cero"
 
-#: general-scheme.cc:543
+#: general-scheme.cc:540
 msgid "Found infinity or nan in output. Substituting 0.0"
 msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0"
 
-#: music.cc:151
+#: music.cc:150
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
 msgstr "fallo en la comprobación de octava; se esperaba \"%s\", se ha encontrado: \"%s\""
 
-#: music.cc:219
+#: music.cc:218
 msgid "(normalized pitch)"
 msgstr "(altura normalizada)"
 
-#: music.cc:223
+#: music.cc:222
 #, c-format
 msgid "Transposing %s by %s makes alteration larger than double"
 msgstr "La transposición de %s en %s produce una alteración más que doble"
@@ -1807,15 +1845,15 @@ msgstr "traductor desconocido: «%s»"
 msgid "trying to use \\partial after the start of a piece"
 msgstr "intento de utilizar \\partial después del inicio de la pieza"
 
-#: new-fingering-engraver.cc:106
+#: new-fingering-engraver.cc:105
 msgid "cannot add text scripts to individual note heads"
 msgstr "no se pueden añadir guiones de texto a cabezas de nota individuales"
 
-#: new-fingering-engraver.cc:250
+#: new-fingering-engraver.cc:249
 msgid "no placement found for fingerings"
 msgstr "no se ha encontrado ninguna ubicación válida para las digitaciones"
 
-#: new-fingering-engraver.cc:251
+#: new-fingering-engraver.cc:250
 msgid "placing below"
 msgstr "se coloca debajo"
 
@@ -1836,15 +1874,15 @@ msgid "no left bound"
 msgstr "no hay límite izquierdo"
 
 # ligature...?
-#: ligature-engraver.cc:185
+#: ligature-engraver.cc:184
 msgid "unterminated ligature"
 msgstr "ligadura sin terminar"
 
-#: ligature-engraver.cc:214
+#: ligature-engraver.cc:211
 msgid "ignoring rest: ligature may not contain rest"
 msgstr "se ignora el silencio: la ligadura no puede contener silencios"
 
-#: ligature-engraver.cc:215
+#: ligature-engraver.cc:212
 msgid "ligature was started here"
 msgstr "la ligadura comenzó aquí"
 
@@ -1853,26 +1891,26 @@ msgstr "la ligadura comenzó aquí"
 msgid "cannot change, already in translator: %s"
 msgstr "no se puede cambiar, ya está dentro del traductor: %s"
 
-#: accidental-engraver.cc:180
+#: accidental-engraver.cc:179
 #, c-format
 msgid "accidental typesetting list must begin with context-name: %s"
 msgstr "la lista de tippografiado de alteraciones accidentales debe comenzar con context-name: %s"
 
-#: accidental-engraver.cc:210
+#: accidental-engraver.cc:209
 #, c-format
 msgid "procedure or context-name expected for accidental rule, found %s"
 msgstr "se esperaba un procedimiento o un nombre de contexto para la regla de alteración accidental, se ha encontrado %s"
 
-#: ttf.cc:481 ttf.cc:530
+#: ttf.cc:480 ttf.cc:529
 #, c-format
 msgid "font index %d too large for font `%s', using index 0"
 msgstr "índice de fuente tipográfica %d demasiado grande para la tipografía `%s', se usa el índice 0"
 
-#: ttf.cc:513 ttf.cc:565
+#: ttf.cc:512 ttf.cc:564
 msgid "font index must be non-negative, using index 0"
 msgstr "el índice de la fuente tipográfica debe ser no negativo, se usa el índice 0"
 
-#: break-alignment-interface.cc:206
+#: break-alignment-interface.cc:199
 #, c-format
 msgid "No spacing entry from %s to `%s'"
 msgstr "no hay un elemento de espaciado desde %s hasta «%s»"
@@ -1927,7 +1965,7 @@ msgstr "Ruta de búsqueda «%s»"
 msgid "Aborting"
 msgstr "Se detiene la ejecución"
 
-#: note-collision.cc:497
+#: note-collision.cc:494
 msgid "ignoring too many clashing note columns"
 msgstr "demasiadas columnas de notas que chocan entre sí; se ignoran"
 
@@ -1949,20 +1987,20 @@ msgstr "ya hay un trazador finalizado"
 msgid "giving up"
 msgstr "abandonando"
 
-#: page-layout-problem.cc:322
+#: page-layout-problem.cc:603
 msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed"
 msgstr "la música no cabe en la página: se ha solicitado la no justificación del espaciado, pero la página ha resultado comprimida"
 
-#: page-layout-problem.cc:325
+#: page-layout-problem.cc:606
 #, c-format
 msgid "cannot fit music on page: overflow is %f"
 msgstr "la música no cabe en la página: el exceso es %f"
 
-#: page-layout-problem.cc:327
+#: page-layout-problem.cc:608
 msgid "compressing music to fit"
 msgstr "comprimiendo la música para que quepa"
 
-#: page-layout-problem.cc:765
+#: page-layout-problem.cc:1047
 msgid "staff-affinities should only decrease"
 msgstr "staff-affinities solo debe disminuir"
 
@@ -1979,7 +2017,7 @@ msgstr "rehearsalMark debe tener un valor entero"
 msgid "mark label must be a markup object"
 msgstr "la etiqueta de marcado debe ser un objeto de marcado"
 
-#: new-dynamic-engraver.cc:142
+#: new-dynamic-engraver.cc:168
 #, c-format
 msgid ""
 "unknown crescendo style: %s\n"
@@ -1988,35 +2026,34 @@ msgstr ""
 "estilo de crescendo desconocido: %s\n"
 "se toma regulador como predeterminado."
 
-#: new-dynamic-engraver.cc:200
+#: new-dynamic-engraver.cc:233
 #, c-format
 msgid "unterminated %s"
 msgstr "%s sin terminar"
 
-#: stem-engraver.cc:103
+#: stem-engraver.cc:102
 msgid "tremolo duration is too long"
 msgstr "la duración del trémolo es demasiado larga"
 
-#. FIXME:
-#: stem-engraver.cc:140
+#: stem-engraver.cc:154
 #, c-format
-msgid "adding note head to incompatible stem (type = %d)"
-msgstr "añadiendo cabeza de nota a una plica incompatible (tipo = %d)"
+msgid "adding note head to incompatible stem (type = %d/%d)"
+msgstr "añadiendo cabeza de nota a una plica incompatible (tipo = %d/%d)"
 
-#: stem-engraver.cc:142
+#: stem-engraver.cc:157
 msgid "maybe input should specify polyphonic voices"
 msgstr "quizá la entrada debiera especificar voces polifónicas"
 
-#: lily-lexer.cc:264
+#: lily-lexer.cc:265
 msgid "include files are not allowed in safe mode"
 msgstr "no se permiten los archivos de inclusión en el modo seguro"
 
-#: lily-lexer.cc:291
+#: lily-lexer.cc:292
 #, c-format
 msgid "identifier name is a keyword: `%s'"
 msgstr "el nombre del identificativo es una palabra clave: «%s»"
 
-#: lily-lexer.cc:312
+#: lily-lexer.cc:313
 #, c-format
 msgid "error at EOF: %s"
 msgstr "error al final del archivo (EOF): %s"
@@ -2026,12 +2063,12 @@ msgstr "error al final del archivo (EOF): %s"
 msgid "cannot find Voice `%s'"
 msgstr "no se encuentra la Voz «%s»"
 
-#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
+#: includable-lexer.cc:71 lily-guile.cc:86 lily-parser-scheme.cc:109
 #, c-format
 msgid "cannot find file: `%s'"
 msgstr "no se encuentra el archivo: «%s»"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:100
+#: includable-lexer.cc:73 lily-parser-scheme.cc:101
 #, c-format
 msgid "(search path: `%s')"
 msgstr "(ruta de búsqueda: «%s»)"
@@ -2045,38 +2082,52 @@ msgid "removing beam with no stems"
 msgstr "se suprime la barra sin plicas"
 
 #. We are completely screwed.
-#: beam.cc:1274
+#: beam.cc:1350
 msgid "no viable initial configuration found: may not find good beam slope"
 msgstr "no se ha encontrado ninguna configuración inicial viable; puede que no se encuentre una buena inclinación de las barras"
 
-#: slur-engraver.cc:93
+#: staff-performer.cc:257
+msgid "MIDI channel wrapped around"
+msgstr "ha dado la vuelta el número de canal MIDI"
+
+#: staff-performer.cc:258
+msgid "remapping modulo 16"
+msgstr "se reasigna módulo 16"
+
+#: slur-engraver.cc:90 phrasing-slur-engraver.cc:89
 #, c-format
 msgid "direction of %s invalid: %d"
 msgstr "dirección inválida de %s: %d"
 
-#: slur-engraver.cc:162
+#: slur-engraver.cc:158
 msgid "unterminated slur"
 msgstr "ligadura de expresión sin terminar"
 
-#: slur-engraver.cc:174
+#: slur-engraver.cc:183
 msgid "cannot end slur"
 msgstr "no se puede terminar la ligadura de expresión"
 
-#: font-config.cc:40
+#. We already have a slur, so give a warning and completely ignore
+#. the new slur.
+#: slur-engraver.cc:200
+msgid "already have slur"
+msgstr "ya tiene una ligadura de expresión"
+
+#: font-config.cc:39
 msgid "Initializing FontConfig..."
 msgstr "Inicializando FontConfig..."
 
-#: font-config.cc:55 font-config-scheme.cc:152
+#: font-config.cc:54 font-config-scheme.cc:151
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "fallo al añadir la carpeta de tipografías: %s"
 
-#: font-config.cc:57 font-config-scheme.cc:154
+#: font-config.cc:56 font-config-scheme.cc:153
 #, c-format
 msgid "adding font directory: %s"
 msgstr "añadiendo carpeta de tipografías: %s"
 
-#: font-config.cc:61
+#: font-config.cc:60
 msgid "Building font database..."
 msgstr "Construyendo la base de datos de fuentes tipográficas..."
 
@@ -2122,27 +2173,27 @@ msgstr "No se ha encontrado el nombre de glifo para la alteración %s"
 msgid "natural alteration glyph not found"
 msgstr "no se encuentra el glifo del símbolo de becuadro"
 
-#: system.cc:197
+#: system.cc:201
 #, c-format
 msgid "Element count %d"
 msgstr "Número total de elementos %d"
 
-#: system.cc:303
+#: system.cc:402
 #, c-format
 msgid "Grob count %d"
 msgstr "Número de objetos gráficos: %d"
 
-#: slur.cc:362
+#: slur.cc:359
 #, c-format
 msgid "Ignoring grob for slur: %s. avoid-slur not set?"
 msgstr "Se ignora el objeto gráfico para la ligadura: %s. ¿No está establecido avoid-slur?"
 
-#: font-config-scheme.cc:168
+#: font-config-scheme.cc:167
 #, c-format
 msgid "failed adding font file: %s"
 msgstr "fallo al añadir el archivo de fuente tipográfica: %s"
 
-#: font-config-scheme.cc:170
+#: font-config-scheme.cc:169
 #, c-format
 msgid "adding font file: %s"
 msgstr "añadiendo archivo de fuente tipográfica: %s"
@@ -2151,34 +2202,34 @@ msgstr "añadiendo archivo de fuente tipográfica: %s"
 msgid "decrescendo too small"
 msgstr "decrescendo demasiado pequeño"
 
-#: extender-engraver.cc:170 extender-engraver.cc:179
+#: extender-engraver.cc:169 extender-engraver.cc:178
 msgid "unterminated extender"
 msgstr "prolongación sin terminar"
 
-#: lily-guile.cc:89
+#: lily-guile.cc:88
 #, c-format
 msgid "(load path: `%s')"
 msgstr "(ruta de carga: «%s»)"
 
-#: lily-guile.cc:437
+#: lily-guile.cc:431
 #, c-format
 msgid "cannot find property type-check for `%s' (%s)."
 msgstr "no se encuentra la comprobación de tipo de propiedad para «%s» (%s)."
 
-#: lily-guile.cc:440
+#: lily-guile.cc:434
 msgid "perhaps a typing error?"
 msgstr "¿quizá es un error de tecleo?"
 
-#: lily-guile.cc:447
+#: lily-guile.cc:441
 msgid "doing assignment anyway"
 msgstr "se hace la asignación de todas formas"
 
-#: lily-guile.cc:459
+#: lily-guile.cc:453
 #, c-format
 msgid "type check for `%s' failed; value `%s' must be of type `%s'"
 msgstr "ha fallado la comprobación de tipo para «%s»; el valor «%s» debe ser del tipo «%s»"
 
-#: main.cc:109
+#: main.cc:107
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2191,11 +2242,12 @@ msgstr ""
 "él bajo ciertas condiciones. Invóquelo como `%s --warranty' para obtener\n"
 "más información.\n"
 
-#: main.cc:115
+#: main.cc:113
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
+"modify it under the terms of the GNU General Public License as \n"
+"published by the Free Software Foundation, either version 3 of\n"
+"the License, or (at your option) any later version.\n"
 "\n"
 "    This program is distributed in the hope that it will be useful,\n"
 "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -2208,8 +2260,9 @@ msgid ""
 "Boston, MA 02111-1307, USA.\n"
 msgstr ""
 "    This program is free software; you can redistribute it and/or\n"
-"modify it under the terms of the GNU General Public License version 2\n"
-"as published by the Free Software Foundation.\n"
+"modify it under the terms of the GNU General Public License as \n"
+"published by the Free Software Foundation, either version 3 of\n"
+"the License, or (at your option) any later version.\n"
 "\n"
 "    This program is distributed in the hope that it will be useful,\n"
 "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -2222,22 +2275,26 @@ msgstr ""
 "Boston, MA 02111-1307, USA.\n"
 "\n"
 "    Este programa es software libre; puede redistribuirlo y/o\n"
-"modificarlo bajo los términos de la versión 2 de la Licencia Pública\n"
-"General de GNU tal y como está publicada por la Free Software Foundation.\n"
+"modificarlo bajo los términos de la Licencia Pública General\n"
+"de GNU tal y como está publicada por la Free Software\n"
+"Foundation, en su versión 3 o (según lo desee) a cualquier\n"
+"versión posterior.\n"
 "\n"
 "    Este programa se distribuye con la esperanza de que resulte útil,\n"
 "pero SIN NINGUNA GARANTÍA; ni siquiera con la garantía MERCANTIL\n"
-"ni de CONVENIENCIA PARA UN PROPÓSITO PARTICULAR implícitas\n"
-"Consulte la Licencia Pública General de GNU para ver más detalles\n"
-"    Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc.,\n"
-"59 Temple Place - Suite 330,\n"
-"Boston, MA 02111-1307, USA.\n"
+"ni de CONVENIENCIA PARA UN PROPÓSITO PARTICULAR implícitas.\n"
+"Consulte la Licencia Pública General de GNU para ver más detalles.\n"
+"\n"
+"    Debería haber recibido una copia de la\n"
+"Licencia Pública General junto con este programa. Si no ha sido así,\n"
+"escriba a la Free Software Foundation, Inc.,\n"
+"59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:146
+#: main.cc:147
 msgid "SYM[=VAL]"
 msgstr "SÍMBOLO[=VALOR]"
 
-#: main.cc:147
+#: main.cc:148
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
@@ -2245,41 +2302,41 @@ msgstr ""
 "establecer la opción de Scheme SÍMBOLO a VALOR (por omisión: #t).\n"
 "Use -dhelp para obtener ayuda."
 
-#: main.cc:150
+#: main.cc:152
 msgid "EXPR"
 msgstr "EXPRESIÓN"
 
-#: main.cc:150
+#: main.cc:152
 msgid "evaluate scheme code"
 msgstr "evaluar código de Scheme"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:153
+#: main.cc:155
 msgid "FORMATs"
 msgstr "FORMATOs"
 
-#: main.cc:153
+#: main.cc:155
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "volcar FORMATO,...  También como opciones separadas:"
 
-#: main.cc:154
+#: main.cc:156
 msgid "generate PDF (default)"
 msgstr "generar un PDF (predeterminado)"
 
-#: main.cc:155
+#: main.cc:157
 msgid "generate PNG"
 msgstr "generar un PNG"
 
-#: main.cc:156
+#: main.cc:158
 msgid "generate PostScript"
 msgstr "generar un PostScript"
 
-#: main.cc:158
+#: main.cc:161
 msgid "FIELD"
 msgstr "CAMPO"
 
-#: main.cc:158
+#: main.cc:161
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
@@ -2287,19 +2344,19 @@ msgstr ""
 "volcar el campo de cabecera CAMPO a un archivo\n"
 "llamado NOMBRE_BASE.CAMPO"
 
-#: main.cc:160
+#: main.cc:164
 msgid "add DIR to search path"
 msgstr "añadir DIRECTORIO a la ruta de búsqueda"
 
-#: main.cc:161
+#: main.cc:165
 msgid "use FILE as init file"
 msgstr "usar ARCHIVO como archivo de inicialización"
 
-#: main.cc:163
+#: main.cc:168
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "USUARIO, GRUPO, JAULA, DIRECTORIO"
 
-#: main.cc:163
+#: main.cc:168
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2307,16 +2364,16 @@ msgstr ""
 "chroot a JAULA, convertirse en USUARIO:GRUPO\n"
 "y cd al DIRECTORIO"
 
-#: main.cc:166
+#: main.cc:172
 msgid "write output to FILE (suffix will be added)"
 msgstr "escribir la salida en el ARCHIVO (se añadirá el sufijo)"
 
-#: main.cc:167
+#: main.cc:173
 msgid "relocate using directory of lilypond program"
 msgstr "relocalizar utilizando el directorio del programa lilypond"
 
 #. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:238
+#: main.cc:242
 #, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -2326,84 +2383,84 @@ msgstr ""
 "%s y otros."
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:265
+#: main.cc:269
 #, c-format
 msgid "Usage: %s [OPTION]... FILE..."
 msgstr "Uso: %s [OPCIÓN]... ARCHIVO..."
 
-#: main.cc:267
+#: main.cc:271
 msgid "Typeset music and/or produce MIDI from FILE."
 msgstr "Componer tipográficamente la música y/o producir MIDI a partir de ARCHIVO."
 
-#: main.cc:269
+#: main.cc:273
 msgid "LilyPond produces beautiful music notation."
 msgstr "LilyPond produce una notación musical bella y hermosa."
 
-#: main.cc:271
+#: main.cc:275
 #, c-format
 msgid "For more information, see %s"
 msgstr "Para ver más información, consulte %s"
 
-#: main.cc:273
+#: main.cc:277
 msgid "Options:"
 msgstr "Opciones:"
 
-#: main.cc:327
+#: main.cc:331
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr "se esperaban %d argumentos con la jaula, se han encontrado: %u"
 
-#: main.cc:341
+#: main.cc:345
 #, c-format
 msgid "no such user: %s"
 msgstr "no existe el usuario %s"
 
-#: main.cc:343
+#: main.cc:347
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
 msgstr "no se puede obtener el identificador de usuario a partir del nombre: %s: %s"
 
-#: main.cc:358
+#: main.cc:362
 #, c-format
 msgid "no such group: %s"
 msgstr "no existe este grupo: %s"
 
-#: main.cc:360
+#: main.cc:364
 #, c-format
 msgid "cannot get group id from group name: %s: %s"
 msgstr "no se puede obtener el id de grupo a partir del nombre: %s: %s"
 
-#: main.cc:368
+#: main.cc:372
 #, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr "no se puede hacer chroot a: %s: %s"
 
-#: main.cc:375
+#: main.cc:379
 #, c-format
 msgid "cannot change group id to: %d: %s"
 msgstr "no se puede cambiar el grupo del usuario a %d: %s"
 
-#: main.cc:381
+#: main.cc:385
 #, c-format
 msgid "cannot change user id to: %d: %s"
 msgstr "no se puede cambiar el identificador de usuario a %d: %s"
 
-#: main.cc:387
+#: main.cc:391
 #, c-format
 msgid "cannot change working directory to: %s: %s"
 msgstr "no se puede cambiar el directorio de trabajo a: %s: %s"
 
-#: main.cc:628
+#: main.cc:631
 #, c-format
 msgid "exception caught: %s"
 msgstr "se ha capturado una excepción: %s"
 
-#: key-signature-interface.cc:78
+#: key-signature-interface.cc:77
 #, c-format
 msgid "No glyph found for alteration: %s"
 msgstr "No se ha encontrado ningún glifo para la alteración: %s"
 
-#: key-signature-interface.cc:88
+#: key-signature-interface.cc:87
 msgid "alteration not found"
 msgstr "no se encuentra la alteración"
 
@@ -2412,29 +2469,29 @@ msgstr "no se encuentra la alteración"
 msgid "dot `%s' not found"
 msgstr "no se encuentra el puntillo «%s»"
 
-#: translator.cc:359
+#: translator.cc:356
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
 msgstr "Dos eventos %s simultáneos, se recorta éste"
 
-#: translator.cc:360
+#: translator.cc:357
 #, c-format
 msgid "Previous %s event here"
 msgstr "El evento %s previo está aquí"
 
-#: glissando-engraver.cc:105
+#: glissando-engraver.cc:156
 msgid "unterminated glissando"
 msgstr "glissando sin terminar"
 
-#: text-spanner-engraver.cc:73
+#: text-spanner-engraver.cc:72
 msgid "cannot find start of text spanner"
 msgstr "no se encuentra el principio del trazador de texto"
 
-#: text-spanner-engraver.cc:86
+#: text-spanner-engraver.cc:85
 msgid "already have a text spanner"
 msgstr "ya hay un trazador de texto"
 
-#: text-spanner-engraver.cc:132
+#: text-spanner-engraver.cc:130
 msgid "unterminated text spanner"
 msgstr "trazador de texto sin terminar"
 
@@ -2453,12 +2510,12 @@ msgstr "no se ha encontrado la clave  «%s»"
 msgid "strange time signature found: %d/%d"
 msgstr "se ha encontrado una indicación extraña de compás: %d/%d"
 
-#: lily-parser-scheme.cc:82
+#: lily-parser-scheme.cc:83
 #, c-format
 msgid "Changing working directory to: `%s'"
 msgstr "Se cambia el directorio de trabajo a:  «%s»"
 
-#: lily-parser-scheme.cc:99
+#: lily-parser-scheme.cc:100
 #, c-format
 msgid "cannot find init file: `%s'"
 msgstr "no se encuentra el archivo de inicio: «%s»"
@@ -2468,7 +2525,7 @@ msgstr "no se encuentra el archivo de inicio: «%s»"
 msgid "Processing `%s'"
 msgstr "Procesando «%s»"
 
-#: lily-parser-scheme.cc:204
+#: lily-parser-scheme.cc:203
 msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr "ly:parser-parse-string sólo es válido con un analizador nuevo.  Use en su lugar ly:parser-include-string."
 
@@ -2477,7 +2534,7 @@ msgstr "ly:parser-parse-string sólo es válido con un analizador nuevo.  Use en
 msgid "custos `%s' not found"
 msgstr "no se encuentran los custos «%s»"
 
-#: program-option-scheme.cc:237
+#: program-option-scheme.cc:232
 #, c-format
 msgid "no such internal option: %s"
 msgstr "no existe la opción interna %s"
@@ -2486,10 +2543,15 @@ msgstr "no existe la opción interna %s"
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr "no se puede resolver la colisión de los silencios: la dirección de los silencios no se ha establecido"
 
-#: rest-collision.cc:160 rest-collision.cc:205
+#: rest-collision.cc:160 rest-collision.cc:275
 msgid "too many colliding rests"
 msgstr "demasiados silencios en colisión"
 
+#: pdf-scheme.cc:50
+#, c-format
+msgid "Conversion of string `%s' to UTF-16be failed: %s"
+msgstr "La conversión de la cadena `%s' a UTF-16be ha fallado: %s"
+
 #: episema-engraver.cc:75
 msgid "already have an episema"
 msgstr "ya tiene un episema"
@@ -2507,57 +2569,57 @@ msgstr "episema sin terminar"
 msgid "%d: %s"
 msgstr "%d: %s"
 
-#: grob-property.cc:173
+#: grob-property.cc:169
 #, c-format
 msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
 msgstr "dependencia cíclica: se ha encontrado calculation-in-progress para #'%s (%s)"
 
-#: relocate.cc:54
+#: relocate.cc:53
 #, c-format
 msgid "Setting %s to %s"
 msgstr "Se establece %s a %s"
 
-#: relocate.cc:74
+#: relocate.cc:73
 #, c-format
 msgid "no such file: %s for %s"
 msgstr "no existe el archivo: %s para %s"
 
-#: relocate.cc:84 relocate.cc:102
+#: relocate.cc:83 relocate.cc:101
 #, c-format
 msgid "no such directory: %s for %s"
 msgstr "no existe este directorio: %s para %s"
 
-#: relocate.cc:94
+#: relocate.cc:93
 #, c-format
 msgid "%s=%s (prepend)\n"
 msgstr "%s=%s (prefijar)\n"
 
-#: relocate.cc:124
+#: relocate.cc:123
 #, c-format
 msgid "not relocating, no %s/ or current/ found under %s"
 msgstr "no se relocaliza, no se ha encontrado %s/ ni current/ bajo %s"
 
-#: relocate.cc:135
+#: relocate.cc:134
 #, c-format
 msgid "Relocation: compile datadir=%s, new datadir=%s"
 msgstr "Relocalización: en la compilación datadir=%s, el nuevo datadir=%s"
 
-#: relocate.cc:148
+#: relocate.cc:147
 #, c-format
 msgid "Relocation: framework_prefix=%s"
 msgstr "Relocalización: framework_prefix=%s"
 
-#: relocate.cc:189
+#: relocate.cc:188
 #, c-format
 msgid "Relocation: is absolute: argv0=%s"
 msgstr "Relocalización: es absoluto: argv0=%s"
 
-#: relocate.cc:196
+#: relocate.cc:195
 #, c-format
 msgid "Relocation: from cwd: argv0=%s"
 msgstr "Relocalización: desde cwd: argv0=%s"
 
-#: relocate.cc:213
+#: relocate.cc:212
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
@@ -2566,25 +2628,45 @@ msgstr ""
 "Relocalización: desde PATH=%s\n"
 "argv0=%s"
 
-#: relocate.cc:240
+#: relocate.cc:239
 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
 msgstr "LILYPONDPREFIX está obsoleto, utilice LILYPOND_DATADIR"
 
-#: relocate.cc:367
+#: relocate.cc:365
 #, c-format
 msgid "Relocation file: %s"
 msgstr "Archivo de relocalización: %s"
 
-#: relocate.cc:373 source-file.cc:65
+#: relocate.cc:371 source-file.cc:65
 #, c-format
 msgid "cannot open file: `%s'"
 msgstr "no se puede abrir el archivo: «%s»"
 
-#: relocate.cc:403
+#: relocate.cc:401
 #, c-format
 msgid "Unknown relocation command %s"
 msgstr "instrucción de relocalización %s desconocida"
 
+#: gregorian-ligature-engraver.cc:70
+#, c-format
+msgid "\\%s ignored"
+msgstr "\\%s ignorado(s)"
+
+#: gregorian-ligature-engraver.cc:75
+#, c-format
+msgid "implied \\%s added"
+msgstr "se ha añadido el \\%s implícito"
+
+#. ligature may not start with 2nd head of pes or flexa
+#: gregorian-ligature-engraver.cc:224
+msgid "cannot apply `\\~' on first head of ligature"
+msgstr "no se puede aplicar `\\~' sobre la primera cabeza de una ligadura"
+
+#. (pitch == prev_pitch)
+#: gregorian-ligature-engraver.cc:236
+msgid "cannot apply `\\~' on heads with identical pitch"
+msgstr "no se puede aplicar `\\~' sobre cabezas de idéntica altura"
+
 #: translator-group.cc:188
 #, c-format
 msgid "cannot find: `%s'"
@@ -2594,31 +2676,31 @@ msgstr "no se encuentra «%s»"
 msgid "unterminated phrasing slur"
 msgstr "ligadura de fraseo sin terminar"
 
-#: lyric-engraver.cc:176
+#: phrasing-slur-engraver.cc:182
+msgid "cannot end phrasing slur"
+msgstr "no se puede terminar la ligadura de fraseo"
+
+#: phrasing-slur-engraver.cc:196
+msgid "already have phrasing slur"
+msgstr "ya tiene una ligadura de fraseo"
+
+#: lyric-engraver.cc:186
 msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
 msgstr "La sílaba de la letra no tiene nota. Utilice \\lyricsto o associatedVoice."
 
-#: page-breaking.cc:248
+#: page-breaking.cc:274
 msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
 msgstr "se ignoran min-systems-per-page y max-systems-per-page debido a que se fijó systems-per-page"
 
-#: page-breaking.cc:253
+#: page-breaking.cc:279
 msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
 msgstr "min-systems-per-page es mayor que max-systems-per-page, se ignoran los dos valores"
 
-#: performance.cc:54
+#: performance.cc:55
 msgid "Track..."
 msgstr "Pista..."
 
-#: performance.cc:83
-msgid "MIDI channel wrapped around"
-msgstr "ha dado la vuelta el número de canal MIDI"
-
-#: performance.cc:84
-msgid "remapping modulo 16"
-msgstr "se reasigna módulo 16"
-
-#: performance.cc:111
+#: performance.cc:85
 #, c-format
 msgid "MIDI output to `%s'..."
 msgstr "Salida MIDI hacia «%s»..."
@@ -2627,26 +2709,6 @@ msgstr "Salida MIDI hacia «%s»..."
 msgid "No tuplet to end"
 msgstr "no hay ningún grupo especial que terminar"
 
-#: gregorian-ligature-engraver.cc:70
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s ignorado(s)"
-
-#: gregorian-ligature-engraver.cc:75
-#, c-format
-msgid "implied \\%s added"
-msgstr "se ha añadido el \\%s implícito"
-
-#. ligature may not start with 2nd head of pes or flexa
-#: gregorian-ligature-engraver.cc:224
-msgid "cannot apply `\\~' on first head of ligature"
-msgstr "no se puede aplicar `\\~' sobre la primera cabeza de una ligadura"
-
-#. (pitch == prev_pitch)
-#: gregorian-ligature-engraver.cc:236
-msgid "cannot apply `\\~' on heads with identical pitch"
-msgstr "no se puede aplicar `\\~' sobre cabezas de idéntica altura"
-
 #: chord-tremolo-engraver.cc:88
 msgid "No tremolo to end"
 msgstr "No hay ningún tremolo hasta el final"
@@ -2685,20 +2747,20 @@ msgstr "se necesitan argumentos de símbolo para \\override y \\revert"
 msgid "expected to read %d characters, got %d"
 msgstr "se esperaba leer %d caracteres, se han obtenido %d"
 
-#: axis-group-interface.cc:631
+#: axis-group-interface.cc:627
 msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr "un objeto externo a la pauta debe tener una dirección, por omisión se establece hacia arriba"
 
-#: coherent-ligature-engraver.cc:111
+#: coherent-ligature-engraver.cc:110
 #, c-format
 msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr "Coherent_ligature_engraver: se establece `spacing-increment=0.01': ptr=%ul"
 
-#: percent-repeat-engraver.cc:148
+#: percent-repeat-engraver.cc:147
 msgid "unterminated percent repeat"
 msgstr "repetición de porcentaje sin terminar"
 
-#: note-head.cc:76
+#: note-head.cc:75
 #, c-format
 msgid "none of note heads `%s' or `%s' found"
 msgstr "no se encuentran las cabezas de nota «%s» ni «%s»"
@@ -2716,12 +2778,12 @@ msgstr "no sabemos cómo interpretar la articulación:"
 msgid " scheme encoding: "
 msgstr " codificación de Scheme: "
 
-#: all-font-metrics.cc:156
+#: all-font-metrics.cc:153
 #, c-format
 msgid "cannot find font: `%s'"
 msgstr "no se encuentra la tipografía «%s»"
 
-#: property-iterator.cc:85
+#: property-iterator.cc:93
 #, c-format
 msgid "not a grob name, `%s'"
 msgstr "no es un nombre de objeto gráfico: «%s»"
@@ -2731,16 +2793,16 @@ msgstr "no es un nombre de objeto gráfico: «%s»"
 msgid "barcheck failed at: %s"
 msgstr "la comprobación de compás ha fallado en: %s"
 
-#: stem.cc:116
+#: stem.cc:114
 msgid "weird stem size, check for narrow beams"
 msgstr "tamaño de plica extraño, compruebe que no haya barras estrechas"
 
-#: stem.cc:657
+#: stem.cc:652
 #, c-format
 msgid "flag `%s' not found"
 msgstr "no se encuentra el indicador «%s»"
 
-#: stem.cc:673
+#: stem.cc:668
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr "no se encuentra la forma del glifo del corchete «%s»"
@@ -2810,23 +2872,23 @@ msgstr "número total de \tpáginas: %d"
 msgid "\tprevious break: %d"
 msgstr "\tsalto anterior: %d"
 
-#: lily-parser.cc:106
+#: lily-parser.cc:105
 msgid "Parsing..."
 msgstr "Analizando..."
 
-#: lily-parser.cc:134
+#: lily-parser.cc:133
 msgid "braces do not match"
 msgstr "las llaves no concuerdan"
 
-#: score.cc:178
+#: score.cc:176
 msgid "already have music in score"
 msgstr "ya tiene música en la partitura"
 
-#: score.cc:179
+#: score.cc:177
 msgid "this is the previous music"
 msgstr "esta es la música precedente"
 
-#: score.cc:184
+#: score.cc:182
 msgid "errors found, ignoring music expression"
 msgstr "se han encontrado errores, se ignora la expresión musical"
 
@@ -2887,17 +2949,17 @@ msgstr "no se puede cargar la tabla de tipografías: %s"
 msgid "FreeType error: %s"
 msgstr "error de FreeType: %s"
 
-#: open-type-font.cc:111
+#: open-type-font.cc:110
 #, c-format
 msgid "unsupported font format: %s"
 msgstr "formato de tipografía %s no soportado"
 
-#: open-type-font.cc:113
+#: open-type-font.cc:112
 #, c-format
 msgid "error reading font file %s: %s"
 msgstr "error al leer la tipografía %s: %s"
 
-#: open-type-font.cc:188
+#: open-type-font.cc:187
 #, c-format
 msgid "FT_Get_Glyph_Name () Freetype error: %s"
 msgstr "error de Freetype en FT_Get_Glyph_Name (): %s"
@@ -2912,119 +2974,119 @@ msgstr "no se puede abrir el archivo en modo de escritura: %s: %s"
 msgid "cannot write to file: `%s'"
 msgstr "no se puede escribir el archivo: «%s»"
 
-#: parser.yy:820
+#: parser.yy:825
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "no se puede usar \\paper dentro de \\score, utilice \\layout en su lugar"
 
-#: parser.yy:844
+#: parser.yy:849
 msgid "need \\paper for paper block"
 msgstr "es necesario \\paper para el bloque 'paper'"
 
-#: parser.yy:1363
+#: parser.yy:1369
 msgid "only \\consists takes non-string argument."
 msgstr "solo \\consists admite un argumento no de cadena."
 
-#: parser.yy:1376
+#: parser.yy:1382
 msgid "Grob name should be alphanumeric"
 msgstr "El nombre del objeto gráfico ha de ser alfanumérico"
 
-#: parser.yy:1685
+#: parser.yy:1697
 msgid "second argument must be pitch list"
 msgstr "el segundo argumento debe ser una lista de notas"
 
-#: parser.yy:1716 parser.yy:1721 parser.yy:2194
+#: parser.yy:1728 parser.yy:1733 parser.yy:2206
 msgid "have to be in Lyric mode for lyrics"
 msgstr "para la letra se debe estar en el modo Lyric"
 
-#: parser.yy:1818
+#: parser.yy:1830
 msgid "expecting string as script definition"
 msgstr "se espera una cadena como definición del guión"
 
-#: parser.yy:1973 parser.yy:2024
+#: parser.yy:1985 parser.yy:2036
 #, c-format
 msgid "not a duration: %d"
 msgstr "no es una duración: %d"
 
-#: parser.yy:2148
+#: parser.yy:2160
 msgid "have to be in Note mode for notes"
 msgstr "para las notas se debe estar en el modo Note"
 
-#: parser.yy:2209
+#: parser.yy:2221
 msgid "have to be in Chord mode for chords"
 msgstr "para los acordes se debe estar en el modo Chord"
 
 # stray?
-#: lexer.ll:190
+#: lexer.ll:192
 msgid "stray UTF-8 BOM encountered"
 msgstr "se ha encontrado una marca BOM de UTF-8 extraña"
 
-#: lexer.ll:194
+#: lexer.ll:196
 msgid "Skipping UTF-8 BOM"
 msgstr "Se salta el BOM de UTF-8"
 
-#: lexer.ll:249
+#: lexer.ll:251
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Renombrando la entrada a: «%s»"
 
-#: lexer.ll:266
+#: lexer.ll:268
 msgid "quoted string expected after \\version"
 msgstr "se esperaba una cadena entre comillas después de \\version"
 
-#: lexer.ll:270
+#: lexer.ll:272
 msgid "quoted string expected after \\sourcefilename"
 msgstr "se esperaba una cadena entre comillas después de \\sourcefilename"
 
-#: lexer.ll:274
+#: lexer.ll:276
 msgid "integer expected after \\sourcefileline"
 msgstr "se esperaba un entero después de \\sourcefileline"
 
-#: lexer.ll:287
+#: lexer.ll:289
 msgid "EOF found inside a comment"
 msgstr "se ha encontrado EOF (fin de archivo) dentro de un comentario"
 
-#: lexer.ll:302
+#: lexer.ll:304
 msgid "\\maininput not allowed outside init files"
 msgstr "no se permite \\maininput fuera de los archivos de inicio"
 
-#: lexer.ll:326
+#: lexer.ll:328
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "identificativo equivocado o no definido: «%s»"
 
 #. backup rule
-#: lexer.ll:335
+#: lexer.ll:337
 msgid "end quote missing"
 msgstr "faltan las comillas de cierre"
 
-#: lexer.ll:485
+#: lexer.ll:487
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr "Se ha encontrado una llave al final de la letra. ¿Olvidó un espacio?"
 
-#: lexer.ll:595
+#: lexer.ll:597
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr "Se ha encontrado una llave al final del marcado, ¿Olvidó un espacio?"
 
-#: lexer.ll:699
+#: lexer.ll:701
 #, c-format
 msgid "invalid character: `%c'"
 msgstr "carácter no válido: «%c»"
 
-#: lexer.ll:814 lexer.ll:815
+#: lexer.ll:822 lexer.ll:823
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "cadena de escape desconocida: `\\%s'"
 
-#: lexer.ll:924 lexer.ll:925
+#: lexer.ll:932 lexer.ll:933
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "archivo demasiado antiguo: %s (el más antiguo que se puede tratar es: %s)"
 
-#: lexer.ll:925 lexer.ll:926
+#: lexer.ll:933 lexer.ll:934
 msgid "consider updating the input with the convert-ly script"
 msgstr "considere la actualización de la entrada mediante el guión (script) convert-ly"
 
-#: lexer.ll:931 lexer.ll:932
+#: lexer.ll:939 lexer.ll:940
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "el programa es demasiado antiguo: %s (el archivo necesita: %s)"
@@ -3039,7 +3101,12 @@ msgstr "Procesando ~S..."
 msgid "Writing ~S..."
 msgstr "Escribiendo ~S..."
 
-#: documentation-lib.scm:198
+#: documentation-lib.scm:184
+#, scheme-format
+msgid "cannot find description for property `~S' (~S)"
+msgstr "no se encuentra la descripción de la propiedad `~S' (~S)"
+
+#: documentation-lib.scm:205
 #, scheme-format
 msgid "cannot find description for property ~S (~S)"
 msgstr "no se encuentra la descripción de la propiedad ~S (~S)"
@@ -3080,23 +3147,23 @@ msgstr "Escribiendo «~a»..."
 msgid "symbol ~S redefined"
 msgstr "redefinido el símbolo ~S"
 
-#: paper.scm:115
+#: paper.scm:117
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size: no está en el ámbito de nivel más alto"
 
-#: paper.scm:296
+#: paper.scm:301
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Esto no es un objeto de \\layout {} , ~S"
 
-#: paper.scm:308
+#: paper.scm:313
 #, scheme-format
 msgid "Unknown paper size: ~a"
 msgstr "Tamaño de papel desconocido: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:323
+#: paper.scm:328
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "Debe usar #(set-paper-size .. ) dentro de \\paper { ... }"
 
@@ -3118,20 +3185,20 @@ msgstr "no se encuentra: ~A"
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr "tipo equivocado para el argumento ~a.  Se esperaba ~a, se encontró ~s"
 
-#: lily.scm:716
+#: lily.scm:710
 msgid "Compilation successfully completed"
 msgstr "Compiación completada satisfactoriamente"
 
-#: lily.scm:717
+#: lily.scm:711
 msgid "Compilation completed with warnings or errors"
 msgstr "Compilación completada con advertencias o errores"
 
-#: lily.scm:779
+#: lily.scm:773
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
 msgstr "la tarea ~a ha terminado con la señal: ~a"
 
-#: lily.scm:782
+#: lily.scm:776
 #, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
@@ -3140,17 +3207,17 @@ msgstr ""
 "archivo de registro ~a (salida ~a):\n"
 "~a"
 
-#: lily.scm:804 lily.scm:882
+#: lily.scm:798 lily.scm:876
 #, scheme-format
 msgid "failed files: ~S"
 msgstr "archivos que han fallado: ~S"
 
-#: lily.scm:873
+#: lily.scm:867
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr "Redirigiendo la salida hacia ~a..."
 
-#: lily.scm:892
+#: lily.scm:886
 #, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr "Invocando «~a»...\n"
@@ -3273,12 +3340,12 @@ msgstr "no se ha usado la compatibilidad con el modo relativo antiguo"
 msgid "Found infinity or nan in output.  Substituting 0.0"
 msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0"
 
-#: output-ps.scm:289 output-svg.scm:550
+#: output-ps.scm:299 output-svg.scm:550
 #, scheme-format
 msgid "unknown line-cap-style: ~S"
 msgstr "estilo de extremo de línea line-cap-style desconocido: ~S"
 
-#: output-ps.scm:294 output-svg.scm:556
+#: output-ps.scm:304 output-svg.scm:556
 #, scheme-format
 msgid "unknown line-join-style: ~S"
 msgstr "estilo de unión de líneas line-join-style desconocido: ~S"
@@ -3321,50 +3388,54 @@ msgstr "Usando los nombres de notas de `~a' ..."
 msgid "Could not find language `~a'.  Ignoring."
 msgstr "No se encuentra el idioma `~a'.  Se ignora."
 
-#: define-music-types.scm:740
+#: define-music-types.scm:747
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "se esperaba un símbolo: ~S"
 
-#: define-music-types.scm:743
+#: define-music-types.scm:750
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "no se encuentra el objeto musical ~S"
 
-#: define-music-types.scm:762
+#: define-music-types.scm:769
 #, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "tipo de repetición «~S» desconocido"
 
-#: define-music-types.scm:763
+#: define-music-types.scm:770
 msgid "See define-music-types.scm for supported repeats"
 msgstr "Consulte el archivo define-music-types.scm para ver los tipos de repetición soportados"
 
-#: translation-functions.scm:341
+#: translation-functions.scm:350
 #, scheme-format
 msgid "Negative fret for pitch ~a on string ~a"
 msgstr "Traste negativo para la nota ~a de la cuerda ~a"
 
-#: translation-functions.scm:385
+#: translation-functions.scm:401
 #, scheme-format
 msgid "No open string for pitch ~a"
 msgstr "No hay cuerda al aire para la nota ~a"
 
-#: translation-functions.scm:400
+#: translation-functions.scm:416 translation-functions.scm:428
 #, scheme-format
 msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
 msgstr "La cuerda solicitada para la nota requiere un traste negativo: cuerda ~a nota ~a"
 
-#: translation-functions.scm:401
-msgid "Ignoring string request."
-msgstr "Se ignora la solicitud de cuerda."
+#: translation-functions.scm:419
+msgid "Ignoring string request and recalculating."
+msgstr "Se ignora la solicitud de cuerda; volviendo a calcular."
+
+#: translation-functions.scm:431
+msgid "Ignoring note in tablature."
+msgstr "Se ignora la nota en la tablatura."
 
-#: translation-functions.scm:414
+#: translation-functions.scm:454
 #, scheme-format
 msgid "No string for pitch ~a (given frets ~a)"
 msgstr "No hay ninguna cuerda para la nota ~a (dados los trastes ~a)"
 
-#: translation-functions.scm:515
+#: translation-functions.scm:559
 #, scheme-format
 msgid ""
 "No label for fret ~a (on string ~a);\n"
@@ -3393,7 +3464,7 @@ msgstr "no sabemos cómo empotrar ~S=~S"
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr "no sabemos cómo empotrar la tipografía ~s ~s ~s"
 
-#: framework-ps.scm:669
+#: framework-ps.scm:686
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3430,7 +3501,7 @@ msgstr "Hay más alternativas que repeticiones.  Se recortan las alternativas ex
 msgid "invalid tremolo repeat count: ~a"
 msgstr "número de repeticiones no válido para el trémolo: ~a"
 
-#: music-functions.scm:618
+#: music-functions.scm:619
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "se esperaba algo de música: ~S"
@@ -3441,21 +3512,21 @@ msgstr "se esperaba algo de música: ~S"
 msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
 msgstr "Ha fallado la comprobación de compás.  Se esperaba que estuviera en ~a, en lugar de en ~a"
 
-#: music-functions.scm:846
+#: music-functions.scm:845
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "no se encuentra la música citada: «~S»"
 
-#: music-functions.scm:982
+#: music-functions.scm:979
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr "Añadir @var{octave-shift} a la octava de @var{pitch}."
 
-#: music-functions.scm:1037
+#: music-functions.scm:1039
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "Tipo de octavación desconocido: ~S "
 
-#: music-functions.scm:1038
+#: music-functions.scm:1040
 msgid "Defaulting to 'any-octave."
 msgstr "Fijando al valor predeterminado 'any-octave."
 
@@ -3503,26 +3574,26 @@ msgstr "No es una instrucción de marcado: ~A"
 msgid "~a exited with status: ~S"
 msgstr "~a salió con el estado: ~S"
 
-#: define-markup-commands.scm:803
+#: define-markup-commands.scm:883
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr "no se ha encontrado ningún sistema en el marcado \\score, ¿tiene un bloque \\layout?"
 
-#: define-markup-commands.scm:2404
+#: define-markup-commands.scm:2561
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "No se encuentra el glifo ~a"
 
-#: define-markup-commands.scm:2830
+#: define-markup-commands.scm:2987
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "no se ha encontrado ninguna llave para el tamaño en puntos ~S "
 
-#: define-markup-commands.scm:2831
+#: define-markup-commands.scm:2988
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr "fijando al valor predeterminado ~S pt"
 
-#: define-markup-commands.scm:2984
+#: define-markup-commands.scm:3141
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "no es una cadena válida de duración: ~a"
index c3eb98bc6fda38f815b5bc9ebf8d41f91dd46a85..c83ac7dacb0ef09bf724a402638f9334b788ca92 100644 (file)
@@ -189,6 +189,7 @@ def ossystem_system (cmd,
                      ignore_error=False,
                      progress_p=True,
                      be_verbose=False,
+                     redirect_output=False,
                      log_file=None):
 
 
index 3f9da21f6d0c7e71b4aa172f3f30677b4d7b72bd..1b318deaf268d820dd4fdeb498de6f5cbdf0a801 100644 (file)
@@ -240,6 +240,10 @@ Positive means move the center to the right.")
 the vertical edges: @code{(@var{left-height} . @var{right-height})}.")
      (edge-text ,pair? "A pair specifying the texts to be set at the
 edges: @code{(@var{left-text} . @var{right-text})}.")
+     (round-up-exceptions ,list? "A list of pairs where car is the numerator
+and cdr the denominator of a moment.  Each pair in this list means that
+the multi-measure rests of the corresponding length will be rounded up to
+the longer rest.  See @var{round-up-to-longer-rest}.")
      (expand-limit ,integer? "Maximum number of measures expanded in
 church rests.")
      ;; remove me?
@@ -696,7 +700,7 @@ of an object (e.g., between note and its accidentals).")
      (rotation ,list? "Number of degrees to rotate this object, and
 what point to rotate around.  For example, @code{#'(45 0 0)} rotates
 by 45 degrees around the center of this object.")
-     (round-to-longer-rest ,boolean? "Displays the longer multi-measure
+     (round-up-to-longer-rest ,boolean? "Displays the longer multi-measure
 rest when the length of a measure is between two values of
 @code{usable-duration-logs}.  For example, displays a breve instead of a whole
 in a 3/2 measure.")
index 4545e5bd9f6f7c130267397d3947812e31c82881..ff792baedb2657918c76f15fbbe91d77989c8828 100644 (file)
      . (
        (expand-limit . 10)
        (hair-thickness . 2.0)
+       (round-up-exceptions . ())
        (padding . 1)
        (spacing-pair . (break-alignment . break-alignment))
        (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
-       (staff-position . 0)
        (stencil . ,ly:multi-measure-rest::print)
        (thick-thickness . 6.6)
        ;; See Wanske pp. 125
-       (usable-duration-logs . (0 -1 -2 -3))
+       (usable-duration-logs . ,(iota 4 -3))
        (Y-offset . ,ly:staff-symbol-referencer::callback)
        (meta . ((class . Spanner)
                 (interfaces . (font-interface
index 8626e0114690e832872b4aaff9cf23ce797a5e30..5614dd65c601b0db614ddc25c6a2b214c043d6fc 100644 (file)
@@ -37,4 +37,5 @@
     (head-slur-distance-factor . 10)
     (absolute-closeness-measure . 0.3)
     (edge-slope-exponent . 1.7)
+    (close-to-edge-length . 2.5)
     ))
index 17c8d1776b2a2d436aa16798115f392170ea13c7..e8fb65d4f408dbbd6a2628b9062c1d4a9ecf387e 100644 (file)
 
 (defmacro-public _i (x) x)
 
+;;; Boolean thunk - are we integrating Guile V2.0 or higher with LilyPond?
+(define-public (guile-v2)
+  (string>? (version) "1.9.10"))
+
 (read-enable 'positions)
+(if (not (guile-v2))
+    (debug-enable 'debug)
+    (begin
+      (debug-enable 'backtrace)
+      (debug-enable 'show-file-name)))
 
 (define-public PLATFORM
   (string->symbol
@@ -195,10 +204,6 @@ messages into errors.")
 
 ;;(set-debug-cell-accesses! 1000)
 
-;;; Boolean thunk - are we integrating Guile V2.0 or higher with LilyPond?
-(define-public (guile-v2)
-  (string>? (version) "1.9.10"))
-
 (use-modules (ice-9 regex)
             (ice-9 safe)
             (ice-9 format)
@@ -226,8 +231,7 @@ messages into errors.")
    (use-modules (ice-9 curried-definitions)))
   (else
     (if (ly:get-option 'verbose)
-       (ly:message
-          (_ "Guile 1.8\n")))))
+        (ly:message (_ "Guile 1.8\n")))))
 
 ;; TODO add in modules for V1.8.7 deprecated in V2.0 and integrated
 ;; into Guile base code, like (ice-9 syncase).
index c31360019912c04285896b5c1e3a19381d5f8736..3394ed1b3b78c3489de22ceef025be00b76dedc1 100644 (file)
@@ -842,7 +842,7 @@ Syntax:
              (set! (ly:music-property music 'quoted-events) quoted-vector)
              (set! (ly:music-property music 'iterator-ctor)
                    ly:quote-iterator::constructor))
-           (ly:warning (_ "cannot find quoted music: `~S'") quoted-name)))
+           (ly:music-message music (ly:format (_ "cannot find quoted music: `~S'") quoted-name))))
     music))
 
 
index 0e72ebe2a057eef1f4284e9c4d69fa3c4e20ee94..8c779a91ee19944affc53ee95d8848e5f1582724 100644 (file)
@@ -571,10 +571,27 @@ the mark when there are no spanners active.
 
 (define-public (add-quotable parser name mus)
   (let* ((tab (eval 'musicQuotes (current-module)))
-        (context-list (recording-group-emulate (context-spec-music mus 'Voice)
-                                               (ly:parser-lookup parser 'partCombineListener))))
-    (if (pair? context-list)
-       (hash-set! tab name
-                  ;; cdr : skip name string
-                  (list->vector (reverse! (cdar context-list)
-                                          '()))))))
+         (voicename (get-next-unique-voice-name))
+         ;; recording-group-emulate returns an assoc list (reversed!), so
+         ;; hand it a proper unique context name and extract that key:
+         (ctx-spec (context-spec-music mus 'Voice voicename))
+         (listener (ly:parser-lookup parser 'partCombineListener))
+         (context-list (reverse (recording-group-emulate ctx-spec listener)))
+         (raw-voice (assoc voicename context-list))
+         (quote-contents (if (pair? raw-voice) (cdr raw-voice) '())))
+
+    ;; If the context-specced quoted music does not contain anything, try to
+    ;; use the first child, i.e. the next in context-list after voicename
+    ;; That's the case e.g. for \addQuote "x" \relative c \new Voice {...}
+    (if (null? quote-contents)
+        (let find-non-empty ((current-tail (member raw-voice context-list)))
+          ;; if voice has contents, use them, otherwise check next ctx
+          (cond ((null? current-tail) #f)
+                ((and (pair? (car current-tail))
+                      (pair? (cdar current-tail)))
+                 (set! quote-contents (cdar current-tail)))
+                (else (find-non-empty (cdr current-tail))))))
+
+    (if (not (null? quote-contents))
+        (hash-set! tab name (list->vector (reverse! quote-contents '())))
+        (ly:music-message mus (ly:format (_ "quoted music `~a' is empty") name)))))
index 2119e7b6ab6791e4b56fa15888561e747daef788..3a39a126d4f89bfd13575152b6f253a98593d318 100644 (file)
@@ -1,4 +1,4 @@
-#! /usr/bin/perl
+#!@PERL@
 
 ##################################################
 # Convert stylized Metafont to PostScript Type 1 #
index c08ea147b86eb40556f77d0f0d384e56c93741f7..537363b63a4958b26ab2698e72d08ff91c858aaa 100644 (file)
@@ -313,12 +313,15 @@ class SystemLink:
                 self.orphan_count (),
                 self.geometric_distance ())
 
+def scheme_float (s) :
+  return float(s) if 'nan' not in s else float(s.split('.')[0])
+
 def read_signature_file (name):
     print 'reading', name
 
     entries = open (name).read ().split ('\n')
     def string_to_tup (s):
-        return tuple (map (float, s.split (' ')))
+        return tuple (map (scheme_float, s.split (' ')))
 
     def string_to_entry (s):
         fields = s.split('@')
index 6ad2d5995e92edaa992ba3a5bc7f58cd6acb383f..7e8ffefbd624a59510fbf0d5cc49d8c5df52105f 100644 (file)
@@ -200,10 +200,10 @@ urchinTracker();
         #### add google tracker goals
         if (line.find("href=\"http://download.linuxaudio.org") >= 0):
             # TODO: more ugly hardcoding to make releases hard. :(
-            if (line.find('2.12') >= 0):
-                line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.12\');\" href=')
-            elif (line.find('2.13') >= 0):
-                line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.13\');\" href=')
+            if (line.find('2.14') >= 0):
+                line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.14\');\" href=')
+            elif (line.find('2.15') >= 0):
+                line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.15\');\" href=')
         ### add language selection footer
         if (line.find("<div id=\"verifier_texinfo\">") >= 0):
             outfile.write("<div id=\"footer\">\n")