]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into lilypond/translation
authorJohn Mandereau <john.mandereau@gmail.com>
Mon, 20 Aug 2007 08:14:30 +0000 (10:14 +0200)
committerJohn Mandereau <john.mandereau@gmail.com>
Mon, 20 Aug 2007 08:14:30 +0000 (10:14 +0200)
* master: (79 commits)
  Convert dynamic marks (given in a <direction> tag, assigned to the staff at a given position in xml, not to a note like in lilypond)
  Don't crash when a score does not have an explicit key or clef set (e.g. Rosegarden produces such files).
  Also convert '0' in part ids to 'Zero', simplify that code a bit.
  Sorting of the parts in the .ly output. Currently, their order was not first staff, second staff, third, etc. but seemingly random
  Convert articulations like fermata, staccato, tenuto, tremolo (only single-note tremolo), accents, etc.
  Remove Info dir entries correctly in 'make install'
  Add a full stop in documentation.
  Sorting, formatting, adding punctuation, removing a double entry.
  Whitespace and punctuation issues.
  Add a space-to-barline property to allow looser spacing of clefs.
  Fix 392.
  Update de.po from Free Translation Project
  updated spanish working.itely
  updated spanish putting.itely file
  updated spanish tweaks.itely file
  updated soanish tutorial
  updated spanish lilypond.tely
  updated spanish basic notation
  updated spanish introduction
  updated spanish cheat sheet
  ...

Conflicts:

Documentation/es/user/basic-notation.itely
Documentation/es/user/lilypond.tely

196 files changed:
Documentation/de/user/lilypond.tely
Documentation/es/index.html.in
Documentation/es/user/basic-notation.itely
Documentation/es/user/cheatsheet.itely
Documentation/es/user/introduction.itely
Documentation/es/user/lilypond.tely
Documentation/es/user/putting.itely
Documentation/es/user/tutorial.itely
Documentation/es/user/tweaks.itely
Documentation/es/user/working.itely
Documentation/topdocs/GNUmakefile
Documentation/topdocs/INSTALL.texi [new file with mode: 0644]
Documentation/user/GNUmakefile
Documentation/user/README.txt
Documentation/user/advanced-notation.itely
Documentation/user/basic-notation.itely
Documentation/user/install.itely
Documentation/user/instrument-notation.itely
Documentation/user/lilypond-program.tely
Documentation/user/lilypond.tely
Documentation/user/music-glossary.tely
Documentation/user/non-music.itely
Documentation/user/programming-interface.itely
Documentation/user/putting.itely
Documentation/user/running.itely
Documentation/user/setup.itely
Documentation/user/spacing.itely
Documentation/user/templates.itely
Documentation/user/tutorial.itely
Documentation/user/working.itely
GNUmakefile.in
ROADMAP
THANKS
VERSION
buildscripts/fixcc.py
buildscripts/grand-replace.sh [new file with mode: 0644]
buildscripts/makelsr.py
buildscripts/mf-to-table.py
elisp/lilypond-mode.el
input/lsr/ancient/ancient-accidentals.ly [new file with mode: 0644]
input/lsr/chords/inserting-a--markup-when-using-chordmode.ly [new file with mode: 0644]
input/lsr/connecting/short-tremolos.ly
input/lsr/contemporary/double-glissando.ly [new file with mode: 0644]
input/lsr/expressive/adding-accidentals-to-a-trillspanner.ly [new file with mode: 0644]
input/lsr/nonmusic/modifying-default-font-properties-for-piece-titles.ly [new file with mode: 0644]
input/lsr/other/using-the--tweak-command-to-tweak-individual-grobs.ly
input/lsr/scheme/automatically-durations-diminution.ly [new file with mode: 0644]
input/lsr/scheme/creating-a-sequence-of-notes-on-various-pitches.ly [new file with mode: 0644]
input/lsr/scheme/semichoirstaff--choirstaff-with-spanbars-except---type-bars.ly [new file with mode: 0644]
input/lsr/text/inserting-large-plain-text-sections,-as-independent--markup-blocks.ly [new file with mode: 0644]
input/lsr/text/preventing-long--mark-objects-to-stretch-a-measure.ly [new file with mode: 0644]
input/regression/accidental-ancient.ly
input/regression/beam-beamlet-break.ly [new file with mode: 0644]
input/regression/beam-feather-knee-stem-length.ly
input/regression/line-dash-small-period.ly [new file with mode: 0644]
input/regression/slur-cross-staff-beam.ly [new file with mode: 0644]
input/regression/spacing-folded-clef3.ly [new file with mode: 0644]
input/regression/spacing-knee-compressed.ly [new file with mode: 0644]
input/regression/spacing-non-adjacent-columns1.ly [new file with mode: 0644]
input/regression/spacing-non-adjacent-columns2.ly [new file with mode: 0644]
input/regression/spacing-space-to-barline.ly [new file with mode: 0644]
lily/axis-group-interface.cc
lily/beam.cc
lily/include/pointer-group-interface.hh
lily/include/separation-item.hh
lily/include/side-position-interface.hh
lily/lilypond.rc.in
lily/line-interface.cc
lily/lookup.cc
lily/lyric-engraver.cc
lily/note-spacing-engraver.cc
lily/note-spacing.cc
lily/ottava-bracket.cc
lily/paper-column-engraver.cc
lily/paper-column.cc
lily/pointer-group-interface.cc
lily/separation-item.cc
lily/slur.cc
lily/spacing-determine-loose-columns.cc
lily/spacing-interface.cc
lily/spacing-spanner.cc
lily/spring.cc
lily/stem.cc
lily/tuplet-bracket.cc
ly/engraver-init.ly
make/doclang-targets.make
mf/feta-arrow.mf
mf/feta-autometric.mf
mf/feta-beugel.mf
mf/feta-bolletjes.mf
mf/feta-braces-a.mf
mf/feta-braces-b.mf
mf/feta-braces-c.mf
mf/feta-braces-d.mf
mf/feta-braces-e.mf
mf/feta-braces-f.mf
mf/feta-braces-g.mf
mf/feta-braces-h.mf
mf/feta-braces-i.mf
mf/feta-din-code.mf
mf/feta-eindelijk.mf
mf/feta-generic.mf
mf/feta-haak.mf
mf/feta-klef.mf
mf/feta-nummer-code.mf
mf/feta-pendaal.mf
mf/feta-schrift.mf
mf/feta-slag.mf
mf/feta-timesig.mf
mf/feta-toevallig.mf
mf/parmesan-accidentals.mf
mf/parmesan-clefs.mf
mf/parmesan-custodes.mf
mf/parmesan-flags.mf
mf/parmesan-generic.mf
mf/parmesan-heads.mf
mf/parmesan-macros.mf
mf/parmesan-rests.mf
mf/parmesan-scripts.mf
mf/parmesan-timesig.mf
po/de.po
ps/music-drawing-routines.ps
python/convertrules.py
python/lilylib.py
python/midi.c
python/musicexp.py
python/musicxml.py
scm/auto-beam.scm
scm/backend-library.scm
scm/c++.scm
scm/chord-entry.scm
scm/chord-generic-names.scm
scm/chord-ignatzek-names.scm
scm/chord-name.scm
scm/define-context-properties.scm
scm/define-grob-interfaces.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-markup-commands.scm
scm/define-music-display-methods.scm
scm/define-music-properties.scm
scm/define-music-types.scm
scm/define-stencil-commands.scm
scm/display-lily.scm
scm/document-backend.scm
scm/document-functions.scm
scm/document-markup.scm
scm/document-music.scm
scm/document-translation.scm
scm/documentation-generate.scm
scm/documentation-lib.scm
scm/editor.scm
scm/encoding.scm
scm/file-cache.scm
scm/font.scm
scm/framework-eps.scm
scm/framework-ps.scm
scm/framework-svg.scm
scm/framework-tex.scm
scm/framework-texstr.scm
scm/fret-diagrams.scm
scm/kpathsea.scm
scm/layout-beam.scm
scm/layout-page-layout.scm
scm/layout-slur.scm
scm/lily-library.scm
scm/lily.scm
scm/markup.scm
scm/midi.scm
scm/music-functions.scm
scm/output-lib.scm
scm/output-ps.scm
scm/output-svg.scm
scm/output-tex.scm
scm/output-texstr.scm
scm/paper.scm
scm/parser-clef.scm
scm/parser-ly-from-scheme.scm
scm/part-combiner.scm
scm/ps-to-png.scm
scm/safe-lily.scm
scm/script.scm
scm/standalone.scm
scm/stencil.scm
scm/titling.scm
scm/to-xml.scm
scm/translation-functions.scm
scm/x11-color.scm
scripts/convert-ly.py
scripts/lilypond-book.py
scripts/lilypond-invoke-editor.scm [changed mode: 0755->0644]
scripts/midi2ly.py
scripts/musicxml2ly.py
stepmake/stepmake/texinfo-vars.make
tex/lilyponddefs.tex
vim/lilypond-compiler.vim

index a9d51b96f2db6dc26b093c627e8f00e653968a34..d7d3c41856b577af3a934fb875739121f13377eb 100644 (file)
@@ -48,7 +48,6 @@ Distributions will want to install lilypond.info in postinstall, doing:
 * etf2ly: (lilypond/lilypond-program)Invoking etf2ly.          Finale-Dateien importieren.
 * lilypond-book: (lilypond/lilypond-program)LilyPond-book.     Noten in den Text integrieren.
 * midi2ly: (lilypond/lilypond-program)Invoking midi2ly.        Midi-Dateien importieren.
-* mup2ly: (lilypond/lilypond-program)Invoking mup2ly.          Mup-Dateien importieren.
 @end direntry
 
 @c don't remove this comment.
index f42dffde4f436beb5119fb278166dcab499609d8..283af266a1bdc9f7ce0c451b570c9122fb58c069 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <!--
-    Translation of GIT committish: dc78324e8424699ec17df064941c0c787d4eb91c
+    Translation of GIT committish: 964d024dd4f022ba7cd66adc13c0169035d4c4e5
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
            <a class="title" href="user/lilypond/Tutorial.es.html">Tutorial</a>
              <br>(comience por aquí)
 
+          <li><a class="title" href="user/music-glossary/index.html">Glosario</a> multilingüe<br>
+(en <a class="title" href="user/music-glossary-big-page.html">una sola página</a> ~ 1 Mb,
+en <a class="title" href="user/music-glossary.pdf">PDF</a>)
+
+     <br>(para usuarios de habla no inglesa)
          </ul>
          </td>
          <td class="right-column">
          <ul>
-         
             <li>
-           <a class="title" href="topdocs/NEWS.html">Noticias</a>
-           <br>(cambios producidos desde el último lanzamiento importante)
+           <a class="title" href="user/lilypond-program/index.html">Instrucciones de manejo</a>
+(en <a class="title" href="user/lilypond-program-big-page.html">una sola página</a>,
+en <a class="title" href="user/lilypond-program.pdf">PDF</a>)
+           <br>(cómo instalar y ejecutar el programa)
+         
+<li><a class="title" href="../examples.html">Ejemplos</a>
+     <br>(ver algunos ejemplos)
 
-            <li>
-           <a class="title" href="topdocs/INSTALL.html">Instalación</a>
-           <br>(cómo compilarlo)
          </ul>
          </td>
         </tr>
 <a class="title" href="user/lilypond/index.es.html">Manual del usuario</a> [parcialmente traducido]<br>
 (en <a class="title" href="user/lilypond-big-page.html">una sola página</a> [en inglés] ~ 4 Mb, <br>
 y en <a class="title" href="user/lilypond.es.pdf">PDF</a>)
-
      <br>(todo sobre LilyPond)
-     
-<li><a class="title" href="../examples.html">Ejemplos</a>
-
-     <br>(ver algunos ejemplos)
-
-<li><a class="title" href="../input/lsr/collated-files.html">Fragmentos de código</a>
-     <br>
 
<li><a class="title" href="user/music-glossary/index.html">Glosario</a> multilingüe<br>
-(en <a class="title" href="user/music-glossary-big-page.html">una sola página</a> ~ 1 Mb,
-en <a class="title" href="user/music-glossary.pdf">PDF</a>)
-
-     <br>(para usuarios de habla no inglesa)
-         </ul>
      <li>
+ <a  class="title" href="user/lilypond-internals/index.html">Referencia del programa</a> [en inglés]<br>
+ (en <a class="title" href="user/lilypond-internals-big-page.html">una sola página</a> ~ 1 Mb)
+     <br>(definiciones para hacer trucos)
+        
+  </ul>
          </td>
          <td valign="baseline" class="right-column">
           &nbsp;
          <ul>
-           <li>
- <a  class="title" href="user/lilypond-internals/index.html">Referencia del programa</a> [en inglés]<br>
- (en <a class="title" href="user/lilypond-internals-big-page.html">una sola página</a> ~ 1 Mb)
-
-     <br>(definiciones para hacer trucos)
-
-           <li>
-     <a  class="title" href="../input/regression/collated-files.html">Pruebas de regresión</a> (~ 5 Mb, en <a  class="title" href="../input/regression/collated-files.pdf">PDF</a>, <a href="../test-results.html">comparación</a>)
-
-     <br>(para los desarrolladores)
+            <li>
+           <a class="title" href="topdocs/NEWS.html">Noticias</a>
+           <br>(cambios producidos desde el último<br>lanzamiento importante)
 
+<li><a class="title" href="../input/lsr/collated-files.html">Fragmentos de código</a>
+     <br>(Trucos breves, consejos y ejemplos)
 
-           <li><a  class="title" href="bibliography/index.html">Bibliografía</a>
+       </ul>
 
+    </td><tr>
+        <tr>
+          <td valign="baseline" class="left-column">
+          &nbsp;
+       <ul>
+           <li><a class="title" href="bibliography/index.html">Bibliografía</a>
      <br>(acerca de la información de apoyo)
-<li><a class="title"  href="THANKS.html">Agradecimientos</a>
-<br>(a nuestros colaboradores)
 
-<li><a class="title"  href="DEDICATION.html">Dedicatoria</a>
+    <li>
+     <a  class="title" href="../input/regression/collated-files.html">Pruebas de regresión</a> (~ 5 Mb, en <a  class="title" href="../input/regression/collated-files.pdf">PDF</a>)
+     <br>(para los desarrolladores)
+
+       </ul>
+    </td><td class="right-column">
+          &nbsp;
+    <ul>
+        <li><a class="title"  href="THANKS.html">Agradecimientos</a>
+       <br>(a nuestros colaboradores)
 
-     <br>(por Jan y Han-Wen)
+        <li><a class="title"  href="DEDICATION.html">Dedicatoria</a>
+       <br>(por Jan y Han-Wen)
 
          </ul>
          </td>
index f97a46e3465c88e98dba787aa898e8f53afd00ec..6542edb6c479314d6bc5f0580df751c50f111b5b 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: dc78324e8424699ec17df064941c0c787d4eb91c
+    Translation of GIT committish: c01ece138f68cfe9521f3b0ff2d852579af45889
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -212,7 +212,6 @@ los bemoles de tres cuartos, de manera que los símbolos de LilyPond
 no se ajustan a ningún estándar.
 
 
-
 @node Note names in other languages
 @subsection Note names in other languages
 
@@ -254,7 +253,6 @@ de tono que se definen en los distintos archivos de idioma se encuentran
 listados en la tabla siguiente.  Aquí los prefijos @q{semi-} y @q{sesqui-} significan
 @q{medio} y @q{uno y medio} respectivamente.  Para el noruego,
 sueco, catalán y español no se ha definido aún ningún nombre especial.
-
 @c What about Turkish Maquam music and similar microtonal systems?
 @c
 @c Note that the term "three-quarter-sharp/-flat" used in lilypond's source code 
@@ -278,7 +276,6 @@ espanol.ly     do  re  mi  fa  sol la  sib si
 
 
 @node Relative octaves
-
 @subsection Relative octaves
 
 @cindex Relativo
@@ -371,12 +368,10 @@ lo que indica cuál debería ser su octava absoluta.  En el siguiente ejemplo,
 @noindent
 la @code{d} generará una advertencia, porque se esperaba un @code{d''}
 (a causa de que el intervalo de @code{b'} a @code{d''} es de una tercera solamente),
-pero aparece un @code{d'}.  En la salida, la octava se corrige para que sea
-un @code{d''} y la siguiente nota se calcula de forma relativa a @code{d''} 
-en lugar de a @code{d'}.
+pero aparece un @code{d'}.  En la salida, la octava se corrige para que sea un @code{d''} y
+la siguiente nota se calcula de forma relativa a @code{d''} en lugar de a @code{d'}.
 
-También existe una comprobación de octava que no produce ninguna salida visible.
-La sintaxis
+También existe una comprobación de octava que no produce ninguna salida visible. La sintaxis
 
 @example
 \octave @var{altura}
@@ -392,7 +387,8 @@ se aprueba sin más problema, porque el @code{e} (en modo @code{relative})
 está dentro de una quinta desde @code{a'}.  Sin embargo
 la segunda comprobación produce una advertencia porque el @code{e} no está dentro
 de una quinta del @code{b'}.  Se imprime el mensaje de advertencia y la octava se ajusta
-de modo que las notas siguientes están en la octava correcta de nuevo.
+de modo que las notas siguientes están en la octava correcta
+de nuevo.
 
 @example
 \relative c' @{
@@ -490,7 +486,7 @@ con otro @code{transpose}
 
 Referencia del programa: @internalsref{TransposedMusic}.
 
-Ejemplo: @code{input/@/test,smart@/-transpose@/.ly}.
+Ejemplo: @lsr{scheme,transpose-pitches-with-minimum-accidentals.ly}.
 
 
 @refbugs
@@ -528,7 +524,8 @@ a'4\rest d'4\rest
 @end lilypond
 
 @noindent
-Esto hace mucho más sencillo el formateo de la música polifónica,
+Esto hace mucho más sencillo el formateo de
+la música polifónica,
 porque el formateador automático de colisiones de silencios se olvidará de ellos.
 
 @seealso
@@ -611,8 +608,7 @@ mediante números y puntos: las duraciones se introducen como sus
 valores recíprocos respecto de la redonda.  Por ejemplo, una negra
 se escribe usando un @code{4} (puesto que es 1/4 de redonda), mientras
 que una blanca se escribe con un @code{2} (por ser 1/2 de redonda).  Para
-notas mayores de la redonda se deben usar los comandos @code{\longa} y
-@code{\breve}
+notas mayores de la redonda se deben usar los comandos @code{\longa} y @code{\breve}
 
 @example
 c'\breve
@@ -651,8 +647,7 @@ r1 r2 r4 r8 r16 r32 r64 r64
 @end lilypond
 
 Si la duración se omite, su valor será el de la duración de la nota
-anterior.  Por omisión, el valor de la primera nota es el de una
-negra.
+anterior.  Por omisión, el valor de la primera nota es el de una negra.
 
 @lilypond[quote,ragged-right,verbatim,fragment]
 { a a a2 a a4 a a1 a }
@@ -665,8 +660,7 @@ negra.
 @funindex .
 
 Para obtener duraciones de notas con puntillo, simplemente escriba un
-punto (@samp{.}) después del número.  Las notas con doble puntillo se
-consiguen de manera similar.
+punto (@samp{.}) después del número.  Las notas con doble puntillo se consiguen de manera similar.
 
 @lilypond[quote,ragged-right,fragment,verbatim]
 a'4 b' c''4. b'8 a'4. b'4.. c''8.
@@ -676,8 +670,7 @@ a'4 b' c''4. b'8 a'4. b'4.. c''8.
 
 Normalmente los puntillos se desplazan hacia arriba para evitar las
 líneas del pentagrama, excepto en situaciones de polifonía.  Se pueden
-utilizar los siguientes comandos para forzar manualmente una dirección
-en particular
+utilizar los siguientes comandos para forzar manualmente una dirección en particular
 
 @funindex \dotsUp
 @code{\dotsUp},
@@ -769,10 +762,50 @@ Para que no se impriman los números de los grupos, emplee
 \times 2/3 { c8 c c } \times 2/3 { c8 c c }
 @end lilypond
 
-@c needs revision. FVD
-Se puede hacer que los corchetes de grupo abarquen tanto como su
-duración completa indique o que lleguen hasta justo antes de la nota
-siguiente
+Utilice la función @code{\tweak} para sobreescribir los grupos anidados que comienzan en el mismo
+instante musical.  En este ejemplo, @code{\tweak} especifica un texto de fracción
+para el
+@code{TupletNumber} exterior y un texto de denominador para el @code{TupletNumber}
+del primero de los tres grupos interiores.
+
+@lilypond[quote,ragged-right,verbatim]
+\new Staff {
+  \tweak #'text #tuplet-number::calc-fraction-text
+  \times 4/3 {
+     \tweak #'text #tuplet-number::calc-denominator-text
+     \times 2/3 { c'8[ c'8 c'8] }
+     \times 2/3 { c'8[ c'8 c'8] }
+     \times 2/3 { c'8[ c'8 c'8] }
+  }
+}
+@end lilypond
+
+Aquí @code{\tweak} y @code{\override} trabajan conjuntamente para especificar la dirección
+del @code{TupletBracket} (el corchete del grupo).  El primer @code{\tweak} coloca
+el @code{TupletBracket} del grupo 
+exterior por encima del pentagrama.  El segundo @code{\tweak} coloca el
+@code{TupletBracket} del primero de los tres grupos interiores por debajo del
+pentagrama.  Tenga en cuenta que este par de funciones @code{\tweak} afecta solamente
+al grupo exterior y al primero de los tres grupos interiores porque sólo
+esos dos grupos comienzan en el mismo instante musical.  Utilizamos @code{\override}
+de la manera usual para colocar los corchetes @code{TupletBrackets} del
+segundo y tercer grupos interiores por debajo del pentagrama.
+
+@lilypond[quote,ragged-right,verbatim]
+\new Staff {
+  \tweak #'text #tuplet-number::calc-fraction-text
+  \tweak #'direction #up
+  \times 4/3 {
+     \tweak #'direction #down
+     \times 2/3 { c'8[ c'8 c'8] }
+     \override TupletBracket #'direction = #down
+     \times 2/3 { c'8[ c'8 c'8] }
+     \times 2/3 { c'8[ c'8 c'8] }
+  }
+}
+@end lilypond
+
+Se puede hacer que los corchetes de grupo abarquen tanto como su duración completa indique o que lleguen hasta justo antes de la nota siguiente
 
 @lilypond[ragged-right]
 \new RhythmicStaff {
@@ -820,7 +853,7 @@ b16*4 c4
 
 @seealso
 
-En este manual: @ref{Tuplets}
+En este manual: @ref{Tuplets}.
 
 
 @node Bar check
@@ -844,7 +877,7 @@ Las comprobaciones de compás también se pueden usar en la letra de las cancion
 @example
 \lyricmode @{
   \time 2/4
-  Cam -- pa | ni -- tas 
+  Bri -- lla | Bri -- lla 
 @}
 @end example
 
@@ -890,8 +923,7 @@ compás actual) no es 123 cuando se está procesando.
 Las notas largas se pueden convertir automáticamente en notas ligadas.
 Se hace mediante la sustitución del @internalsref{Note_heads_engraver}
 por el @internalsref{Completion_heads_engraver}.  En los siguientes
-ejemplos, las notas que atraviesan la barra de compás se dividen y se
-unen mediante una ligadura.
+ejemplos, las notas que atraviesan la barra de compás se dividen y se unen mediante una ligadura.
 
 @lilypond[quote,fragment,verbatim,relative=1,line-width=12\cm]
 \new Voice \with {
@@ -909,7 +941,7 @@ exactamente cuánto le falta a cada compás.
 
 Si quiere permitir el salto de línea en las barras de compás en las
 que @internalsref{Completion_heads_engraver} divide las notas, debe
-eliminar también @internalsref{Forbid_line_breaks_engraver}.
+eliminar también @internalsref{Forbid_line_break_engraver}.
 
 
 @refbugs
@@ -918,7 +950,6 @@ No todas las duraciones (sobre todo las que contienen grupos
 especiales) se pueden representar exactamente con notas normales y
 puntillos, pero el grabador nunca insertará grupos especiales.
 
-
 @code{Completion_heads_engraver} afecta sólo a las notas; no divide
 silencios.
 
@@ -935,7 +966,6 @@ La polifonía en música hace referencia a tener más de una voz en una
 pieza cualquiera de música.  En LilyPond la polifonía hace referencia
 a tener más de una voz en el mismo pentagrama.
 
-
 @menu
 * Chords::                      
 * Stems::                       
@@ -968,7 +998,6 @@ Cuando se encuentra con una nota, se crea un objeto
 @internalsref{Stem} (plica) automáticamente.  Para las redondas y los
 silencios, también se crean pero se hacen invisibles.
 
-
 @refcommands
 
 @funindex \stemUp
@@ -1021,19 +1050,18 @@ Llevan los nombres @code{"1"}, @code{"2"}, etc.  En cada
 uno de estos contextos, la dirección vertical de las ligaduras, plicas, etc., se establece
 de la manera que corresponda.
 
-Todas estas voces están separadas de la voz que contiene las noas
-justo por fuera de la construcción @code{<< \\ >>}.  Esto se debe
-tener en cuenta cuando haga algún cambio en una voz.  También
-significa que las ligaduras de unión y de expresión no pueden salir ni
-entrar en una construcción @code{<< \\ >>}.  En cambio las voces
+Todas estas voces están separadas de la voz que contiene las notas
+justo por fuera de la construcción @code{<< \\ >>}.  Se debe tener
+esto en cuenta cuando haga algún cambio en una voz.  También
+significa que las ligaduras de unión y de expresión no pueden salir de (ni
+entrar en) una construcción @code{<< \\ >>}.  En cambio las voces
 paralelas que están en construcciones @code{<< \\ >>} separadas dentro
 del mismo pentagrama, son la misma voz.  Presentamos a continuación el
 mismo ejemplo, con cabezas distintas para cada voz.  Dése cuenta de
 que el cambio en el estilo de cabezas de nota en la voz principal no
 afecta a las que están dentro de la construcción @code{<< \\ >>}.
-También, el cambio a la segunda voz en la primera construcción
-@code{<< \\ >>} es efectiva en la segunda @code{<< \\ >>}, y la voz se
-liga de una construcción a otra.
+Asimismo, el cambio a la segunda voz en la primera construcción
+@code{<< \\ >>} es efectiva en la segunda @code{<< \\ >>}, y la voz se liga de una construcción a otra.
 
 @cindex cabezas de nota, estilos de
 
@@ -1171,8 +1199,7 @@ una forma más natural de tipografiar la música.
 
 En ciertos casos de música polifónica compleja podría ser necesario
 utilizar voces adicionales para evitar colisiones entre las notas.
-Las voces adicionales se añaden definiendo un identificador como se
-muestra a continuación:
+Las voces adicionales se añaden definiendo un identificador como se muestra a continuación:
 
 @lilypond[quote,verbatim,ragged-right,relative=2]
 voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice)
@@ -1191,8 +1218,7 @@ voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice)
 
 Normalmente las cabezas de nota con un número de puntillos diferente
 no se mezclan en una sola, pero cuando se le da un valor verdadero a
-la propiedad @code{merge-differently-dotted} en el objeto
-@internalsref{NoteCollision}, se juntan en una sola:
+la propiedad @code{merge-differently-dotted} en el objeto @internalsref{NoteCollision}, se juntan en una sola:
 
 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
 \new Voice << {
@@ -1278,9 +1304,8 @@ tienen @code{\shiftOn} (desplazamiento activado).  @code{\shiftOnn} y @code{\shi
 más grandes.
 
 Cuando LilyPond no puede con todo, se pueden usar la propiedad
-@code{force-hshift} (forzar desplazamiento) del objeto
-@internalsref{NoteColumn} y los silencios con altura para sobreescibir
-las decisiones de tipografía.
+@code{force-hshift} (forzar desplazamiento) del objeto @internalsref{NoteColumn}
+y los silencios con altura para sobreescibir las decisiones de tipografía.
 
 @lilypond[quote,verbatim,ragged-right]
 \relative <<
@@ -1303,8 +1328,9 @@ Referencia del programa: los objetos responsables de resolver las colisiones son
 
 @refbugs
 
-Cuando se emplea @code{merge-differently-headed} con una corchea (o una nota más corta) con la plica hacia arriba,
-y una blanca con la plica hacia abajo, la corchea no tiene el desplazamiento correcto.
+Cuando se emplea @code{merge-differently-headed} con una corchea (o una nota más corta)
+con la plica hacia arriba, y una blanca con la plica hacia abajo,
+la corchea no tiene el desplazamiento correcto.
 
 No hay soporte para racimos (clusters) donde la misma nota se presenta
 con diferentes alteraciones accidentales dentro del mismo acorde.  En
@@ -1448,7 +1474,8 @@ La armadura indica la tonalidad en que se toca una pieza.  Está
 denotada por un conjunto de alteraciones (bemoles o sostenidos) al comienzo del
 pentagrama.
 
-El establecimiento o modificación de la armadura se hace con el comando @code{\key}
+El establecimiento o modificación de la armadura se hace con el
+comando @code{\key}
 
 @example
 @code{\key} @var{nota} @var{tipo}
@@ -1490,7 +1517,8 @@ fis
 @commonprop
 
 Se imprime un símbolo de becuadro para cancelar las alteraciones anteriores.  Se puede
-suprimir esto estableciendo la propiedad @code{Staff.printKeyCancellation}.
+suprimir esto estableciendo la propiedad
+@code{Staff.printKeyCancellation}.
 
 @lilypond[quote,fragment,ragged-right,fragment,verbatim,relative=2]
 \key d \major
@@ -1542,15 +1570,16 @@ de 2/2,
 \time 2/2 c'1
 @end lilypond
 
-Existen muchas opciones para su presentación.  Consulte @ref{Ancient time
-signatures} para ver más ejemplos.
+Existen otras muchas opciones para su presentación.  Para ver más ejemplos, consulte @ref{Ancient time
+signatures}.
 
 @code{\time} establece las propiedades @code{timeSignatureFraction},
 @code{beatLength} y @code{measureLength} en el contexto @code{Timing},
 cuyo nombre alternativo normalmente es @internalsref{Score}.  La
 propiedad @code{measureLength} determina el lugar en que se deben insertar las barras de compás
 y cómo se generan las barras de corchea auromáticas.  La modificación del valor de
-@code{timeSignatureFraction} también provoca que se imprima el símbolo.
+@code{timeSignatureFraction} también provoca que se imprima
+el símbolo.
 
 Están disponibles más opciones a través de la función de Scheme
 @code{set-time-signature}.  En combinación con el grabador
@@ -1583,7 +1612,7 @@ se subdivide en 2, 2, 2 y 3.  Esto se pasa a
 Referencia del programa: @internalsref{TimeSignature} y
 @internalsref{Timing_translator}.
 
-Ejemplos: @code{input/@/test,compound@/-time@/.ly}.
+Ejemplos: @lsr{contemporary,compound-time-signature.ly}.
 
 
 @refbugs
@@ -1602,8 +1631,7 @@ EL barrado automático no utiliza la agrupación de compases especificada con
 @cindex acortar compases
 @funindex \partial
 
-Los compases parciales como las anacrusas o partes al alzar se escriben
-usando la construcción
+Los compases parciales como las anacrusas o partes al alzar se escriben usando la construcción
 
 @lilypond[quote,ragged-right,fragment,verbatim,relative=2]
 \partial 16*5 c16 cis d dis e | a2. c,4 | b2
@@ -1615,7 +1643,8 @@ La sintaxis de este comando es la siguiente:
 \partial @var{duración}
 @end example
 
-donde @code{duración} es el valor rítmico que se se debe añadir antes del siguiente compás.
+donde @code{duración} es el valor rítmico que se se debe añadir antes
+del siguiente compás.
 
 Esto se traduce internamente a
 
@@ -1653,7 +1682,7 @@ desagradables.
 @cindex Barras de compás
 @funindex \bar
 @cindex líneas divisorias
-@cindex barras de repetición
+@cindex repetición, barras de
 
 Las líneas divisorias delimitan a los compases pero también se pueden usar
 para indicar las repeticiones.  Normalmente se insertan de manera automática.
@@ -1688,7 +1717,7 @@ el salto de línea en este punto (sin incrementar el contador de los números de
 
 En las partituras con muchos pentragramas, un comando @code{\bar} en uno de ellos se aplica
 automáticamente a todos los demás.  Las líneas resultantes se conectan entre los distintos pentagramas
-de un @code{StaffGroup}, @code{PianoStaff} o @code{ChoirStaff}.
+de un @code{StaffGroup}, @code{PianoStaff} o @code{GrandStaff}.
 
 @lilypond[quote,ragged-right,fragment,verbatim]
 <<
@@ -1758,7 +1787,8 @@ d4 e d c
 
 LilyPond insertará saltos de línea y de página solamente en las barras de compás.
 A menos que la música sin compasear acabe antes del final de la línea del pentagrama,
-tendrá que insertar barras de compás invisibles
+tendrá que insertar barras
+de compás invisibles
 
 @example
 \bar ""
@@ -1795,7 +1825,8 @@ están conectadas.  Esto se hace con el contexto @internalsref{GrandStaff}.
 @end lilypond
 
 @item El grupo comienza con un corchete recto y las líneas de compás están conectadas.
-Esto se hace con el contexto @internalsref{StaffGroup}
+Esto se hace con el contexto
+@internalsref{StaffGroup}
 
 @lilypond[verbatim,ragged-right,quote]
 \new StaffGroup
@@ -1842,7 +1873,7 @@ crea uno de estos tipos, y ese tipo está determinado por la propiedad
 Los delimitadores del comienzo del sistema se pueden anidar muchas veces:
 
 @lilypond[quote,ragged-right,verbatim]
-\new StaffGroup 
+\new StaffGroup
 \relative <<
   \set StaffGroup.systemStartDelimiterHierarchy
     = #'(SystemStartSquare (SystemStartBracket a (SystemStartSquare b)) d)
@@ -1866,10 +1897,9 @@ LilyPond, estas líneas se dibujan utilizando un objeto de presentación separad
 que se llama el @code{staff symbol} (el símbolo del pentagrama).
 
 El símbolo del pentagrama se puede ajustar en el número, grosor
-y separación de las líneas, usando las propiedades.  Esto se demuestra en los
-archivos de ejemplo
-@code{input/@/test,staff@/-lines@/.ly} y
-@code{input/@/test,staff@/-size@/.ly}.
+y separación de las líneas, usando las propiedades.  Esto se demuestra en los archivos de ejemplo
+@lsr{staff,changing-the-number-of-lines-in-a-staff.ly} y
+@lsr{staff,changing-the-staff-size.ly}.
 
 Además, los pentagramas se pueden iniciar e interrumpir libremente.  Esto se
 hace con @code{\startStaff} y @code{\stopStaff}.
@@ -1900,10 +1930,7 @@ esto se puede usar para componer tipográficamente secciones de ossia.  He aquí
 
 Referencia del programa: @internalsref{StaffSymbol}.
 
-Ejemplos: @code{input/@/test,staff@/-lines@/.ly},
-@code{input/@/test@/,ossia.ly},
-@code{input/@/test,staff@/-size@/.ly},
-@lsr{staff,staff-line-positions.ly}
+Ejemplos: @lsrdir{staff}
 
 
 @node Writing music in parallel
@@ -1927,7 +1954,7 @@ La música para varias partes se puede intercalar
 >>
 @end lilypond
 
-Esto funciona de manera aceptable para música de piano
+Esto funciona bastante bien para música de piano
 
 @lilypond[quote,verbatim]
 music = {
@@ -2020,8 +2047,7 @@ exactamente el mismo concepto:
 @noindent
 Se usan ligaduras de expresión bien cuando la nota atraviesa la barra
 de compás o bien cuando no se pueden usar puntillos para denotar el
-ritmo.  Cuando se usan ligaduras, las notas de mayor duración se deben
-alinear con las subdivisiones del compás, como
+ritmo.  Cuando se usan ligaduras, las notas de mayor duración se deben alinear con las subdivisiones del compás, como
 
 @lilypond[fragment,quote,ragged-right]
 \relative {
@@ -2032,14 +2058,12 @@ alinear con las subdivisiones del compás, como
 Si necesita unir muchas notas a través de las líneas divisorias, puede
 reslutar más fácil utilizar la división automática de notas (vea
 @ref{Automatic note splitting}).  Este mecanismo divide las notas
-largas de forma automática y las liga a través de las barras de
-compás.
+largas de forma automática y las liga a través de las barras de compás.
 
 @funindex \repeatTie
 
 Cuando la segunda vez de una repetición comienza con una nota ligada,
-es necesario repetir la ligadura.  Esto se puede conseguir mediante
-@code{\repeatTie},
+es necesario repetir la ligadura.  Esto se puede conseguir mediante @code{\repeatTie},
 
 @lilypond[fragment,quote,ragged-right,relative=2]
 r <c e g>\repeatTie
@@ -2050,10 +2074,9 @@ r <c e g>\repeatTie
 
 @commonprop
 
-A veces se usan ligaduras para escribir arpegios.  En este caso, dos
-notas ligadas no necesitan ser consecutivas.  Esto se puede conseguir
-estableciendo la propiedad @code{tieWaitForNote} (ligadura - esperar
-nota) al valor verdadero. La misma funcionalidad puede resultar útil,
+A veces se usan ligaduras para escribir arpegios.  En este caso, dos notas ligadas no
+necesitan ser consecutivas.  Esto se puede conseguir estableciendo la propiedad @code{tieWaitForNote}
+(ligadura - esperar nota) al valor verdadero. La misma funcionalidad puede resultar útil,
 por ejemplo, para ligar un trémolo a un acorde.  Por ejemplo,
 
 @lilypond[fragment,verbatim,relative=1,ragged-right,quote]
@@ -2105,8 +2128,7 @@ Referencia del programa: @internalsref{Tie}.
 Un cambio de pentagrama cuando hay una ligadura activa no producirá una ligadura inclinada.
 
 Los cambios de clave o de octava durante una ligadura de unión no
-están bien definidos realmente.  En estos casos puede ser preferible
-una ligadura de expresión.
+están bien definidos realmente.  En estos casos puede ser preferible una ligadura de expresión.
 
 
 @node Slurs
@@ -2129,23 +2151,20 @@ La dirección de una ligadura de expresión se puede especificar con
 
 Sin embargo, hay una forma abreviada muy conveniente para forzar las
 direcciones de las ligaduras de expresión.  Escibiendo @code{_} o
-@code{^} antes de los paréntesis de apertura, también se establece la
-dirección.  Por ejemplo,
+@code{^} antes de los paréntesis de apertura, también se establece la dirección.  Por ejemplo,
 
 @lilypond[relative=2,ragged-right,quote,verbatim,fragment]
 c4_( c) c^( c)
 @end lilypond
 
 Se puede imprimir una sola ligadura cada vez.  Si necesita imprimir
-una ligadura larga por encima de varias ligauras más cortas, consulte
-@ref{Phrasing slurs}.
+una ligadura larga por encima de varias ligauras más cortas, consulte @ref{Phrasing slurs}.
 
 
 @commonprop
 
 Algunos compositores escriben dos ligaduras cuando quieren acordes
-legato.  Esto se consigue en LilyPond mediante el establecimiento de
-@code{doubleSlurs},
+legato.  Esto se consigue en LilyPond mediante el establecimiento de @code{doubleSlurs},
 
 @lilypond[verbatim,ragged-right,relative,fragment,quote]
 \set doubleSlurs = ##t
@@ -2189,8 +2208,7 @@ utiliza para indicar una frase musical.  Se escribe usando @code{\(} y
 
 Tipográficamente, la ligadura de fraseo se comporta casi exactamente
 igual que una ligadura de expresión normal.  Sin embargo, se tratan
-como objetos diferentes.  Una @code{\slurUp} no tendrá ningún efecto
-sobre una ligadura de fraseo; utilice en su lugar
+como objetos diferentes.  Una @code{\slurUp} no tendrá ningún efecto sobre una ligadura de fraseo; utilice en su lugar
 @code{\phrasingSlurUp}, @code{\phrasingSlurDown}, y
 @code{\phrasingSlurNeutral}.
 
@@ -2219,8 +2237,7 @@ Referencia del programa: @internalsref{PhrasingSlur}.
 
 Las ligaduras L.v. (laissez vibrer, dejar vibrar) indican que las
 notas no se deben apagar al final.  Se usan en la notación para piano,
-arpa y otros instrumentos de cuerda y percusión.  Se pueden introducir
-escribiendo @code{\laissezVibrer},
+arpa y otros instrumentos de cuerda y percusión.  Se pueden introducir escribiendo @code{\laissezVibrer},
 
 @lilypond[fragment,ragged-right,verbatim,relative=1]
 <c f g>\laissezVibrer
@@ -2248,7 +2265,7 @@ LilyPond inserta las barras de corchea automáticamente
 Cuando estas decisiones automáticas no son lo bastante buenas, se
 pueden escribir los barrados de forma explícita.  También es posible
 definir patrones de barrado que difieran de los ajustes por defecto.
-Consulte @ref{Setting automatic beam behavior} para ver los detalles.
+Para ver más detalles, consulte @ref{Setting automatic beam behavior}.
 
 Las notas individuales se pueden marcar con @code{\noBeam} para evitar
 que lleven una barra
@@ -2273,8 +2290,7 @@ Referencia del programa: @internalsref{Beam}.
 En ciertos casos puede ser preciso sobreescribir el algoritmo de
 barrado automático.  Por ejemplo, el barrador automático no escribe
 barras por encima de los silencios o las líneas divisorias.  Tales
-barras se especifican manualmente marcando los puntos de comienzo y
-final con @code{[} y @code{]}
+barras se especifican manualmente marcando los puntos de comienzo y final con @code{[} y @code{]}
 
 @lilypond[quote,ragged-right,fragment,relative=1,verbatim]
 {
@@ -2292,8 +2308,7 @@ Normalmente los patrones de barrado dentro de una barra se determinan
 automáticamente.  Si es necesario se pueden usar las propiedades
 @code{stemLeftBeamCount} y @code{stemRightBeamCount} para
 sobreescribir los ajustes por defecto.  Si se establece el valor de
-una propiedad cualquiera, este valor se utilizará una sola vez, y
-después se boorará.
+una propiedad cualquiera, este valor se utilizará una sola vez, y después se boorará.
 
 @lilypond[quote,ragged-right,fragment,relative=1,verbatim]
 {
@@ -2307,8 +2322,7 @@ después se boorará.
 
 Se puede establecer la propiedad @code{subdivideBeams} para subdividir
 todas las barras de semicorchea y de valores inferiores en las
-posiciones de las fracciones o partes, tal y como está definido por
-parte de la propiedad @code{beatLength}.
+posiciones de las fracciones o partes, tal y como está definido por parte de la propiedad @code{beatLength}.
 
 @lilypond[fragment,quote,relative=2,verbatim]
 c16[ c c c c c c c]
@@ -2324,8 +2338,7 @@ Para ver más información sobre @code{make-moment}, consulte
 @ref{Time administration}.
 
 Los saltos de línea normalmente están prohibidos cuando las barras
-cruzan las líneas divisorias.  Este comportamiento se puede modificar
-estableciendo @code{breakable}.
+cruzan las líneas divisorias.  Este comportamiento se puede modificar estableciendo @code{breakable}.
 
 @funindex breakable
 
@@ -2334,17 +2347,17 @@ estableciendo @code{breakable}.
 @cindex ángulo, barras en
 @cindex auto-knee-gap
 
-
-@refbugs
-
 Se insertan automáticamente barras de corchea en ángulo cuando se
 detecta un desnivel muy grande entre las cabezas de las notas. 
-@c FIXME Este comportamiento se puede ajustar a través del objeto.
+Este comportamiento se puede ajustar a través del objeto @code{auto-knee-gap}.
+
+
+@refbugs
 
 Las barras que cruzan pentagramas y reciben un ángulo automático no se
-pueden usar conjuntamente con los pentagramas ocultos.  Consulte
-@ref{Hiding staves}.
+pueden usar conjuntamente con los pentagramas ocultos.  Consulte @ref{Hiding staves}.
 
+@c Is this still true with skyline spacing stuff? -J.Mandereau
 Las barras de corchea no evitan las colisiones con los símbolos que
 rodean las notas, como los textos y las alteraciones.
 
@@ -2364,8 +2377,7 @@ denota mediante una corchea pequeña, ligada, con un corchete tachado o
 atravesado por una barrita.  La appoggiatura es una nota de adorno que
 toma una fracción fija de la nota principal, y se denota como una nota
 pequeña, ligada, sin tachar.  Ambas se introducen con los comandos
-@code{\acciaccatura} y @code{\appoggiatura}, como se muestra en el
-ejemplo siguiente
+@code{\acciaccatura} y @code{\appoggiatura}, como se muestra en el ejemplo siguiente
 
 @lilypond[quote,ragged-right,relative=2,verbatim,fragment]
 b4 \acciaccatura d8 c4 \appoggiatura e8 d4
@@ -2374,8 +2386,7 @@ b4 \acciaccatura d8 c4 \appoggiatura e8 d4
 
 Ambas son formas especiales del comando @code{\grace}.  Al anteponer
 esta palabra a una expresión musical se crea una nueva expresión, que
-se imprime en un tipo más pequeño y no ocupa ningún tiempo lógico en
-el compás.
+se imprime en un tipo más pequeño y no ocupa ningún tiempo lógico en el compás.
 
 @lilypond[quote,ragged-right,relative=2,verbatim,fragment]
 c4 \grace c16 c4
@@ -2386,11 +2397,12 @@ c4 \grace c16 c4
 Al contrario que @code{\acciaccatura} y @code{\appoggiatura}, el comando
 @code{\grace} no inicia una ligadura.
 
+@cindex timing, internal
+
 Internamente, la cuenta del tiempo para las notas de adorno se hace
 utilizando un segundo contador, el contador @q{de adorno}.  Cada
-instante en el tiempo comprende dos números racionales: uno denota el
-tiempo lógico, y el otro denota el tiempo de adorno.  El ejemplo
-anterior se muestra a continuación con vectores de tiempo
+instante en el tiempo comprende dos números racionales: uno denota el tiempo
+lógico, y el otro denota el tiempo de adorno.  El ejemplo anterior se muestra a continuación con vectores de tiempo
 
 @lilypond[quote,ragged-right]
 <<
@@ -2438,7 +2450,7 @@ de la longitud de la nota principal.  La fracción 3/4 se puede cambiar
 estableciendo @code{afterGraceFraction}, por ejemplo
 
 @example
-afterGraceFraction = #(cons 7 8)
+#(define afterGraceFraction (cons 7 8))
 @end example
 
 @noindent
@@ -2458,10 +2470,10 @@ Se puede conseguir el mismo efecto de forma manual haciendo
 Ajustando la duración de la nota de desplazamiento (aquí es una
 blanca), se ajusta el espacio entre la nota principal y la de adorno.
 
-Una sección @code{\grace} introduce ajustes de tipografía especiales,
+Una expresión musical @code{\grace} introduce ajustes de tipografía especiales,
 por ejemplo para producir un tipo más pequeño y para fijar las
 direcciones.  Por ello, cuando se introducen trucos para la
-presentación, deben ir dentro de la sección de adorno, por ejemplo:
+presentación, deben ir dentro de la expresión de adorno, por ejemplo:
 
 @lilypond[quote,ragged-right,fragment,verbatim,relative=2]
 \new Voice {
@@ -2475,13 +2487,12 @@ presentación, deben ir dentro de la sección de adorno, por ejemplo:
 @end lilypond
 
 @noindent
-Las sobreescrituras (overrides) también se deben deshacer dentro de la sección de adorno.
+Las sobreescrituras (overrides) también se deben deshacer dentro de la expresión de adorno.
 
-La disposición de las secciones de adorno se pueden cambiar a lo largo
+La disposición de las expresiones de adorno se pueden cambiar a lo largo
 de la música usando la función @code{add-grace-property}.  El
 siguiente ejemplo suprime la definición de la dirección de la
-@code{Stem} (plica) para este adorno, y así las plicas no siempre
-apuntan hacia ariba.
+@code{Stem} (plica) para este adorno, y así las plicas no siempre apuntan hacia ariba.
 
 @example
 \new Staff @{
@@ -2532,7 +2543,7 @@ Referencia del programa: @internalsref{GraceMusic}.
 
 @refbugs
 
-Una partitura que comienza con una sección @code{\grace} requiere una declaración explícita
+Una partitura que comienza con una expresión @code{\grace} requiere una declaración explícita
 @code{\new Voice} pues en caso contrario la nota principal y la de adorno
 acabarán en pentagramas distintos.
 
@@ -2547,8 +2558,7 @@ cuando mezcle pentagramas con adornos y sin adornos, por ejemplo
 
 @noindent
 Esto se puede remediar insertando desplazamientos de adorno de las
-duraciones correspondientes en los otros pentagramas.  Para el ejemplo
-anterior
+duraciones correspondientes en los otros pentagramas.  Para el ejemplo anterior
 
 @example
 \new Staff @{ c4 \bar "|:" \grace s16 d4 @}
@@ -2556,15 +2566,15 @@ anterior
 
 Las secciones de adorno sólo se deben usar dentro de expresiones de
 música secuenciales.  No están soportados el anidado ni la
-yuxtaposición de secciones de adorno, y podría producir caídas u otros
-errores.
+yuxtaposición de secciones de adorno, y podría producir caídas u otros errores.
 
 
 
 @node Expressive marks
 @section Expressive marks
 
-Las marcas de expresión ayudan al músico a sacar de la música algo más que simples notas y ritmos.
+Las marcas de expresión ayudan al músico a sacar de la música algo más que
+simples notas y ritmos.
 
 @menu
 * Articulations::               
@@ -2597,8 +2607,7 @@ Los significados de estas abreviaturas se pueden modificar.  Consulte
 
 La indicación se coloca automáticamente, pero la dirección (arriba o abajo)
 se puede también forzar.  Como otros fragmentos de código de LilyPond,
-@code{_} los situará por debajo del pentagrama, y @code{^} los colocará
-por encima.
+@code{_} los situará por debajo del pentagrama, y @code{^} los colocará por encima.
 
 @lilypond[quote,ragged-right,fragment,verbatim]
 c''4^^ c''4_^
@@ -2638,7 +2647,6 @@ c\fermata c^\fermata c_\fermata
 @cindex prallmordent
 @cindex prall, up
 @cindex prall, down
-@cindex mordente
 @cindex thumb marking
 @cindex segno
 @cindex coda
@@ -2652,7 +2660,8 @@ He aquí un cuadro que muestra todas las articulaciones disponibles:
 @commonprop
 
 El orden vertical de las articulaciones se controla con la propiedad
-@code{script-priority}.  Cuanto más bajo es esta número, más cerca de la nota se colocará.
+@code{script-priority}.  Cuanto más bajo es esta número,
+más cerca de la nota se colocará.
 En este ejemplo el @internalsref{TextScript} (el símbolo de sostenido) tiene primero la
 prioridad más baja, así que se coloca en la parte más baja en el primer ejemplo.
 En el segundo, el semitrino (el @internalsref{Script}) tiene la prioridad más baja, por tanto
@@ -2711,7 +2720,8 @@ escribiéndolas después de las alturas
 
 @commonprop
 
-Puede ejercer un mayor control sobre la digitación de los acordes estableciendo @code{fingeringOrientations}
+Puede ejercer un mayor control sobre la digitación de los acordes
+estableciendo @code{fingeringOrientations}
 
 @lilypond[quote,verbatim,ragged-right,fragment,relative=1]
 \set fingeringOrientations = #'(left down)
@@ -2952,14 +2962,14 @@ Los trinos largos mantenidos se hacen con @code{\startTrillSpan} y
 @cindex Trinos con altura
 
 Los trinos que se tienen que ejecutar sobre notas especificadas
-explícitamente se pueden tipografiar con el comando
-@code{pitchedTrill},
+explícitamente se pueden tipografiar con el comando @code{pitchedTrill},
 
 @lilypond[ragged-right,verbatim,fragment,relative=1,quote]
 \pitchedTrill c4\startTrillSpan fis
 f\stopTrillSpan
 @end lilypond
 
+@noindent
 El primer argumento es la nota principal.  La altura de la segunda se
 imprime como una cabeza de nota sin plica entre paréntesis.
 
@@ -3057,6 +3067,8 @@ arpegio a los acordes en los dos pentagramas y establecer
 >>
 @end lilypond
 
+@c TODO: cross-voice arpeggio example?
+@c such an example is already in LSR -J.Mandereau
 
 @refcommands
 
@@ -3083,6 +3095,7 @@ Referencia del programa: @internalsref{Arpeggio}.
 No es posible mezclar arpegios conectados y no conectados en un
 @internalsref{PianoStaff} en el mismo instante de tiempo.
 
+
 @node Falls and doits
 @subsection Falls and doits
 
@@ -3117,7 +3130,6 @@ tipos de notación para las repeticiones.
 @subsection Repeat types
 
 @cindex repeticiones
-@funindex \repeat
 
 Están soportados los siguientes tipos de repetición
 
@@ -3140,8 +3152,7 @@ Hacen barras de trémolo.  Por omisión no se reproducen en la salida MIDI.
 @item porcentaje
 Hacen repeticiones de compases o parte de ellos.  Tienen un aspecto
 semejante a un signo de porcentaje.  Por omisión no se reproducen en
-la salida MIDI.  Las repeticiones de porcentaje se deben declarar
-dentro de un contexto @code{Voice}.
+la salida MIDI.  Las repeticiones de porcentaje se deben declarar dentro de un contexto @code{Voice}.
 
 @end table
 
@@ -3152,6 +3163,7 @@ dentro de un contexto @code{Voice}.
 @cindex volta
 @cindex prima volta
 @cindex seconda volta
+@funindex \repeat
 
 LilyPond tiene una construcción sintáctica para especificar distintos
 tipos de repetición.  La sintaxis es
@@ -3192,18 +3204,13 @@ c1
 \alternative { {d2 d} {f f,} }
 @end lilypond
 
-En el ejemplo siguiente, el primer final no es un compás completo
-(sólo tenía 3 partes).  El comienzo del segundo final
-contiene la cuarta parte del primer final.  Esta parte @q{adicional} en
-el segundo final se debe al final de la primera vez,
-y no tiene nada que ver con el @code{\partial} que aparece
-al principio del ejemplo.
+Se pueden crear repeticiones con anacrusa.
 
 @lilypond[quote,ragged-right,fragment,verbatim,relative=2]
 \new Staff {
-  \partial 4
-  \repeat volta 4 { e | c2 d2 | e2 f2 | }
-  \alternative { { g4 g g } { a | a a a a | b2. } }
+  \partial 4 e |
+  \repeat volta 4 { c2 d2 | e2 f2 | }
+  \alternative { { g4 g g e } { a a a a | b2. } }
 }
 @end lilypond
 
@@ -3232,14 +3239,22 @@ corchete sólo dura un compás, lo que supone una duración de 3/4.
 }
 @end lilypond
 
+Si quiere comenzar una repetición al principio de una línea y tiene una
+doble barra al final de la línea anterior, utilice
+@example
+@dots{} \bar "||:" \break 
+\repeat volta 2 @{ @dots{} 
+@end example
+consulte @ref{Bar lines} para ver más información.
 
 @seealso
 
 Ejemplos:
 
 Normalmente los corchetes para la repetición sólo se imprimen sobre el
-pentagrama superior.  Esto se puede ajustar estableciendo la propiedad
-@code{voltaOnThisStaff}; consulte
+pentagrama superior.  Esto se puede ajustar moviendo @code{Volta_engraver} al contexto
+Staff donde quiera que aparezcan los corchetes;
+consulte @ref{Modifying context plug-ins} y
 
 @lsr{repeats,volta@/-multi@/-staff@/.ly}.
 
@@ -3260,15 +3275,12 @@ Una repetición anidada como
 es ambigua porque no está claro a qué @code{\repeat} pertenece la
 @code{\alternative}.  Esta ambigüedad se resuelve haciendo que la
 @code{\alternative} pertenezca siempre a la @code{\repeat} más
-interna.  Para más claridad, se recomienda usar llaves en tales
-situaciones.
+interna.  Para más claridad, se recomienda usar llaves en tales situaciones.
 
-La información del contador de tiempo no se recuerda al comienzo de
-una alternativa, por ello después de una repetición la información de
-la cuenta de tiempo se debe reajustar manualmente; por ejemplo,
-estableciendo el valor de @code{Score.measurePosition} o introduciendo
-@code{\partial}.  De forma similar, las ligaduras de expresión o de
-unión tampoco se repiten.
+La información del contador de tiempo no se recuerda al comienzo de una alternativa,
+por ello después de una repetición la información de la cuenta de tiempo se debe reajustar
+manualmente; por ejemplo, estableciendo el valor de @code{Score.measurePosition} o
+introduciendo @code{\partial}.  De forma similar, las ligaduras de expresión o de unión tampoco se repiten.
 
 Los corchetes de primera y segunda vez no se alinean verticalmente.
 
@@ -3297,11 +3309,10 @@ todas las repeticiones en repeticiones desarrolladas o desplegadas.
 \bar "|."
 @end lilypond
 
-Cuando se elabora un archivo de partitura que utiliza
-@code{\unfoldRepeats} para el MIDI, es necesario hacer dos bloques
-@code{\score}: uno para el MIDI (con las repeticiones desplegadas) y
-otro para la notación (con primera y segunda vez, trémolo y
-repeticiones de porcentaje).  Por ejemplo,
+Cuando se elabora un archivo de partitura que utiliza @code{\unfoldRepeats} para el MIDI,
+es necesario hacer dos bloques @code{\score}: uno para el MIDI (con las repeticiones desplegadas)
+y otro para la notación (con primera y segunda vez, trémolo y repeticiones de porcentaje).
+Por ejemplo,
 
 @example
 \score @{
@@ -3321,8 +3332,7 @@ repeticiones de porcentaje).  Por ejemplo,
 @funindex repeatCommands
 
 Se puede usar la propiedad @code{repeatCommands} para controlar la
-disposición de las repeticiones.  Su valor es una lista de Scheme de
-comandos de repetición.
+disposición de las repeticiones.  Su valor es una lista de Scheme de comandos de repetición.
 
 @table @asis
 @item @code{start-repeat}
@@ -3335,8 +3345,7 @@ Imprimir una barra de compás @code{:|}
 Imprimir un corchete de volta que diga @var{texto}: El texto se puede
 especificar como una cadena de texto o como un texto de marcado,
 consulte @ref{Text markup}.  No olvide cambiar la fuente tipográfica,
-porque el tipo por defecto para los números no contiene caracteres
-alfabéticos;
+porque el tipo por defecto para los números no contiene caracteres alfabéticos;
 
 @item @code{(volta #f)}
 Detener un corchete de volta mantenido.
@@ -3364,7 +3373,8 @@ Referencia del programa: @internalsref{VoltaBracket},
 
 @cindex barras de trémolo
 
-Para colocar marcas de trémolo entre las notas, use @code{\repeat} con el estilo tremolo
+Para colocar marcas de trémolo entre las notas, use @code{\repeat} con el
+estilo tremolo
 @lilypond[quote,verbatim,ragged-right]
 \new Voice \relative c' {
   \repeat "tremolo" 8 { c16 d16 }
@@ -3400,7 +3410,8 @@ Las marcas de trémolo se pueden imprimir sobre una nota única escribiendo
 @q{@code{:}[@var{número}]} después de la nota.  El número indica la
 duración de la subdivisión, y debe ser al menos 8.  Un valor de
 @var{longitud} de 8 produce una línea tachando la plica de la nota.  Si se
-omite la longitud, se utiliza el último valor (almacenado en @code{tremoloFlags})
+omite la longitud,
+se utiliza el último valor (almacenado en @code{tremoloFlags})
 
 @lilypond[quote,ragged-right,verbatim,fragment]
 c'2:8 c':32 | c': c': |
@@ -3451,8 +3462,7 @@ se activa la propiedad @code{countPercentRepeats},
 
 
 También se pueden imprimir porcentajes aislados.  Esto se hace
-mediante la colocación de un silencio multicompás con una función de
-impresión distinta,
+mediante la colocación de un silencio multicompás con una función de impresión distinta,
 
 @lilypond[fragment,verbatim,quote]
 \override MultiMeasureRest #'stencil
@@ -3470,3 +3480,6 @@ Referencia del programa: @internalsref{RepeatSlash},
 @internalsref{DoublePercentRepeatCounter},
 @internalsref{PercentRepeatCounter},
 @internalsref{PercentRepeatedMusic}.
+
+
+
index bd4d973672dbccc47d409e21b6ac5546974ce619..312b25081f337d0f68b66cc540df9bc47eca9940 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 884968f3b77f345f327857f1df17e114adad877f
+    Translation of GIT committish: 32fe8d89d5c4fe9c73c1daf200cd23c7e8f2d3fc
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -175,7 +175,7 @@ c-> c-.
 @end lilypond
 
 
-@item @code{c\mf c\sfz}
+@item @code{c2\mf c\sfz}
 @tab dinámica
 @tab
 @lilypond[fragment,relative=2]
index fa3a08e82152ef1a5d7f4e5407b844f982fdc1e1..91bf8e9b32a0690271c95e820a26e2500b9acc41 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: dc78324e8424699ec17df064941c0c787d4eb91c
+    Translation of GIT committish: 32fe8d89d5c4fe9c73c1daf200cd23c7e8f2d3fc
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -696,7 +696,13 @@ mezclar música y texto dentro de los documentos, en algo muy sencillo.
 @node About this manual
 @section About this manual
 
-El manual se divide en los siguientes capítulos:
+El manual se divide en cuatro libros.
+
+@subsubheading Learning manual
+
+Este libro explica cómo empezar el aprendizaje de LilyPond, así como algunos
+conceptos clave en términos sencillos.
+
 @itemize @bullet
 
 @item
@@ -722,6 +728,16 @@ comunes.
 muestra la manera de cambiar el grabado por omisión que produce
 LilyPond.
 
+@end itemize
+
+@subsubheading Notation reference
+
+Este libro explica todas las instrucciones de LilyPond que producen notación impresa.  Da
+por supuesto que el lector está familiarizado con los conceptos del manual
+de aprendizaje.
+
+@itemize @bullet
+
 @item
 @emph{@ref{Basic notation}}
 trata ciertos temas agrupados según las construcciones de notación.  Esta sección proporciona
@@ -757,22 +773,41 @@ tamaño del papel o la especificación de los saltos de página.
 @emph{@ref{Interfaces for programmers}}
 explica cómo crear funciones musicales.
 
+@end itemize
+
+
+@subsubheading Program usage
+
+Este libro explica la manera de ejecutar el programa y cómo integrar
+la notación de LilyPond con otros programas.
+
+@itemize @bullet
+
 @item
-@emph{@ref{Running LilyPond}}
+@emph{@rprogram{Running LilyPond}}
 muestra la manera de ejecutar LilyPond y sus programas asistentes.
 Además, esta sección explica cómo actualizar los archivos de entrada
 de versiones de LilyPond anteriores.
 
 @item
-@emph{@ref{LilyPond-book}} da los detalles que se encuentran detrás de la creación de
+@emph{@rprogram{LilyPond-book}}
+da los detalles que se encuentran detrás de la creación de
 documentos con ejemplos de música insertados, como este manual.
 
 @item
-@emph{@ref{Converting from other formats}}
+@emph{@rprogram{Converting from other formats}}
 explica cómo ejecutar los programas de conversión.  Estos programas se proporcionan
 con el paquete LilyPond, y convierten una amplia variedad de formatos de
 música al formato @code{.ly}.
 
+@end itemize
+
+
+@subsubheading Appendices
+
+Este libro contiene unos útiles cuadros de referencia.
+
+@itemize @bullet
 @item
 @ifhtml
 La
@@ -815,61 +850,58 @@ es un índice completo.
 @end itemize
 
 
-Cuando ya sea un usuario con experiencia podrá usar el manual como referencia:
-hay un índice muy completo@footnote{Si está buscando algo y
-no lo encuentra en el manual, eso se considera un bug (fallo).  En este
-caso le rogamos que envíe un informe de fallo.}, pero el documento también
-está disponible en
-@iftex
-una sola página HTML enorme,
-@end iftex
-@ifhtml
-@uref{source/Documentation/user/lilypond.html, una sola página enorme},
-@end ifhtml
-en la que es fácil buscar cualquier cosa utilizando la función de búsqueda de su
-navegador de web.
-@cindex buscar en el manual
-@cindex usar el manual
+@subsubheading Other information
 
-@c FIXME:
-@c add/integrate glossary, put in list above
-Si no está familiarizado con la notación o la terminología musicales
-(sobre todo si no es un anglófono nativo), le recomendamos que
-consulte también el glosario.
-@iftex
-El glosario explica los términos musicales, e incluye traducciones
-a varios idiomas.  Es un docuento aparte, disponible en HTML
-y en PDF.
-@end iftex
-@ifnottex
-El @ref{Top,Glosario de música,,music-glossary} explica los términos musicales e
-incluye traducciones a varios idiomas.  También se encuentra disponible en
-PDF.
-@end ifnottex
+Existen otras fuentes de información que pueden resultar muy útiles.
+
+@itemize @bullet
 @cindex frase idiomática
 @cindex jerga
 @cindex terminología
 @cindex idiomas extranjeros
 @cindex idioma
+@item
+@ifnottex
+El @ref{Top,Glosario de música,,music-glossary} explica los términos musicales e
+incluye traducciones a varios idiomas.  También se encuentra disponible en
+PDF.
+@end ifnottex
+@iftex
+El glosario explica los términos musicales, e incluye traducciones
+a varios idiomas.  Es un docuento aparte, disponible en HTML
+y en PDF.
+@end iftex
+Si no está familiarizado con la notación o la terminología musicales
+(sobre todo si no es un anglófono nativo), le recomendamos que
+consulte el glosario.
 
+@cindex snippets
+@cindex LSR
+@item
+Los
+@ifhtml
+@uref{source/input/lsr/collated-files.html,fragmentos de código (snippets)}
+@end ifhtml
+@ifnothtml
+fragmentos de código (snippets)
+@end ifnothtml
+son una enorme colección de pequeños ejemplos que ejemplifican toda clase de consejos, trucos
+y funcionalidades especiales de LilyPond.  La mayor parte de estos fragmentos de código también se pueden
+encontrar en el @uref{http://lsr.dsi.unimi.it/,Archivo de fragmentos de código (snippets)
+de LilyPond}.  Este sitio web también dispone de un manual de LilyPond en el que se peuden realizar búsquedas.
 
-Este manual no estaría completo sin un cierto número de otros documentos.  No
-se encuentran disponibles en una forma lista para la impresión, pero deberían venir incluidos con el
-paquete de documentación para su plataforma informática
 
-@itemize @bullet
 @item
+La
 @iftex
 Referencia del programa
 @end iftex
 @ifnottex
-@ref{Top,Referencia del programa,,lilypond-internals}.
+@ref{Top,referencia del programa,,lilypond-internals}
 @end ifnottex
-
-La referencia del programa es un conjunto de páginas HTML con una tupida red de enlaces cruzados,
-que documentan al detalle el meollo de todas y cada una de las
-clases, objetos y funciones de LilyPond.  Se produce directamente a partir de las
-definiciones de formateo que se utilizan.
+es un conjunto de páginas HTML con una tupida red de enlaces cruzados, que documentan al detalle el
+meollo de todas y cada una de las clases, objetos y funciones de LilyPond.
+Se produce directamente a partir de las definiciones de formateo que se utilizan.
 
 Casi toda la funcionalidad de formateo que se emplea internamente, se encuentra
 disponible para el usuario de forma directa.  Por ejemplo, todas las variables que controlan
@@ -877,40 +909,25 @@ los valores de grosor, distancias, etc., se pueden cambiar dentro de los archivo
 Hay un enorme número de opciones de formateo, y todas ellas
 se describen en este documento.  Cada sección del manual de notación
 tiene una subsección @b{Véase también}, que hace referencia a la documentación
-generada.  En el documento HTML, estas subseciones llevan enlaces que se pueden plusar.
-
+generada.  En el documento HTML, estas subsecciones llevan enlaces que se pueden plusar.
 
-@cindex fragmentos de código
-@item
-@ifnothtml
-Diversos ejemplos de entrada.
-@end ifnothtml
-@ifhtml
-@c Works, but link name is not so nice; so write-out macro
-@c @inputfileref{input/test,Various input examples}.
-@uref{source/input/test/collated-files.html,Diversos ejemplos de entrada}.
-@end ifhtml
+@end itemize
 
-This collection of files shows various tips and tricks, and is
-available as a big HTML document, with pictures and explanatory texts
-included.
 
-@item
-@ifnothtml
-Las pruebas de regresión.
-@end ifnothtml
+Cuando ya sea un usuario con experiencia podrá usar el manual como referencia:
+hay un índice muy completo@footnote{Si está buscando algo
+y no lo encuentra en el manual, eso se considera un bug (fallo).
+En este caso le rogamos que envíe un informe de fallo.}, pero el documento también está
+disponible en
+@iftex
+una sola página HTML,
+@end iftex
 @ifhtml
-@c Works, but link name is not so nice; so write-out macro
-@c @inputfileref{input/regression,The regression tests}.
-@uref{source/input/regression/collated-files.html,The regression tests}.
+@uref{source/Documentation/user/lilypond-big-page.html,una sola página enorme},
 @end ifhtml
-
-Esta colección de archivos sirve para probar todas las funcionalidades de notación y grabado
-de LilyPond en un único archivo.  La colección está ahí en primer lugar para ayudarnos
-a depurar los problemas, pero puede ser muy instructiva para ver cómo ponemos al programa a hacer ejercicio.
-El formato es similar al del documento de consejos y trucos.
-@end itemize
-
+en la que es fácil buscar cualquier cosa utilizando la función de búsqueda de su
+navegador de web.
 
 En todos los documentos HTML que tienen fragmentos de música
 incrustados, la entrada de LilyPond que se utilizó para producir dicha
@@ -920,13 +937,13 @@ La localización exacta de los archivos de documentación que hemos mencionado p
 variar de un sistema a otro.  En ocasiones este manual hace referencia a
 archivos de inicialización y de ejemplo.  A lo largo del manual, nos referimos a
 archivos de entrada por su ruta relativa respecto de directorio de nivel más alto de los archivos de código fuente.  Por
-ejemplo, @file{input/@/test/@/bla@/.ly} puede referirse al archivo
-@file{lilypond@/2.x.y/@/input/@/test/@/bla@/.ly}.  En los paquetes binarios para
-la plataforma Unix, la documentación y los ejemplos se pueden encontrar normalmente
-en algún lugar dentro de @file{/usr/@/share/@/doc/@/lilypond/}.
-Los archivos de incialización, como por ejemplo @file{scm/@/lily@/.scm}, o
-@file{ly/@/engraver@/-init@/.ly}, se encuentran normalmente en el directorio
-@file{/usr/@/share/@/lilypond/}.
+ejemplo, @file{input/@/lsr/@/dirname/@/bla@/.ly} puede referirse al archivo
+@file{lilypond@/2.x.y/@/input/@/lsr/@/dirname/@/bla@/.ly}.  En los paquetes binarios para
+la plataforma Unix, normalmente la documentación y los ejemplos se encuentran
+en algún lugar dentro de
+@file{/usr/@/share/@/doc/@/lilypond/}. Los archivos de incialización, como por
+ejemplo @file{scm/@/lily@/.scm}, o @file{ly/@/engraver@/-init@/.ly},
+se encuentran normalmente en el directorio @file{/usr/@/share/@/lilypond/}.
 
 @cindex ajustar la salida
 @cindex variables
@@ -940,3 +957,5 @@ Los archivos de incialización, como por ejemplo @file{scm/@/lily@/.scm}, o
 Por último, este y el resto de los manuales están disponibles en línea tanto como archivos
 PDF como HTML en el sitio web, que encontrará en
 @uref{http://@/www@/.lilypond@/.org/}.
+
+
index cb99606fd0f767960e47aea30b6356f3eee784ac..fbdf7589cb4225368522b0b4a683fa72b126701c 100644 (file)
@@ -1,13 +1,13 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: dc78324e8424699ec17df064941c0c787d4eb91c
+    Translation of GIT committish: a37d5fd612a04e602454d7773559bc8813d6a0cc
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 @setfilename lilypond.info
-@settitle GNU LilyPond
-@documentencoding UTF-8
+@settitle Manual del usuario de GNU LilyPond
+@documentencoding utf-8
 @documentlanguage es
 
 @iftex
@@ -48,10 +48,8 @@ Distributions will want to install lilypond.info in postinstall, doing:
 * etf2ly: (lilypond/lilypond-program)Invocar etf2ly.           Importar archivos de Finale.
 * lilypond-book: (lilypond/lilypond-program)LilyPond-book.     Integrar texto y música.
 * midi2ly: (lilypond/lilypond-program)Invocar  midi2ly.        Importar archivos MIDI.
-* mup2ly: (lilypond/lilypond-program)Invocar mup2ly.           Importar archivos de Mup.
 @end direntry
 
-
 @c don't remove this comment.
 @ignore
 @omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival
@@ -64,26 +62,24 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @ifhtml
 Este documento también está disponible como
-@uref{source/Documentation/user/lilypond.es.pdf,PDF}.
+@uref{source/Documentation/user/lilypond.es.pdf,PDF} y como
+@uref{source/Documentation/user/lilypond-big-page.html,una sola página enorme}.
 @end ifhtml
 
 
 @c  This produces the unified index
 @syncodeindex fn cp
-@syncodeindex ky cp
-@syncodeindex pg cp
-@syncodeindex tp cp
 @syncodeindex vr cp
 
+
 @finalout
 
 @titlepage
 @title LilyPond
 @subtitle El tipografiador de música
+@titlefont{Manual del usuario}
 @author El equipo de desarrollo de LilyPond
 
-
-
 Copyright @copyright{} 1999--2007 por los autores
 
 @emph{The translation of the following copyright notice is provided
@@ -164,7 +160,7 @@ Free Documentation License''.
 @ifnottex
 Este archivo es la documentación de GNU LilyPond.
 
-Copyright @copyright{} 1999--2007 por los autores
+Copyright 1999--2007 por los autores
 
 @emph{The translation of the following copyright notice is provided
 for courtesy to non-English speakers, but only the notice in English
@@ -195,7 +191,7 @@ Free Documentation License''.
 
 @ifnottex
 @node Top
-@top GNU LilyPond --- The music typesetter
+@top GNU LilyPond --- El tipografiador de música
 @c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
 
 Éste es el manual del usuario para GNU LilyPond de la serie 2.11.x.
index 7c13f7ec63ba3fb49397914e49cfe66931c06951..aaf5e7ac5fed2388508e7463c9f257073dd9f53d 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: dc78324e8424699ec17df064941c0c787d4eb91c
+    Translation of GIT committish: 7a71a05373f51d9ffe2a1adc6d7df432d395cd2c
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -91,11 +91,13 @@ secciones @code{melodia} separadas, así que vamos a cambiarles el nombre.  Llam
 @code{musicaSoprano} a la sección de la soprano y @code{musicaCello} a la sección del violoncello.
 Al mismo tiempo cambiaremos el nombre de @code{texto}
 a @code{letraSoprano}.  Recuerde cambiar el nombre a las dos apariciones de todos estos
-nombres -- tanto la definición inicial (la parte @code{melodia = relative c' @{ }) --
+nombres -- tanto la definición inicial (la
+parte @code{melodia = relative c' @{ }) --
 como el uso de ese nombre (en la sección @code{\score}).
 
 También aprovecharemos para cambiar el pentagrama de la parte del cello (los violoncellos
-se escriben normalmente en clave de Fa).  Asimismo, cambiaremos algunas notas del cello.
+se escriben normalmente en clave de Fa).  Asimismo, cambiaremos algunas
+notas del cello.
 
 @example
 \version "2.11.15"
@@ -206,6 +208,7 @@ celloMusic = \relative c {
 @end lilypond
 
 
+
 @node How LilyPond files work
 @section How LilyPond files work
 
@@ -329,7 +332,8 @@ de LilyPond.  Pero parece que nos saltamos la parte más importante:
 @code{\score}?
 
 No nos hemos saltado nada en absoluto.  El gran misterio es, sencillamente,
-que no hay @emph{ningún} misterio.  La siguiente línea lo explica todo:
+que no hay @emph{ningún} misterio.  La siguiente línea lo explica
+todo:
 
 @quotation
 @emph{Una @code{\score} debe comenzar con una única expresión musical.}
@@ -357,7 +361,8 @@ recorreremos el camino inverso hacia abajo.
 Una ópera de Wagner completa puede ser fácilmente el doble de larga que este manual,
 por tanto vamos a hacer sólo un cantante y un piano.
 No necesitamos un @code{GrandStaff} para este conjunto, así que
-lo retiramos.  Sin ambargo, sí que @emph{necesitamos} un cantante y un piano.
+lo retiramos.  Sin ambargo, sí que @emph{necesitamos}
+un cantante y un piano.
 
 @example
 \score @{
@@ -415,7 +420,8 @@ podríamos empezar escibiendo
 
 Pero si lo hiciéramos, la sección @code{\score} se haría bastante
 larga y sería más difícil comprender lo que ocurre.  En lugar de esto
-utilizaremos identificadores o variables.
+utilizaremos identificadores
+o variables.
 
 @example
 melodia = @{ @}
@@ -449,7 +455,8 @@ leyendo, hágalo despacio y con cuidado.  Comience por
 la capa exterior y luego trabaje sobre cada una de las capas
 interiores.  Esto también sirve para ser estricto con los márgenes
 -- ¡asegúrese de que en su editor de texto cada elemento de la misma capa
-comienza en la misma posición horizontal! --.
+comienza en la misma
+posición horizontal! --.
 
 
 
@@ -460,11 +467,10 @@ comienza en la misma posición horizontal! --.
 @section An orchestral part
 
 En música orquestal, todas las notas se imprimen dos veces.  Una vez
-en las particellas para los músicos, y otra para la partitura del
-director.  Los identificadores se pueden usar para evitar la
-duplicación del trabajo.  La música se escribe una vez y se almacena
-en una variable.  El contenido de dicha variable se usa después para
-generar tanto la particella como la partitura del director.
+en las particellas para los músicos, y otra para la partitura del director.
+Los identificadores se pueden usar para evitar la duplicación del trabajo.
+La música se escribe una vez y se almacena en una variable.
+El contenido de dicha variable se usa después para generar tanto la particella como la partitura del director.
 
 Es muy conveniente definir las notas en un archivo especial.  Por
 ejemplo, supongamos que el archivo @file{trompa.ly} contiene la
@@ -526,8 +532,7 @@ R2*3
 @end example
 
 Cuando se imprime la particella tienen que comprimirse los silencios
-multicompás.  Esto se hace estableciendo una variable en tiempo de
-ejecución
+multicompás.  Esto se hace estableciendo una variable en tiempo de ejecución
 
 @example
 \set Score.skipBars = ##t
@@ -584,3 +589,6 @@ en el manual de notación; consulte @ref{Orchestral music}.
 
 El establecimiento de variables en tiempo de ejecución (@q{propiedades}) se trata en
 @ref{Changing context properties on the fly}.
+
+
+
index 4088c3b518092801704b4dc90d77ce646a907957..6c277080c8691fd7637e074b80d8729964ced311 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: dc78324e8424699ec17df064941c0c787d4eb91c
+    Translation of GIT committish: 51018f5026338e96df034b41ee173fbef0cb6158
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -114,8 +114,8 @@ para evitar ambigüedades.  Es posible que se omitan en algunos ejemplos del pre
 manual ¡pero no las omita en su propia música!
 
 @cindex Sensible a las mayúsculas
-Además la entrada de LilyPond es @strong{sensible a las mayúsculas}.  @code{ @{ c d e @} }
-es una entrada válida; @code{ @{ C D E @} } producirá un mensaje de error.
+Además la entrada de LilyPond es @strong{sensible a las mayúsculas}.  @code{ @{ c d e @}}
+es una entrada válida; @code{@{ C D E @}} producirá un mensaje de error.
 
 @sp 1
 
@@ -126,7 +126,7 @@ y cómo, para ver o imprimir el resultado.
 
 @subsubheading MacOS X
 
-Si hace doble click sobre LilyPond.app, se abrirá con un archivo 
+Si hace doble click sobre @code{LilyPond.app}, se abrirá con un archivo 
 de ejemplo.  Guárdelo, por ejemplo, como @file{prueba.ly} en el Escritorio, y 
 a continuación procéselo con la orden de menú @samp{Compilar > Componer archivo}.
 El PDF resultante se mostrará en la pantalla.
@@ -134,47 +134,41 @@ El PDF resultante se mostrará en la pantalla.
 Advierta que la primera vez que ejecute LilyPond, tardará un minuto
 o dos porque todas las tipografías del sistema han de ser analizadas previamente.
 
-Para posteriores usos de LilyPond, debería comenzar eligiendo "Nuevo"
-o "Abrir".  Tiene que grabar el archivo antes de componerlo tipográficamente.
+Para posteriores usos de LilyPond, debería comenzar eligiendo @q{Nuevo}
+o @q{Abrir}.  Tiene que grabar el archivo antes de componerlo tipográficamente.
 Si se produce algún error durante el proceso, observe la ventana del registro.
 
 @subsubheading Windows
 
-En Windows, si hace doble click sobre el icono de LilyPond que está en
-el escritorio, se abrirá un sencillo editor de texto con un archivo de
-ejemplo.  Guárdelo, por ejemplo, con el nombre @file{prueba.ly} en el
-escritorio y después haga doble click sobre el icono del archivo para
-procesarlo (el icono tiene la forma de una nota).  Transcurridos unos
-segundos, obtendrá un archivo @file{prueba.pdf} en el escritorio.
-Haga doble click sobre este archivo PDF para ver la partitura
-compuesta tipográficamente.  Un método alternativo para procesar el
-archivo @file{prueba.ly} es arrastrarlo y soltarlo sobre el icono de
-LilyPond utilizando el ratón.
-
-Para editar un archivo @file{.ly} existente, haga click sobre él con
-el botón derecho del ratón y elija @qq{Edit source} (editar el archivo
-fuente). Para empezar con un archivo vacío, arranque el editor como se
-describe más arriba y elija @qq{New} (nuevo) del menú @qq{File}
-(archivo).
-
-Al hacer doble click sobre el archivo no sólo se obtiene como resultado
-un archivo PDF, sino también un archivo @file{.log} que contiene cierta
-información acerca de lo que LilyPond ha hecho con el archivo.
-Si se produce algún error, examine este archivo de registro.
-
-Tenga en cuenta que hay disponibles varios editores de texto
-alternativos con un mejor apoyo para la realización de documentos de
-LilyPond, consulte @ref{Editor support} para ver más información.
+En Windows, si hace doble click sobre el icono de LilyPond que está en el escritorio, se
+abrirá un sencillo editor de texto con un archivo de ejemplo.  Guárdelo, por ejemplo, con
+el nombre @file{prueba.ly} en el escritorio y después haga doble click sobre el icono del
+archivo para procesarlo (el icono tiene la forma de una nota).  Transcurridos unos segundos,
+obtendrá un archivo @file{prueba.pdf} en el escritorio. Haga doble click sobre este archivo
+PDF para ver la partitura compuesta tipográficamente.  Un método alternativo para procesar el
+archivo @file{prueba.ly} es arrastrarlo y soltarlo sobre el icono de LilyPond utilizando
+el ratón.
+
+Para editar un archivo @file{.ly} existente, haga click sobre él con el botón derecho del ratón
+y elija @qq{Edit source} (editar el archivo fuente). Para empezar con un archivo vacío,
+arranque el editor como se describe más arriba y elija @qq{New} (nuevo) del menú @qq{File} (archivo).
+
+Al hacer doble click sobre el archivo no sólo se obtiene como resultado un archivo PDF,
+sino también un archivo @file{.log} que contiene cierta información acerca de lo que
+LilyPond ha hecho con el archivo. Si se produce algún error, examine este archivo de registro.
+
+Tenga en cuenta que hay disponibles varios editores de texto alternativos con un mejor
+apoyo para la realización de documentos de LilyPond, consulte @ref{Editor support} para ver más información.
 
 @subsubheading Unix
 
 Comience abriendo una ventana de terminal e inicando un editor de texto.  Por
 ejemplo, puede abrir un xterm y ejecutar
 @code{joe}@footnote{Existen macros para los adictos a VIM, y hay
-un @code{LilyPond-mode} (modo de LilyPond) para adictos a Emacs.  Si no han sido
+un @code{LilyPond-mode} (modo de LilyPond) para los adictos a Emacs.  Si no han sido
 instalados aún, consulte el archivo @file{INSTALL.txt}.  El
 entorno de edición más sencillo es @file{LilyPondTool}.  Consulte
-@ref{Editor support} para más información.}.  En su
+@rprogram{Editor support} para más información.}.  En su
 editor de texto, introduzca la siguiente entrada y guarde el archivo como
 @file{prueba.ly}
 
@@ -231,7 +225,8 @@ añadido la clave, el compás y las duraciones.
 @end lilypond
 
 @noindent
-Este comportamiento se puede modificar, pero en general estos valores automáticos son adecuados.
+Este comportamiento se puede modificar, pero en general estos valores automáticos
+son adecuados.
 
 
 @subheading Pitches
@@ -284,7 +279,8 @@ comilla doble @code{"}@tie{}!)  El valor inicial de
 
 @subheading Durations (rhythms)
 
-La @rglos{duration} de una nota se especifica mediante un número después del nombre de la nota.  @samp{1} significa @rglos{whole note}, @samp{2} significa @rglos{half note},
+La @rglos{duration} de una nota se especifica mediante un número después del nombre de la nota.
+@samp{1} significa @rglos{whole note}, @samp{2} significa @rglos{half note},
 @samp{4} significa @rglos{quarter note} y así sucesivamente.  Las barras de corchea se añaden
 automáticamente.
 
@@ -373,13 +369,13 @@ He aquí un pequeño ejemplo que muestra todos los elementos anteriores juntos:
 @quotation
 @table @asis
 @item Introducir alturas y duraciones
-ver @ref{Pitches} y @ref{Durations}.
+véase @ref{Pitches} y @ref{Durations}.
 @item Silencios
-ver @ref{Rests}.
+véase @ref{Rests}.
 @item Indicaciones de compás y otros comandos de tiempo
-ver @ref{Time signature}.
+véase @ref{Time signature}.
 @item Claves
-ver @ref{Clef}.
+véase @ref{Clef}.
 @end table
 @end quotation
 
@@ -387,8 +383,8 @@ ver @ref{Clef}.
 @node Working on text files
 @subsection Working on text files
 
-Los archivos de entrada de LilyPond se tratan como los archivos de la mayoría de los lenguajes de programación:
-son sensibles a las mayúsculas, insensibles al número de espacios, las expresiones
+Los archivos de entrada de LilyPond son como los archivos fuente de muchos lenguajes de programación corrientes.
+Son sensibles a las mayúsculas e insensibles al número de espacios  Las expresiones
 se forman con llaves @{ @} y los comentarios se denotan por un signo de porcentaje (@code{%}) o por 
 @code{%@{ ... %@}}.
 
@@ -401,13 +397,13 @@ significado de todos estos términos:
 @item @strong{Sensible a las mayúsculas}:
 tiene importancia el hecho de que introduzca una letra
 en minúsculas (p.ej. @code{a, b, s, t}) o en mayúsculas (p.ej.
-@code{A, B, S, T}).  Las notas son minúsculas: @code{ @{ c d e @} }
-es una entrada válida; @code{ @{ C D E @} } produciría un mensaje de error.
+@code{A, B, S, T}).  Las notas son minúsculas: @code{@{ c d e @}}
+es una entrada válida; @code{@{ C D E @}} produciría un mensaje de error.
 
 @item @strong{Insensible al número de espacios}:
 no importa cuántos
-espacios (o saltos de línea) añada.  @code{ @{ c d e @}} significa lo mismo
-que @code{ @{ c @ @ @ @ @  d e @} } y que
+espacios (o saltos de línea) añada.  @code{@{ c d e @}} significa lo mismo
+que @code{@{ c @tie{} @tie{} @tie{} d e @}} y que
 @example
           @{
 c                        d
@@ -427,11 +423,11 @@ es sangrar los bloques de código con un carácter de tabulación, o bien con do
 Todo fragmento de código de entrada para LilyPond ha de llevar
 @strong{@{ llaves @}} antes y después de la entrada.  Estas llaves le dicen a
 LilyPond que la entrada es una expresión musical unitaria, igual que
-los paréntesis @samp{()} en las matemáticas.  Las llaves deben ir rodeadas
+los paréntesis @samp{()} de las matemáticas.  Las llaves deben ir rodeadas
 de un espacio a no ser que se encuentren al comienzo o al final de una
 línea, para evitar cualquier ambigüedad.
 
-Una función (como, por ejemplo @code{\relative @{ @}} ) también es una expresión musical
+Una función (como por ejemplo @code{\relative @{ @}}) también es una expresión musical
 unitaria.
 
 @cindex comentarios
@@ -444,7 +440,7 @@ Existen dos tipos de comentarios.  El símbolo de porcentaje @samp{%}
 introduce un comentario de línea; todo lo que se encuentra después de @samp{%} en esa línea
 se ignora.  Un comentario de bloque marca una sección entera de entrada musical
 como comentario.  Todo lo que está encerrado dentro de @code{%@{} y @code{%@}} se
-ignora.  El siguiente fragmento muestra algunos posibles usos para los comentarios:
+ignora (pero los comentarios no pueden incluir otros comentarios).  El siguiente fragmento muestra algunos posibles usos para los comentarios:
 
 @example
 % a continuación van las notas de campanitas del lugar
@@ -558,7 +554,7 @@ como el alemán y el holandés.  Para utilizar otros nombres para las alteracion
 cis1 ees fisis, aeses
 @end lilypond
 
-@cindex armadura de la tonalidad, establecer
+@cindex tonalidad, armadura de la, establecer
 @subheading Key signatures
 
 La armadura de la tonadlidad se establece mediante el comando @code{\key} seguido de
@@ -655,7 +651,6 @@ d4( c16) cis( d e c cis d) e( d4)
 @cindex ligaduras de fraseo
 @subheading Phrasing slurs
 
-@cindex ligaduras de fraseo
 Las ligaduras que se utilizan para indicar fraseos más largos se pueden introducir mediante @code{\(} y
 @code{\)}.  Puede haber al mismo tiempo ligaduras de legato y ligaduras de fraseo,
 pero no es posible tener legatos simultáneos o ligaduras de expresión
@@ -1297,7 +1292,7 @@ al principio de su archivo de LilyPond.
 
 Estas anotaciones hacen menos problemáticas las subsiguientes actualizaciones de LilyPond.
 Los cambios en la sintaxis se tratan mediante un programa especial,
-@file{convert-ly} (ver @ref{Updating files with convert-ly}), y utiliza
+@file{convert-ly} (ver @rprogram{Updating files with convert-ly}), y utiliza
 @code{\version} para determinar qué reglas hay que aplicar.
 
 
@@ -1472,10 +1467,9 @@ consulte @ref{Extending the templates}.
 
 Una vez que ha escrito algunas piezas cortas, lea el resto del
 Manual de aprendizaje (capítulos 3 al 5).  ¡Por supuesto, no pasa nada por
-leerlos ahora mismo!  Sin embargo, el resto del Manual
+leerlo ahora mismo!  Sin embargo, el resto del Manual
 de Aprendizaje da por sentado que está familiarizado con la entrada
 de LilyPond.  Puede saltarse estos capítulos ahora
-@c should read skip
 y volver a ellos cuando haya adquirido más experiencia.
 
 
@@ -1492,10 +1486,11 @@ ejemplos impresos: a veces pueden omitir el
 diferente (como @code{c'} o @code{c,,}), y en ocasiones
 ¡todo el ejemplo estará en el modo de notas absoluto!  Sin embargo, las ambigüedades de esta clase
 existen solamente allí donde las alturas no son lo más importante.  En aquellos ejemplos
-en los que las alturas tienen importancia, hemos expresado explícitamente el modo @code{\relative}
-o bien el @code{@{ @}} de modo absoluto.
+en los que las alturas tienen importancia, hemos escrito explícitamente @code{\relative}
+o bien el @code{@{ @}} en modo absoluto.
 
 Si aún tiene dudas respecto de la entrada de LilyPond exacta que se
 ha utilizado en un ejemplo, lea la versión HTML (si no lo está haciendo ya)
 y pulse con el ratón sobre la imagen de la música.  De esta forma se mostrará la entrada
 exacta que LilyPond usó para generar este manual.
+
index d1a040b7eaa332dbb59a46c2cae48f84c5d30f8f..2209d71cfcb296d913ce4ee29989e1d67eb30139 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: dc78324e8424699ec17df064941c0c787d4eb91c
+    Translation of GIT committish: d18561abb4a826a1fe77e06619b935eeaace9841
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -14,7 +14,6 @@ Este capítulo trata de cómo modificar la salida.  LilyPond es extremadamente
 configurable; prácticamente todos los fragmentos de la salida se pueden cambiar.
 
 
-
 @menu
 * Moving objects::              
 * Fixing overlapping notation::  
@@ -68,7 +67,6 @@ esta cantidad es el mero resultado del ensayo y error y de mi gusto personal
 acerca de la notación.  Pruebe el ejemplo anterior con 2.3... pero también con otros valores 
 mayores (y menores).  ¿Cuál cree que queda mejor?
 
-
 La propiedad @code{staff-padding} (relleno de pentagrama) está estrechamente relacionada.
 @code{padding} controla la cantidad de espacio mínima entre un objeto y el objeto más cercano
 (generalmente la nota o las líneas del pentagrama);
@@ -99,7 +97,8 @@ moverlo horizontal o verticalmente.  Se hace con la propiedad
 @code{extra-offset} (desplazamiento adicional).  Es ligeramente más complicado y puede
 causar otros problemas.  Cuando movemos objetos con @code{extra-offset},
 el movimiento se hace después de que LilyPond haya colocado todos los demás objetos.
-Esto significa que el resultado podría entrar en conflicto con otros objetos.
+Esto significa
+que el resultado podría entrar en conflicto con otros objetos.
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
   % temporary code to break this example:
@@ -346,7 +345,8 @@ Algunos ajustes por omisión como las definiciones de las
 Otros ajustes como las definiciones de los comandos de marcado se almacenan
 como archivos @code{.scm} (de Scheme).  Cae fuera del ámbito de presente manual
 cualquier explicación más profunda; los usuarios están advertidos de que se necesita
-una considerable cantidad de conocimientos técnicos para comprender estos archivos.
+una considerable cantidad de conocimientos técnicos
+para comprender estos archivos.
 
 @itemize @bullet
 
@@ -372,15 +372,14 @@ Archivos como @file{ly/property-init.ly} y
 
 A veces puede acabar con uno o dos pentagramas en una segunda página
 (o tercera, o cuarta...).  Es fastidioso sobre todo si observa las
-páginas anteriores y parece haber espacio sufuciente en ellas.
+páginas anteriores y parece haber
+espacio sufuciente en ellas.
 
 Al investigar asuntos relacionados con la presentación, la herramienta
 @code{annotate-spacing} (anotar el espaciado) no tiene precio.
 Este comando imprime los valores de algunos comandos de espaciado;
 consulte @ref{Displaying spacing} para ver más detalles.  A partir de
-la salida de de @code{annotate-spacing}, podemos ver qué márgenes
-podríamos desear alterar.
-
+la salida de de @code{annotate-spacing}, podemos ver qué márgenes podríamos desear alterar.
 
 Aparte de los márgenes, existen otras opciones para ahorrar espacio:
 
@@ -459,7 +458,8 @@ Altere el espaciado horizontal por medio de @code{SpacingSpanner}.  Consulte
 @section Advanced tweaks with Scheme
 
 Hemos visto cómo la salida de LilyPond se puede modificar de manera muy profunda utilizando
-comandos como @code{\override TextScript #'extra-offset = ( 1 . -1)}.  Pero
+comandos como
+@code{\override TextScript #'extra-offset = ( 1 . -1)}.  Pero
 tenemos un potencial incluso mayor si utilizamos Scheme.  Para ver una explicación completa
 de esto, consulte el @ref{Scheme tutorial} e
 @ref{Interfaces for programmers}.
index a58202bd385902600b9b89eaf2632bc062cb9989..8b2f3878ec4f0cbd4f3e90f2689350fc6d49a600 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: dc78324e8424699ec17df064941c0c787d4eb91c
+    Translation of GIT committish: 5d9a6604876b66b860e78363521edc770ac5b455
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -44,7 +44,8 @@ lilypond puede hacer que ciertos errores se hagan más fáciles (o más difícil
 @item ¿Qué ocurre si quiere compartir sus archivos con otras personas?
 De hecho, ¿y si quiere alterar sus propios archivos después de algunos años?
 Algunos archivos de lilypond se comprenden a primera vista;
-otros pueden tenerle rascándose la cabeza durante una hora.
+otros pueden tenerle rascándose la cabeza
+durante una hora.
 
 @item ¿Qué ocurre si quiere actualizar su archivo de lilypond para poderlo usar con
 una versión más reciente del programa?  La sintaxis de la entrada se modifica
@@ -73,7 +74,8 @@ plantillas contienen una cadena como @code{\version "2.11.15"}.  Le recomendamos
 mucho que siempre incluya la @code{\version}, sin importar cuán
 pequeño pueda ser su archivo.  Desde la experiencia personal podemos decirle que es bastante frustrante
 intentar recordar el número de versión de LilyPond que estaba usando hace unos años.
-@code{convert-ly} requiere que declare qué versión de LilyPond utilizó.
+@code{convert-ly} requiere que declare
+qué versión de LilyPond utilizó.
 
 @item @strong{Incluya comprobaciones}: @ref{Bar check}, @ref{Octave check} y
 @ref{Barnumber check}.  Si
@@ -89,14 +91,18 @@ por cada línea.  El ahorro en espacio de pantalla que se obtiene al amontonar o
 si luego tiene que @q{depurar} los archivos.
 
 @item @strong{Comente los archivos}.  Utilice o números de compás (de vez en cuando)
-o referencias a temas musicales (@q{segundo tema de los violines,} @q{cuarta
+o
+referencias a temas musicales (@q{segundo tema de los violines,} @q{cuarta
 variación,} etc.).  Puede que no necesite comentarios cuando introduce una pieza por vez primera,
 pero si quiere volver a ella o modificar algo al cabo de dos o tres años,
-y también si le pasa la fuente a un amigo, será
-todo un desafío determinar sus intenciones o de qué manera estaba estructurado el archivo si no le añadió los comentarios.
+y también si le pasa la fuente a un amigo,
+será todo un desafío
+determinar sus intenciones o de qué manera estaba estructurado el archivo
+si no le añadió los comentarios.
 
-@item @strong{Aplique márgenes a las llaves}.  Muchos problemas están causados por una falta de
-equilibrio en el número de @code{@{} y @code{@}}.
+@item @strong{Aplique márgenes a las llaves}.  Muchos problemas están causados por una
+falta de equilibrio
+en el número de @code{@{} y @code{@}}.
 
 @item @strong{Escriba las duraciones explícitamente} al comienzo de las secciones
 e identificadores.  Si especifica @code{c4 d e} al principio de una frase
@@ -129,7 +135,8 @@ dentro del archivo de entrada donde el manuscrito tenga un saldo de línea.  De
 le resultará mucho más fácil comparar la música de LilyPond con la original.
 Cuando haya terminado de revisar su partitura podrá
 definir @code{mBreak = @{ @}} para quitar todos esos saltos de línea.  Así
-permitirá a LilyPond colocar los saltos donde éste lo estime más oportuno.
+permitirá a LilyPond colocar los saltos donde éste lo estime
+más oportuno.
 
 @end itemize
 
@@ -137,7 +144,8 @@ permitirá a LilyPond colocar los saltos donde éste lo estime más oportuno.
 @node Large projects
 @subsection Large projects
 
-Al trabajar en proyecto grande se hace esencial tener una estructura clara en los archivos de lilypond.
+Al trabajar en proyecto grande se hace esencial tener una estructura clara
+en los archivos de lilypond.
 
 @itemize @bullet
 
@@ -165,7 +173,8 @@ g4 c'8. e16
 en @ref{General suggestions}, pero para proyectos
 grandes es vital.  Quizá tengamos que cambiar la
 definición de @code{fthenp}, pero en ese caso sólo lo tendremos que
-hacer una vez, y aún podremos evitar tocar nada dentro de @code{violin}.
+hacer una vez, y aún podremos evitar tocar nada
+dentro de @code{violin}.
 
 @example
 fthenp = _\markup@{
@@ -235,7 +244,8 @@ Obviamente estos identificadores son útiles para ahorrar tecleo.
 Pero son dignos de tener en cuenta incluso si se van a utilizar una sola vez:
 reducen la complejidad.  Examinemos
 el ejemplo anterior reescrito sin ningún identificador.
-Encontrará que es mucho más difícil de leer, sobre todo la última línea.
+Encontrará que es mucho más difícil de leer, sobre todo
+la última línea.
 
 @example
 violin = \relative c'' @{
@@ -287,7 +297,8 @@ en lugar de tener que hacer cambios en cada uno de los archivos @code{.ly}.
 La salida que produce LilyPond se puede modificar profundamente; consulte
 @ref{Tweaking output} para leer detalles sobre este asunto.  Pero ¿qué ocurre si tiene muchos
 archivos a los que les quiere aplicar sus porpios trucos?  O ¿qué ocurre si, sencillamente,
-quiere separar los trucos de la propia música?  Todo esto es bastante fácil de conseguir.
+quiere separar los trucos de la propia música?  Todo esto
+es bastante fácil de conseguir.
 
 Veamos un ejemplo.  No se preocupe si no entiende
 las partes que tienen todos los @code{#()}.  Esto se explicará en
@@ -538,29 +549,28 @@ Yo utilizo media docena de archivos de
 @node Updating old files
 @section Updating old files
 
-La sintaxis de la entrada de LilyPond cambia de manera ocasional.  A
-medida que el propio LilyPond mejora, la sintaxis (el lenguaje de la
-entrada) se modifica en consonancia.  A veces estos cambios se hacen
-para conseguir que la entrada sea más fácil de leer y escribir, y
-otras veces estos cambios son para dar cabida a nuevas funcionalidades
-de LilyPond.
+La sintaxis de la entrada de LilyPond cambia de manera ocasional.  A medida que el propio
+LilyPond mejora, la sintaxis (el lenguaje de la entrada) se modifica en consonancia.  A
+veces estos cambios se hacen para conseguir que la entrada sea más fácil de leer y escribir, y
+otras veces estos cambios son para dar cabida a nuevas funcionalidades de LilyPond.
 
 LilyPond lleva incorporado un archivo que facilita esta actualización:
 @code{convert-ly}.  Para ver detalles sobre cómo ejecutar este programa, consulte
-@ref{Updating files with convert-ly}.
+@rprogram{Updating files with convert-ly}.
 
 Desgraciadamente @code{convert-ly} no puede tratar todos los cambios en la entrada.
 Se ocupa de los cambios sencillos de búsqueda y sustitución (como @code{raggedright}
 que se convierte en @code{ragged-right}), pero algunos cambios son demasiado
 complicados.  Los cambios de sintaxis que @code{convert-ly} es incapaz de manejar
-se relacionan en @ref{Updating files with convert-ly}.
-
-Por ejemplo, en la versión 2.4 y anteriores de LilyPond, los acentos y las letras no inglesas
-se introducían utilizando LaTeX: por ejemplo,
-@samp{No\"el} (que significa @q{Navidad} en francés).  En LilyPond 2.6 y siguientes, el carácter especial
-@samp{ë} debe introducirse directamente en el archivo de LilyPond como un carácter
-UTF-8.  @code{convert-ly} no puede cambiar todos los caracteres especiales de LaTeX
-a caracteres de UTF-8; tendrá que actualizar manualmente
+se relacionan en @rprogram{Updating files with convert-ly}.
+
+Por ejemplo, en la versión 2.4 y anteriores de LilyPond,
+los acentos y las letras no inglesas se introducían utilizando
+LaTeX: por ejemplo, @samp{No\"el} (que significa @q{Navidad} en francés).
+En LilyPond 2.6 y siguientes, el carácter especial @samp{ë}
+debe introducirse directamente en el archivo de LilyPond como un carácter UTF-8.
+@code{convert-ly} no puede cambiar todos los caracteres especiales
+de LaTeX a caracteres de UTF-8; tendrá que actualizar manualmente
 sus archivos de LilyPond antiguos.
 
 
@@ -579,9 +589,8 @@ el problema, comience coviertiendo grandes secciones del
 archivo de entrada en un comentario.  Después de eliminar una
 sección convirtiéndola en un comentario, pruebe a compilar el
 archivo otra vez.  Si funciona, entonces el problema debía estar
-en la porción que había eliminado.  Si no funciona,
-continúe eliminando material (transformándolo en comentarios)
-hasta que tenga algo que funcione.
+en la porción que había eliminado.  Si no funciona, continúe eliminando material
+(transformándolo en comentarios) hasta que tenga algo que funcione.
 
 En un caso extremo podría terminar con sólo
 
@@ -633,6 +642,7 @@ mínimos se utilizan para
 @item Añadir ejemplos al @uref{http://lsr@/.dsi@/.unimi@/.it/,Repositorio de Fragmentos de Código de LilyPond}
 @end itemize
 
+
 Para construir un ejemplo que sea lo más pequeño posible, la regla es
 bastante simple: quite todo lo que no sea necesario.  Al tratar de
 quitar partes innecesarias de un archivo, es una buena idea convertir líneas en
@@ -647,12 +657,14 @@ Existen dos excepciones a la regla del @qq{lo más pequeño posible}:
 @item Si puede, ponga @code{\paper@{ ragged-right=##t @}} al principio del ejemplo.
 @end itemize
 
+
 En resumen, el objetivo de un ejemplo mínimo es que sea fácil de leer:
 
 @itemize
 @item Evite usar notas, tonalidades o compases demasiado complicados, a no ser que quiera
 demostrar algo sobre el comportamiento de estos elementos precisamente.
-@item No use comandos @code{\override} a no ser que ése sea el propósito del ejemplo.
+@item No use comandos @code{\override} a no ser que ése sea el propósito
+del ejemplo.
 @end itemize
 
 
index 47938ee18292cf02ed564b6efa1ebfafb5f86f52..548636fdf5bf53f85d9d74c7ea3a1ee7525024ab 100644 (file)
@@ -7,6 +7,8 @@ HTML_FILES=$(TEXI_FILES:%.texi=$(outdir)/%.html) $(TELY_FILES:%.tely=$(outdir)/%
 PDF_FILES=$(outdir)/NEWS.pdf
 include $(depth)/make/stepmake.make
 
+MAKEINFO_FLAGS += -I $(top-src-dir)/Documentation/user
+
 ifneq ($(out),www)
 LILYPOND_BINARY='true'
 endif
diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi
new file mode 100644 (file)
index 0000000..e60fee2
--- /dev/null
@@ -0,0 +1,19 @@
+\input texinfo @c -*-texinfo-*-
+@setfilename INSTALL.info
+@settitle INSTALL - compiling and installing GNU LilyPond
+
+@documentencoding utf-8
+@documentlanguage en
+
+@set INSTALL 1
+
+@node Top
+@top
+
+@contents
+
+@include macros.itexi
+@include install.itely
+
+@bye
+
index a0d3abacbe35a427d79f91f60dcc3fd885073c0d..278061df3958f124cececaac1dd5893ff64d11c3 100644 (file)
@@ -74,6 +74,7 @@ ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
 else
        -$(INSTALL) -d $(DESTDIR)$(package_infodir)
        -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
+       -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
        install-info --info-dir=$(infodir) $(outdir)/lilypond.info
        (cd $(package_infodir) && ln -sf $(webdir)/Documentation/user/*png .)
 endif
index e736fd6718da4fc9e86e2d4a2d9326800e0545b2..7c28e2bc7e473c0125f9650a1e2f491b36fc43ec 100644 (file)
@@ -1,7 +1,7 @@
 Info for Documentation
 ----------------------
 
-Current version of the manual: 2.11.15
+Current version of the manual: 2.11.28
 *** Please update this whenever you run convert-ly on the docs.
 
 convert-ly -e --from=... --to=... --no-version *.itely
index 5a7a93f77dbfe17188c56ac6c483ca4a31e07fa5..428a793359a6ea6b36274293982f26c812fa2a5a 100644 (file)
@@ -371,6 +371,11 @@ bar lines,
 }
 @end lilypond
 
+Possible symbols for the @code{break-align-symbols} list are
+@code{ambitus}, @code{breathing-sign}, @code{clef}, @code{custos},
+@code{staff-bar}, @code{left-edge}, @code{key-cancellation},
+@code{key-signature}, and @code{time-signature}.
+
 The text marks will, by default, be aligned with the middle of the notation
 object, but this can be changed by overriding the
 @code{break-align-anchor-alignment} and
@@ -392,9 +397,10 @@ object, but this can be changed by overriding the
   \once \override Staff.KeySignature #'break-align-anchor-alignment = #RIGHT
   \mark \default
   ces1
+  \key cis \major
 
-  % the RehearsalMark will be aligned with the right edge of the KeySignature
-  % and then shifted right by an additional 2 units.
+  % the RehearsalMark will be aligned with the left edge of the KeySignature
+  % and then shifted right by 2 units.
   \once \override Staff.KeySignature #'break-align-anchor = #2
   \mark \default
   ces1
@@ -1085,30 +1091,7 @@ c1
 See @ref{The Feta font}, for a list of symbols which may be
 printed with @code{\musicglyph}.
 
-The horizontal location of rehearsal marks can be adjusted by
-setting @code{break-align-symbol}
-
-@lilypond[fragment,quote,ragged-right,verbatim,relative]
-c1
-\key cis \major
-\clef alto
-\override Score.RehearsalMark #'break-align-symbol = #'key-signature
-\mark "on-key"
-cis
-\key ces \major
-\override Score.RehearsalMark #'break-align-symbol = #'clef
-\clef treble
-\mark "on clef"
-ces
-@end lilypond
-
-@code{break-align-symbol} may also accept the following values:
-@code{ambitus}, @code{breathing-sign}, @code{clef}, @code{custos},
-@code{staff-bar}, @code{left-edge}, @code{key-cancellation},
-@code{key-signature}, and @code{time-signature}.  Setting
-@code{break-align-symbol} will only have an effect if the symbol
-appears at that point in the music.
-
+For common tweaks to the positioning of rehearsal marks, see @ref{Text marks}.
 
 @seealso
 
@@ -2231,9 +2214,9 @@ property of a @code{Beam}.  The @code{\featherDurations} function
 can be used to adjust note durations.
 
 @lilypond[ragged-right,relative=1,fragment,verbatim,quote]
+\override Beam #'grow-direction = #LEFT
 \featherDurations #(ly:make-moment 5 4) 
 {
-  \override Beam #'grow-direction = #LEFT
   c16[ c c c c c c]
 }
 @end lilypond
index 832465ecb104f29d10e913739221b2c34cb5e84a..c03e8901239ec3f41453b8b32ab533df936e0cd4 100644 (file)
@@ -1865,7 +1865,7 @@ The bar lines at the start of each system are
 @internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, and
 @internalsref{SystemStartBracket}.  Only one of these types is created
 in every context, and that type is determined by the property
-@internalsref{systemStartDelimiter}.
+@code{systemStartDelimiter}.
 
 
 @commonprop
@@ -2304,11 +2304,13 @@ and end point with @code{[} and @code{]}
 @funindex stemLeftBeamCount
 @funindex stemRightBeamCount
 
-Normally, beaming patterns within a beam are determined automatically.
-If necessary, the properties @code{stemLeftBeamCount} and
-@code{stemRightBeamCount} can be used to override the defaults.  If
+
+LilyPond can automatically determine beaming patterns within a beam,
+but this automatic behavior can sometimes produce odd results;
+therefore the @code{stemLeftBeamCount} and @code{stemRightBeamCount} properties can
+be used to override the defaults.  If
 either property is set, its value will be used only once, and then it
-is erased
+is erased.
 
 @lilypond[quote,ragged-right,fragment,relative=1,verbatim]
 {
@@ -3214,6 +3216,19 @@ Repeats with upbeats may be created.
 }
 @end lilypond
 
+@noindent
+or
+
+@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
+\new Staff {
+  \partial 4 
+  \repeat volta 4 { e | c2 d2 | e2 f2 | }
+  \alternative { { \partial 4*3 g4 g g } { a a a a | b2. } }
+}
+@end lilypond
+
+
+
 @funindex \repeatTie
 
 Ties may be added to a second ending,
index 316dc596b409faf38e28c013d29457c2f97c07f5..66c0281ef38ea34d9e7b22a3d7be864e33ade8f0 100644 (file)
@@ -7,9 +7,10 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c was "INSTALL - compiling and installing GNU LilyPond"
+@ifclear INSTALL
 @node Install
 @chapter Install
+@end ifclear
 
 @c  I don't know what this comment does.  Remove?  -gp
 @ignore
index b4c5f2057071fe841efa842cd79beb778039cb6d..876fc4b83612f6edb2069e023e01cf27b5f15b48 100644 (file)
@@ -358,14 +358,17 @@ The mode is introduced by the keyword @code{\chordmode}.
 
 Other chords may be entered by suffixing a colon and introducing a
 modifier (which may include a number if desired)
+
 @lilypond[quote,fragment,verbatim]
 \chordmode { e1:m e1:7 e1:m7 }
 @end lilypond
+
 The first number following the root is taken to be the @q{type} of the
 chord, thirds are added to the root until it reaches the specified
-number
+number.  The exception is @code{c:13}, for which the 11 is omitted.
+
 @lilypond[quote,fragment,verbatim]
-\chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 }
+\chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 c:13}
 @end lilypond
 
 @cindex root of chord
@@ -375,16 +378,21 @@ number
 More complex chords may also be constructed adding separate steps
 to a chord.  Additions are added after the number following
 the colon and are separated by dots
+
 @lilypond[quote,verbatim,fragment]
 \chordmode { c:5.6 c:3.7.8 c:3.6.13 }
 @end lilypond
+
 Chord steps can be altered by suffixing a @code{-} or @code{+} sign
 to the number
+
 @lilypond[quote,verbatim,fragment]
 \chordmode { c:7+ c:5+.3- c:3-.5-.7- }
 @end lilypond
+
 Removals are specified similarly and are introduced by a caret.  They
 must come after the additions
+
 @lilypond[quote,verbatim,fragment]
 \chordmode { c^3 c:7^5 c:9^3.5 }
 @end lilypond
index ae45cd18c826b4a3f6735858139e26af5a5f07ee..88359fefd43e4ad67f33d8399c297f158a72ff10 100644 (file)
@@ -51,7 +51,7 @@ This document is also available as a
 @author The LilyPond development team
 
 
-Copyright @copyright{} 1999--2006 by the authors
+Copyright @copyright{} 1999--2007 by the authors
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -82,7 +82,7 @@ Free Documentation License''.
 @end titlepage
 
 @copying
-Copyright @copyright{} 1999--2006 by the authors
+Copyright @copyright{} 1999--2007 by the authors
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -97,7 +97,7 @@ Free Documentation License''.
 @ifnottex
 This file documents GNU LilyPond program usage.
 
-Copyright 1999--2006 by the authors
+Copyright 1999--2007 by the authors
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
index f407eae6955cee4227633ef6f21184e4742b0ed8..ae4c536387055ac5ed36cbbec19138542f27302f 100644 (file)
@@ -48,7 +48,6 @@ Distributions will want to install lilypond.info in postinstall, doing:
 * etf2ly: (lilypond/lilypond-program)Invoking etf2ly.          Importing Finale.
 * lilypond-book: (lilypond/lilypond-program)LilyPond-book.     Itegrating text and music.
 * midi2ly: (lilypond/lilypond-program)Invoking midi2ly.        Importing MIDI.
-* mup2ly: (lilypond/lilypond-program)Invoking mup2ly.          Importing Mup.
 @end direntry
 
 @c don't remove this comment.
@@ -81,7 +80,7 @@ This document is also available as a
 @titlefont{User manual}
 @author The LilyPond development team
 
-Copyright @copyright{} 1999--2006 by the authors
+Copyright @copyright{} 1999--2007 by the authors
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -112,7 +111,7 @@ Free Documentation License''.
 @end titlepage
 
 @copying
-Copyright @copyright{} 1999--2006 by the authors
+Copyright @copyright{} 1999--2007 by the authors
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -127,7 +126,7 @@ Free Documentation License''.
 @ifnottex
 This file documents GNU LilyPond.
 
-Copyright 1999--2006 by the authors
+Copyright 1999--2007 by the authors
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
index edc9e653479feed88007c66407d091aa93866be1..6ab71d3727b8658347a7288a5cb3752ed23c4342 100644 (file)
@@ -34,7 +34,7 @@ and as @uref{source/Documentation/user/music-glossary-big-page.html,one big page
 
 @c Fixes by Jean-Pierre Coulon and `Dirk'
 
-Copyright @copyright{} 1999--2006 by the authors
+Copyright @copyright{} 1999--2007 by the authors
 
 
   Permission is granted to copy, distribute and/or modify this document
@@ -87,7 +87,7 @@ English glossary translations,
 Finnish glossary translations.
 @end table
 @*
-Copyright 1999--2006 by the authors
+Copyright 1999--2007 by the authors
 
 
   Permission is granted to copy, distribute and/or modify this document
index 853df046ee49e106eac256735f0cfd8117813a19..6462f4122ca00b52d40f7ab68d9e06760ee86a16 100644 (file)
@@ -49,7 +49,7 @@ these files end with @samp{.ly}.
 A basic example of a lilypond input file is
 
 @example
-\version "2.11.15"
+\version "2.11.23"
 \score @{
   @{ @}     % this is a single music expression;
             % all the music goes in here.
index 2d5e442e1511b02d8e3a908aaec72bc72e4a3feb..abc9776367bebf5ea5aaf369d96f7f3a865da2a9 100644 (file)
@@ -796,7 +796,7 @@ Here, what we want to set (the @q{place}) is the @q{elements} property of
 (the @code{'elements}, @code{'duration}, @code{'pitch}, etc, that we
 see in the @code{\displayMusic} output above).  The new value is the
 former elements property, with an extra item: the
-@code{MarcatoEvent} expression, which we copy from the
+@code{ArticulationEvent} expression, which we copy from the
 @code{\displayMusic} output,
 
 @example
@@ -810,7 +810,7 @@ original list.  This is what we
 want: the same list as before, plus the new @code{ArticulationEvent}
 expression.  The order inside the elements property is not important here.
 
-Finally, once we have added the @code{MarcatoEvent} to its elements
+Finally, once we have added the marcato articulation to its @code{elements}
 property, we can return @code{result-event-chord}, hence the last line of
 the function.
 
index f715c8c0c1153f592baf1106220bb3fb4d11ec02..8090efd6df5745fb5540e34395020a4b71b090e8 100644 (file)
@@ -35,7 +35,7 @@ cello.  In this case, we would start with @q{Notes and lyrics} (for the
 soprano part).
 
 @example
-\version "2.11.15"
+\version "2.11.23"
 melody = \relative c' @{
   \clef treble
   \key c \major
@@ -64,7 +64,7 @@ text = \lyricmode @{
 Now we want to add a cello part.  Let's look at the @q{Notes only} example:
 
 @example
-\version "2.11.15"
+\version "2.11.23"
 melody = \relative c' @{
   \clef treble
   \key c \major
@@ -100,7 +100,7 @@ normally use bass clef.  We'll also give the cello some different
 notes.
 
 @example
-\version "2.11.15"
+\version "2.11.23"
 sopranoMusic = \relative c' @{
   \clef treble
   \key c \major
@@ -170,7 +170,7 @@ This looks a bit messy; the indentation is messed up now.  That is
 easily fixed.  Here's the complete soprano and cello template.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 sopranoMusic = \relative c' {
   \clef treble
   \key c \major
index 10aec0a9f0d6eeaf96da890e5758993d0cd87c1c..34eca21c202eb9af69c60b9a7938fe159cbb9f80 100644 (file)
@@ -61,6 +61,21 @@ they will each be processed independently.  @footnote{The status of
 GUILE is not reset after processing a @code{.ly} file, so be careful
 not to change any system defaults from within Scheme.}
 
+In addition, the value of @code{output-suffix} will be inserted between
+the basename and the number.  An input file containing 
+
+@example
+#(define output-suffix "violin")
+\book @{ @dots{} @} 
+#(define output-suffix "cello")
+\book @{ @dots{} @} 
+@end example
+
+@noindent
+will output @var{base}@file{-violin.ps} and
+@var{base}@file{-cello-1.ps}.
+
+
 
 @subsection Command line options
 
index 0be27ac29e35511620bfdcf3c82665e61f7c58e1..6d7bca23aa8daca06d49b295aab7614df235efc2 100644 (file)
@@ -7,7 +7,6 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c was "INSTALL - compiling and installing GNU LilyPond"
 @node Setup
 @chapter Setup
 
@@ -92,6 +91,7 @@ There is support from different text editors for LilyPond.
 * Vim mode::                    
 * LilyPondTool::                
 * TexShop::                     
+* TextMate::                    
 @end menu
 
 @node Emacs mode
@@ -172,6 +172,17 @@ convert-ly from within the editor, using the extensions available at
 @uref{http://@/www@/.dimi@/.uniud@/.it/vitacolo/freesoftware@/.html}.
 
 
+@node TextMate
+@subsection TextMate
+
+There is a LilyPond bundle for TextMate.  It may be installed by running
+
+@example
+mkdir -p /Library/Application\ Support/TextMate/Bundles
+cd /Library/Application\ Support/TextMate/Bundles
+svn co http://macromates.com/svn/Bundles/trunk/Bundles/Lilypond.tmbundle/
+@end example
+
 
 
 @node Point and click
index 7531a858e739261dfdeaa9ab7cb9dcebee2a57b5..d5aaca3ec4a397b4929d1f243c823ae7e1ed4b94 100644 (file)
@@ -620,26 +620,23 @@ Line breaks can only occur if there is a @q{proper} bar line.  A note
 which is hanging over a bar line is not proper, such as
 
 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
-c4 c2 c2 \break   % this does nothing
+c4 c2 << c2 {s4 \break } >>  % this does nothing
 c2 c4 |           % a break here would work
 c4 c2 c4 ~ \break % as does this break
 c4 c2 c4
 @end lilypond
 
-This can be avoided by removing the @code{Forbid_line_break_engraver}
-and adding the line breaks in another voice:
+This can be avoided by removing the @code{Forbid_line_break_engraver}.
+Note that manually forced line breaks have to be added in parallel
+with the music.
 
 @lilypond[quote,ragged-right,verbatim]
-\new Staff <<
-  \new Voice \with {
-    \remove Forbid_line_break_engraver
-  } {
-    c'4 c'2 c'2 c'2 c'4
-  }
-  \new Voice {
-    s1 \break s1
-  }
->>
+\new Voice \with {
+  \remove Forbid_line_break_engraver
+} {
+  c4 c2 << c2 {s4 \break } >>  % now the break is allowed
+  c2 c4 
+}
 @end lilypond
 
 
index 56231eded8821d28209a53a96f0494b28c9036fa..e09a6bdb168cf8e4dbb06edce262f2e23c622482 100644 (file)
@@ -35,7 +35,7 @@ instrument or a melodic fragment.  Cut and paste this into a file,
 add notes, and you're finished!
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 melody = \relative c' {
    \clef treble
    \key c \major
@@ -60,7 +60,7 @@ automatic beaming, you'll have to change or comment out the relevant
 line.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 melody = \relative c' {
    \clef treble
    \key c \major
@@ -91,7 +91,7 @@ text = \lyricmode {
 Want to prepare a lead sheet with a melody and chords?  Look no further!
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 melody = \relative c' {
    \clef treble
    \key c \major
@@ -124,7 +124,7 @@ harmonies = \chordmode {
 This template allows you to prepare a song with melody, words, and chords.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 melody = \relative c' {
    \clef treble
    \key c \major
@@ -165,7 +165,7 @@ harmonies = \chordmode {
 Here is a simple piano staff.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 upper = \relative c'' {
    \clef treble
    \key c \major
@@ -199,7 +199,7 @@ Here is a typical song format: one staff with the melody and lyrics, with
 piano accompaniment underneath.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 melody = \relative c'' {
    \clef treble
    \key c \major
@@ -255,7 +255,7 @@ Instead of having a full staff for the melody and lyrics, you can place
 the lyrics between the piano staff (and omit the separate melody staff).
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 upper = \relative c'' {
    \clef treble
    \key c \major
@@ -302,7 +302,7 @@ since the template is right here, you don't have to do the
 tweaking yourself.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 upper = \relative c'' {
   \clef treble
   \key c \major
@@ -397,7 +397,7 @@ This template demonstrates a string quartet.  It also uses a @code{\global}
 section for time and key signatures.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 
 global= {
   \time 4/4
@@ -457,7 +457,7 @@ contains all the music definitions.  The other files -- @code{score.ly},
 
 @verbatim
 %%%%% piece.ly
-\version "2.11.15"
+\version "2.11.23"
 
 global= {
   \time 4/4
@@ -503,7 +503,7 @@ music = {
 
 
 %%%%% score.ly
-\version "2.11.15"
+\version "2.11.23"
 \include "piece.ly"
 #(set-global-staff-size 14)
 \score {
@@ -514,7 +514,7 @@ music = {
 
 
 %%%%% vn1.ly
-\version "2.11.15"
+\version "2.11.23"
 \include "piece.ly"
 \score {
   \keepWithTag #'vn1 \music
@@ -523,7 +523,7 @@ music = {
 
 
 %%%%% vn2.ly
-\version "2.11.15"
+\version "2.11.23"
 \include "piece.ly"
 \score {
   \keepWithTag #'vn2 \music
@@ -532,7 +532,7 @@ music = {
 
 
 %%%%% vla.ly
-\version "2.11.15"
+\version "2.11.23"
 \include "piece.ly"
 \score {
   \keepWithTag #'vla \music
@@ -541,7 +541,7 @@ music = {
 
 
 %%%%% vlc.ly
-\version "2.11.15"
+\version "2.11.23"
 \include "piece.ly"
 \score {
   \keepWithTag #'vlc \music
@@ -561,7 +561,7 @@ parts.  For example, the time signature and key signatures are almost
 always the same for all parts.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 global = {
    \key c \major
    \time 4/4
@@ -642,7 +642,7 @@ to the vocal notes (say, tenorMusic), then the changes will also
 apply to the piano reduction.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 global = {
    \key c \major
    \time 4/4
@@ -735,7 +735,7 @@ Here all the lyrics lines are placed using @code{alignAboveContext}
 and @code{alignBelowContext}.
 
 @lilypond[quote,verbatim,ragged-right]
-\version "2.11.15"
+\version "2.11.23"
 global = {
   \key c \major
   \time 4/4
@@ -859,7 +859,7 @@ notes.  As a compromise, bar lines are often printed between the
 staves rather than on the staves.
 
 @lilypond[quote,verbatim,line-width=11.0\cm]
-\version "2.11.15"
+\version "2.11.23"
 
 global = {
   \set Score.skipBars = ##t
@@ -1099,7 +1099,7 @@ quarter noteheads, and special marks, indicating rests of different length.
 
 @lilypond[quote,verbatim,ragged-right]
 \include "gregorian-init.ly"
-\version "2.11.15"
+\version "2.11.23"
 
 chant = \relative c' {
   \set Score.timing = ##f
@@ -1159,7 +1159,7 @@ is within a @code{\transpose} section.
 @c The `line-width' argument is for the \header.
 
 @lilypond[quote,verbatim,ragged-right,line-width]
-\version "2.11.15"
+\version "2.11.23"
 \header {
   title = "Song"
   subtitle = "(tune)"
@@ -1435,7 +1435,7 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print
 
 @ The `line-width' is for \header.
 @li lypond[quote,verbatim,ragged-right,line-width]
-\version "2.11.15"
+\version "2.11.23"
 \header {
   dedication = "dedication"
   title = "Title"
index 4d7efdb1a02d0c79033f34a1ff205393ec08e768..2bcdd07b1c6ee527ed185cf7c1aede606a0eda8b 100644 (file)
@@ -1284,7 +1284,7 @@ The @code{\version} statement marks for which version of LilyPond the file
 was written.  To mark a file for version 2.10.1, place
 
 @example
-\version "2.11.15"
+\version "2.11.23"
 @end example
 
 @noindent
@@ -1305,7 +1305,7 @@ music expression; the @code{\header} block is usually placed underneath
 the @ref{Version number}.
 
 @example
-\version "2.11.15"
+\version "2.11.23"
 \header @{
   title = "Symphony"
   composer = "Me"
index ad0aa964fdf82717bed04b5b250b28bcc9f4b6dc..1cc6ea71efe4adc6aa35544cbc8b965094b5f052 100644 (file)
@@ -70,7 +70,7 @@ problems:
 
 @itemize @bullet
 @item @strong{Include @code{\version} numbers in every file}.  Note that all
-templates contain a @code{\version "2.11.15"} string.  We
+templates contain a @code{\version "2.11.23"} string.  We
 highly recommend that you always include the @code{\version}, no matter
 how small your file is.  Speaking from personal experience, it's
 quite frustrating to try to remember which version of LilyPond you were
@@ -537,7 +537,7 @@ file with @code{\include "../global.ly"}, which contains
 
 @example
 %%%   global.ly
-\version "2.11.15"
+\version "2.11.23"
 #(ly:set-option 'point-and-click #f)
 \include "../init/init-defs.ly"
 \include "../init/init-layout.ly"
index 1e7ff9d5bb6ab91067f26b8065f0ebed72e00a22..5e49a0c80387010a73f4ca73f96f4c38b49e374c 100644 (file)
@@ -18,7 +18,7 @@ documentation-dir=$(if $(findstring no,$(DOCUMENTATION)),,Documentation)
 
 SCRIPTS = configure autogen.sh 
 README_FILES = COPYING DEDICATION ROADMAP THANKS HACKING
-TOPDOC_FILES = AUTHORS README INSTALL NEWS
+TOPDOC_FILES = AUTHORS INSTALL README NEWS
 TOPDOC_TXT_FILES = $(addprefix $(top-build-dir)/Documentation/topdocs/$(outdir)/,$(addsuffix .txt,$(TOPDOC_FILES)))
 IN_FILES := $(call src-wildcard,*.in)
 
diff --git a/ROADMAP b/ROADMAP
index af31b7b52ff949cc45473842c43f9d85d816925d..c88665095e29f5fe09b7aa254991011f9cbec598 100644 (file)
--- a/ROADMAP
+++ b/ROADMAP
@@ -27,6 +27,7 @@ source files.
    flower/             A simple c++ library
        include/
    input/              Music input examples
+       lsr/             Snippets from the LilyPond Snippet Repository
        mutopia/                Real music, more at www.mutopiaproject.org
        regression/     Testing of features, one test per file
        test/           Tips and tricks
diff --git a/THANKS b/THANKS
index 13c16f43737649939b74fac20152a85a92c4e8a5..bd78b4a0faacfb9e4df4251754fe0558848bd0cf 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -5,12 +5,13 @@ Release 2.11
 
 DEVELOPMENT TEAM
 
-Han-Wen Nienhuys  - Core development
-Jan Nieuwenhuizen - Core development
-Joe Neeman        - Core development
-Graham Percival   - Documentation Editor and Bug Meister
-Mats Bengtsson    - Support Guru 
-John Mandereau    - Translation Meister
+Han-Wen Nienhuys   - Core development
+Jan Nieuwenhuizen  - Core development
+Joe Neeman         - Core development
+Graham Percival    - Documentation Editor and Bug Meister
+Valentin Villenave - Assistant Documentation Editor
+Mats Bengtsson     - Support Guru 
+John Mandereau     - Translation Meister
 
 
 CONTRIBUTORS
@@ -50,9 +51,11 @@ Christian Herzberg
 David Bobroff
 David Griffel
 Daniel Johnson
+Dominic Neumann
 Eduardo Vieira
 Frédéric Chiasson
 Georg Dummer
+Hernán J. González 
 Jay Anderson
 James Kilfinger
 Jean-Marie Mouchel
@@ -72,6 +75,7 @@ Mike Coleman
 Nicolas Mayencourt
 Nicolas Sceaux
 Orm Finnendahl
+Peter Budny
 Phillip Kirlin
 Ralph Palmer
 Rick Hansen
@@ -83,12 +87,12 @@ Steven Weber
 Tomas Sauer
 Thomas Scharkowski
 Trevor Bača
-Valentin Villenave
 Vivian Barty-Taylor
 Werner Lemberg
 Wilbert Berendsen
 William Oram
 Yota Moteuchi
+Zack Charter
 
 
 Release 2.10
diff --git a/VERSION b/VERSION
index d3f66bc47b7736447ad91cfe2b08ac83d9177778..c0e82d803f5ae32da32f1cede61e7cfd780d8428 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=11
-PATCH_LEVEL=28
+PATCH_LEVEL=30
 MY_PATCH_LEVEL=
 
index a9886c69118d6773289ddd3614fb637c55cab5f6..a3bd8559e8771314dc9061bc11124c600dca2fcc 100644 (file)
@@ -532,7 +532,7 @@ typedef struct _t_ligature
 typedef std::map < AFM_Ligature const *, int > Bar;
 
  /**
- (c) 1997--2006 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2007 Han-Wen Nienhuys <hanwen@cs.uu.nl>
  */
  
 /*      ||
diff --git a/buildscripts/grand-replace.sh b/buildscripts/grand-replace.sh
new file mode 100644 (file)
index 0000000..1eec448
--- /dev/null
@@ -0,0 +1,5 @@
+#! @BASH@
+# note: dash does not work
+
+pytt '(Copyright|\(c\)|\(C\)|@copyright\{\})\s*2006' '\1 2006--2007' $(find . -mindepth 2 -type f | grep -Ev 'out/|out-scons|out-www/|.git/|.scon|#|~|' | grep -iv 'change')
+pytt '(Copyright|\(c\)|\(C\)|@copyright\{\})\s*([^-]*--)(200[0-6])' '\1 \2\062007' $(find . -mindepth 2 -type f | grep -Ev 'out/|out-scons|out-www/|.git/|.scon|#|~' | grep -iv 'change')
index ab18da2ace687264a5fd2e9a9b7f1ae16d6467ed..a2c24e70181e984f69d8a22f22643a0b172fc2a2 100755 (executable)
@@ -27,7 +27,8 @@ def copy_dir_with_test(srcdir, destdir):
        for file in file_names:
                if (file.endswith ('.ly')):
                        src = os.path.join (srcdir, file)
-                       dest = os.path.join (destdir, file)
+                       destname = file.replace (';', '-')
+                       dest = os.path.join (destdir, destname)
                        copy_with_warning(src, dest)
                        os.system('convert-ly -e ' + dest)
                        if os.path.exists( dest + '~' ):
index 7febb8fa32310ac00ec168e32d048a42c2849d6d..0cdcbf9d613dbff3fea7cc995ef6187f857392be 100644 (file)
@@ -4,7 +4,7 @@
 #
 # source file of the GNU LilyPond music typesetter
 #
-# (c) 1997--2006 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+# (c) 1997--2007 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 import os
 import sys
index d27487c6edb8c9cb12086a511f7b5f38665946e3..769331fe0336090e0bdc42368981d316528af836 100644 (file)
@@ -3,7 +3,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;;  
-;;;; (c) 1999--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1999--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; 
 ;;;; Changed 2001--2003 Heikki Junes <heikki.junes@hut.fi>
 ;;;;    * Add PS-compilation, PS-viewing and MIDI-play (29th Aug 2001)
diff --git a/input/lsr/ancient/ancient-accidentals.ly b/input/lsr/ancient/ancient-accidentals.ly
new file mode 100644 (file)
index 0000000..6e6cd7a
--- /dev/null
@@ -0,0 +1,24 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+Accidentals are available in different ancient styles, which all are
+collected here.
+
+
+" }
+
+\relative c'' {
+      \time 5/4
+      \override Staff.Accidental #'glyph-name-alist = #alteration-default-glyph-name-alist
+      cisis^\markup { \typewriter default } cis c ces ceses 
+      \override Staff.Accidental #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist
+      cisis^\markup { \typewriter hufnagel } cis c ces ceses 
+      \override Staff.Accidental #'glyph-name-alist = #alteration-medicaea-glyph-name-alist
+      cisis^\markup { \typewriter medicaea } cis c ces ceses 
+      \override Staff.Accidental #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
+      cisis^\markup { \typewriter vaticana } cis c ces ceses 
+      \override Staff.Accidental #'glyph-name-alist = #alteration-mensural-glyph-name-alist
+      cisis^\markup { \typewriter mensural } cis c ces ceses 
+}
+
diff --git a/input/lsr/chords/inserting-a--markup-when-using-chordmode.ly b/input/lsr/chords/inserting-a--markup-when-using-chordmode.ly
new file mode 100644 (file)
index 0000000..da6982e
--- /dev/null
@@ -0,0 +1,19 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+A way to insert a \markup @{ . . . @}string in \chords @{ . . . @}. 
+" }
+
+% Note what happens if \hspace #-2 is deleted or set to +n.
+% If "tacet" instead of "Tacet" a little bit of "C" peeks around the \whiteout.
+CMString  = { <c e g>-\markup { \whiteout { \hspace #-2 "Tacet" } } }
+CMStringX = #(append (sequential-music-to-chord-exceptions CMString #t)
+           ignatzekExceptions)
+<< { \chords { c1
+   \set   chordNameExceptions = #CMStringX c
+   \unset chordNameExceptions c }
+ } { \relative c'' { c c c } } >>
+
+
+
index 9e5ec03e9bdb8c6c2d65aaa327d34e0abe4543e9..26722f39fd77a42b9292f667ecf42f251dc7dac1 100644 (file)
@@ -2,8 +2,8 @@
 \version "2.11.23"
 
 \header { texidoc = "
-Short (smaller than 1/4) tremolos can be obtained; in such a case only
-one beam is connected to the stems.
+Short tremolos (involving eighth notes or shorter durations) can be
+obtained; in such a case only one beam is connected to the stems.
 " }
 
 \layout { ragged-right = ##t }
diff --git a/input/lsr/contemporary/double-glissando.ly b/input/lsr/contemporary/double-glissando.ly
new file mode 100644 (file)
index 0000000..0d9a391
--- /dev/null
@@ -0,0 +1,20 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+To make double-glissandi, i.e. to connect chords with glissando lines,
+you have to create another voice, then attach a glissando to it.
+" }
+
+{\clef bass
+<< {  % New voice ( = \voiceOne) without stems or beams
+        \override Stem #'stencil = ##f
+        \override Beam #'stencil = ##f
+
+        % Attach glissando to noteheads
+        e8 \glissando fis
+    } \\ { % Original voice with chords rearranged so that glissando is attached to a & b
+        <e a,> \glissando <fis b,>
+} >>}
diff --git a/input/lsr/expressive/adding-accidentals-to-a-trillspanner.ly b/input/lsr/expressive/adding-accidentals-to-a-trillspanner.ly
new file mode 100644 (file)
index 0000000..01ccac7
--- /dev/null
@@ -0,0 +1,26 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+By overriding @code{edge-text}, you can insert an accidental after the
+trill sign in a trillspanner, but this can look ugly, since the
+accidental isn't aligned.
+
+With a few tweaks to the script size and position, you can achieve
+quite pleasing results.
+
+
+
+" }
+
+\relative c'' {
+       \override TrillSpanner #'edge-text = 
+       #(cons (markup #:line (#:halign -0.5 #:musicglyph "scripts.trill" #:teeny #:raise 0.65 #:sharp)) "")
+       
+       b1\startTrillSpan b\stopTrillSpan
+       
+       \override TrillSpanner #'edge-text = 
+       #(cons (markup #:line (#:halign -0.5 #:musicglyph "scripts.trill" #:teeny #:raise 0.5 #:flat)) "")
+       
+       c\startTrillSpan c\stopTrillSpan
+}
diff --git a/input/lsr/nonmusic/modifying-default-font-properties-for-piece-titles.ly b/input/lsr/nonmusic/modifying-default-font-properties-for-piece-titles.ly
new file mode 100644 (file)
index 0000000..667bbbe
--- /dev/null
@@ -0,0 +1,38 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+If you have multiple pieces (e.g. Kyrie, Gloria, Credo, etc. in masses)
+in a large work, you can use multiple \score parts and use the piece
+header field to supply a title for each of the pieces. However, the
+font is very small. You can either directly put the markup into the
+piece=... header field, or better re-define the scoreTitleMarkup
+function in the \paper section.
+" }
+
+\header {
+  title = "Formatting of piece headers"
+}
+\paper {
+  scoreTitleMarkup = \markup { \column {
+   \on-the-fly #print-all-headers { \bookTitleMarkup \hspace #1 }
+    \fill-line {
+      \fontsize #3 \bold \fromproperty #'header:piece
+      \fromproperty #'header:opus
+    }
+  }}
+}
+
+\markup { \fill-line { 
+\justify-string #"If you have multiple pieces in a large work, you can use multiple score parts and use the piece header field to supply a title for each of the pieces. However, the font is very small. You can either directly put the markup into the piece=... header field, or better re-define the scoreTitleMarkup function in the paper section."} }
+
+\score { 
+  \context Staff << { c'1 | R1 } >>
+  \header{ piece="Piece 1" }
+}
+
+\score { 
+  \context Staff << { c'1 | R1 } >>
+  \header{ piece="Piece 2" }
+}
+
index 35a7a84ce28e3b315825faa9a5bd953464875371..ac7e06ef8d50beed055d786f3dad92dd5facf721 100644 (file)
@@ -4,6 +4,8 @@
 \header { texidoc = "
 With the @code{\tweak} command, you can tune every grob directly. Here
 are some examples of available tweaks.
+
+
 " }
 
 \paper {
diff --git a/input/lsr/scheme/automatically-durations-diminution.ly b/input/lsr/scheme/automatically-durations-diminution.ly
new file mode 100644 (file)
index 0000000..bd4447e
--- /dev/null
@@ -0,0 +1,29 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+If you want to see what a piece looks like twice faster, or slower,
+without having to correct every duration manually, here is an easy way
+to do it. 
+" }
+
+\paper { indent = 0 }
+
+
+music = {a4. b4 c b8 a g a4 b8 a}
+
+looksFaster = #(define-music-function (parser location music)
+                                   (ly:music?)
+           (let ((new-music (ly:music-deep-copy music)))
+            (shift-duration-log new-music 1 0)
+            new-music))
+
+looksSlower = #(define-music-function (parser location music)
+                                   (ly:music?)
+           (let ((new-music (ly:music-deep-copy music)))
+            (shift-duration-log new-music -1 0)
+            new-music))
+
+\score { \new Voice { \time 7/8 \music  
+\break \looksFaster { \time 7/16 \music }
+\break \looksSlower { \time 7/4 \music }}}
diff --git a/input/lsr/scheme/creating-a-sequence-of-notes-on-various-pitches.ly b/input/lsr/scheme/creating-a-sequence-of-notes-on-various-pitches.ly
new file mode 100644 (file)
index 0000000..daaa0c9
--- /dev/null
@@ -0,0 +1,61 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+In music that contains many occurrences of the same sequence of notes
+at different pitches, you can use the following music function. It
+takes a note, of which the pitch is used. The supporting Scheme
+functions were borrowed from the Tips and Tricks document in the manual.
+
+This example creates the rhythm used throughout Mars, from The Planets,
+by Gustav Holst.
+" }
+
+#(define (make-note-req p d)
+  (make-music 'NoteEvent
+   'duration d
+   'pitch p))
+
+#(define (make-note p d)
+  (make-music 'EventChord
+   'elements (list (make-note-req p d))))
+
+#(define (seq-music-list elts)
+  (make-music 'SequentialMusic
+   'elements elts))
+
+#(define (make-triplet elt)
+  (make-music 'TimeScaledMusic
+   'denominator 3
+   'numerator 2
+   'element elt))
+
+
+rhythm = #(define-music-function (parser location note) (ly:music?)
+          "Make the rhythm in Mars (the Planets) at the given note's pitch"
+          (let* ((p (ly:music-property
+                      (car (ly:music-property note 'elements))
+                      'pitch)))
+          (seq-music-list (list
+            (make-triplet (seq-music-list (list
+              (make-note p (ly:make-duration 3 0 2 3))
+              (make-note p (ly:make-duration 3 0 2 3))
+              (make-note p (ly:make-duration 3 0 2 3))
+            )))
+            (make-note p (ly:make-duration 2 0))
+            (make-note p (ly:make-duration 2 0))
+            (make-note p (ly:make-duration 3 0))
+            (make-note p (ly:make-duration 3 0))
+            (make-note p (ly:make-duration 2 0))
+          ))))
+
+\score {
+   \new Staff {
+       \time 5/4
+
+       \rhythm c'
+       \rhythm c''
+       \rhythm g
+   }
+}
+
diff --git a/input/lsr/scheme/semichoirstaff--choirstaff-with-spanbars-except---type-bars.ly b/input/lsr/scheme/semichoirstaff--choirstaff-with-spanbars-except---type-bars.ly
new file mode 100644 (file)
index 0000000..352ecad
--- /dev/null
@@ -0,0 +1,40 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.10.12"
+
+\header { texidoc = "
+If you wish to typeset \"|.\", etc, style spanbars on a ChoirStaff, you
+can add the span_bar_engraver, and instruct it to omit the \"|\"-style
+bars. In this example I create a new context, SemiChoirStaff, that does
+this.
+" }
+
+\version "2.10.12"
+
+mus = { \clef F c d e f c d e f c d e f c d e f \bar "||"  c d e f c d e f c d e f \bar "|." }
+
+\layout {
+  \context {
+    \ChoirStaff
+    \name "SemiChoirStaff"
+    \consists "Span_bar_engraver"
+    \override SpanBar #'stencil =
+    #(lambda (a) 
+      (if (string=? (ly:grob-property a 'glyph-name) "|")
+       (set! (ly:grob-property a 'glyph-name) ""))
+      (ly:span-bar::print a))
+  }
+  \context {
+    \Score
+    \accepts SemiChoirStaff
+  }
+}
+
+\score {
+  \new SemiChoirStaff {
+    <<
+      \new Staff \mus
+      \new Staff \mus
+    >>
+  }
+}
+
diff --git a/input/lsr/text/inserting-large-plain-text-sections,-as-independent--markup-blocks.ly b/input/lsr/text/inserting-large-plain-text-sections,-as-independent--markup-blocks.ly
new file mode 100644 (file)
index 0000000..cd50dc1
--- /dev/null
@@ -0,0 +1,155 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+LilyPond can handle text almost as well as music notation: in a \book
+block, you can enter different \score blocks, but also independent
+\markup sections. This snippet also demonstrates some interesting text
+formatting features such as \justify-string or \wordwrap-string (do not
+forget the # character when using them). The \fill-line command
+produces centered text, and you can define margins using \override
+#'(line-width . X), where X is the width in staff spaces.
+" }
+
+\paper {
+       ragged-bottom = ##f
+   }
+
+upper = \relative c'' {
+       \clef treble
+       \key c \major
+       \time 4/4
+
+       a b c d
+    }
+
+    lower = \relative c {
+       \clef bass
+       \key c \major
+       \time 4/4
+
+       a2 c
+    }
+    \book {
+        \markup {\justify-string #"Lorem ipsum dolor sit amet
+consectetuer adipiscing elit,
+        sed diam nonummy nibh euismod tincidunt ut laoreet dolore
+magna aliquam erat volutpat.
+        Ut wisi enim ad minim veniam, quis nostrud exerci tation
+ullamcorper suscipit lobortis
+        nisl ut aliquip ex ea commodo consequat. Duis autem vel eum
+iriure dolor in hendrerit
+        in vulputate velit esse molestie consequat, vel illum dolore
+eu feugiat nulla facilisis
+        at vero eros et accumsan et iusto odio dignissim qui blandit
+praesent luptatum zzril
+        delenit augue duis dolore te feugait nulla facilisi. Nam
+liber tempor cum soluta nobis
+        eleifend option congue nihil imperdiet doming id quod mazim
+placerat facer possim assum.
+        Typi non habent claritatem insitam; est usus legentis in iis
+qui facit eorum claritatem.
+        Investigationes demonstraverunt lectores legere me lius quod
+ii legunt saepius.
+        Claritas est etiam processus dynamicus, qui sequitur
+mutationem consuetudium lectorum.
+        Mirum est notare quam littera gothica, quam nunc putamus
+parum claram, anteposuerit litterarum
+        formas humanitatis per seacula quarta decima et quinta
+decima. Eodem modo typi, qui nunc nobis
+        videntur parum clari, fiant sollemnes in futurum."}
+    \score {
+       \new PianoStaff <<
+          \set PianoStaff.instrumentName = "Piano  "
+          \new Staff = "upper" \upper
+          \new Staff = "lower" \lower
+       >>
+    }
+    \markup {\wordwrap-string #"Lorem ipsum dolor sit amet
+consectetuer adipiscing elit,
+        sed diam nonummy nibh euismod tincidunt ut laoreet dolore
+magna aliquam erat volutpat.
+        Ut wisi enim ad minim veniam, quis nostrud exerci tation
+ullamcorper suscipit lobortis
+        nisl ut aliquip ex ea commodo consequat. Duis autem vel eum
+iriure dolor in hendrerit
+        in vulputate velit esse molestie consequat, vel illum dolore
+eu feugiat nulla facilisis
+        at vero eros et accumsan et iusto odio dignissim qui blandit
+praesent luptatum zzril
+        delenit augue duis dolore te feugait nulla facilisi. Nam
+liber tempor cum soluta nobis
+        eleifend option congue nihil imperdiet doming id quod mazim
+placerat facer possim assum.
+        Typi non habent claritatem insitam; est usus legentis in iis
+qui facit eorum claritatem.
+        Investigationes demonstraverunt lectores legere me lius quod
+ii legunt saepius.
+        Claritas est etiam processus dynamicus, qui sequitur
+mutationem consuetudium lectorum.
+        Mirum est notare quam littera gothica, quam nunc putamus
+parum claram, anteposuerit litterarum
+        formas humanitatis per seacula quarta decima et quinta
+decima. Eodem modo typi, qui nunc nobis
+        videntur parum clari, fiant sollemnes in futurum."}
+    \score {
+       \new PianoStaff <<
+          \set PianoStaff.instrumentName = "Piano  "
+          \new Staff = "upper" \upper
+          \new Staff = "lower" \lower
+       >>
+    }
+
+    \markup {
+        \fill-line {
+     \override #'(line-width . 60)
+        \justify-string #"Lorem ipsum dolor sit amet consectetuer
+adipiscing elit,
+        sed diam nonummy nibh euismod tincidunt ut laoreet dolore
+magna aliquam erat volutpat.
+        Ut wisi enim ad minim veniam, quis nostrud exerci tation
+ullamcorper suscipit lobortis
+        nisl ut aliquip ex ea commodo consequat. Duis autem vel eum
+iriure dolor in hendrerit
+        in vulputate velit esse molestie consequat, vel illum dolore
+eu feugiat nulla facilisis
+        at vero eros et accumsan et iusto odio dignissim qui blandit
+praesent luptatum zzril
+        delenit augue duis dolore te feugait nulla facilisi." }
+    }
+
+    \score {
+       \new PianoStaff <<
+          \set PianoStaff.instrumentName = "Piano  "
+          \new Staff = "upper" \upper
+          \new Staff = "lower" \lower
+       >>
+    }
+    \markup {\justify-string #"Lorem ipsum dolor sit amet
+consectetuer adipiscing elit,
+        sed diam nonummy nibh euismod tincidunt ut laoreet dolore
+magna aliquam erat volutpat.
+        Ut wisi enim ad minim veniam, quis nostrud exerci tation
+ullamcorper suscipit lobortis
+        nisl ut aliquip ex ea commodo consequat. Duis autem vel eum
+iriure dolor in hendrerit
+        in vulputate velit esse molestie consequat, vel illum dolore
+eu feugiat nulla facilisis
+        at vero eros et accumsan et iusto odio dignissim qui blandit
+praesent luptatum zzril
+        delenit augue duis dolore te feugait nulla facilisi. Nam
+liber tempor cum soluta nobis
+        eleifend option congue nihil imperdiet doming id quod mazim
+placerat facer possim assum.
+        Typi non habent claritatem insitam; est usus legentis in iis
+qui facit eorum claritatem.
+        Investigationes demonstraverunt lectores legere me lius quod
+ii legunt saepius.
+        Claritas est etiam processus dynamicus, qui sequitur
+mutationem consuetudium lectorum.
+        Mirum est notare quam littera gothica, quam nunc putamus
+parum claram, anteposuerit litterarum
+        formas humanitatis per seacula quarta decima et quinta
+decima. Eodem modo typi, qui nunc nobis
+        videntur parum clari, fiant sollemnes in futurum."}
+        }
diff --git a/input/lsr/text/preventing-long--mark-objects-to-stretch-a-measure.ly b/input/lsr/text/preventing-long--mark-objects-to-stretch-a-measure.ly
new file mode 100644 (file)
index 0000000..5fefd8d
--- /dev/null
@@ -0,0 +1,27 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+When you put a long \markup text in a \mark object, LilyPond stretches
+the measure to encompass the complete markup. This can be avoided by
+overriding the 'X-extent property of the RehearsalMark object, as
+demonstrated in this snippet. 
+" }
+
+\paper{ indent = 0}
+ \new PianoStaff {<<
+    {\new Staff
+        \override Score.RehearsalMark #'self-alignment-X = #left
+    R1 R1 \mark \markup {"long markup with default horizontal extent"} R1*2 }
+    \new Staff {\repeat unfold 16 {c4}}
+    >>
+}
+\new PianoStaff {<<
+    {\new Staff
+        \override Score.RehearsalMark #'self-alignment-X = #left
+       \override Score.RehearsalMark #'X-extent = #'(0 . 0)
+    R1 R1 \mark \markup {"long markup without horizontal extent"} R1*2 }
+    \new Staff {\repeat unfold 16 {c4}}
+    >>
+}
+
index 879f81c2b6d85f834535e1a3b10a2b07f4d5ad10..bfaa268fa61421a1566e6c1ddaa35a36cddb029c 100644 (file)
@@ -10,6 +10,8 @@ are collected here.
 
 \relative c'' {
       \time 3/4
+      % FIXME: standard vs default, alteration-FOO vs FOO-alteration
+      \override Staff.Accidental #'glyph-name-alist = #standard-alteration-glyph-name-alist
       cis^\markup { \typewriter default } c ces  
 
       \override Staff.Accidental #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist
diff --git a/input/regression/beam-beamlet-break.ly b/input/regression/beam-beamlet-break.ly
new file mode 100644 (file)
index 0000000..460d702
--- /dev/null
@@ -0,0 +1,16 @@
+\header {
+  texidoc = "beamlets don't run to end of line if there are no other
+  beamlets on the same height."
+  
+}
+\version "2.11.30"
+
+\paper {
+  raggedright = ##t
+}
+
+\relative {
+  \time 1/4
+  \override Beam #'breakable = ##t
+  r16 r16. c32[ c16 \break c8. ] r16
+}
index 838f01b7f57dc0549d309e004663d18b005b8673..09649c7d01e532cd864b106c9c55f0503ba1545d 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.11.29"
+\version "2.11.28"
 \header {
 
   texidoc="In feathered beams, stems in knees reach up to the feathered part correctly.
diff --git a/input/regression/line-dash-small-period.ly b/input/regression/line-dash-small-period.ly
new file mode 100644 (file)
index 0000000..8bbb1cb
--- /dev/null
@@ -0,0 +1,16 @@
+\header {
+
+  texidoc = "Generate valid postscript even if dash-period is small
+  compared to line thickness."
+
+}
+
+\version "2.11.29"
+\relative {
+  \override Staff.OttavaBracket #'dash-period = #0.1
+  \override Score.OttavaBracket #'dash-fraction = #1
+
+  #(set-octavation 1)
+  c4 c
+}
+
diff --git a/input/regression/slur-cross-staff-beam.ly b/input/regression/slur-cross-staff-beam.ly
new file mode 100644 (file)
index 0000000..ea9d13d
--- /dev/null
@@ -0,0 +1,13 @@
+\version "2.11.29"
+
+\header {
+  texidoc = "Slurs that depend on a cross-staff beam are not calculated until after line-breaking."
+}
+
+\paper{ ragged-right=##t }
+\score {
+    \new PianoStaff <<
+    \context Staff = rh \relative { c'8([ d) \change Staff = lh c,] }
+    \context Staff = lh { s4. }
+    >>
+}
\ No newline at end of file
diff --git a/input/regression/spacing-folded-clef3.ly b/input/regression/spacing-folded-clef3.ly
new file mode 100644 (file)
index 0000000..01d9969
--- /dev/null
@@ -0,0 +1,25 @@
+\version "2.11.28"
+
+\header {
+  texidoc = "Voices that go back and forth between staves do not confuse the spacing engine."
+}
+
+\paper { ragged-right = ##t }
+
+\new PianoStaff <<
+        \new Staff = "rh" \relative c'' {
+                \time 6/8
+                bes16 c d
+                \change Staff = lh
+                \stemUp bes a g
+                \change Staff = rh
+                \stemDown bes c d
+                \change Staff = lh
+                \clef bass
+                \stemUp bes, a g
+
+        }
+        \new Staff = "lh" \relative c' {
+                s2.
+        }
+>>
\ No newline at end of file
diff --git a/input/regression/spacing-knee-compressed.ly b/input/regression/spacing-knee-compressed.ly
new file mode 100644 (file)
index 0000000..5a77848
--- /dev/null
@@ -0,0 +1,18 @@
+\version "2.11.28"
+
+\header {
+  texidoc = "Spacing corrections for kneed beams still work when compression is involved."
+}
+
+\paper { line-width = 14.4 \cm }
+rh = \change Staff = "rh"
+lh = \change Staff = "lh"
+\new PianoStaff <<
+        \new Staff ="rh" {
+                s1*3
+        }
+        \new Staff ="lh" {
+                \clef bass
+                \repeat unfold 12 { \rh a'16 \lh d \rh a' \lh d \noBreak}
+        }
+>>
\ No newline at end of file
diff --git a/input/regression/spacing-non-adjacent-columns1.ly b/input/regression/spacing-non-adjacent-columns1.ly
new file mode 100644 (file)
index 0000000..e7adfc0
--- /dev/null
@@ -0,0 +1,21 @@
+\version "2.11.28"
+\paper {ragged-right = ##t}
+\header {
+  texidoc = "The spacing engine avoids collisions between non-adjacent columns."
+}
+
+
+foo = \relative c'' {
+  g'32[ c,]
+}
+
+bar = \relative c {
+  c16 <feses ases ceses eses ases ceses eses geses beses deses>4
+}
+
+\new PianoStaff {
+  <<
+    \new Voice \foo
+    \new Voice \bar
+  >>
+}
\ No newline at end of file
diff --git a/input/regression/spacing-non-adjacent-columns2.ly b/input/regression/spacing-non-adjacent-columns2.ly
new file mode 100644 (file)
index 0000000..9635cff
--- /dev/null
@@ -0,0 +1,21 @@
+\version "2.11.28"
+\paper {ragged-right = ##t}
+\header {
+  texidoc = "The spacing engine avoids collisions between non-adjacent columns."
+}
+
+
+foo = \relative c'' {
+  g'32[ c,]
+}
+
+bar = \relative c {
+  s16 <feses ases ceses eses ases ceses eses geses beses deses>4
+}
+
+\new PianoStaff {
+  <<
+    \new Voice \foo
+    \new Voice \bar
+  >>
+}
diff --git a/input/regression/spacing-space-to-barline.ly b/input/regression/spacing-space-to-barline.ly
new file mode 100644 (file)
index 0000000..a1fe2fc
--- /dev/null
@@ -0,0 +1,23 @@
+\version "2.11.29"
+
+\header {
+  texidoc = "When space-to-barline is false, we measure the space between the note and the
+start of the clef. When space-to-barline is true, we measure the space between the note and
+the start of the barline."
+}
+
+\paper {ragged-right = ##t}
+
+{
+  \override Score.SpacingSpanner #'common-shortest-duration = #(ly:make-moment 1 16)
+  c'2 \clef bass c'2 \clef treble
+  \override NoteSpacing #'space-to-barline = ##f
+  c'2 \clef bass c'2 \clef treble
+
+  % the following two measures should be spaced identically
+  \override NoteSpacing #'space-to-barline = ##t
+  c'2 c'2
+  \override NoteSpacing #'space-to-barline = ##f
+  c'2 c'2
+  c'1
+}
\ No newline at end of file
index 291c799910e56d6f8109adc593597ac5275ced02..959043274665b2c12916e1a56442dbbf6bf8ea83 100644 (file)
@@ -194,7 +194,8 @@ Axis_group_interface::relative_pure_height (Grob *me, int start, int end)
 
       if (rank > end)
        break;
-      else if (rank >= start && it->pure_is_visible (start, end))
+      else if (rank >= start && it->pure_is_visible (start, end)
+              && !to_boolean (it->get_property ("cross-staff")))
        {
          Interval dims = it->pure_height (common, start, end);
          if (!dims.is_empty ())
@@ -205,7 +206,8 @@ Axis_group_interface::relative_pure_height (Grob *me, int start, int end)
   for (vsize i = 0; i < spanners.size (); i++)
     {
       Interval_t<int> rank_span = spanners[i]->spanned_rank_interval ();
-      if (rank_span[LEFT] <= end && rank_span[RIGHT] >= start)
+      if (rank_span[LEFT] <= end && rank_span[RIGHT] >= start
+         && !to_boolean (spanners[i]->get_property ("cross-staff")))
        {
          Interval dims = spanners[i]->pure_height (common, start, end);
          if (!dims.is_empty ())
index 79bc076f212165339bb73497aa04d78dbc967d52..843278aff38e8b8f97c645ba73d24ed3f329ab6b 100644 (file)
@@ -336,7 +336,6 @@ Beam::get_beam_segments (Grob *me_grob, Grob **common)
   Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
 
   Slice ranks;
-  
   for (vsize i = 0; i < stems.size (); i++)
     {
       Grob *stem = stems[i];
@@ -366,7 +365,7 @@ Beam::get_beam_segments (Grob *me_grob, Grob **common)
              Beam_stem_segment seg;
              seg.stem_ = stem;
              seg.stem_x_ = stem_x;
-             seg.rank_ = 2 * i  + (d+1)/2;
+             seg.rank_ = 2 * i + (d+1)/2;
              seg.width_ = stem_width;
              seg.stem_index_ = i;
              seg.dir_ = d;
@@ -404,14 +403,15 @@ Beam::get_beam_segments (Grob *me_grob, Grob **common)
          Direction event_dir = LEFT;
          do
            {
-             bool on_bound = (event_dir == LEFT) ? j == 0 :
+             bool on_line_bound = (segs[j].dir_ == LEFT) ? segs[j].stem_index_ == 0
+               : segs[j].stem_index_ == stems.size() - 1;
+             bool on_beam_bound = (event_dir == LEFT) ? j == 0 :
                j == segs.size () - 1;
-
              bool inside_stem = (event_dir == LEFT)
-                       ? segs[j].stem_index_ > 0
-                       : segs[j].stem_index_ + 1  < stems.size () ;
+               ? segs[j].stem_index_ > 0
+               : segs[j].stem_index_ + 1 < stems.size () ;
                      
-             bool event = on_bound
+             bool event = on_beam_bound
                || abs (segs[j].rank_ - segs[j+event_dir].rank_) > 1
                || (abs (vertical_count) >= segs[j].max_connect_
                    || abs (vertical_count) >= segs[j + event_dir].max_connect_);
@@ -423,7 +423,7 @@ Beam::get_beam_segments (Grob *me_grob, Grob **common)
              current.horizontal_[event_dir] = segs[j].stem_x_;
              if (segs[j].dir_ == event_dir)
                {
-                 if (on_bound
+                 if (on_line_bound
                      && me->get_bound (event_dir)->break_status_dir ())
                    {
                      current.horizontal_[event_dir]
index d1c7d0e7c44c2e7ba3918e2707d31af2a3c4294a..581d63529904848f889a756f6aea73e29ffb96c9 100644 (file)
@@ -22,6 +22,7 @@ public:
   static void add_unordered_grob (Grob *, SCM nm, Grob *);
   static void set_ordered (Grob *, SCM, bool);
   static Grob_array *get_grob_array (Grob*, SCM);
+  static Grob *find_grob (Grob*, SCM, bool (*pred) (Grob*));
 };
 
 vector<Grob*> const &internal_extract_grob_array (Grob const *elt, SCM symbol);
index c8d3b93e0f397338ef0b88b8d29b4efdb9a689a0..d1280c7a9ea85995c5f430ba975e1ea4b490bbf8 100644 (file)
@@ -23,7 +23,7 @@ struct Separation_item
   static vector<Box> boxes (Grob *me, Grob *left);
   static Skyline conditional_skyline (Grob *, Grob *);
   static Grob *extremal_break_aligned_grob (Grob *, Direction, Interval *);
-  static bool set_distance (Drul_array<Item *>, Real);
+  static Real set_distance (Item *left, Item *right, Real padding);
   static bool is_empty (Grob *me);
   static void add_item (Grob *, Item *);
   static void add_conditional_item (Grob *, Grob *);
index 88f8735d6853dcd0d881f6045aee32bd48664940..c706e7e6ad8e0d8c35e55a930ddd5cd44c5820b5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1999--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 1999--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #ifndef SIDE_POSITION_INTERFACE_HH
index 830f2fc98e5f730feee299d8be44a707c46c714e..6503a3decff6ca144fb2eee3a09cc754f61fb6cc 100644 (file)
@@ -20,7 +20,7 @@ VS_VERSION_INFO VERSIONINFO
        VALUE "FileDescription", "LilyPond"
        VALUE "FileVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_LEVEL@.@BUILD_VERSION@"
        VALUE "InternalName", "LilyPond@"
-       VALUE "LegalCopyright", "Copyright (C) 1995--2005  Han-Wen Nienhuys and Jan Nieuwenhuizen, and others."
+       VALUE "LegalCopyright ", "Copyright (C) 1995--2007  Han-Wen Nienhuys and Jan Nieuwenhuizen, and others."
        VALUE "OriginalFilename", "lilypond.exe"
        VALUE "ProductName", "LilyPond"
        VALUE "ProductVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_LEVEL@"
index 8720bba596f14eb5085318c184057353c45107f9..f936b0498f26d2abd1cd5e61d27938a36bf79e37 100644 (file)
@@ -127,7 +127,7 @@ Line_interface::make_dashed_line (Real thick, Offset from, Offset to,
 {
   dash_fraction = min (max (dash_fraction, 0.0), 1.0);
   Real on = dash_fraction * dash_period + thick;
-  Real off = dash_period - on;
+  Real off = max (0.0, dash_period - on);
 
   SCM at = scm_list_n (ly_symbol2scm ("dashed-line"),
                       scm_from_double (thick),
@@ -231,6 +231,7 @@ Line_interface::line (Grob *me, Offset from, Offset to)
       Real len = (to-from).length ();
       
       int n = (int) rint ((len - period * fraction) / period);
+      n = max (0, n);
       if (n > 0)
        {
          /*
index 61d66186595ffb69786be06672e014117fcf0dbc..fc6a2e896bca4afc494bd608076c6c05221078cc 100644 (file)
@@ -106,7 +106,7 @@ Lookup::dashed_slur (Bezier b, Real thick, Real dash_period, Real dash_fraction)
                        ly_quote_scm (l),
                        SCM_UNDEFINED));
 
-  Box box (Interval (0, 0), Interval (0, 0));
+  Box box (b.extent (X_AXIS), b.extent (Y_AXIS));
   return Stencil (box, at);
 }
 
index ae0464f97dd29fea92496270596ac2914c2473ee..88b954f4fac2b299b0e94f4936300c299f057681 100644 (file)
@@ -151,7 +151,7 @@ Lyric_engraver::stop_translation_timestep ()
            {
              text_->set_parent (head, X_AXIS);
              if (melisma_busy (voice))
-               text_->set_property ("self-alignment-X", scm_from_int (LEFT));
+               text_->set_property ("self-alignment-X", get_property("lyricMelismaAlignment"));
            }
          else
            {
@@ -169,5 +169,5 @@ Lyric_engraver::stop_translation_timestep ()
 ADD_TRANSLATOR (Lyric_engraver,
                /* doc */ "",
                /* create */ "LyricText",
-               /* read */ "",
+               /* read */ "lyricMelismaAlignment",
                /* write */ "");
index 68593604de12420214b390b78adda3536567e10c..f1a8cbbf235e94940519126a42ad7233c2fcd914 100644 (file)
 #include "item.hh"
 #include "pointer-group-interface.hh"
 
+#include <map>
+
 #include "translator.icc"
 
 class Note_spacing_engraver : public Engraver
 {
+  typedef map <Context*, Grob*> Last_spacing_map;
+  Last_spacing_map last_spacings_;
   Grob *last_spacing_;
-  Context *last_spacing_parent_context_;
   
   Grob *spacing_;
 
@@ -37,15 +40,15 @@ protected:
 void
 Note_spacing_engraver::derived_mark () const
 {
-  if (last_spacing_parent_context_)
-    scm_gc_mark (last_spacing_parent_context_->self_scm ());
+  for (Last_spacing_map::const_iterator i = last_spacings_.begin ();
+       i != last_spacings_.end (); i++)
+    scm_gc_mark (i->first->self_scm ());
 }
 
 Note_spacing_engraver::Note_spacing_engraver ()
 {
-  last_spacing_parent_context_ = 0;
-  last_spacing_ = 0;
   spacing_ = 0;
+  last_spacing_ = 0;
 }
 
 void
@@ -85,38 +88,39 @@ Note_spacing_engraver::acknowledge_rhythmic_grob (Grob_info gi)
 void
 Note_spacing_engraver::finalize ()
 {
-  if (last_spacing_
-      && last_spacing_parent_context_
-      && last_spacing_parent_context_ == context ()->get_parent_context ()
-      && !unsmob_grob_array (last_spacing_->get_object ("right-items")))
+  Context *parent = context ()->get_parent_context ();
+  Grob *last_spacing = last_spacings_[parent];
+
+  if (last_spacing
+      && !unsmob_grob_array (last_spacing->get_object ("right-items")))
     {
-      SCM ccol = get_property ("currentCommandColumn");
-      Grob *column = unsmob_grob (ccol);
+      Grob *col  = unsmob_grob (get_property ("currentCommandColumn"));
       
-      Pointer_group_interface::add_grob (last_spacing_,
+      Pointer_group_interface::add_grob (last_spacing,
                                         ly_symbol2scm ("right-items"),
-                                        column);
+                                        col);
     }
 }
 
 void
 Note_spacing_engraver::stop_translation_timestep ()
 {
-  if (last_spacing_
-      && last_spacing_parent_context_
-      && last_spacing_parent_context_ == context ()->get_parent_context ()
+  Context *parent = context ()->get_parent_context ();
+  Grob *last_spacing = last_spacings_[parent];
+
+  if (last_spacing
       && to_boolean (get_property ("hasStaffSpacing")))
     {
       Grob *col = unsmob_grob (get_property ("currentCommandColumn"));
-      Pointer_group_interface::add_grob (last_spacing_,
+      Pointer_group_interface::add_grob (last_spacing,
                                         ly_symbol2scm ("right-items"),
                                         col);
     }
   
   if (spacing_)
     {
+      last_spacings_[parent] = spacing_;
       last_spacing_ = spacing_;
-      last_spacing_parent_context_ = context ()->get_parent_context ();
       spacing_ = 0;
     }
 
index 88c459240f029ab8b953728e0b9e01c3818341bd..96f7b8f8e35078da3b53b6be2f5daa18c38d619b 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "note-spacing.hh"
 
+#include "bar-line.hh"
 #include "directional-element-interface.hh"
 #include "grob-array.hh"
 #include "paper-column.hh"
@@ -66,21 +67,36 @@ Note_spacing::get_spacing (Grob *me, Item *right_col,
     adjust things so there are no collisions.
   */
   Drul_array<Skyline> skys = Spacing_interface::skylines (me, right_col);
-  Real min_dist = max (0.0, skys[LEFT].distance (skys[RIGHT]));
-  Real min_desired_space = left_head_end + (min_dist - left_head_end) / 2;
-
-  /* if the right object sticks out a lot, include a bit of extra space.
-     But only for non-musical-columns; this shouldn't apply to accidentals */
-  if (!Paper_column::is_musical (right_col))
-    min_desired_space = max (min_desired_space,
-                            left_head_end + LEFT * skys[RIGHT].max_height ());
+  Real distance = skys[LEFT].distance (skys[RIGHT]);
+  Real min_dist = max (0.0, distance);
+  Real min_desired_space = left_head_end + (min_dist - left_head_end + base_space - increment) / 2;
+  Real ideal = base_space - increment + left_head_end;
+
+  /* If we have a NonMusical column on the right, we measure the ideal distance
+     to the bar-line (if present), not the start of the column. */
+  if (!Paper_column::is_musical (right_col)
+      && !skys[RIGHT].is_empty ()
+      && to_boolean (me->get_property ("space-to-barline")))
+    {
+      Grob *bar = Pointer_group_interface::find_grob (right_col,
+                                                     ly_symbol2scm ("elements"),
+                                                     Bar_line::has_interface);
 
-  Real ideal = base_space - increment + min_desired_space;
+      if (bar)
+       {
+         Real shift = bar->extent (right_col, X_AXIS)[LEFT];
+         ideal -= shift;
+         min_desired_space -= max (shift, 0.0);
+       }
+      else
+       ideal -= right_col->extent (right_col, X_AXIS)[RIGHT];
+    }
 
+  ideal = max (ideal, min_desired_space);
   stem_dir_correction (me, right_col, increment, &ideal, &min_desired_space);
 
-  Spring ret (ideal, min_dist);
-  ret.set_inverse_compress_strength (max (0.0, ideal - max (min_dist, min_desired_space)));
+  Spring ret (max (0.0, ideal), min_dist);
+  ret.set_inverse_compress_strength (max (0.0, ideal - min_desired_space));
   ret.set_inverse_stretch_strength (max (0.1, base_space - increment));
   return ret;
 }
@@ -207,6 +223,8 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
       for (vsize i = 0; i < items.size (); i++)
        {
          Item *it = dynamic_cast<Item *> (items[i]);
+         if (!Note_column::has_interface (it))
+           continue;
 
          /*
            don't correct if accidentals are sticking out of the right side.
@@ -299,6 +317,7 @@ ADD_INTERFACE (Note_spacing,
               "right-items "
               "same-direction-correction "
               "stem-spacing-correction "
+              "space-to-barline "
 
               );
 
index cfd1d5d0363a294aa05617b71653fa6922a61efe..2f23261eb901cbe682d673aec3b1f66159d8bdef 100644 (file)
@@ -69,7 +69,8 @@ Ottava_bracket::print (SCM smob)
   SCM markup = me->get_property ("text");
   Stencil text;
   if (Text_interface::is_markup (markup))
-    text = *unsmob_stencil (Text_interface::interpret_markup (layout->self_scm (), properties, markup));
+    text = *unsmob_stencil (Text_interface::interpret_markup (layout->self_scm (),
+                                                             properties, markup));
 
   Drul_array<Real> shorten = robust_scm2interval (me->get_property ("shorten-pair"),
                                                  Interval (0, 0));
index 1396c1280d94f8815e0ce6ba32f5ee26fd41bd52..481ffd14645b049bb523a3d04d02b99f08282791 100644 (file)
@@ -10,6 +10,7 @@
 #include "system.hh"
 #include "international.hh"
 #include "accidental-placement.hh"
+#include "accidental-interface.hh"
 #include "axis-group-interface.hh"
 #include "context.hh"
 #include "note-spacing.hh"
@@ -196,14 +197,14 @@ Paper_column_engraver::stop_translation_timestep ()
       Item *elem = items_[i];
       Grob *col = Item::is_non_musical (elem) ? command_column_ : musical_column_;
 
-      if (!elem->get_parent (X_AXIS)
-         || !unsmob_grob (elem->get_object ("axis-group-parent-X")))
-       {
-         Axis_group_interface::add_element (col, elem);
-       }
-      else if (Accidental_placement::has_interface (elem))
+      if (!elem->get_parent (X_AXIS))
+       elem->set_parent (col, X_AXIS);
+      if (!unsmob_grob (elem->get_object ("axis-group-parent-X")))
+       elem->set_object ("axis-group-parent-X", col->self_scm ());
+
+      if (Accidental_placement::has_interface (elem))
        Separation_item::add_conditional_item (col, elem);
-      else
+      else if (!Accidental_interface::has_interface (elem))
        Separation_item::add_item (col, elem);
     }
   items_.clear ();
index bb827db18b72fe183cc0d7b9a59ea706710f572a..53dfd4a906a2b907baeb59ced8b2ae998bcd3a7e 100644 (file)
@@ -152,6 +152,8 @@ Paper_column::minimum_distance (Grob *left, Grob *right)
     }
   while (flip (&d) != LEFT);
 
+  skys[RIGHT].merge (Separation_item::conditional_skyline (right, left));
+
   return max (0.0, skys[LEFT].distance (skys[RIGHT]));
 }
 
index d1302391e477983a49aed12317f03569a04ef5ae..08af94839d443930a0f7e26240f9038745a2aa1b 100644 (file)
@@ -45,6 +45,18 @@ Pointer_group_interface::get_grob_array (Grob *me, SCM sym)
   return arr;
 }
 
+Grob *
+Pointer_group_interface::find_grob (Grob *me, SCM sym, bool (*pred) (Grob*))
+{
+  Grob_array *arr = get_grob_array (me, sym);
+
+  for (vsize i = 0; i < arr->size (); i++)
+    if (pred (arr->grob (i)))
+      return arr->grob (i);
+
+  return 0;
+}
+
 void
 Pointer_group_interface::add_grob (Grob *me, SCM sym, Grob *p)
 {
index 6d721b639930337424aa2f5b5a290a6b9d36c1c4..a8d63c2e1a033d59834086068c4d45dd5611a391 100644 (file)
@@ -30,13 +30,12 @@ Separation_item::add_conditional_item (Grob *me, Grob *e)
   Pointer_group_interface::add_grob (me, ly_symbol2scm ("conditional-elements"), e);
 }
 
-bool
-Separation_item::set_distance (Drul_array<Item *> items,
-                              Real padding)
+Real
+Separation_item::set_distance (Item *l, Item *r, Real padding)
 {
-  Drul_array<Skyline_pair*> lines (Skyline_pair::unsmob (items[LEFT]->get_property ("horizontal-skylines")),
-                                  Skyline_pair::unsmob (items[RIGHT]->get_property ("horizontal-skylines")));
-  Skyline right = conditional_skyline (items[RIGHT], items[LEFT]);
+  Drul_array<Skyline_pair*> lines (Skyline_pair::unsmob (l->get_property ("horizontal-skylines")),
+                                  Skyline_pair::unsmob (r->get_property ("horizontal-skylines")));
+  Skyline right = conditional_skyline (r, l);
   right.merge ((*lines[RIGHT])[LEFT]);
   
   Real dist = padding + (*lines[LEFT])[RIGHT].distance (right);
@@ -44,13 +43,13 @@ Separation_item::set_distance (Drul_array<Item *> items,
     {
       Rod rod;
 
-      rod.item_drul_ = items;
+      rod.item_drul_ = Drul_array<Item*> (l, r);
 
       rod.distance_ = dist;
       rod.add_to_cols ();
     }
 
-  return dist > 0;
+  return max (dist, 0.0);
 }
 
 bool
index 22535ef7658c2c9ef8f8d65a96ff4c289ac4d6cd..c37aa72ad9b53a98cd6e395fa9e8b0da5e8ade96 100644 (file)
@@ -14,6 +14,7 @@
 #include "bezier.hh"
 #include "directional-element-interface.hh"
 #include "font-interface.hh"
+#include "item.hh"
 #include "pointer-group-interface.hh"
 #include "lookup.hh"
 #include "main.hh"             // DEBUG_SLUR_SCORING
@@ -368,6 +369,13 @@ Slur::calc_cross_staff (SCM smob)
   extract_grob_set (me, "note-columns", cols);
   extract_grob_set (me, "encompass-objects", extras);
 
+  for (vsize i = 0; i < cols.size (); i++)
+    {
+      if (Grob *s = Note_column::get_stem (cols[i]))
+       if (to_boolean (s->get_property ("cross-staff")))
+         return SCM_BOOL_T;
+    }
+
   /* the separation items are dealt with in replace_breakable_encompass_objects
      so we can ignore them here */
   vector<Grob*> non_sep_extras;
index 5b13c82264362ded0f7f8717ee82bae0b77e824f..fe072bca0aba3a93097095595e49101faaded388 100644 (file)
@@ -157,7 +157,7 @@ Spacing_spanner::set_distances_for_loose_col (Grob *me, Grob *c,
              Real base = note_spacing (me, lc, rc, options);
              Spring spring = Note_spacing::get_spacing (sp, rc, base, options->increment_);
 
-             dists[d] = max (dists[d], spring.distance () - options->increment_);
+             dists[d] = max (dists[d], spring.min_distance ());
            }
          else if (Staff_spacing::has_interface (sp))
            {
index 93bd1c2cfaf0549de703ef1892748916729b818e..65ac96834fe505e668cd7bfea1a7c5823fbb89dc 100644 (file)
@@ -17,6 +17,7 @@
 #include "paper-column.hh"
 #include "separation-item.hh"
 #include "skyline.hh"
+#include "system.hh"
 
 /* return the right-pointing skyline of the left-items and the left-pointing
    skyline of the right-items (with the skyline of the left-items in
@@ -38,29 +39,41 @@ Spacing_interface::skylines (Grob *me, Grob *right_col)
   Drul_array<vector<Grob*> > items (ly_scm2link_array (orig->get_object ("left-items")),
                                    ly_scm2link_array (orig->get_object ("right-items")));
 
+  Grob *system = me->get_system ();
+  Grob *left_col = dynamic_cast<Item*> (me)->get_column ();
+
+  Drul_array<Grob*> columns (left_col, right_col);
+
   Direction d = LEFT;
   do
     {
-      skylines[d].set_minimum_height (0.0);
-
       for (vsize i = 0; i < items[d].size (); i++)
        {
-         Grob *g = items[d][i];
-         if (Item *it = dynamic_cast<Item*> (g))
-           if (Grob *piece = it->find_prebroken_piece (break_dirs[d]))
+         Item *g = dynamic_cast<Item*> (items[d][i]);
+         if (g)
+           if (Item *piece = g->find_prebroken_piece (break_dirs[d]))
              g = piece;
 
-         if (Separation_item::has_interface (g))
+         if (g && Separation_item::has_interface (g) && g->get_column () == columns[d])
            {
              SCM sky_scm = g->get_property ("horizontal-skylines");
              Skyline_pair *sky = Skyline_pair::unsmob (sky_scm);
+
+             extract_grob_set (g, "elements", elts);
+             Grob *ycommon = common_refpoint_of_array (elts, g, Y_AXIS);
+             Real shift = ycommon->pure_relative_y_coordinate (system, 0, INT_MAX);
+
+             skylines[d].shift (-shift);
+
              if (sky)
                skylines[d].merge ((*sky)[-d]);
              else
                programming_error ("separation item has no skyline");
-           
+
              if (d == RIGHT && items[LEFT].size ())
                skylines[d].merge (Separation_item::conditional_skyline (items[d][i], items[LEFT][0]));
+
+             skylines[d].shift (shift);
            }
        }
     }
@@ -83,6 +96,15 @@ Spacing_interface::minimum_distance (Grob *me, Grob *right)
   this will add a new column to RIGHT-ITEMS. Here we look at the
   columns, and return the left-most. If there are multiple columns, we
   prune RIGHT-ITEMS.
+
+  If we end up pruning, we add a left-neighbor to every column that
+  gets pruned. This ensures that loose columns in cross-staff music
+  do indeed get marked as loose. The problem situation is when a voice
+  passes from staff 1 to staff 2 and a clef appears later on in staff 1.
+  Then the NoteSpacing attached to the last note in staff 1 has two
+  right-items: one pointing to the next note in staff 2 and one pointing
+  to the clef. We will prune the clef right-item here and, unless we add
+  a left-neighbor to the clef, it won't get marked as loose.
 */
 Item *
 Spacing_interface::right_column (Grob *me)
@@ -109,6 +131,8 @@ Spacing_interface::right_column (Grob *me)
 
          mincol = col;
        }
+      else if (rank > min_rank)
+       prune = true;
     }
 
   if (prune && a)
@@ -117,7 +141,15 @@ Spacing_interface::right_column (Grob *me)
       for (vsize i = right.size (); i--;)
        {
          if (dynamic_cast<Item *> (right[i])->get_column () != mincol)
-           right.erase (right.begin () + i);
+           {
+             extract_grob_set (right[i], "left-neighbors", lns);
+             if (lns.empty ())
+               Pointer_group_interface::add_grob (right[i],
+                                                  ly_symbol2scm ("left-neighbors"),
+                                                  dynamic_cast<Item*> (me)->get_column ());
+
+             right.erase (right.begin () + i);
+           }
        }
     }
 
index 9078c54bd3bcdb09f73b772019b31f1246d74a71..19739adf6a5ee8ddd520932c33c80750a93f3d99 100644 (file)
@@ -209,71 +209,90 @@ Spacing_spanner::generate_pair_spacing (Grob *me,
 }
 
 static void
-set_column_rods (vector<Grob*> const &cols, vsize idx, Real padding)
+set_column_rods (vector<Grob*> const &cols, Real padding)
 {
+  /* distances[i] will be the minimum distance between column i and column i+1 */
+  vector<Real> distances;
 
-  /*
-    This is an inner loop: look for the first normal (unbroken) Left
-    grob.  This looks like an inner loop (ie. quadratic total), but in
-    most cases, the interesting L will just be the first entry of
-    NEXT, making it linear in most of the cases.
-  */
-  Item *r = dynamic_cast<Item*> (cols[idx]);
+  for (vsize i = 1; i < cols.size (); i++)
+    {
+      Item *r = dynamic_cast<Item*> (cols[i]);
+      Item *rb = r->find_prebroken_piece (LEFT);
 
-  if (Separation_item::is_empty (r))
-    return;
+      if (Separation_item::is_empty (r) && (!rb || Separation_item::is_empty (rb)))
+       continue;
 
-  bool constraint = false;
-  bool grace = false;
+      Skyline_pair *skys = Skyline_pair::unsmob (r->get_property ("horizontal-skylines"));
+      Real right_stickout = skys ? (*skys)[LEFT].max_height () : 0.0;
 
-  idx--;
-  do
-    {
-      Item *l = dynamic_cast<Item*> (cols[idx]);
-      Item *lb = l->find_prebroken_piece (RIGHT);
+      Drul_array<Item*> r_cols (r, rb);
+      Drul_array<Real> cur_dist (0.0, 0.0);
 
-      if (Separation_item::is_empty (l) && (!lb || Separation_item::is_empty (lb)))
-       continue;
+      /* This is an inner loop and hence it is potentially quadratic. However, we only continue
+        as long as there is a rod to insert. Therefore, this loop will usually only execute
+        a constant number of times per iteration of the outer loop. */
+      for (vsize j = i; j--;)
+       {
+         Item *l = dynamic_cast<Item*> (cols[j]);
+         Item *lb = l->find_prebroken_piece (RIGHT);
+         Skyline_pair *skys = Skyline_pair::unsmob (l->get_property ("horizontal-skylines"));
+         Real left_stickout = skys ? (*skys)[RIGHT].max_height () : 0.0;
+         bool done = true;
+
+         Direction d = LEFT;
+         do
+           {
+             if (j < i-1)
+               cur_dist[d] += distances[j];
 
-      if (lb)
-       Separation_item::set_distance (Drul_array<Item*> (lb, r), padding);
-      constraint = Separation_item::set_distance (Drul_array<Item *> (l, r), padding);
+             Item *r_col = r_cols[d];
+             bool touches = right_stickout - left_stickout + cur_dist[d] < 0.0;
+             Real dist = 0.0;
 
+             /* we set a distance for the line-starter column even if it's non-broken counterpart
+                doesn't touch the right column. */
+             if (lb)
+               Separation_item::set_distance (lb, r_col, padding);
 
-      /*
-       This check is because grace notes are set very tight, and
-       the accidentals of main note may stick out so far to cover
-       a barline preceding the grace note.
-      */
-      grace = spanned_time_interval (l, r).length ().main_part_ == Rational (0);
+             if (touches || j == i-1)
+               dist = Separation_item::set_distance (l, r_col, padding);
 
-      /*
-       this grob doesn't cause a constraint. We look further until we
-       find one that does.
-      */
+             if (j == i-1 && d == LEFT)
+               distances.push_back (dist);
+
+             if (j == i-1)
+               cur_dist[d] = distances[j];
+
+             done = done && !touches;
+           }
+         while (flip (&d) != LEFT && rb);
+
+         /* we need the empty check for gregorian notation, where there are a lot of
+            extraneous paper-columns that we need to skip over */
+         if (done && !Separation_item::is_empty (l))
+           break;
+       }
     }
-  while (idx-- && (!constraint || grace));
 }
 
+
 void
 Spacing_spanner::generate_springs (Grob *me,
                                   vector<Grob*> const &cols,
                                   Spacing_options const *options)
 {
-  Paper_column *prev = 0;
-  for (vsize i = 0; i < cols.size (); i++)
+  Paper_column *prev = dynamic_cast<Paper_column*> (cols[0]);
+  for (vsize i = 1; i < cols.size (); i++)
     {
       Paper_column *col = dynamic_cast<Paper_column *> (cols[i]);
       Paper_column *next = (i + 1 < cols.size ()) ? dynamic_cast<Paper_column *> (cols[i+1]) : 0;
       
-      if (i > 0)
-       {
-         generate_pair_spacing (me, prev, col, next, options);
-         set_column_rods (cols, i, 0.1); // FIXME
-       }
+      generate_pair_spacing (me, prev, col, next, options);
 
       prev = col;
     }
+
+  set_column_rods (cols, 0.1); // FIXME: padding
 }
 
 /*
index c9f3afbe42a3ef4c71041b2cde980245fc283070..1f250546db354d31f41a7cfb344a011281af7524 100644 (file)
@@ -61,20 +61,24 @@ merge_springs (vector<Spring> const &springs)
   Real avg_distance = 0;
   Real min_distance = 0;
   Real avg_stretch = 0;
+  Real avg_compress = 0;
 
   for (vsize i = 0; i < springs.size (); i++)
     {
       avg_distance += springs[i].distance ();
       avg_stretch += springs[i].inverse_stretch_strength ();
+      avg_compress += 1 / springs[i].inverse_compress_strength ();
       min_distance = max (springs[i].min_distance (), min_distance);
     }
 
   avg_stretch /= springs.size ();
+  avg_compress /= springs.size ();
   avg_distance /= springs.size ();
   avg_distance = max (min_distance + 0.3, avg_distance);
 
   Spring ret = Spring (avg_distance, min_distance);
   ret.set_inverse_stretch_strength (avg_stretch);
+  ret.set_inverse_compress_strength (1 / avg_compress);
 
   return ret;
 }
index 9ef07652e33bff3df8fc314e793fbed3a4e51c11..4ac91fa7f38ac3d650ca984affadd61000d2bf20 100644 (file)
@@ -240,22 +240,27 @@ Stem::pure_height (SCM smob, SCM start, SCM end)
   if (!is_normal_stem (me))
     return ly_interval2scm (iv);
 
-  /* if we are part of a cross-staff beam, return empty */
-  if (get_beam (me) && Beam::is_cross_staff (get_beam (me)))
-    return ly_interval2scm (iv);
-  
   Real ss = Staff_symbol_referencer::staff_space (me);
-  Real len = scm_to_double (calc_length (smob)) * ss / 2;
-  Direction dir = get_grob_direction (me);
 
-  Interval hp = head_positions (me);
-  if (dir == UP)
-    iv = Interval (0, len);
-  else
-    iv = Interval (-len, 0);
+  if (!to_boolean (me->get_property ("cross-staff")))
+    {
+      Real len = scm_to_double (calc_length (smob)) * ss / 2;
+      Direction dir = get_grob_direction (me);
 
-  if (!hp.is_empty ())
-    iv.translate (hp[dir] * ss / 2);
+      Interval hp = head_positions (me);
+      if (dir == UP)
+       iv = Interval (0, len);
+      else
+       iv = Interval (-len, 0);
+
+      if (!hp.is_empty ())
+       iv.translate (hp[dir] * ss / 2);
+    }
+
+  /* at a minimum, make the pure-height cover the staff symbol */
+  Real rad = Staff_symbol_referencer::staff_radius (me);
+  iv.add_point (-rad * ss);
+  iv.add_point (rad * ss);
 
   return ly_interval2scm (iv);
 }
index b27c783208291ff2b29311e06b39ebf3f926fbbf..8c9656d32fd3f87cf777be446387a02735da08f7 100644 (file)
@@ -137,9 +137,7 @@ Tuplet_bracket::calc_connect_to_neighbors (SCM smob)
   do
     {
       Direction break_dir = bounds[d]->break_status_dir ();
-      
       Spanner *orig_spanner = dynamic_cast<Spanner*> (me->original ());
-
       vsize neighbor_idx = me->get_break_index () - break_dir;
       if (break_dir
          && d == RIGHT
@@ -282,7 +280,6 @@ Tuplet_bracket::print (SCM smob)
     bracket_visibility = ly_scm2bool (bracket);
   else if (bracket == ly_symbol2scm ("if-no-beam"))
     bracket_visibility = !par_beam;
-
   
   SCM cpoints =  me->get_property ("control-points");
   if (scm_ilength (cpoints) < 2)
@@ -298,8 +295,6 @@ Tuplet_bracket::print (SCM smob)
   Interval x_span (points[LEFT][X_AXIS], points[RIGHT][X_AXIS]);
   Drul_array<Real> positions (points[LEFT][Y_AXIS], points[RIGHT][Y_AXIS]);
 
-
-
   Output_def *pap = me->layout ();
 
   Grob *number_grob = unsmob_grob (me->get_object ("tuplet-number"));
index e99697a4d49686b2c87142a3562b05a3bfca3e1c..58ce25960a62fdd48dbadc1038befe634f3f0b2f 100644 (file)
@@ -537,6 +537,7 @@ automatically when an output definition (a @code{\score} or
   stringNumberOrientations = #'(up down)
   strokeFingerOrientations = #'(right)
   
+  lyricMelismaAlignment = #LEFT
   markFormatter = #format-mark-letters
   rehearsalMark = #1
   subdivideBeams = ##f
index 766046901ac35d2a021f0952d6e47d118c2ff888..7e9b7ed74089328eeb1f5c6b79ed45071321497a 100644 (file)
@@ -12,7 +12,7 @@ default:
 
 $(outdir)/%.nexi: $(ITELY_FILES) $(ITEXI_FILES)
 
-MAKEINFO = LANG= $(MAKEINFO_PROGRAM) --enable-encoding --force
+MAKEINFO_FLAGS += --force
 
 $(outdir)/%/index.html: $(outdir)/%.nexi $(outdir)/user-ln doc-po
        mkdir -p $(dir $@)
index 51c269364a472b3935bd9945434ec32a52b461d7..a89a8b1d12184a6dd90e067f79d93b83b6fd6cb1 100644 (file)
@@ -3,7 +3,7 @@
 %
 % source file of the GNU LilyPond music typesetter
 %
-% (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 2005--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 fet_begingroup ("arrowheads");
 
index 50648f13c0bcd2f9f20ede6d7490ce6ac205dcc7..921053ec797c484787984d5c6691d570303ef4c8 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (not an acronym for Font-En-Tja)
 % pretty-but-neat music font
 %
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %          Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % these macros help create ascii logging output
index bb928d3b7e39321e41d4b5d71073cd0e4ff78f70..30bd20c3adc2b2163eb7e93f8f1c80101287924e 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (not an acronym for Font-En-Tja)
 % pretty-but-neat music font
 %
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %                Jan Nieuwenhuizen <janneke@gnu.org>
 
 
index 1926fc5224c99a091bfd8d4375af17001717cf93..7fa4a368d5e811d9a9941bc1de0b32b5583ce7fd 100644 (file)
@@ -3,7 +3,7 @@
 %
 % source file of LilyPond's pretty-but-neat music font
 %
-% (c) 1997--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1997--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 % & Han-Wen Nienhuys <hanwen@xs4all.nl>
 % & Juergen Reuter <reuter@ipd.uka.de>
 %
index 6dbd7b454c3583d2537837040c3278a6d50e6a00..834de28259f6bf05cdb9331a89c47a35f9433dcb 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 0;
index f38466bf0210b36cf81bccaf231bf1091686b0b5..82d26573b122e9f7ac7148e873158c84ca2881cf 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 1;
index a317c162cd840c57db6b0e8eaf71605dfd134f9f..88924f57f388507eb89f06f2f4252136fb04a65c 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 2;
index 00225ebba81bac9206cad525872202ae4e5036ab..23e476383c967fd17975798630a7717f599dec23 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 3;
index 5c31683c8b51619907c0d24745f1767b9d2758e5..e12d7e5685b87c52cec6057af0386ee1b0fa6b66 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 4;
index afa652c7b139f92249bd862ae5bee39821862946..21cedda8e2793b334e40c31ddb51811b63bece2a 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 5;
index fcded0108156ba9805b5a9955bf7b7cb9e4e959a..5f2fdd34064158e528edd1995145f53b67a64b83 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 6;
index 6f07df5ac666a26f82a60ba2a59dfaeb57726896..61e195b6003d97c1ae1f75537fd53d82e59e7b9e 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 7;
index b87ab57a2e988cb6fd4701de2e12d46811f4edc1..c99b79d7b672b7aee80d6fa61bc6adf95cc07f85 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of the Feta (Font-En-Tja) music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 font_count := 8;
index 2f89f13ad063ee035d664cea91fc496dad79a2a3..0b757af413bb5bfb4dec54d10e1e4973a1bd7778 100644 (file)
@@ -4,7 +4,7 @@
 %
 % source file of the Feta (not the Font-En-Tja) music font
 %
-% (c) 1997--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1997--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 ex# := (dynamic_design_size / 2.4) * pt#;
index c1618ece7348f978922a9fa0425219cd53ac14a5..f16494b26c1f9ac1c8447c86eb6fcf08c70f53ca 100644 (file)
@@ -4,7 +4,7 @@
 %
 % source file of the Feta (not the Font-En-Tja) music font
 %
-% (c) 1997--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1997--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 fet_begingroup ("rests");
 
index 1fca5618a39723b5a4be2916f3a205f6e439e99e..ab7ff5bb30e70c793c8f85450e9ae85f1c577ee4 100644 (file)
@@ -5,7 +5,7 @@
 % source file of the Feta (defintively not an abbreviation for Font-En-Tja)
 % music font
 % 
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 % 
 
 
index 4b426a578f9d0c466ac4123521a0a33994399790..2e8e83275ae6c7623786c3e2c973537eff66b77a 100644 (file)
@@ -4,7 +4,7 @@
 %
 % source file of the Feta (not the Font-En-Tja) music font
 %
-% (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 2005--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 fet_begingroup ("brackettips");
 
index eaff040c9e3a4c9395e23c90964e3ddb72a82689..66aa9b8d26f73d4e045d37d1ec83c12f2970fad7 100644 (file)
@@ -4,7 +4,7 @@
 %
 % source file of the Feta (not the Font-En-Tja) music font
 %
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>,
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>,
 % Jan Nieuwenhuizen <janneke@gnu.org>,
 % Juergen Reuter <reuter@ipd.uka.de>
 
index ae264fa5038bc516e76999dde0737221c0a3d70e..b0fca2d4824281e71a6f5422e71ba4685376bbfc 100644 (file)
@@ -4,7 +4,7 @@
 %
 % source file of the Feta (not the Font-En-Tja) music font
 %
-% (c) 1997--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1997--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 height# := number_design_size;
index ccdad5a0b16870c5be8581c032865b03d348f225..6071009325190f300691a835929a94ffb558ad67 100644 (file)
@@ -5,7 +5,7 @@
 %
 % source file of the Feta (not the Font-En-Tja) music font
 %
-% (c) 2000--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 2000--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % Voor Cup
 
index 7b2cdd932b5e7511cabeb62ba8234ce8d71b4279..10eebb592654a1ca78f951fcb744915b36b1299e 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (defintively not an abbreviation for Font-En-Tja)
 % music font
 %
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %      Jan Nieuwenhuizen <janneke@gnu.org>
 %
 
index 7834d1fd8078ec88112bba9bd429c58d352d1169..46004e2e9f85f65c094c603174c2e26fe4d0df63 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (definitely not an abbreviation for Font-En-Tja)
 % music font
 %
-% (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 %
 
 % this file is included by feta-scripts.mf
index 58bc9d9f9c5370a811adf80fac8793584486b030..4f2356629309d2373c527c40d90c7f5c3ec59155 100644 (file)
@@ -3,7 +3,7 @@
 %
 % source file of the Feta (not an abbreviation of Font-En-Tja) music font
 %
-% (c) 1998--2006 Mats Bengtsson <matsb@s3.kth.se>,
+% (c) 1998--2007 Mats Bengtsson <matsb@s3.kth.se>,
 %               Christian Mondrup <scancm@biobase.dk>
 
 fet_begingroup ("timesig");
index 53564e07f505a97bcc104ebef3138868347ce7ad..1f2690dd5e1d7f55c2ba1001c6023d0c049f082c 100644 (file)
@@ -1,7 +1,7 @@
 %
 % feta-toevallig.mf -- implement Accidentals
 %
-% (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 
 
index 4d8da44004e5ae75689d8ce362a1ae7aa7a503d1..ba4bf7886884ea3ef58f16bbf21ba11233f38dc3 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 2001--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2001--2007 Juergen Reuter <reuter@ipd.uka.de>
 % 
 
 fet_begingroup ("accidentals");
index 92722121577ae6eae20de2edc470747f6ed82518..5b6d21f802179c7af9080718195c39d94cea61b8 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 %
-% (c) 2001--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2001--2007 Juergen Reuter <reuter@ipd.uka.de>
 %
 
 fet_begingroup ("clefs");
index fca50e37f20a3fff5d56e9e795b9ab3fed46f071..47848b7db0fb37c87a4db06b08f113e9febb3ebf 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 2000--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2000--2007 Juergen Reuter <reuter@ipd.uka.de>
 % 
 
 save black_notehead_width;
index 26f6a74ac152a07077d47ed11053c504d56bc9de..737a39b65fb9865c29d5047a2181e7b77594b5e9 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 2001--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2001--2007 Juergen Reuter <reuter@ipd.uka.de>
 % 
 
 fet_begingroup ("flags");
index 39c4ef6cf1d5be4cb08bfc661abed18065d55361..8a26d1dc654f3b6d068e8a546ff2a98c04163f4f 100644 (file)
@@ -4,7 +4,7 @@
 %
 % source file of LilyPond's pretty-but-neat music font
 %
-% (c) 2002--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2002--2007 Juergen Reuter <reuter@ipd.uka.de>
 %
 
 
index a83449781e50c35d61c7db1f394e69aed6aba711..b69c378ffce6e04be36034b6ab12bc6466b8188d 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 2001--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2001--2007 Juergen Reuter <reuter@ipd.uka.de>
 % 
 % Neo-mensural heads originally by
 % Christian Mondrup and Mats Bengtsson
index e72bcbf1fca8060b7ec85c8081550a44f0863044..1f0b4ad5356ebba06933930c064dfaaee177de78 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 2001--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2001--2007 Juergen Reuter <reuter@ipd.uka.de>
 % 
 
 
index ef69f69e81877e5cf79232af35b50777f66b03a9..5beeedc1b2da7e5703bec6f87d9a53c600062976 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 2001--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2001--2007 Juergen Reuter <reuter@ipd.uka.de>
 % 
 % Neo-mensural rests originally by
 % Christian Mondrup and Mats Bengtsson.
index 59c6993ee5e98090770467f7c9670c2d01951a55..1aebbe5c57e24fe23117fafaa9addffb395682d6 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 2002--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2002--2007 Juergen Reuter <reuter@ipd.uka.de>
 % 
 
 fet_begingroup ("scripts");
index 68036229a943f9e80c61eca8eb80978e0c1ca9c4..538016d9eacdb9005f9b0552039c3e1df82cdf71 100644 (file)
@@ -3,9 +3,9 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 1998--2006 Mats Bengtsson <matsb@s3.kth.se>,
+% (c) 1998--2007 Mats Bengtsson <matsb@s3.kth.se>,
 %               Christian Mondrup <scancm@biobase.dk>
-% (c) 2002--2006 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2002--2007 Juergen Reuter <reuter@ipd.uka.de>
 % 
 
 fet_begingroup ("timesig");
index 0b8c20f511a18c20e7249542d217856530de2549..0fac7aa0fbfea6cebbdb803a3513d1b776773769 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -2,14 +2,14 @@
 # Copyright (C) 2003 Han-Wen Nienhuys, Jan Nieuwenhuizen
 # This file is distributed under the same license as the lilypond package.
 # Erwin Dieterich <bamse@gmx.de>, 1999
-# Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005
+# Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005, 2006, 2007
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.9.26\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-12-24 10:40+0100\n"
-"PO-Revision-Date: 2006-10-26 08:39+0200\n"
+"Project-Id-Version: lilypond 2.11.22\n"
+"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
+"POT-Creation-Date: 2007-04-28 12:03+0200\n"
+"PO-Revision-Date: 2007-08-10 21:15+0200\n"
 "Last-Translator: Roland Stigge <stigge@antcom.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -30,20 +30,20 @@ msgstr "Für Details Benutzerhandbuch lesen und manuell aktualisieren."
 msgid "%s has been replaced by %s"
 msgstr "%s wurde durch %s ersetzt"
 
-#: convertrules.py:2398
+#: convertrules.py:2408
 msgid "LilyPond source must be UTF-8"
 msgstr "LilyPond-Quelle muss UTF-8 sein"
 
-#: convertrules.py:2401
+#: convertrules.py:2411
 msgid "Try the texstrings backend"
 msgstr "Das texstrings-Backend probieren"
 
-#: convertrules.py:2404
+#: convertrules.py:2414
 #, python-format
 msgid "Do something like: %s"
 msgstr "Folgendes versuchen: %s"
 
-#: convertrules.py:2407
+#: convertrules.py:2417
 msgid "Or save as UTF-8 in your editor"
 msgstr "Oder als UTF-8 im Editor sichern"
 
@@ -73,444 +73,427 @@ msgid "Running %s..."
 msgstr "%s wird ausgeführt..."
 
 #: lilylib.py:203
-#, fuzzy, python-format
+#, python-format
 msgid "Usage: %s"
-msgstr "Aufruf: %s\n"
+msgstr "Aufruf: %s"
 
-#: abc2ly.py:1349 convert-ly.py:80 lilypond-book.py:125 midi2ly.py:869
-#, fuzzy, python-format
+#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:110 midi2ly.py:858
+#, python-format
 msgid "%s [OPTION]... FILE"
-msgstr "Aufruf: %s [OPTIONEN]... DATEI"
+msgstr "%s [OPTIONEN]... DATEI"
 
-#: abc2ly.py:1351
-#, fuzzy, python-format
+#: abc2ly.py:1344
+#, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
 "%s) to LilyPond input."
 msgstr ""
-"Dieses Programm wandelt ABC-Musikdateien in LilyPond-Eingabe um\n"
-"(siehe auch http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt)."
+"iabc2ly wandelt ABC-Musikdateien in LilyPond-Eingabe um\n"
+"(siehe auch %s)."
 
-#: abc2ly.py:1355 etf2ly.py:1200 midi2ly.py:885
+#: abc2ly.py:1348 etf2ly.py:1184 midi2ly.py:874
 msgid "write output to FILE"
 msgstr "Ausgabe in DATEI schreiben"
 
-#: abc2ly.py:1357
+#: abc2ly.py:1350
 msgid "be strict about succes"
 msgstr "bzgl. Erfolg streng sein"
 
-#: abc2ly.py:1359
+#: abc2ly.py:1352
 msgid "preserve ABC's notion of beams"
 msgstr "ABC's Prinzip der Balken beibehalten"
 
-#: abc2ly.py:1361 convert-ly.py:112 etf2ly.py:1208 lilypond-book.py:168
-#: midi2ly.py:911 musicxml2ly.py:505
-#, fuzzy
+#: abc2ly.py:1354 convert-ly.py:103 etf2ly.py:1192 lilypond-book.py:161
+#: midi2ly.py:900 musicxml2ly.py:506
 msgid "Report bugs via"
-msgstr "Melden Sie Fehler an %s"
+msgstr "Melden Sie Fehler an"
 
-#: convert-ly.py:41
-#, fuzzy
+#: convert-ly.py:32
 msgid ""
 "Update LilyPond input to newer version.  By default, update from the\n"
 "version taken from the \\version command, to the current LilyPond version."
 msgstr ""
-"LilyPond auf neuere Version bringen. Standardmäßig wird von der Version vom\n"
-"Kommando \\version zur aktuellen LilyPond-Version gegangen.\n"
-"\n"
-"Beispiele:\n"
-"\n"
-"  convert-ly -e old.ly\n"
-"  convert-ly --from=2.3.28 --to 2.5.21 foobar.ly\n"
+"LilyPond-Eingabe auf neuere Version bringen. Standardmäßig wird von der\n"
+"Version vom Kommando \\version zur aktuellen LilyPond-Version gegangen."
 
-#: convert-ly.py:43 lilypond-book.py:73
-#, fuzzy
+#: convert-ly.py:34 lilypond-book.py:59
 msgid "Examples:"
-msgstr "Beispiel:"
+msgstr "Beispiele:"
 
-#: convert-ly.py:56 lilypond-book.py:98 warn.cc:48 input.cc:90
+#: convert-ly.py:47 lilypond-book.py:83 warn.cc:48 input.cc:90
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "Warnung: %s"
 
-#: convert-ly.py:59 lilypond-book.py:101 warn.cc:54 input.cc:96 input.cc:104
+#: convert-ly.py:50 lilypond-book.py:86 warn.cc:54 input.cc:96 input.cc:104
 #, c-format, python-format
 msgid "error: %s"
 msgstr "Fehler: %s"
 
-#: convert-ly.py:75 etf2ly.py:1190 lilypond-book.py:121 midi2ly.py:98
+#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:106 midi2ly.py:87
 msgid "Distributed under terms of the GNU General Public License."
 msgstr "Vertrieben unter den Bedingungen der GNU General Public License."
 
-#: convert-ly.py:76 etf2ly.py:1191 lilypond-book.py:122 midi2ly.py:99
+#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:107 midi2ly.py:88
 msgid "It comes with NO WARRANTY."
 msgstr "Es wird OHNE GARANTIE ausgeliefert."
 
-#: convert-ly.py:86 convert-ly.py:106
+#: convert-ly.py:77 convert-ly.py:97
 msgid "VERSION"
 msgstr "VERSION"
 
-#: convert-ly.py:88
+#: convert-ly.py:79
 msgid "start from VERSION [default: \\version found in file]"
 msgstr "bei VERSION anfangen [Standard: \\version in Datei gefunden]"
 
-#: convert-ly.py:91
+#: convert-ly.py:82
 msgid "edit in place"
 msgstr "vor Ort ändern"
 
-#: convert-ly.py:94
+#: convert-ly.py:85
 msgid "do not add \\version command if missing"
 msgstr "kein Kommando \\version hinzufügen, falls es fehlt"
 
-#: convert-ly.py:100
-#, fuzzy
+#: convert-ly.py:91
 msgid "show rules [default: --from=0, --to=@TOPLEVEL_VERSION@]"
-msgstr "Regeln ausdrucken [Standard: --from=0, --to=@TOPLEVEL_VERSION@]"
+msgstr "Regeln anzeigen [Standard: --from=0, --to=@TOPLEVEL_VERSION@]"
 
-#: convert-ly.py:105
+#: convert-ly.py:96
 msgid "convert to VERSION [default: @TOPLEVEL_VERSION@]"
 msgstr "zu VERSION konvertieren [Standard: @TOPLEVEL_VERSION@]"
 
-#: convert-ly.py:153
+#: convert-ly.py:144
 msgid "Applying conversion: "
 msgstr "Anwenden der Umwandlung: "
 
-#: convert-ly.py:166
-#, fuzzy
+#: convert-ly.py:157
 msgid "Error while converting"
 msgstr "Fehler beim Umwandeln"
 
-#: convert-ly.py:168
+#: convert-ly.py:159
 msgid "Stopping at last succesful rule"
-msgstr ""
+msgstr "Abbruch bei letzter erfolgreicher Regel"
 
-#: convert-ly.py:190
+#: convert-ly.py:181
 #, python-format
 msgid "Processing `%s'... "
 msgstr "»%s« wird verarbeitet..."
 
-#: convert-ly.py:277 relocate.cc:360 source-file.cc:54
+#: convert-ly.py:268 relocate.cc:363 source-file.cc:54
 #, c-format, python-format
 msgid "cannot open file: `%s'"
-msgstr "Kann Datei nicht öffnen: `%s'"
+msgstr "Datei kann nicht geöffnet werden: »%s«"
 
-#: convert-ly.py:284
-#, fuzzy, python-format
+#: convert-ly.py:275
+#, python-format
 msgid "cannot determine version for `%s'.  Skipping"
 msgstr "Version für »%s« kann nicht erkannt werden. Wird übersprungen"
 
-#: etf2ly.py:1196
-#, fuzzy, python-format
+#: etf2ly.py:1180
+#, python-format
 msgid "%s [OPTION]... ETF-FILE"
-msgstr "Aufruf: %s [OPTIONEN]... DATEI"
+msgstr "%s [OPTIONEN]... ETF-DATEI"
 
-#: etf2ly.py:1198
-#, fuzzy
+#: etf2ly.py:1182
 msgid ""
 "Enigma Transport Format is a format used by Coda Music Technology's\n"
-"Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond "
-"file."
+"Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond file."
 msgstr ""
 "Enigma Transport-Format ist ein von Coda Music Technology's Finale\n"
-"verwendetes Format. Dieses Programm wird eine Teilmenge von ETF in\n"
-"eine von Lilypond-verwendbare Datei umwandeln."
+"verwendetes Format. etf2ly wandelt eine Teilmenge von ETF in\n"
+"eine von Lilypond verwendbare Datei um."
 
-#: etf2ly.py:1201 midi2ly.py:886 musicxml2ly.py:498 main.cc:172 main.cc:178
+#: etf2ly.py:1185 midi2ly.py:875 musicxml2ly.py:499 main.cc:154 main.cc:159
 msgid "FILE"
 msgstr "DATEI"
 
-#: etf2ly.py:1203 lilypond-book.py:165 midi2ly.py:899 main.cc:185
+#: etf2ly.py:1187 lilypond-book.py:158 midi2ly.py:888 main.cc:163
 msgid "show warranty and copyright"
 msgstr "Informationen zu Gewährleistung und Copyright anzeigen"
 
-#: lilypond-book.py:71
-#, fuzzy
-msgid ""
-"Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
-msgstr "LilyPond-Teile in Mischdatei (HTML, LaTeX oder texinfo) verarbeiten"
+#: lilypond-book.py:57
+msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
+msgstr "LilyPond-Teile in Mischdatei (HTML, LaTeX, texinfo oder DocBook) verarbeiten"
 
-#: lilypond-book.py:78
+#: lilypond-book.py:64
 msgid "BOOK"
-msgstr ""
+msgstr "BUCH"
 
-#: lilypond-book.py:87
+#: lilypond-book.py:72
 #, python-format
 msgid "Exiting (%d)..."
 msgstr "Beenden (%d)..."
 
-#: lilypond-book.py:119
+#: lilypond-book.py:104
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s bei"
 
-#: lilypond-book.py:129
+#: lilypond-book.py:114
 msgid "FILTER"
 msgstr "FILTER"
 
-#: lilypond-book.py:132
+#: lilypond-book.py:117
 msgid "pipe snippets through FILTER [convert-ly -n -]"
 msgstr "Auszüge durch FILTER [convert-ly -n -] leiten (Pipe)"
 
-#: lilypond-book.py:135
-#, fuzzy
-msgid ""
-"use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
-msgstr ""
-"Ausgabeformat FORMAT (texi [Vorgabe], texi-html, latex, html) verwenden"
+#: lilypond-book.py:120
+msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
+msgstr "Ausgabeformat FORMAT (texi [Vorgabe], texi-html, latex, html, docbook) verwenden"
 
-#: lilypond-book.py:138
+#: lilypond-book.py:123
 msgid "add DIR to include path"
 msgstr "VERZ zum Einfügepfad hinzufügen"
 
-#: lilypond-book.py:139 lilypond-book.py:144 main.cc:171
+#: lilypond-book.py:124 lilypond-book.py:136 main.cc:153
 msgid "DIR"
 msgstr "VERZ"
 
-#: lilypond-book.py:143
+#: lilypond-book.py:129
+msgid "PAD"
+msgstr "FÜLLUNG"
+
+#: lilypond-book.py:135
 msgid "write output to DIR"
 msgstr "Ausgabe in DATEI schreiben"
 
-#: lilypond-book.py:147
+#: lilypond-book.py:140
 msgid "COMMAND"
 msgstr "BEFEHL"
 
-#: lilypond-book.py:148
+#: lilypond-book.py:141
 msgid "process ly_files using COMMAND FILE..."
 msgstr "ly_files mit BEFEHL DATEI... verarbeiten"
 
-#: lilypond-book.py:154
+#: lilypond-book.py:147
 msgid "Create PDF files for use with PDFTeX"
-msgstr ""
+msgstr "PDF-Dateien für Verwendung mit PDFTeX erzeugen"
 
-#: lilypond-book.py:157
-#, fuzzy
+#: lilypond-book.py:150
 msgid ""
 "extract all PostScript fonts into INPUT.psfonts for LaTeX\n"
 "must use this with dvips -h INPUT.psfonts"
 msgstr ""
-"alle PostScript-Schriftarten für LaTeX entnehmen und in EINGABE.psfonts "
-"schreiben.\n"
+"alle PostScript-Schriftarten für LaTeX entnehmen und in EINGABE.psfonts schreiben.\n"
 "Dies muss mit dvips -h EINGABE.psfonts verwendet werden"
 
-#: lilypond-book.py:160 midi2ly.py:896 musicxml2ly.py:489 main.cc:184
+#: lilypond-book.py:153 midi2ly.py:885 musicxml2ly.py:490 main.cc:162
 msgid "be verbose"
 msgstr "wortreich sein"
 
-#: lilypond-book.py:773
+#: lilypond-book.py:768
 #, python-format
 msgid "file not found: %s"
 msgstr "Datei `%s' nicht gefunden"
 
-#: lilypond-book.py:1004
+#: lilypond-book.py:999
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "veraltete ly-option verwendet: %s=%s"
 
-#: lilypond-book.py:1007
+#: lilypond-book.py:1002
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "Übersetzung im Kompatibilitätsmodus: %s=%s"
 
-#: lilypond-book.py:1011
+#: lilypond-book.py:1006
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "veraltete ly-option verwendet: %s"
 
-#: lilypond-book.py:1014
+#: lilypond-book.py:1009
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "Übersetzung im Kompatibilitätsmodus: %s"
 
-#: lilypond-book.py:1033
+#: lilypond-book.py:1028
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "unbekannte Option ignoriert: %s"
 
-#: lilypond-book.py:1388
+#: lilypond-book.py:1382
 #, python-format
 msgid "Opening filter `%s'"
 msgstr "Filter »%s« wird geöffnet"
 
-#: lilypond-book.py:1405
+#: lilypond-book.py:1399
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "»%s« gescheitert (%d)"
 
-#: lilypond-book.py:1406
+#: lilypond-book.py:1400
 msgid "The error log is as follows:"
 msgstr "Das Fehlerprotokoll lautet wie folgt:"
 
-#: lilypond-book.py:1476
+#: lilypond-book.py:1472
 msgid "cannot find \\begin{document} in LaTeX document"
-msgstr ""
+msgstr "\\begin{document} in LaTeX-Dokument kann nicht gefunden werden"
 
-#: lilypond-book.py:1586
+#: lilypond-book.py:1583
 msgid "Writing snippets..."
 msgstr "Auszüge werden geschrieben..."
 
-#: lilypond-book.py:1591
+#: lilypond-book.py:1588
 msgid "Processing..."
 msgstr "Verarbeiten..."
 
-#: lilypond-book.py:1595
+#: lilypond-book.py:1592
 msgid "All snippets are up to date..."
 msgstr "Alle Auszüge sind auf dem neuesten Stand..."
 
-#: lilypond-book.py:1605
+#: lilypond-book.py:1602
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr "Format für %s kann nicht ermittelt werden"
 
-#: lilypond-book.py:1616
+#: lilypond-book.py:1613
 #, python-format
 msgid "%s is up to date."
 msgstr "%s ist aktuell."
 
-#: lilypond-book.py:1622
+#: lilypond-book.py:1619
 #, python-format
 msgid "Writing `%s'..."
 msgstr "»%s« wird geschrieben..."
 
-#: lilypond-book.py:1677
+#: lilypond-book.py:1674
 msgid "Output would overwrite input file; use --output."
 msgstr "Ausgabe würde Eingabedatei überschreiben; verwenden Sie --output."
 
-#: lilypond-book.py:1681
+#: lilypond-book.py:1678
 #, python-format
 msgid "Reading %s..."
 msgstr "%s lesen..."
 
-#: lilypond-book.py:1700
+#: lilypond-book.py:1697
 msgid "Dissecting..."
 msgstr "Zerlegen..."
 
-#: lilypond-book.py:1716
+#: lilypond-book.py:1713
 #, python-format
 msgid "Compiling %s..."
 msgstr "%s kompilieren..."
 
-#: lilypond-book.py:1725
+#: lilypond-book.py:1722
 #, python-format
 msgid "Processing include: %s"
 msgstr "Einfügung wird verarbeitet: %s"
 
-#: lilypond-book.py:1739
+#: lilypond-book.py:1736
 #, python-format
 msgid "Removing `%s'"
 msgstr "»%s« wird gelöscht"
 
-#: lilypond-book.py:1815
-#, python-format
-msgid "Writing fonts to %s..."
-msgstr "Schriftarten werden nach %s geschrieben..."
-
-#: lilypond-book.py:1830
+#: lilypond-book.py:1769
 msgid "option --psfonts not used"
 msgstr "Option --psfonts nicht verwendet"
 
-#: lilypond-book.py:1831
+#: lilypond-book.py:1770
 msgid "processing with dvips will have no fonts"
 msgstr "Verarbeitung mit dvips wird keine Schriftarten haben"
 
-#: lilypond-book.py:1834
+#: lilypond-book.py:1773
 msgid "DVIPS usage:"
 msgstr "DVIPS-Aufruf:"
 
-#: midi2ly.py:106 lily-library.scm:624 lily-library.scm:632
+#: lilypond-book.py:1829
+#, python-format
+msgid "Writing fonts to %s..."
+msgstr "Schriftarten werden nach %s geschrieben..."
+
+#: midi2ly.py:95 lily-library.scm:577 lily-library.scm:586
 msgid "warning: "
 msgstr "Warnung: "
 
-#: midi2ly.py:109 midi2ly.py:924
+#: midi2ly.py:98 midi2ly.py:913
 msgid "error: "
 msgstr "Fehler: "
 
-#: midi2ly.py:110
+#: midi2ly.py:99
 msgid "Exiting ... "
 msgstr "Beenden ... "
 
-#: midi2ly.py:857
+#: midi2ly.py:846
 #, python-format
 msgid "%s output to `%s'..."
 msgstr "%s nach »%s« ausgeben..."
 
-#: midi2ly.py:871 musicxml2ly.py:485
-#, fuzzy, python-format
+#: midi2ly.py:860 musicxml2ly.py:486
+#, python-format
 msgid "Convert %s to LilyPond input."
-msgstr "mup nach LilyPond-Quelltext konvertieren."
+msgstr "%s in LilyPond-Quelltext umwandeln."
 
-#: midi2ly.py:875
+#: midi2ly.py:864
 msgid "print absolute pitches"
 msgstr "Absolute Tonhöhen ausgeben"
 
-#: midi2ly.py:877 midi2ly.py:889
+#: midi2ly.py:866 midi2ly.py:878
 msgid "DUR"
 msgstr "DAUER"
 
-#: midi2ly.py:878
+#: midi2ly.py:867
 msgid "quantise note durations on DUR"
 msgstr "Notenlängen auf DAUER quantisieren"
 
-#: midi2ly.py:881
+#: midi2ly.py:870
 msgid "print explicit durations"
 msgstr "Explizite Notenlängen ausgeben"
 
-#: midi2ly.py:882
+#: midi2ly.py:871
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
 msgstr "Tonart setzen: VORZ=+Kreuze|-B's; MOLL=1"
 
-#: midi2ly.py:883
+#: midi2ly.py:872
 msgid "ALT[:MINOR]"
 msgstr "VORZ[:MOLL]"
 
-#: midi2ly.py:888
+#: midi2ly.py:877
 msgid "quantise note starts on DUR"
 msgstr "Notenanfänge auf DAUER quantisieren"
 
-#: midi2ly.py:891
+#: midi2ly.py:880
 msgid "DUR*NUM/DEN"
 msgstr "DAUER*ZÄHLER/NENNER"
 
 # tuplet = Wertaufteilung nach: Peter Giger: Die Kunst des Rhythmus, Seite 25
-#: midi2ly.py:894
+#: midi2ly.py:883
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr "Wertaufteilungsdauern DAUER*ZÄHLER/NENNER erlauben"
 
-#: midi2ly.py:902
+#: midi2ly.py:891
 msgid "treat every text as a lyric"
 msgstr "Jeden Text als Liedtext behandeln"
 
-#: midi2ly.py:905
-#, fuzzy
+#: midi2ly.py:894
 msgid "Examples"
-msgstr "Beispiel:"
+msgstr "Beispiele"
 
-#: midi2ly.py:925
+#: midi2ly.py:914
 msgid "no files specified on command line."
 msgstr "Keine Dateien auf der Kommandozeile angegeben."
 
-#: musicxml2ly.py:473
+#: musicxml2ly.py:474
 msgid "musicxml2ly FILE.xml"
-msgstr ""
+msgstr "musicxml2ly DATEI.xml"
 
-#: musicxml2ly.py:476
-#, fuzzy, python-format
+#: musicxml2ly.py:477
+#, python-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
 "License and you are welcome to change it and/or distribute copies of it\n"
 "under certain conditions.  Invoke as `%s --warranty' for more\n"
 "information."
 msgstr ""
-"Dieses Programm ist Freie Software. Sie wird von der GNU General Public "
-"License\n"
-"geschützt, und Sie können sie gerne ändern und/oder Kopien unter bestimmten\n"
+"Dieses Programm ist Freie Software. Es wird von der GNU General Public License\n"
+"geschützt, und Sie können es gerne ändern und/oder Kopien unter bestimmten\n"
 "Bedingungen weitergeben. Rufen Sie »%s --warranty« für weitere\n"
-"Informationen auf.\n"
+"Informationen auf."
 
-#: musicxml2ly.py:495
+#: musicxml2ly.py:496
 msgid "Use lxml.etree; uses less memory and cpu time."
-msgstr ""
+msgstr "lxml.etree verwenden; verwendet weniger Speicher und Prozessorzeit"
 
-#: musicxml2ly.py:503
+#: musicxml2ly.py:504
 msgid "set output filename to FILE"
 msgstr "Ausgabedateiname auf DATEI setzen"
 
@@ -520,9 +503,9 @@ msgid "option `%s' requires an argument"
 msgstr "Option »%s« benötigt ein Argument"
 
 #: getopt-long.cc:144
-#, fuzzy, c-format
+#, c-format
 msgid "option `%s' does not allow an argument"
-msgstr "Option `%s' erlaubt kein Argument"
+msgstr "Option »%s« erlaubt kein Argument"
 
 #: getopt-long.cc:148
 #, c-format
@@ -534,7 +517,7 @@ msgstr "unerkannte Option: »%s«"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "ungültiges Argument »%s« für Option »%s«"
 
-#: warn.cc:68 grob.cc:559 input.cc:82
+#: warn.cc:68 grob.cc:557 input.cc:82
 #, c-format
 msgid "programming error: %s"
 msgstr "Programmierfehler: %s"
@@ -543,39 +526,35 @@ msgstr "Programmierfehler: %s"
 msgid "continuing, cross fingers"
 msgstr "Fortsetzung, die Finger kreuzen"
 
-#: accidental-engraver.cc:240
+#: accidental-engraver.cc:247
 #, c-format
 msgid "accidental typesetting list must begin with context-name: %s"
 msgstr "Vorzeichensatzliste muss mit Kontextnamen beginnen: %s"
 
-#: accidental-engraver.cc:268
+#: accidental-engraver.cc:274
 #, c-format
-msgid "ignoring unknown accidental: %s"
-msgstr "unbekannte Option ignoriert: %s"
+msgid "ignoring unknown accidental rule: %s"
+msgstr "unbekannte Vorzeichenregel wird ignoriert: %s"
 
-#: accidental-engraver.cc:284
+#: accidental-engraver.cc:290
 #, c-format
 msgid "pair or context-name expected for accidental rule, found %s"
 msgstr "Paar oder Kontextname für Vorzeichenregel erwartet, %s gefunden"
 
-#: accidental.cc:243 key-signature-interface.cc:133
+#: accidental.cc:160
 #, c-format
-msgid "accidental `%s' not found"
-msgstr "Vorzeichen `%s' nicht gefunden"
+msgid "Could not find glyph-name for alteration %s"
+msgstr "Glyph-Name für Vorzeichen %s konnte nicht gefunden werden"
 
-#: align-interface.cc:222
-msgid ""
-"vertical alignment called before line-breaking.\n"
-"Only do cross-staff spanners with PianoStaff."
-msgstr ""
-"vertikale Ausrichtung vor Zeilenumbruch aufgerufen.\n"
-"Nur Zeilenzusammenfassungen mit PianoStaff erzeugen."
+#: accidental.cc:175
+msgid "natural alteration glyph not found"
+msgstr "Zeichen für Auflösung konnte nicht gefunden werden"
 
-#: align-interface.cc:329
+#: align-interface.cc:322
 msgid "tried to get a translation for something that is no child of mine"
-msgstr ""
+msgstr "Versuch, eine Übersetzung für etwas zu finden, das nicht mein Kind ist"
 
-#: all-font-metrics.cc:173
+#: all-font-metrics.cc:143
 #, c-format
 msgid "cannot find font: `%s'"
 msgstr "Schriftart kann nicht gefunden werden: »%s«"
@@ -601,61 +580,52 @@ msgstr "gibt es zwei Axis_group_engravers?"
 msgid "removing this vertical group"
 msgstr "entfernen dieser vertikalen Gruppe"
 
-#: axis-group-interface.cc:96
+#: axis-group-interface.cc:109
 msgid "tried to calculate pure-height at a non-breakpoint"
-msgstr ""
+msgstr "Versuch, die reine Höhe bei Nicht-Breakpoint zu ermitteln"
 
-#: axis-group-interface.cc:370
+#: axis-group-interface.cc:449
 msgid "an outside-staff object should have a direction, defaulting to up"
-msgstr ""
-
-#: axis-group-interface.cc:383
-#, c-format
-msgid "outside-staff object %s has an empty extent"
-msgstr ""
+msgstr "Ein Objekt außerhalb der Notenzeile sollte eine Richtung haben, Vorgabe ist »nach oben«"
 
 #: bar-check-iterator.cc:73
 #, c-format
 msgid "barcheck failed at: %s"
 msgstr "Taktüberprüfung gescheitert bei: %s"
 
-#: beam-engraver.cc:128
+#: beam-engraver.cc:126
 msgid "already have a beam"
 msgstr "Balken bereits vorhanden"
 
-#: beam-engraver.cc:196
+#: beam-engraver.cc:202
 msgid "unterminated beam"
 msgstr "unbegrenzter Balken"
 
-#: beam-engraver.cc:238 chord-tremolo-engraver.cc:134
+#: beam-engraver.cc:244 chord-tremolo-engraver.cc:138
 msgid "stem must have Rhythmic structure"
 msgstr "Notenhals muss rhythmische Struktur aufweisen"
 
-#: beam-engraver.cc:246
-#, fuzzy
+#: beam-engraver.cc:252
 msgid "stem does not fit in beam"
-msgstr "Notenhals passt nicht zum Balken"
+msgstr "Notenhals passt nicht in Balken"
 
-#: beam-engraver.cc:247
+#: beam-engraver.cc:253
 msgid "beam was started here"
 msgstr "Balken wurde hier begonnen"
 
-#: beam-quanting.cc:307
+#: beam-quanting.cc:314
 msgid "no feasible beam position"
 msgstr "Keine praktikable Balkenposition"
 
-#: beam.cc:144
-#, fuzzy
+#: beam.cc:160
 msgid "removing beam with no stems"
-msgstr "Balken mit weniger als zwei Notenhälsen wird entfernt"
+msgstr "Balken ohne Notenhälse wird entfernt"
 
-#: beam.cc:1007
+#: beam.cc:1035
 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"
+msgstr "Keine funktionsfähige Anfangskonfiguration gefunden: Es kann evtl. keine optimale Balkenneigung gefunden werden"
 
-#: break-alignment-interface.cc:208
+#: break-alignment-interface.cc:195
 #, c-format
 msgid "No spacing entry from %s to `%s'"
 msgstr "Kein Leerraumeintrag von %s nach »%s«"
@@ -663,7 +633,7 @@ msgstr "Kein Leerraumeintrag von %s nach »%s«"
 #: change-iterator.cc:23
 #, c-format
 msgid "cannot change `%s' to `%s'"
-msgstr "»%s« kann nicht nach »%s« geändert werden"
+msgstr "»%s« kann nicht in »%s« geändert werden"
 
 #. FIXME: constant error message.
 #: change-iterator.cc:82
@@ -686,15 +656,14 @@ msgid "none of these in my family"
 msgstr "keiner davon befindet sich in meiner Familie"
 
 #: chord-tremolo-engraver.cc:88
-#, fuzzy
 msgid "No tremolo to end"
-msgstr "Kein Bindebogen zu beenden"
+msgstr "Kein Tremolo zu beenden"
 
 #: chord-tremolo-engraver.cc:110
 msgid "unterminated chord tremolo"
 msgstr "unbegrenztes Akkord-Tremolo"
 
-#: chord-tremolo-iterator.cc:33
+#: chord-tremolo-iterator.cc:35
 #, c-format
 msgid "expect 2 elements for chord tremolo, found %d"
 msgstr "2 Elemente für Akkord-Tremolo erwartet, %d gefunden"
@@ -719,36 +688,35 @@ msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr "Coherent_ligature_engraver: setze »spacing-increment=0.01«: ptr=%ul"
 
 #. if we get to here, just put everything on one line
-#: constrained-breaking.cc:176 constrained-breaking.cc:193
+#: constrained-breaking.cc:167 constrained-breaking.cc:184
 msgid "cannot find line breaking that satisfies constraints"
-msgstr ""
-"es können keine Zeilenumbrüche gefunden werden, die die Bedingungen erfüllen"
+msgstr "es kann kein Zeilenumbruch gefunden werden, der die Bedingungen erfüllen"
 
 #: context-def.cc:130
 #, c-format
 msgid "program has no such type: `%s'"
 msgstr "Das Programm hat keinen solchen Typen: »%s«"
 
-#: context-property.cc:76
+#: context-property.cc:30
 msgid "need symbol arguments for \\override and \\revert"
 msgstr "Symbol-Argumente für \\override und \\revert benötigt"
 
-#: context.cc:151
+#: context.cc:144
 #, c-format
 msgid "cannot find or create new `%s'"
 msgstr "ein neues »%s« kann weder gefunden noch erzeugt werden"
 
-#: context.cc:213
+#: 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:276
+#: context.cc:268
 #, c-format
 msgid "Invalid CreateContext event: Cannot create %s context"
-msgstr ""
+msgstr "Ungültiges CreateContext-Ereignis: Kontext %s kann nicht erzeugt werden"
 
-#: context.cc:388
+#: context.cc:380
 #, c-format
 msgid "cannot find or create: `%s'"
 msgstr "»%s« kann weder gefunden noch erzeugt werden"
@@ -760,39 +728,39 @@ msgstr "custos »%s« nicht gefunden"
 
 #: dispatcher.cc:71
 msgid "Event class should be a symbol"
-msgstr ""
+msgstr "Ereignisklasse sollte ein Symbol sein"
 
 #: dispatcher.cc:78
-#, fuzzy, c-format
+#, c-format
 msgid "Unknown event class %s"
-msgstr "Unbekannte Schnittstelle »%s«"
+msgstr "Unbekannte Ereignisklasse »%s«"
 
-#: dots.cc:38
-#, fuzzy, c-format
+#: dots.cc:37
+#, c-format
 msgid "dot `%s' not found"
-msgstr "Pause »%s« nicht gefunden"
+msgstr "Punkt »%s« nicht gefunden"
 
-#: dynamic-engraver.cc:186 span-dynamic-performer.cc:87
+#: dynamic-engraver.cc:184
 msgid "cannot find start of (de)crescendo"
 msgstr "Anfang des (De-) Crescendos kann nicht gefunden werden"
 
-#: dynamic-engraver.cc:195
+#: dynamic-engraver.cc:193
 msgid "already have a decrescendo"
 msgstr "Decrescendo bereits vorhanden"
 
-#: dynamic-engraver.cc:197
+#: dynamic-engraver.cc:195
 msgid "already have a crescendo"
 msgstr "Crescendo bereits vorhanden"
 
-#: dynamic-engraver.cc:200
+#: dynamic-engraver.cc:198
 msgid "cresc starts here"
 msgstr "Crescendo beginnt hier"
 
-#: dynamic-engraver.cc:323
+#: dynamic-engraver.cc:327
 msgid "unterminated (de)crescendo"
 msgstr "unbegrenztes (De-) Crescendo"
 
-#: extender-engraver.cc:131 extender-engraver.cc:140
+#: extender-engraver.cc:142 extender-engraver.cc:151
 msgid "unterminated extender"
 msgstr "unbegrenzte Erweiterung"
 
@@ -801,12 +769,12 @@ msgid "Initializing FontConfig..."
 msgstr "FontConfig wird initialisiert..."
 
 #: font-config.cc:44
-#, fuzzy, c-format
+#, c-format
 msgid "Rebuilding FontConfig cache %s, this may take a while..."
 msgstr "FontConfig-Cache %s wird erneuert. Dies kann eine Weile dauern..."
 
 #: font-config.cc:55
-#, fuzzy, c-format
+#, c-format
 msgid "failed adding font directory: %s"
 msgstr "Schriftartverzeichnis wird hinzugefügt: %s"
 
@@ -815,27 +783,31 @@ msgstr "Schriftartverzeichnis wird hinzugefügt: %s"
 msgid "adding font directory: %s"
 msgstr "Schriftartverzeichnis wird hinzugefügt: %s"
 
-#: general-scheme.cc:160
+#: general-scheme.cc:198
 msgid "infinity or NaN encountered while converting Real number"
 msgstr "Unendlichkeit oder NaN bei Umwandlung einer Real-Zahl gefunden"
 
-#: general-scheme.cc:161
+#: general-scheme.cc:199
 msgid "setting to zero"
 msgstr "auf Null gesetzt"
 
-#: glissando-engraver.cc:92
+#: general-scheme.cc:417 output-ps.scm:61
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr "Unendlich oder NaN in Ausgabe gefunden. Wird durch 0.0 ersetzt"
+
+#: glissando-engraver.cc:94
 msgid "unterminated glissando"
 msgstr "unbegrenztes Glissando."
 
-#: global-context-scheme.cc:91 global-context-scheme.cc:107
+#: global-context-scheme.cc:87 global-context-scheme.cc:105
 msgid "no music found in score"
 msgstr "keine Musik in der Partitur gefunden"
 
-#: global-context-scheme.cc:97
+#: global-context-scheme.cc:95
 msgid "Interpreting music... "
 msgstr "Interpretation der Musik..."
 
-#: global-context-scheme.cc:120
+#: global-context-scheme.cc:118
 #, c-format
 msgid "elapsed time: %.2f seconds"
 msgstr "verstrichene Zeit: %.2f Sekunden"
@@ -870,16 +842,29 @@ msgstr "Unbekannte Schnittstelle »%s«"
 msgid "Grob `%s' has no interface for property `%s'"
 msgstr "Grob »%s« hat keine Schnittstelle für Eigenschaft »%s«"
 
-#: grob.cc:253
+#: grob-property.cc:34
+#, c-format
+msgid "%d: %s"
+msgstr "%d: %s"
+
+#: grob-property.cc:174
+#, c-format
+msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
+msgstr "Zyklische Abhängigkeit: Laufende Verarbeitung für #'%s (%s) gefunden"
+
+#: grob.cc:251
 msgid "Infinity or NaN encountered"
 msgstr "Unendlichkeit oder NaN bei Umwandlung einer Real-Zahl gefunden"
 
-#: hairpin.cc:183
+#: hairpin.cc:187
 msgid "decrescendo too small"
 msgstr "Decrescendo zu kurz"
 
+#: hairpin.cc:188
+msgid "crescendo too small"
+msgstr "Crescendo zu kurz"
+
 #: horizontal-bracket-engraver.cc:59
-#, fuzzy
 msgid "do not have that many brackets"
 msgstr "so viele Klammern gibt es nicht"
 
@@ -895,16 +880,12 @@ msgstr "unbegrenzter Bindestrich wird entfernt"
 msgid "unterminated hyphen; removing"
 msgstr "unbegrenzter Bindestrich; entfernt"
 
-#: includable-lexer.cc:53
-msgid "include files are not allowed in safe mode"
-msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt"
-
-#: includable-lexer.cc:60 lily-guile.cc:90 lily-parser-scheme.cc:116
+#: includable-lexer.cc:53 lily-guile.cc:76 lily-parser-scheme.cc:117
 #, c-format
 msgid "cannot find file: `%s'"
 msgstr "Datei »%s« kann nicht gefunden werden"
 
-#: includable-lexer.cc:62 lily-parser-scheme.cc:107
+#: includable-lexer.cc:55 lily-parser-scheme.cc:108
 #, c-format
 msgid "(search path: `%s')"
 msgstr "(Suchpfad: »%s«)"
@@ -913,6 +894,15 @@ msgstr "(Suchpfad: »%s«)"
 msgid "position unknown"
 msgstr "Position unbekannt"
 
+#: key-signature-interface.cc:71
+#, c-format
+msgid "No glyph found for alteration: %s"
+msgstr "Kein Glyph für Vorzeichen gefunden: %s"
+
+#: key-signature-interface.cc:81
+msgid "alteration not found"
+msgstr "Vorzeichen nicht gefunden"
+
 #: ligature-engraver.cc:93
 msgid "cannot find start of ligature"
 msgstr "Anfang der Bindung kann nicht gefunden werden"
@@ -941,55 +931,59 @@ msgstr "Pause wird ignoriert: Bindung darf keine Pause enthalten"
 msgid "ligature was started here"
 msgstr "Bindung wurde hier begonnen"
 
-#: lily-guile.cc:92
+#: lily-guile.cc:78
 #, c-format
 msgid "(load path: `%s')"
 msgstr "(Lade-Pfad: `%s')"
 
-#: lily-guile.cc:518
+#: lily-guile.cc:438
 #, 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:521
+#: lily-guile.cc:441
 msgid "perhaps a typing error?"
 msgstr "vielleicht ein Tippfehler?"
 
-#: lily-guile.cc:527
+#: lily-guile.cc:448
 msgid "doing assignment anyway"
 msgstr "Zuweisung wird trotzdem durchgeführt"
 
-#: lily-guile.cc:539
+#: lily-guile.cc:460
 #, 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"
 
-#: lily-lexer.cc:254
+#: lily-lexer.cc:250
+msgid "include files are not allowed in safe mode"
+msgstr "eingefügte Dateien sind im abgesicherten Modus nicht erlaubt"
+
+#: lily-lexer.cc:269
 #, c-format
 msgid "identifier name is a keyword: `%s'"
 msgstr "Bezeichnername ist ein Schlüsselwort: »%s«"
 
-#: lily-lexer.cc:269
+#: lily-lexer.cc:284
 #, c-format
 msgid "error at EOF: %s"
 msgstr "Fehler am Dateiende (EOF): %s"
 
-#: lily-parser-scheme.cc:29
+#: lily-parser-scheme.cc:30
 #, c-format
 msgid "deprecated function called: %s"
 msgstr "veraltete Funktion aufgerufen: %s"
 
-#: lily-parser-scheme.cc:88
-#, fuzzy, c-format
+#: lily-parser-scheme.cc:89
+#, c-format
 msgid "Changing working directory to: `%s'"
-msgstr "aktuelles Verzeichnis kann nicht zu »%s« geändert werden"
+msgstr "Aktuelles Verzeichnis wird zu »%s« geändert"
 
-#: lily-parser-scheme.cc:106
+#: lily-parser-scheme.cc:107
 #, c-format
 msgid "cannot find init file: `%s'"
 msgstr "Init-Datei kann nicht gefunden werden: »%s«"
 
-#: lily-parser-scheme.cc:125
+#: lily-parser-scheme.cc:126
 #, c-format
 msgid "Processing `%s'"
 msgstr "»%s« wird verarbeitet"
@@ -999,16 +993,19 @@ msgid "Parsing..."
 msgstr "Analysieren..."
 
 #: lily-parser.cc:127
-#, fuzzy
 msgid "braces do not match"
 msgstr "Klammern passen nicht zueinander"
 
-#: lyric-combine-music-iterator.cc:291
+#: lyric-combine-music-iterator.cc:327
 #, c-format
 msgid "cannot find Voice `%s'"
 msgstr "Stimme kann nicht gefunden werden: »%s«"
 
-#: main.cc:116
+#: lyric-engraver.cc:158
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr "Sprachsilbe hat keine Note. \\lyricsto oder associatedVoice verwenden."
+
+#: main.cc:100
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -1016,14 +1013,12 @@ msgid ""
 "under certain conditions.  Invoke as `%s --warranty' for more\n"
 "information.\n"
 msgstr ""
-"Dieses Programm ist Freie Software. Sie wird von der GNU General Public "
-"License\n"
+"Dieses Programm ist Freie Software. Sie wird von der GNU General Public License\n"
 "geschützt, und Sie können sie gerne ändern und/oder Kopien unter bestimmten\n"
 "Bedingungen weitergeben. Rufen Sie »%s --warranty« für weitere\n"
 "Informationen auf.\n"
 
-#: main.cc:122
-#, fuzzy
+#: main.cc:106
 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"
@@ -1049,106 +1044,88 @@ msgstr ""
 "BESTIMMTEN ZWECK kann nicht gewährleistet werden. Siehe GNU General Public\n"
 "License für weitere Details.\n"
 "\n"
-"    Sie sollten eine Kopie (siehe Datei COPYING) der GNU General Public\n"
+"    Sie sollten eine Kopie der GNU General Public\n"
 "License zusammen mit diesem Programm erhalten haben. Falls nicht, schreiben\n"
-"Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite "
-"330,\n"
+"Sie bitte an die Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:153
-msgid "BACK"
-msgstr "ZURÜCK"
-
-#: main.cc:153
-#, fuzzy
-msgid ""
-"use backend BACK (eps, gnome, ps [default],\n"
-"scm, svg, tex, texstr)"
-msgstr ""
-"Backend BACK verwenden (gnome, ps, eps,\n"
-"scm, svg, tex, texstr)\n"
-"Standard: PS"
-
-#: main.cc:155
-#, fuzzy
+#: main.cc:137
 msgid "SYM[=VAL]"
-msgstr "SYM=WERT"
+msgstr "SYM[=WERT]"
 
-#: main.cc:156
-#, fuzzy
+#: main.cc:138
 msgid ""
-"set Scheme option SYM to VAL (default: #t)\n"
+"set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
 msgstr ""
-"Eine Scheme-Programmoption setzen. #t wird verwendet, wenn WERT\n"
-"nicht angegeben wurde. -dhelp für Hilfe verwenden."
+"Scheme-Option SYM auf WERT setzen (Vorgabe: #t).\n"
+"-dhelp für Hilfe verwenden."
 
-#: main.cc:159
+#: main.cc:141
 msgid "EXPR"
 msgstr "AUSD"
 
-#: main.cc:159
+#: main.cc:141
 msgid "evaluate scheme code"
 msgstr "Schemacode auswerten"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:162
+#: main.cc:144
 msgid "FORMATs"
 msgstr "FORMATe"
 
-#: main.cc:162
+#: main.cc:144
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "dump FORMAT,... Auch als separate Optionen:"
 
-#: main.cc:163
+#: main.cc:145
 msgid "generate DVI (tex backend only)"
 msgstr "DVI erzeugen (nur TeX-Backend)"
 
-#: main.cc:164
+#: main.cc:146
 msgid "generate PDF (default)"
 msgstr "PDF erzeugen (Standard)"
 
-#: main.cc:165
+#: main.cc:147
 msgid "generate PNG"
 msgstr "PNG erzeugen"
 
-#: main.cc:166
+#: main.cc:148
 msgid "generate PostScript"
 msgstr "PostScript erzeugen"
 
-#: main.cc:167
+#: main.cc:149
 msgid "generate TeX (tex backend only)"
 msgstr "TeX erzeugen (nur TeX-Backend)"
 
-#: main.cc:168
+#: main.cc:150
 msgid "show this help and exit"
-msgstr ""
+msgstr "diese Hilfe anzeigen und beenden"
 
-#: main.cc:169
+#: main.cc:151
 msgid "FIELD"
 msgstr "FELD"
 
-#: main.cc:169
-#, fuzzy
+#: main.cc:151
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
-msgstr "Header-Feld in BASISNAME.FELD schreiben"
+msgstr "Header-Feld FELD in Datei BASISNAME.FELD schreiben"
 
-#: main.cc:171
+#: main.cc:153
 msgid "add DIR to search path"
 msgstr "VERZ zum Suchpfad hinzufügen"
 
-#: main.cc:172
+#: main.cc:154
 msgid "use FILE as init file"
 msgstr "DATEI als Anfangsdatei verwenden"
 
-#: main.cc:174
-msgid "USER,GROUP,JAIL,DIR"
+#: main.cc:156
+msgid "USER, GROUP, JAIL, DIR"
 msgstr "BENUTZER,GRUPPE,KERKER,VERZ"
 
-#: main.cc:174
+#: main.cc:156
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -1156,35 +1133,19 @@ msgstr ""
 "chroot in KERKER, wird BENUTZER:GRUPPE\n"
 "und cd in VERZ"
 
-#: main.cc:177
-msgid "do not generate printed output"
-msgstr "keine gedruckte Ausgabe erzeugen"
-
-#: main.cc:178
+#: main.cc:159
 msgid "write output to FILE (suffix will be added)"
 msgstr "Ausgabe in DATEI schreiben (Endung wird hinzugefügt)"
 
-#: main.cc:179
-msgid "generate a preview of the first system"
-msgstr "ein Bild des ersten Systems erzeugen"
-
-#: main.cc:180
+#: main.cc:160
 msgid "relocate using directory of lilypond program"
 msgstr "wiederfinden mit Hilfe des Lilypond-Programmverzeichnisses"
 
-#: main.cc:181
-#, fuzzy
-msgid ""
-"disallow unsafe Scheme and PostScript\n"
-"operations"
-msgstr "unsichere Scheme- und PostScript-Operationen verweigern"
-
-#: main.cc:183
-#, fuzzy
+#: main.cc:161
 msgid "show version number and exit"
-msgstr "Versionsnummer ausgeben"
+msgstr "Versionsnummer ausgeben und beenden"
 
-#: main.cc:224
+#: main.cc:203
 #, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -1194,87 +1155,82 @@ msgstr ""
 "%s und anderen."
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:251
+#: main.cc:230
 #, c-format
 msgid "Usage: %s [OPTION]... FILE..."
 msgstr "Aufruf: %s [OPTION]... DATEI..."
 
-#: main.cc:253
+#: main.cc:232
 #, c-format
 msgid "Typeset music and/or produce MIDI from FILE."
 msgstr "Musiksatz und/oder MIDI aus DATEI erzeugen."
 
-#: main.cc:255
+#: main.cc:234
 #, c-format
 msgid "LilyPond produces beautiful music notation."
 msgstr "LilyPond erzeugt ansprechende Musiknotation."
 
-#: main.cc:257
+#: main.cc:236
 #, c-format
 msgid "For more information, see %s"
 msgstr "Für weitere Informationen: siehe %s"
 
-#: main.cc:259
+#: main.cc:238
 #, c-format
 msgid "Options:"
 msgstr "Optionen:"
 
-#: main.cc:263
+#: main.cc:242
 #, c-format
 msgid "Report bugs via %s"
 msgstr "Melden Sie Fehler an %s"
 
-#: main.cc:309
+#: main.cc:288
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr "%d Argumente mit Kerker erwartet, %u gefunden"
 
-#: main.cc:323
+#: main.cc:302
 #, c-format
 msgid "no such user: %s"
 msgstr "kein solcher Benutzer: %s"
 
-#: main.cc:325
+#: main.cc:304
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
 msgstr "Benutzer-ID von Benutzer kann nicht gefunden werden: %s: %s"
 
-#: main.cc:340
+#: main.cc:319
 #, c-format
 msgid "no such group: %s"
 msgstr "keine solche Gruppe: %s"
 
-#: main.cc:342
+#: main.cc:321
 #, c-format
 msgid "cannot get group id from group name: %s: %s"
-msgstr "Gruppen-ID kann nicht von Gruppennamen ermittelt werden: %s: %s"
+msgstr "Gruppen-ID kann nicht von Gruppenname ermittelt werden: %s: %s"
 
-#: main.cc:350
+#: main.cc:329
 #, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr "kein chroot möglich nach: %s: %s"
 
-#: main.cc:357
+#: main.cc:336
 #, c-format
 msgid "cannot change group id to: %d: %s"
 msgstr "Gruppen-ID kann nicht geändert werden in: %d: %s"
 
-#: main.cc:363
+#: main.cc:342
 #, c-format
 msgid "cannot change user id to: %d: %s"
 msgstr "Benutzer-ID kann nicht geändert werden in: %d: %s"
 
-#: main.cc:369
+#: main.cc:348
 #, c-format
 msgid "cannot change working directory to: %s: %s"
 msgstr "aktuelles Verzeichnis kann nicht geändert werden in: %s: %s"
 
-#: main.cc:415
-#, c-format
-msgid "Evaluating %s"
-msgstr "%s wird ausgewertet"
-
-#: main.cc:645
+#: main.cc:594
 #, c-format
 msgid "exception caught: %s"
 msgstr "Ausnahme gefangen: %s"
@@ -1344,37 +1300,31 @@ msgstr "Mensural_ligature: unerwarteter case-Ausgang"
 msgid "Mensural_ligature: (join_right == 0)"
 msgstr "Mensural_ligature: (join_right == 0)"
 
-#: midi-item.cc:152
+#: midi-item.cc:81
 #, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "kein solches MIDI-Instrument: `%s'"
 
-#: midi-item.cc:285
-#, c-format
-msgid "experimental: temporarily fine tuning (of %d cents) a channel."
-msgstr ""
-"Experimentell: temporäre Feinabstimmung (von %d Hundertsteln) des Kanals."
-
 #: midi-stream.cc:28
 #, c-format
 msgid "cannot open for write: %s: %s"
-msgstr "Datei kann nicht zum Schreiben geöffnet werden: %s: %s"
+msgstr "Es kann nicht zum Schreiben geöffnet werden: %s: %s"
 
 #: midi-stream.cc:44
 #, c-format
 msgid "cannot write to file: `%s'"
-msgstr "in Datei konnte nicht geschrieben werden: »%s«"
+msgstr "Es kann nicht in Datei geschrieben werden: »%s«"
 
 #: music-iterator.cc:171
 msgid "Sending non-event to context"
-msgstr ""
+msgstr "Nicht-Ereignis wird in Kontext gesendet"
 
-#: music.cc:141
-#, fuzzy, c-format
+#: music.cc:140
+#, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr "Oktavenüberprüfung gescheitert; %s erwartet, %s gefunden"
+msgstr "Oktavenüberprüfung gescheitert; »%s« erwartet, »%s« gefunden"
 
-#: music.cc:207
+#: music.cc:203
 #, c-format
 msgid "transposition by %s makes alteration larger than double"
 msgstr "Transponieren um %s erzeugt Vorzeichen größer als zwei"
@@ -1391,7 +1341,7 @@ msgstr "Keine Platzierung für Griffe gefunden"
 msgid "placing below"
 msgstr "Platzierung darunter"
 
-#: note-collision.cc:457
+#: note-collision.cc:464
 msgid "ignoring too many clashing note columns"
 msgstr "zu viele kollidierende Notenspalten werden ignoriert"
 
@@ -1400,11 +1350,11 @@ msgid "cannot have note heads and rests together on a stem"
 msgstr "Notenköpfe und Pausen können nicht zusammen an einem Hals auftreten"
 
 #: note-head.cc:63
-#, fuzzy, c-format
+#, c-format
 msgid "none of note heads `%s' or `%s' found"
-msgstr "Notenkopf »%s« nicht gefunden"
+msgstr "Keinen der Notenköpfe »%s« und »%s« gefunden"
 
-#: note-heads-engraver.cc:61
+#: note-heads-engraver.cc:64
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent ohne Tonhöhe"
 
@@ -1418,53 +1368,97 @@ msgstr "es können keine %lu Bytes angefordert werden"
 msgid "cannot load font table: %s"
 msgstr "Schriftarttabelle kann nicht geladen werden: %s"
 
-#: open-type-font.cc:98
+#: open-type-font.cc:42
+#, c-format
+msgid "Free type error: %s"
+msgstr "Freetype-Fehler: %s"
+
+#: open-type-font.cc:100
 #, c-format
 msgid "unsupported font format: %s"
 msgstr "nicht unterstütztes Format: %s"
 
-#: open-type-font.cc:100
+#: open-type-font.cc:102
 #, c-format
-msgid "unknown error: %d reading font file: %s"
-msgstr "unbekannter Fehler: %d beim Lesen der Schriftartdatei: %s"
+msgid "error reading font file %s: %s"
+msgstr "Fehler beim Lesen der Schriftartdatei: %s: %s"
 
-#: open-type-font.cc:173 open-type-font.cc:297
-#, fuzzy, c-format
-msgid "FT_Get_Glyph_Name() returned error: %u"
-msgstr "FT_Get_Glyph_Name() gab Fehler zurück: %d"
+#: open-type-font.cc:177
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "FT_Get_Glyph_Name() Freetype-Fehler: %s"
 
-#: page-turn-page-breaking.cc:205
-msgid ""
-"cannot fit the first page turn onto a single page.  Consider setting first-"
-"page-number to an even number."
-msgstr ""
+#: open-type-font.cc:302 pango-font.cc:167
+#, c-format
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "FT_Get_Glyph_Name() Fehler: %s"
+
+#: page-turn-page-breaking.cc:146
+#, c-format
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr "Seitenwechsel-Seitenumbruch: Umbruch von %d nach %d"
+
+#: page-turn-page-breaking.cc:195
+msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
+msgstr "Erster Seitenwechsel kann nicht auf einzelne Seite gelegt werden. In Betracht zu ziehen wäre das Setzen von first-page-number auf gerade Zahl."
 
-#: page-turn-page-breaking.cc:218
+#: page-turn-page-breaking.cc:208
 #, c-format
 msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr ""
+msgstr "Seiten- und Zeilenumbrücke werden berechnet (%d mögliche Seitenumbrüche)..."
 
-#: page-turn-page-breaking.cc:236 paper-score.cc:154
+#: page-turn-page-breaking.cc:226 paper-score.cc:146
 msgid "Drawing systems..."
-msgstr ""
+msgstr "Zeichensysteme..."
+
+#: page-turn-page-breaking.cc:275
+#, c-format
+msgid "break starting at page %d"
+msgstr "Umbruch beginnt auf Seite %d"
+
+#: page-turn-page-breaking.cc:276
+#, c-format
+msgid "\tdemerits: %f"
+msgstr "Optimale Bewertung: %f"
+
+#: page-turn-page-breaking.cc:277
+#, c-format
+msgid "\tsystem count: %d"
+msgstr "\tSystemanzahl: %d"
 
-#: pango-font.cc:181
+#: page-turn-page-breaking.cc:278
+#, c-format
+msgid "\tpage count: %d"
+msgstr "\tSeitenanzahl: %d"
+
+#: page-turn-page-breaking.cc:279
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "\tvorheriger Umbruch: %d"
+
+#: pango-font.cc:184
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
 "Skipping glyph U+%0X, file %s"
 msgstr ""
+"Glyph hat keinen Namen, aber Zeichensatz unterstützt Glyphnamen.\n"
+"Glyph U+%0X wird übersprungen, Datei %s"
 
-#: pango-font.cc:224
+#: pango-font.cc:229
 #, c-format
 msgid "no PostScript font name for font `%s'"
 msgstr "Keine PostScript-Schriftartname für Schriftart: »%s«"
 
-#: pango-font.cc:272
+#: pango-font.cc:277
 msgid "FreeType face has no PostScript font name"
 msgstr "FreeType-Ansicht hat keinen PostScript-Schriftartnamen"
 
-#: paper-outputter-scheme.cc:33
+#: paper-column-engraver.cc:199
+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?"
+
+#: paper-outputter-scheme.cc:30
 #, c-format
 msgid "Layout output to `%s'..."
 msgstr "Layout nach »%s« ausgeben..."
@@ -1482,7 +1476,7 @@ msgstr "Elementanzahl: %d (Klammern: %d)"
 msgid "Preprocessing graphical objects..."
 msgstr "Vorverarbeitung der grafischen Elemente..."
 
-#: parse-scm.cc:83
+#: parse-scm.cc:87
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck"
 
@@ -1490,24 +1484,24 @@ msgstr "GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck"
 msgid "unterminated percent repeat"
 msgstr "unbegrenzte Prozentwiederholung"
 
-#: performance.cc:45
+#: performance.cc:43
 msgid "Track..."
 msgstr "Spur..."
 
-#: performance.cc:74
+#: performance.cc:72
 msgid "MIDI channel wrapped around"
 msgstr "MIDI-Kanal zurückgesprungen"
 
-#: performance.cc:75
+#: performance.cc:73
 msgid "remapping modulo 16"
 msgstr "Abbildung modulo 16"
 
-#: performance.cc:103
+#: performance.cc:101
 #, c-format
 msgid "MIDI output to `%s'..."
 msgstr "MIDI-Ausgabe nach »%s«..."
 
-#: phrasing-slur-engraver.cc:146
+#: phrasing-slur-engraver.cc:131
 msgid "unterminated phrasing slur"
 msgstr "nicht beendeter Phrasierungsbogen"
 
@@ -1520,14 +1514,14 @@ msgstr "3 Striche für Piano-Pedal erwartet, %ld gefunden"
 #: piano-pedal-performer.cc:93
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
-msgstr "kann keinen Anfang für Pedal finden: »%s«"
+msgstr "es kann kein Anfang für Piano-Pedal gefunden werden: »%s«"
 
 #: piano-pedal-engraver.cc:347
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
-msgstr "kann keinen Anfang für Piano-Pedal finden: »%s«"
+msgstr "es kann kein Anfang für Piano-Pedal-Klammer gefunden werden: »%s«"
 
-#: program-option.cc:205
+#: program-option-scheme.cc:207
 #, c-format
 msgid "no such internal option: %s"
 msgstr "keine solche interne Option: %s"
@@ -1542,46 +1536,51 @@ msgid "Failed octave check, got: "
 msgstr "Oktavprüfung gescheitert, Rückgabe: "
 
 #: relocate.cc:44
-#, fuzzy, c-format
+#, c-format
 msgid "Setting %s to %s"
-msgstr "Schreiben der Schriftarten nach %s"
+msgstr "%s wird auf %s gesetzt"
 
-#: relocate.cc:59
+#: relocate.cc:64
 #, c-format
 msgid "no such file: %s for %s"
 msgstr "keine solche Datei: %s für %s"
 
-#: relocate.cc:69 relocate.cc:87
+#: relocate.cc:74 relocate.cc:92
 #, c-format
 msgid "no such directory: %s for %s"
 msgstr "kein solches Verzeichnis: %s für %s"
 
-#: relocate.cc:79
+#: relocate.cc:84
 #, c-format
 msgid "%s=%s (prepend)\n"
 msgstr "%s=%s (voranstellen)\n"
 
-#: relocate.cc:99
+#: relocate.cc:114
+#, c-format
+msgid "not relocating, no %s/ or current/ found under %s"
+msgstr "keine Verlagerung, kein %s/ oder current/ unter %s gefunden"
+
+#: relocate.cc:125
 #, c-format
-msgid "Relocation: compile prefix=%s, new prefix=%s"
-msgstr "Verlagerung: Übersetzungsvorsilbe=%s, neue Vorsilbe=%s"
+msgid "Relocation: compile datadir=%s, new datadir=%s"
+msgstr "Verlagerung: Kompilier-Datenverzeichnis=%s, neues Datenverzeichnis=%s"
 
-#: relocate.cc:129
+#: relocate.cc:138
 #, c-format
 msgid "Relocation: framework_prefix=%s"
 msgstr "Verlagerung: framework_prefix=%s"
 
-#: relocate.cc:169
+#: relocate.cc:179
 #, c-format
 msgid "Relocation: is absolute: argv0=%s"
 msgstr "Verlagerung: ist absolut: argv0=%s"
 
-#: relocate.cc:176
+#: relocate.cc:186
 #, c-format
 msgid "Relocation: from cwd: argv0=%s"
 msgstr "Verlagerung: von cwd: argv0=%s"
 
-#: relocate.cc:185
+#: relocate.cc:195
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
@@ -1590,25 +1589,29 @@ msgstr ""
 "Verlagerung: von PATH=%s\n"
 "argv0=%s"
 
-#: relocate.cc:354
-#, fuzzy, c-format
+#: relocate.cc:229
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr "LILYPONDPREFIX is veraltet, stattdessen LILYPOND_DATADIR verwenden"
+
+#: relocate.cc:357
+#, c-format
 msgid "Relocation file: %s"
-msgstr "Verlagerung: ist absolut: argv0=%s"
+msgstr "Verlagerungsdatei: %s"
 
-#: relocate.cc:390
+#: relocate.cc:393
 #, c-format
 msgid "Unknown relocation command %s"
-msgstr ""
+msgstr "Unbekannter Verlagerungsbefehl %s"
 
-#: rest-collision.cc:151
+#: rest-collision.cc:145
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr "Restkollision kann nicht aufgelöst werden: Restrichtung nicht gesetzt"
 
-#: rest-collision.cc:165 rest-collision.cc:210
+#: rest-collision.cc:159 rest-collision.cc:204
 msgid "too many colliding rests"
 msgstr "zu viele kollidierende Pausen"
 
-#: rest.cc:144
+#: rest.cc:132
 #, c-format
 msgid "rest `%s' not found"
 msgstr "Pause »%s« nicht gefunden"
@@ -1631,54 +1634,58 @@ msgstr "Suchpfad »%s«"
 msgid "Aborting"
 msgstr "Abbruch"
 
-#: score.cc:225
+#: score.cc:167
 msgid "already have music in score"
 msgstr "es ist bereits Musik in der Partitur"
 
-#: score.cc:226
+#: score.cc:168
 msgid "this is the previous music"
 msgstr "Dies ist die vorhergehende Musik"
 
-#: score.cc:231
+#: score.cc:173
 msgid "errors found, ignoring music expression"
 msgstr "Fehler gefunden, musikalischer Ausdruck wird ignoriert"
 
 #. FIXME:
 #: script-engraver.cc:102
-#, fuzzy
 msgid "do not know how to interpret articulation: "
-msgstr "Keine Interpretation für Artikulation bekannt: "
+msgstr "Interpretation für Artikulation unbekannt: "
 
 #: script-engraver.cc:103
 msgid "scheme encoding: "
 msgstr "Schemakodierung: "
 
-#: simple-spacer.cc:375
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger"
-
-#: slur-engraver.cc:83 tuplet-engraver.cc:75
+#: slur-engraver.cc:82
 #, c-format
 msgid "direction of %s invalid: %d"
-msgstr ""
+msgstr "Richtung von %s ungültig: %d"
 
-#: slur-engraver.cc:157
+#: slur-engraver.cc:151
 msgid "unterminated slur"
 msgstr "unbegrenzter Bogen"
 
-#: slur-engraver.cc:166
+#: slur-engraver.cc:163
 msgid "cannot end slur"
 msgstr "Bindebogen kann nicht beendet werden"
 
+#: slur.cc:355
+#, c-format
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr "Grob für Bindebogen wird ignoriert: %s. Vermeidungs-Bindebogen nicht gesetzt?"
+
 #: source-file.cc:74
 #, c-format
 msgid "expected to read %d characters, got %d"
 msgstr "%d Zeichen erwartet, %d erhalten"
 
+#: spaceable-grob.cc:117
+#, c-format
+msgid "No spring between column %d and next one"
+msgstr "Kein (dynamischer) Abstand zwischen Spalte %d und Nachfolger"
+
 #: staff-symbol-engraver.cc:62
 msgid "staff-span event has no direction"
-msgstr ""
+msgstr "Zeilenüberspannendes Ereignis hat keine Richtung"
 
 #: stem-engraver.cc:92
 msgid "tremolo duration is too long"
@@ -1698,12 +1705,12 @@ msgstr "vielleicht sollte die Eingabe mehrstimmig sein"
 msgid "weird stem size, check for narrow beams"
 msgstr "Eigenartige Notenhalslänge; auf enge Balken überprüfen"
 
-#: stem.cc:641
+#: stem.cc:618
 #, c-format
 msgid "flag `%s' not found"
 msgstr "Fähnchen »%s« nicht gefunden"
 
-#: stem.cc:652
+#: stem.cc:629
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr "Fähnchenstrich »%s« nicht gefunden"
@@ -1713,24 +1720,24 @@ msgstr "Fähnchenstrich »%s« nicht gefunden"
 msgid "Element count %d."
 msgstr "Elementanzahl: %d."
 
-#: system.cc:276
+#: system.cc:266
 #, c-format
 msgid "Grob count %d"
 msgstr "Anzahl der grafischen Objekte (grob): %d"
 
-#: text-spanner-engraver.cc:61
+#: text-spanner-engraver.cc:60
 msgid "cannot find start of text spanner"
 msgstr "Anfang der Textklammer kann nicht gefunden werden"
 
-#: text-spanner-engraver.cc:73
+#: text-spanner-engraver.cc:72
 msgid "already have a text spanner"
 msgstr "Textklammer bereits vorhanden"
 
-#: text-spanner-engraver.cc:133
+#: text-spanner-engraver.cc:118
 msgid "unterminated text spanner"
 msgstr "unbegrenzte Textklammer"
 
-#: tie-engraver.cc:264
+#: tie-engraver.cc:267
 msgid "lonely tie"
 msgstr "einsamer Bindebogen"
 
@@ -1756,37 +1763,42 @@ msgstr "Taktart »%s« nicht gefunden; Rückkehr zum nummerierten Stil"
 msgid "unknown translator: `%s'"
 msgstr "unbekannter Übersetzer: »%s«"
 
-#: translator-group.cc:151
+#: translator-group-ctors.cc:29
+#, c-format
+msgid "fatal error. Couldn't find type: %s"
+msgstr "schwerwiegender Fehler. Typ konnte nicht gefunden werden: %s"
+
+#: translator-group.cc:146
 #, c-format
 msgid "cannot find: `%s'"
 msgstr "»%s« kann nicht gefunden werden"
 
-#: translator.cc:332
+#: translator.cc:346
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
-msgstr ""
+msgstr "Zwei gleichzeitige %s-Ereignisse, dieses wird verworfen"
 
-#: translator.cc:333
+#: translator.cc:347
 #, c-format
 msgid "Previous %s event here"
-msgstr ""
+msgstr "Vorheriges %s-Ereignis hier"
 
-#: trill-spanner-engraver.cc:68
+#: trill-spanner-engraver.cc:67
 msgid "cannot find start of trill spanner"
-msgstr "Anfang des Trillers kann nicht gefunden werden"
+msgstr "Anfang der Trillerklammer kann nicht gefunden werden"
 
-#: trill-spanner-engraver.cc:80
+#: trill-spanner-engraver.cc:79
 msgid "already have a trill spanner"
 msgstr "Triller bereits aktiv"
 
+#: tuplet-engraver.cc:96
+msgid "No tuplet to end"
+msgstr "Kein Tupel zu beenden"
+
 #: vaticana-ligature-engraver.cc:388
 #, c-format
-msgid ""
-"ignored prefix (es) `%s' of this head according to restrictions of the "
-"selected ligature style"
-msgstr ""
-"Vorzeichen (es) »%s« dieses Kopfes gemäß den Einschränkungen des "
-"ausgewählten Bindungs-Stils ignoriert"
+msgid "ignored prefix (es) `%s' of this head according to restrictions of the selected ligature style"
+msgstr "Vorzeichen (es) »%s« dieses Kopfes gemäß den Einschränkungen des ausgewählten Bindungs-Stils ignoriert"
 
 #: vaticana-ligature-engraver.cc:714
 #, c-format
@@ -1806,58 +1818,56 @@ msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
 msgstr "Vaticana_ligature: nichts zusammengefügt (delta_pitch == 0)"
 
 #. fixme: be more verbose.
-#: volta-engraver.cc:144
+#: volta-engraver.cc:143
 msgid "cannot end volta spanner"
-msgstr "Anfang der Textklammer kann nicht gefunden werden"
+msgstr "Volta-Klammer kann nicht beendet werden"
 
-#: volta-engraver.cc:154
+#: volta-engraver.cc:153
 msgid "already have a volta spanner, ending that one prematurely"
 msgstr "Wiederholungskasten bereits vorhanden, wird vorzeitig beendet"
 
-#: volta-engraver.cc:158
+#: volta-engraver.cc:157
 msgid "also already have an ended spanner"
 msgstr "endende Textklammer auch bereits vorhanden"
 
-#: volta-engraver.cc:159
+#: volta-engraver.cc:158
 msgid "giving up"
 msgstr "aufgeben"
 
-#: parser.yy:702
+#: parser.yy:704
 msgid "\\paper cannot be used in \\score, use \\layout instead"
-msgstr ""
-"\\paper kann nicht in \\source verwendet werden; stattdessen \\layout "
-"verwenden"
+msgstr "\\paper kann nicht in \\source verwendet werden; stattdessen \\layout verwenden"
 
-#: parser.yy:726
+#: parser.yy:728
 msgid "need \\paper for paper block"
 msgstr "Für Papier-Block wird \\paper benötigt"
 
-#: parser.yy:1172
+#: parser.yy:1187
 msgid "Grob name should be alphanumeric"
 msgstr "Grob-Name sollte alphanumerisch sein"
 
-#: parser.yy:1475
+#: parser.yy:1485
 msgid "second argument must be pitch list"
 msgstr "zweites Argument muss eine Tonhöhenliste sein"
 
-#: parser.yy:1502 parser.yy:1507 parser.yy:1972
+#: parser.yy:1512 parser.yy:1517 parser.yy:1982
 msgid "have to be in Lyric mode for lyrics"
 msgstr "muss in Liedtextmodus sein um Liedtext setzen zu können"
 
-#: parser.yy:1604
+#: parser.yy:1614
 msgid "expecting string as script definition"
 msgstr "Zeichenkette als Skriptdefinition erwartet"
 
-#: parser.yy:1759 parser.yy:1809
+#: parser.yy:1769 parser.yy:1819
 #, c-format
 msgid "not a duration: %d"
 msgstr "keine gültige Dauer: %d"
 
-#: parser.yy:1926
+#: parser.yy:1936
 msgid "have to be in Note mode for notes"
 msgstr "Muss im Notenmodus sein für Noten"
 
-#: parser.yy:1987
+#: parser.yy:1997
 msgid "have to be in Chord mode for chords"
 msgstr "Muss im Akkordmodus sein für Akkorde"
 
@@ -1883,9 +1893,8 @@ msgid "quoted string expected after \\sourcefilename"
 msgstr "zitierte Zeichenkette hinter \\sourcefilename erwartet"
 
 #: lexer.ll:260
-#, fuzzy
 msgid "integer expected after \\sourcefileline"
-msgstr "zitierte Zeichenkette hinter \\sourcefilename erwartet"
+msgstr "Ganzzahl hinter \\sourcefilename erwartet"
 
 #: lexer.ll:273
 msgid "EOF found inside a comment"
@@ -1907,60 +1916,57 @@ msgstr "schließendes Anführungszeichen fehlt"
 
 #: lexer.ll:466
 msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr ""
-"Klammer am Ende von Liedtext gefunden. Haben Sie ein Leerzeichen vergessen?"
+msgstr "Klammer am Ende von Liedtext gefunden. Haben Sie ein Leerzeichen vergessen?"
 
 #: lexer.ll:559
 msgid "Brace found at end of markup.  Did you forget a space?"
-msgstr ""
-"Klammer am Ende des Auszugs gefunden. Haben Sie ein Leerzeichen vergessen?"
+msgstr "Klammer am Ende des Auszugs gefunden. Haben Sie ein Leerzeichen vergessen?"
 
-#: lexer.ll:659
+#: lexer.ll:663
 #, c-format
 msgid "invalid character: `%c'"
 msgstr "Ungültiges Zeichen: »%c«"
 
-#: lexer.ll:774 lexer.ll:775
+#: lexer.ll:778
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "Ungültige Fluchtsequenz: »\\%s«"
 
-#: lexer.ll:880 lexer.ll:881
+#: lexer.ll:884
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
-msgstr ""
+msgstr "Datei zu alt: %s (älteste unterstützte: %s)"
 
-#: lexer.ll:881 lexer.ll:882
-#, fuzzy
+#: lexer.ll:885
 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:887 lexer.ll:888
+#: lexer.ll:891
 #, c-format
 msgid "program too old: %s (file requires: %s)"
-msgstr ""
+msgstr "Programm zu alt: %s (Datei erfordert: %s)"
 
-#: backend-library.scm:19 lily.scm:599 ps-to-png.scm:82
+#: backend-library.scm:19 lily.scm:752 ps-to-png.scm:58
 #, scheme-format
 msgid "Invoking `~a'..."
 msgstr "»~s« wird aufgerufen..."
 
-#: backend-library.scm:24
+#: backend-library.scm:28
 #, scheme-format
 msgid "`~a' failed (~a)"
 msgstr "»~a« gescheitert (~a)"
 
-#: backend-library.scm:95 framework-tex.scm:343 framework-tex.scm:368
+#: backend-library.scm:115 framework-tex.scm:343 framework-tex.scm:368
 #, scheme-format
 msgid "Converting to `~a'..."
 msgstr "Konvertierung nach »~a«..."
 
-#: backend-library.scm:108
+#: backend-library.scm:128
 #, scheme-format
 msgid "Converting to ~a..."
 msgstr "Konvertierung nach ~a..."
 
-#: backend-library.scm:145
+#: backend-library.scm:166
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "Kopfzeile »~a« wird nach »~a« geschrieben"
@@ -1974,39 +1980,39 @@ msgstr "Symbol ~S redefiniert"
 #: define-event-classes.scm:119
 #, scheme-format
 msgid "event class ~A seems to be unused"
-msgstr ""
+msgstr "Ereignisklasse ~A scheint ungenutzt zu sein"
 
 #. should be programming-error
 #: define-event-classes.scm:125
 #, scheme-format
 msgid "translator listens to nonexisting event class ~A"
-msgstr ""
+msgstr "Übersetzer hört auf fehlende Ereignisklasse ~A"
 
-#: define-markup-commands.scm:255
+#: define-markup-commands.scm:273
 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:1297
+#: define-markup-commands.scm:1315
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "keine gültige Dauer: ~a"
 
-#: define-music-types.scm:751
+#: define-music-types.scm:743
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "Symbol erwartet: ~S"
 
-#: define-music-types.scm:754
+#: define-music-types.scm:746
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "Musikobjekt kann nicht gefunden werden: ~S"
 
-#: define-music-types.scm:774
+#: define-music-types.scm:766
 #, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "unbekannter Wiederholungstyp »~S«"
 
-#: define-music-types.scm:775
+#: define-music-types.scm:767
 msgid "See music-types.scm for supported repeats"
 msgstr "Siehe music-types.scm für unterstützte Wiederholungen"
 
@@ -2040,65 +2046,82 @@ msgstr "~S wird geschrieben..."
 msgid "cannot find description for property ~S (~S)"
 msgstr "Beschreibung für Eigenschaft ~S (~S) kann nicht gefunden werden"
 
-#: framework-eps.scm:91 framework-eps.scm:92
+#: framework-eps.scm:89
 #, scheme-format
 msgid "Writing ~a..."
 msgstr "~a wird geschrieben..."
 
-#: framework-ps.scm:279
+#: framework-ps.scm:281
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr "~S=~S kann nicht eingebettet werden"
 
-#: framework-ps.scm:332
+#: framework-ps.scm:334
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr "Eine zu ~a passende Datei kann nicht aus ~a gewonnen werden"
 
-#: framework-ps.scm:349
-#, fuzzy, scheme-format
+#: framework-ps.scm:351
+#, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr "Unbekannte Einbettung ~S=~S"
 
-#: framework-ps.scm:380
-#, fuzzy, scheme-format
+#: framework-ps.scm:382
+#, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr "Unbekannte Schriftsatzeinbettung ~s ~s ~s"
 
-#: framework-ps.scm:729
+#: framework-ps.scm:731
 #, scheme-format
 msgid "cannot convert <stdout> to ~S"
 msgstr "<stdout> kann nicht in ~S konvertiert werden"
 
-#: framework-ps.scm:748 framework-ps.scm:751
+#: framework-ps.scm:750 framework-ps.scm:753
 #, scheme-format
 msgid "cannot generate ~S using the postscript back-end"
 msgstr "~S kann nicht mit PostScript-Backend erzeugt werden"
 
-#: framework-ps.scm:758
-#, fuzzy
+#: framework-ps.scm:760
 msgid ""
 "\n"
-"The PostScript backend does not support the 'classic'\n"
-"framework. Use the EPS backend instead,\n"
+"The PostScript backend does not support the system-by-system \n"
+"output. For that, use the EPS backend instead,\n"
 "\n"
 "  lilypond -b eps <file>\n"
 "\n"
-"or remove the lilypond-book specific settings from the input.\n"
+"If have cut & pasted a lilypond fragment from a webpage, be sure\n"
+"to only remove anything before\n"
+"\n"
+"  %% ****************************************************************\n"
+"  %% Start cut-&-pastable-section\n"
+"  %% ****************************************************************\n"
+"\n"
 msgstr ""
-"nDas PostScript-Backend unterstützt nicht das 'classic'\n"
-"Framework. Stattdessen das EPS-Backend verwenden:\n"
 "\n"
-"  lilypond -b eps <file>\n"
+"Das PostScript-Backend unterstützt keine System-weise Ausgabe. Dafür sollte\n"
+"das EPS-Backend verwendet werden,\n"
+"\n"
+"  lilypond -b eps <Datei>\n"
+"\n"
+"Beim Kopieren von Lilypond-Fragmenten von Webseiten sollte nur alles vor\n"
+"\n"
+"  %% ****************************************************************\n"
+"  %% Start cut-&-pastable-section\n"
+"  %% ****************************************************************\n"
+"\n"
+"entfernt werden\n"
 "\n"
-"oder die Lilypond-Buch-spezifischen Einstellungen aus der Eingabe "
-"entfernen.\n"
 
 #: framework-tex.scm:360
 #, scheme-format
 msgid "TeX file name must not contain whitespace: `~a'"
 msgstr "TeX-Dateiname darf keine Leerzeichen enthalten: »~a«"
 
+#: graphviz.scm:53
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Graph ~a wird geschrieben..."
+
 #: layout-beam.scm:29
 #, scheme-format
 msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
@@ -2109,98 +2132,112 @@ msgstr "Fehler bei Balkenzuschnitt. (~S,~S) erwartet, ~S gefunden."
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
 msgstr "Fehler bei Balkenzuschnitt. ~S 0 erwartet, ~S gefunden."
 
-#: layout-page-layout.scm:357
+#: layout-page-layout.scm:115
+msgid "Can't fit systems on page -- ignoring between-system-padding"
+msgstr "Systeme passen nicht auf Seite -- Zwischen-System-Abstand wird ignoriert"
+
+#: layout-page-layout.scm:449
 msgid "Calculating page breaks..."
 msgstr "Zeilenumbrüche werden berechnet..."
 
-#: lily-library.scm:593
+#: lily-library.scm:545
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "unbekannte Einheit: ~S"
 
-#: lily-library.scm:626
-#, fuzzy, scheme-format
+#: lily-library.scm:579
+#, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
-msgstr ""
-"keine \\version-Anweisung gefunden, ~a für zukünftige Kompatibilität "
-"hinzufügen"
+msgstr "keine \\version-Anweisung gefunden, ~a für zukünftige Kompatibilität hinzufügen"
 
-#: lily-library.scm:633
+#: lily-library.scm:587
 msgid "old relative compatibility not used"
 msgstr "alte relative Kompatibilität nicht verwendet"
 
-#: lily.scm:144
-#, fuzzy, scheme-format
+#: lily.scm:173
+#, scheme-format
 msgid "cannot find: ~A"
-msgstr "»%s« kann nicht gefunden werden"
+msgstr "~A kann nicht gefunden werden"
 
-#: lily.scm:209
+#: lily.scm:238
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr "falscher Typ für Argument ~a; ~a erwartet, ~s gefunden"
 
-#: lily.scm:525 lily.scm:589
+#: lily.scm:619
+#, scheme-format
+msgid "job ~a terminated with signal: ~a"
+msgstr "Auftrag ~a mit Signal ~a beendet"
+
+#: lily.scm:622
+#, scheme-format
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"Logdatei ~a (Ende ~a):\n"
+"~a"
+
+#: lily.scm:649 lily.scm:742
 #, scheme-format
 msgid "failed files: ~S"
 msgstr "gescheiterte Dateien: ~S"
 
-#: lily.scm:579
+#: lily.scm:732
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr "Ausgabeumleitung nach ~a..."
 
 #: ly-syntax-constructors.scm:40
-#, fuzzy
 msgid "Music head function must return Music object"
 msgstr "Musikkopf-Funktion muss Musikobjekt zurückliefern."
 
-#: ly-syntax-constructors.scm:136
+#: ly-syntax-constructors.scm:139
 #, scheme-format
 msgid "Invalid property operation ~a"
-msgstr ""
+msgstr "Ungültige Eigenschaftsoperation ~a"
 
-#: markup.scm:123
+#: markup.scm:94
 #, scheme-format
 msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
 msgstr "Falsche Anzahl an Argumenten: ~A erwartet, ~A gefunden: ~S"
 
-#: markup.scm:129
+#: markup.scm:100
 #, scheme-format
 msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
 msgstr "Ungültiges Argument an Position ~A. ~A erwartet, ~S gefunden."
 
-#: music-functions.scm:213
-#, fuzzy
+#: music-functions.scm:228
 msgid "More alternatives than repeats.  Junking excess alternatives"
-msgstr "mehr Alternativen als Wiederholungen"
+msgstr "mehr Alternativen als Wiederholungen. Überschüssige Alternativen werden verworfen"
 
-#: music-functions.scm:232
-#, fuzzy, scheme-format
+#: music-functions.scm:250
+#, scheme-format
 msgid "expecting 2 elements for chord tremolo, found ~a"
-msgstr "2 Elemente für Akkord-Tremolo erwartet, %d gefunden"
+msgstr "2 Elemente für Akkord-Tremolo erwartet, ~a gefunden"
 
-#: music-functions.scm:538
+#: music-functions.scm:573
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "Musik erwartet: ~S"
 
 #. FIXME: uncomprehensable message
-#: music-functions.scm:589
+#: music-functions.scm:623
 #, scheme-format
 msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
 msgstr "Taktüberprüfung gescheitert. bei ~a erwartet, stattdessen bei ~a"
 
-#: music-functions.scm:748
-#, fuzzy, scheme-format
+#: music-functions.scm:773
+#, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "zitierte Musik »~S« kann nicht gefunden werden"
 
-#: music-functions.scm:942
+#: music-functions.scm:970
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "unbekannter Vorzeichenstil: ~S"
 
-#: output-ps.scm:315
+#: output-ps.scm:276
 msgid "utf-8-string encountered in PS backend"
 msgstr "UTF-8-Zeichenkette in PostScript-Backend gefunden"
 
@@ -2214,53 +2251,50 @@ msgstr "nicht definiert: ~S"
 msgid "cannot decypher Pango description: ~a"
 msgstr "Pango-Beschreibung kann nicht entschlüsselt werden: ~a"
 
-#: output-tex.scm:98
+#: output-tex.scm:97
 #, scheme-format
 msgid "cannot find ~a in ~a"
 msgstr "~a kann nicht in ~a gefunden werden"
 
-#: paper.scm:69
-msgid "Not in toplevel scope"
-msgstr "Nicht auf höchster Ebene im Gültigkeitsbereich"
+#: paper.scm:84
+msgid "set-global-staff-size: not in toplevel scope"
+msgstr "set-global-staff-size: Nicht auf höchster Ebene im Gültigkeitsbereich"
 
-#: paper.scm:117
+#: paper.scm:132
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Dies ist kein \\layout {} Objekt, ~S"
 
-#: paper.scm:129
+#: paper.scm:144
 #, scheme-format
 msgid "Unknown papersize: ~a"
-msgstr ""
+msgstr "Unbekannte Papiergröße: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:144
+#: paper.scm:159
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
-msgstr ""
-"#(set-paper-size ..) muss innerhalb von \\paper { ... } verwendet werden"
+msgstr "#(set-paper-size ..) muss innerhalb von \\paper { ... } verwendet werden"
 
-#: parser-clef.scm:126
+#: parser-clef.scm:127
 #, scheme-format
 msgid "unknown clef type `~a'"
 msgstr "unbekannter Notenschlüsseltyp »~a«"
 
-#: parser-clef.scm:127
-msgid "see scm/clef.scm for supported clefs"
-msgstr "unterstützte Notenschlüssel können in scm/clef.scm gefunden werden"
+#: parser-clef.scm:128
+#, scheme-format
+msgid "supported clefs: ~a"
+msgstr "unterstützte Notenschlüssel: ~a"
 
-#: ps-to-png.scm:88
+#: ps-to-png.scm:64
 #, scheme-format
 msgid "~a exited with status: ~S"
 msgstr "~a mit Rückgabewert ~S beendet"
 
-#: to-xml.scm:190
-#, fuzzy, scheme-format
+#: to-xml.scm:180
+#, scheme-format
 msgid "assertion failed: ~S"
-msgstr "Behauptung gescheitert"
-
-#~ msgid "silly pitch"
-#~ msgstr "sinnlose Tonhöhe"
+msgstr "Behauptung gescheitert: ~S"
 
 #~ msgid "show warranty"
 #~ msgstr "Gewährleistung anzeigen"
@@ -2271,18 +2305,15 @@ msgstr "Behauptung gescheitert"
 #~ "Example usage:\n"
 #~ "\n"
 #~ "   lilypond-book --filter=\"tr '[a-z]' '[A-Z]'\" BOOK\n"
-#~ "   lilypond-book --filter=\"convert-ly --no-version --from=2.0.0 -\" "
-#~ "BOOK\n"
+#~ "   lilypond-book --filter=\"convert-ly --no-version --from=2.0.0 -\" BOOK\n"
 #~ "   lilypond-book --process='lilypond -I include' BOOK\n"
 #~ msgstr ""
-#~ "LilyPond-Auszüge in gemischtem HTML-, LaTeX- oder texinfo-Dokument "
-#~ "verarbeiten.\n"
+#~ "LilyPond-Auszüge in gemischtem HTML-, LaTeX- oder texinfo-Dokument verarbeiten.\n"
 #~ "\n"
 #~ "Beispiel-Aufrufe:\n"
 #~ "\n"
 #~ "   lilypond-book --filter=\"tr '[a-z]' '[A-Z]'\" BUCH\n"
-#~ "   lilypond-book --filter=\"convert-ly --no-version --from=2.0.0 -\" "
-#~ "BUCH\n"
+#~ "   lilypond-book --filter=\"convert-ly --no-version --from=2.0.0 -\" BUCH\n"
 #~ "   lilypond-book --process='lilypond -I include' BUCH\n"
 
 #~ msgid "Convert MIDI to LilyPond source."
@@ -2291,10 +2322,20 @@ msgstr "Behauptung gescheitert"
 #~ msgid "example"
 #~ msgstr "Beispiel"
 
+#~ msgid "accidental `%s' not found"
+#~ msgstr "Vorzeichen `%s' nicht gefunden"
+
+#~ msgid ""
+#~ "vertical alignment called before line-breaking.\n"
+#~ "Only do cross-staff spanners with PianoStaff."
+#~ msgstr ""
+#~ "vertikale Ausrichtung vor Zeilenumbruch aufgerufen.\n"
+#~ "Nur Zeilenzusammenfassungen mit PianoStaff erzeugen."
+
 #~ msgid "loading default font"
 #~ msgstr "Standardschriftart wird geladen"
 
-#~ msgid "cannot find default font: `%s'"
+#~ msgid "can't find default font: `%s'"
 #~ msgstr "Standardschriftart kann nicht gefunden werden: »%s«"
 
 #~ msgid "no one to print a tremolos"
@@ -2312,10 +2353,11 @@ msgstr "Behauptung gescheitert"
 #~ msgid "no system number set in constrained-breaking"
 #~ msgstr "keine Systemzahl bei Bedingungsverletzung gesetzt"
 
-#~ msgid "couldnnot find line breaking that satisfies constraints"
-#~ msgstr ""
-#~ "es können keine Zeilenumbrüche gefunden werden, die die Bedingungen "
-#~ "erfüllen"
+#~ msgid "couldn't find line breaking that satisfies constraints"
+#~ msgstr "es können keine Zeilenumbrüche gefunden werden, die die Bedingungen erfüllen"
+
+#~ msgid "can't find: `%s'"
+#~ msgstr "»%s« kann nicht gefunden werden"
 
 #~ msgid "junking event: `%s'"
 #~ msgstr "Ereignis wird ignoriert: »%s«"
@@ -2323,21 +2365,45 @@ msgstr "Behauptung gescheitert"
 #~ msgid "no one to print a repeat brace"
 #~ msgstr "niemand zur Erzeugung einer Wiederholung"
 
-#~ msgid "cannot find `%s' context"
+#~ msgid "can't find `%s' context"
 #~ msgstr "Kontext »%s« kann nicht gefunden werden"
 
-#~ msgid "Optimal demerits: %f"
-#~ msgstr "Optimale Bewertung: %f"
-
 #~ msgid "no feasible line breaking found"
 #~ msgstr "Keine praktikablen Zeilenumbrüche gefunden"
 
-#~ msgid "crescendo too small"
-#~ msgstr "Crescendo zu kurz"
+#~ msgid "BACK"
+#~ msgstr "ZURÜCK"
+
+#~ msgid ""
+#~ "use backend BACK (gnome, ps,eps,\n"
+#~ "scm, svg, tex, texstr)\n"
+#~ "default: PS"
+#~ msgstr ""
+#~ "Backend BACK verwenden (gnome, ps, eps,\n"
+#~ "scm, svg, tex, texstr)\n"
+#~ "Standard: PS"
 
 #~ msgid "print this help"
 #~ msgstr "diese Hilfe ausgeben"
 
+#~ msgid "do not generate printed output"
+#~ msgstr "keine gedruckte Ausgabe erzeugen"
+
+#~ msgid "generate a preview of the first system"
+#~ msgstr "ein Bild des ersten Systems erzeugen"
+
+#~ msgid "disallow unsafe Scheme and PostScript operations"
+#~ msgstr "unsichere Scheme- und PostScript-Operationen verweigern"
+
+#~ msgid "Evaluating %s"
+#~ msgstr "%s wird ausgewertet"
+
+#~ msgid "silly pitch"
+#~ msgstr "sinnlose Tonhöhe"
+
+#~ msgid "experimental: temporarily fine tuning (of %d cents) a channel."
+#~ msgstr "Experimentell: temporäre Feinabstimmung (von %d Hundertsteln) des Kanals."
+
 #~ msgid "music for the martians."
 #~ msgstr "Musik für Marsmenschen."
 
@@ -2359,16 +2425,14 @@ msgstr "Behauptung gescheitert"
 #~ msgid "TFM header of `%s' has only %u word (s)"
 #~ msgstr "TFM Header von »%s« hat nur %u Wort(e)"
 
-#~ msgid ""
-#~ "%s: TFM file has %u parameters, which is more than the %u I can handle"
+#~ msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
 #~ msgstr "%s: TFM-Datei hat %u Parameter - mehr als die Maximalzahl %u"
 
-#~ msgid "cannot find ascii character: %d"
+#~ msgid "can't find ascii character: %d"
 #~ msgstr "folgendes ASCII-Zeichen kann nicht gefunden werden: %d"
 
 #~ msgid "no one to print a tuplet start bracket"
-#~ msgstr ""
-#~ "nichts für die Ausgabe einer öffnenden Wertaufteilungsklammer vorhanden"
+#~ msgstr "nichts für die Ausgabe einer öffnenden Wertaufteilungsklammer vorhanden"
 
 #~ msgid "unterminated trill spanner"
 #~ msgstr "unbegrenzter Triller"
@@ -2382,9 +2446,27 @@ msgstr "Behauptung gescheitert"
 #~ msgid "Incorrect lilypond version: %s (%s, %s)"
 #~ msgstr "Falsche lilypond-Version: %s (%s, %s)"
 
-#~ msgid "cannot find signature for music function"
+#~ msgid "can't find signature for music function"
 #~ msgstr "Signatur für Musikfunktion kann nicht gefunden werden"
 
+#~ msgid ""
+#~ "nThe PostScript backend does not support the 'classic'\n"
+#~ "framework. Use the EPS backend instead,\n"
+#~ "\n"
+#~ "  lilypond -b eps <file>\n"
+#~ "\n"
+#~ "or remove the lilypond-book specific settings from the input.\n"
+#~ msgstr ""
+#~ "nDas PostScript-Backend unterstützt nicht das 'classic'\n"
+#~ "Framework. Stattdessen das EPS-Backend verwenden:\n"
+#~ "\n"
+#~ "  lilypond -b eps <file>\n"
+#~ "\n"
+#~ "oder die Lilypond-Buch-spezifischen Einstellungen aus der Eingabe entfernen.\n"
+
+#~ msgid "see scm/clef.scm for supported clefs"
+#~ msgstr "unterstützte Notenschlüssel können in scm/clef.scm gefunden werden"
+
 #~ msgid "lilylib module"
 #~ msgstr "Modul lilylib"
 
@@ -2408,25 +2490,19 @@ msgstr "Behauptung gescheitert"
 
 #~ msgid ""
 #~ "  -e, --edit             edit in place\n"
-#~ "  -f, --from=VERSION     start from VERSION [default: \\version found in "
-#~ "file]\n"
+#~ "  -f, --from=VERSION     start from VERSION [default: \\version found in file]\n"
 #~ "  -h, --help             print this help\n"
 #~ "  -n, --no-version       do not add \\version command if missing\n"
-#~ "  -s, --show-rules       print rules [default: --from=0, --"
-#~ "to=@TOPLEVEL_VERSION@]\n"
-#~ "  -t, --to=VERSION       convert to VERSION [default: "
-#~ "@TOPLEVEL_VERSION@]\n"
+#~ "  -s, --show-rules       print rules [default: --from=0, --to=@TOPLEVEL_VERSION@]\n"
+#~ "  -t, --to=VERSION       convert to VERSION [default: @TOPLEVEL_VERSION@]\n"
 #~ "  -v, --version          print program version"
 #~ msgstr ""
 #~ "  -e, --edit             auf der Stelle ändern\n"
-#~ "  -f, --from=VERSION     von VERSION starten [Standard: in Datei "
-#~ "gefundene \\version]\n"
+#~ "  -f, --from=VERSION     von VERSION starten [Standard: in Datei gefundene \\version]\n"
 #~ "  -h, --help             diese Hilfe ausgeben\n"
 #~ "  -n, --no-version       Befehl \\version nicht verwenden, wenn er fehlt\n"
-#~ "  -s, --show-rules       Regeln ausgeben [Standard: --from=0, --"
-#~ "to=@TOPLEVEL_VERSION@]\n"
-#~ "  -t, --to=VERSION       in VERSION umwandeln [Standard: "
-#~ "@TOPLEVEL_VERSION@]\n"
+#~ "  -s, --show-rules       Regeln ausgeben [Standard: --from=0, --to=@TOPLEVEL_VERSION@]\n"
+#~ "  -t, --to=VERSION       in VERSION umwandeln [Standard: @TOPLEVEL_VERSION@]\n"
 #~ "  -v, --version          Programmversion ausgeben"
 
 #~ msgid "%s: skipping: `%s'"
@@ -2483,7 +2559,7 @@ msgstr "Behauptung gescheitert"
 #~ msgid "Wrote `%s'"
 #~ msgstr "`%s' geschrieben"
 
-#~ msgid "cannot dlopen: %s: %s"
+#~ msgid "can't dlopen: %s: %s"
 #~ msgstr "dlopen erfolglos: %s: %s"
 
 #~ msgid "install package: %s or %s"
@@ -2505,17 +2581,13 @@ msgstr "Behauptung gescheitert"
 #~ msgstr "Passt nicht: `%s'"
 
 #~ msgid "Rebuild all .afm files, and remove all .pk and .tfm files."
-#~ msgstr ""
-#~ "Bauen Sie alle .afm-Dateien neu, und löschen Sie alle .pk- und .tfm-"
-#~ "Dateien."
+#~ msgstr "Bauen Sie alle .afm-Dateien neu, und löschen Sie alle .pk- und .tfm-Dateien."
 
 #~ msgid "Rerun with -V to show font paths."
 #~ msgstr "Starten Sie erneut mit -V, um Suchpfade für Schriftarten anzuzeigen"
 
 #~ msgid "A script for removing font-files is delivered with the source-code:"
-#~ msgstr ""
-#~ "Ein Skript zum Entfernen von Schriftartdateien wird mit dem Quellcode "
-#~ "ausgeliefert:"
+#~ msgstr "Ein Skript zum Entfernen von Schriftartdateien wird mit dem Quellcode ausgeliefert:"
 
 #~ msgid "beam has less than two visible stems"
 #~ msgstr "Balken hat weniger als zwei sichtbare Notenhälse"
@@ -2536,12 +2608,11 @@ msgstr "Behauptung gescheitert"
 #~ msgid "run in safe mode"
 #~ msgstr "im sicheren Modus laufen lassen"
 
-#~ msgid "cannot handle a percent repeat of length: %s"
+#~ msgid "can't handle a percent repeat of length: %s"
 #~ msgstr "Prozentwiederholung der Länge %s kann nicht behandelt werden"
 
 #~ msgid "rest direction not set.  Cannot resolve collision."
-#~ msgstr ""
-#~ "Pausenrichtung nicht gesetzt. Kollision kann nicht aufgelöst werden."
+#~ msgstr "Pausenrichtung nicht gesetzt. Kollision kann nicht aufgelöst werden."
 
 #~ msgid "lilypond -e EXPR means:"
 #~ msgstr "lilypond -e AUSD bedeutet:"
@@ -2549,16 +2620,11 @@ msgstr "Behauptung gescheitert"
 #~ msgid "  Evalute the Scheme EXPR before parsing any .ly files."
 #~ msgstr "  Das Schema AUSD vor der Analyse aller .ly-Dateien auswerten"
 
-#~ msgid ""
-#~ "  Multiple -e options may be given, they will be evaluated sequentially."
-#~ msgstr ""
-#~ "  Mehrere -e Optionen dürfen angegeben werden, sie werden sequentiell "
-#~ "ausgewertet"
+#~ msgid "  Multiple -e options may be given, they will be evaluated sequentially."
+#~ msgstr "  Mehrere -e Optionen dürfen angegeben werden, sie werden sequentiell ausgewertet"
 
-#~ msgid ""
-#~ "  The function ly:set-option allows for access to some internal variables."
-#~ msgstr ""
-#~ "  Die Funktion ly:set-option erlaubt Zugriff auf einige interne Variablen."
+#~ msgid "  The function ly:set-option allows for access to some internal variables."
+#~ msgstr "  Die Funktion ly:set-option erlaubt Zugriff auf einige interne Variablen."
 
 #~ msgid "Usage: lilypond -e \"(ly:set-option SYMBOL VAL)\""
 #~ msgstr "Aufruf: lilypond -e \"(ly:set-option SYMBOL WERT)\""
@@ -2644,7 +2710,7 @@ msgstr "Behauptung gescheitert"
 #~ msgid "Could not find bounding box of `~a'"
 #~ msgstr "Begrenzungskasten von »~a« konnte nicht gefunden werden"
 
-#~ msgid "cannot find CFF/PFA/PFB font ~S=~S"
+#~ msgid "can't find CFF/PFA/PFB font ~S=~S"
 #~ msgstr "CFF/PFA/PFB-Schriftart ~S=~S kann nicht gefunden werden"
 
 #~ msgid "unknown bar glyph: `~S'"
@@ -2677,7 +2743,7 @@ msgstr "Behauptung gescheitert"
 #~ msgid "keep all output, output to directory %s.dir"
 #~ msgstr "Alle Ausgaben aufbewahren, ins Verzeichnis %s.dir ausgeben"
 
-#~ msgid "do not run LilyPond"
+#~ msgid "don't run LilyPond"
 #~ msgstr "LilyPond nicht aufrufen"
 
 #~ msgid "produce MIDI output only"
@@ -2739,14 +2805,10 @@ msgstr "Behauptung gescheitert"
 #~ msgstr "Keine Dateien auf der Kommandozeile angegeben"
 
 #~ msgid "Running LilyPond failed. Rerun with --verbose for a trace."
-#~ msgstr ""
-#~ "LilyPond-Aufruf gescheitert. Versuchen Sie es erneut mit --verbose für "
-#~ "ein Protokoll (Trace)."
+#~ msgstr "LilyPond-Aufruf gescheitert. Versuchen Sie es erneut mit --verbose für ein Protokoll (Trace)."
 
 #~ msgid "Failed to make PS file. Rerun with --verbose for a trace."
-#~ msgstr ""
-#~ "Erzeugung der PS-Datei gescheitert. Versuchen Sie es erneut mit --verbose "
-#~ "für ein Protokoll."
+#~ msgstr "Erzeugung der PS-Datei gescheitert. Versuchen Sie es erneut mit --verbose für ein Protokoll."
 
 #~ msgid "%s output to <stdout>..."
 #~ msgstr "Ausgabe von %s nach <stdout>..."
@@ -2754,13 +2816,13 @@ msgstr "Behauptung gescheitert"
 #~ msgid "%s output to %s..."
 #~ msgstr "Ausgabe von %s nach %s..."
 
-#~ msgid "cannot find file: `%s.%s'"
+#~ msgid "can't find file: `%s.%s'"
 #~ msgstr "Kann Datei nicht finden: `%s.%s'"
 
 #~ msgid "Accidental rule must be pair or context-name; Found %s"
 #~ msgstr "Vorzeichensatz paarweise oder mit Kontextname erwartet; %s gefunden"
 
-#~ msgid "Cannot switch translators, I'm there already"
+#~ msgid "Can't switch translators, I'm there already"
 #~ msgstr "Kann Übersetzer nicht ändern, ist bereits geschehen"
 
 #~ msgid "I'm one myself"
@@ -2820,7 +2882,7 @@ msgstr "Behauptung gescheitert"
 #~ msgid "Huh?  Got %d, expected %d characters"
 #~ msgstr "Hä? %d Zeichen erhalten, %d erwartet"
 
-#~ msgid "Donnot you want polyphonic voices instead?"
+#~ msgid "Don't you want polyphonic voices instead?"
 #~ msgstr "Wollen Sie nicht stattdessen Mehrstimmigkeit?"
 
 #~ msgid "No volta spanner to end"
@@ -2860,9 +2922,7 @@ msgstr "Behauptung gescheitert"
 #~ msgstr "Schreibe HTML-Menü `%s'..."
 
 #~ msgid "Running LaTeX failed. Rerun with --verbose for a trace."
-#~ msgstr ""
-#~ "LaTeX-Aufruf gescheitert. Versuchen Sie es erneut mit --verbose für ein "
-#~ "Protokoll."
+#~ msgstr "LaTeX-Aufruf gescheitert. Versuchen Sie es erneut mit --verbose für ein Protokoll."
 
 #~ msgid "DIM"
 #~ msgstr "GROE"
@@ -2879,11 +2939,8 @@ msgstr "Behauptung gescheitert"
 #~ msgid "pass OPT quoted to the lilypond command line"
 #~ msgstr "OPT \"zitiert\" an die LilyPond-Kommandozeile übergeben"
 
-#~ msgid ""
-#~ "force fontsize for all inline lilypond. DIM is assumed to be in points"
-#~ msgstr ""
-#~ "Schriftgröße für eingebettetes LilyPond erzwingen. Einheit für GROE: "
-#~ "Punkte"
+#~ msgid "force fontsize for all inline lilypond. DIM is assumed to be in points"
+#~ msgstr "Schriftgröße für eingebettetes LilyPond erzwingen. Einheit für GROE: Punkte"
 
 #~ msgid "deprecated, use --force-music-fontsize"
 #~ msgstr "veraltet, verwenden Sie --force-music-fontsize"
@@ -2900,10 +2957,10 @@ msgstr "Behauptung gescheitert"
 #~ msgid "prepend PREF before each -M dependency"
 #~ msgstr "stelle PRÄF den -M Abhängigkeiten voran"
 
-#~ msgid "do not run lilypond"
+#~ msgid "don't run lilypond"
 #~ msgstr "LilyPond nicht aufrufen"
 
-#~ msgid "do not generate pictures"
+#~ msgid "don't generate pictures"
 #~ msgstr "keine Bilder generieren"
 
 #~ msgid "strip all lilypond blocks from output"
@@ -2915,16 +2972,11 @@ msgstr "Behauptung gescheitert"
 #~ msgid "where to place generated files"
 #~ msgstr "Ziel der generierten Dateien"
 
-#~ msgid ""
-#~ "round filled box horizontal extent smaller than blot; decreasing blot"
-#~ msgstr ""
-#~ "Breite des abgerundeten Kastens kleiner als Kreisdurchmesser; verkleinere "
-#~ "Kreis"
+#~ msgid "round filled box horizontal extent smaller than blot; decreasing blot"
+#~ msgstr "Breite des abgerundeten Kastens kleiner als Kreisdurchmesser; verkleinere Kreis"
 
 #~ msgid "round filled box vertical extent smaller than blot; decreasing blot"
-#~ msgstr ""
-#~ "Höhe des abgerundeten Kastens kleiner als Kreisdurchmesser; verkleinere "
-#~ "Kreis"
+#~ msgstr "Höhe des abgerundeten Kastens kleiner als Kreisdurchmesser; verkleinere Kreis"
 
 #~ msgid "use output format EXT"
 #~ msgstr "Ausgabeformat EXT benutzen"
@@ -2935,7 +2987,7 @@ msgstr "Behauptung gescheitert"
 #~ msgid "prepend DIR to dependencies"
 #~ msgstr "stelle VERZ den Abhängigkeiten voran"
 
-#~ msgid "cannot find start of phrasing slur"
+#~ msgid "can't find start of phrasing slur"
 #~ msgstr "kann Anfang des Phrasierungsbogens nicht finden"
 
 #~ msgid "Where SYMBOL VAL pair is any of:"
@@ -2974,29 +3026,22 @@ msgstr "Behauptung gescheitert"
 #~ msgid "Symbol is not a parent context: %s. Ignored"
 #~ msgstr "Symbol ist kein Elternkontext: %s. Ignoriert"
 
-#~ msgid "cannot find character number: %d"
+#~ msgid "can't find character number: %d"
 #~ msgstr "Zeichennummer kann nicht gefunden werden: %d"
 
-#~ msgid "cannot find character called: `%s'"
+#~ msgid "can't find character called: `%s'"
 #~ msgstr "Zeichen kann nicht gefunden werden: `%s'"
 
 #~ msgid "Beam has less than two stems. Removing beam."
 #~ msgstr "Balken hat weniger als zwei Notenhälse. Notenhals wird entfernt."
 
-#~ msgid ""
-#~ "Not sure that we can find a nice beam slope (no viable initial "
-#~ "configuration found)."
-#~ msgstr ""
-#~ "Es kann wahrscheinlich keine optimale Balkenneigung ermittelt werden "
-#~ "(keine funktionsfähige Anfangskonfiguration gefunden)"
+#~ msgid "Not sure that we can find a nice beam slope (no viable initial configuration found)."
+#~ msgstr "Es kann wahrscheinlich keine optimale Balkenneigung ermittelt werden (keine funktionsfähige Anfangskonfiguration gefunden)"
 
-#~ msgid ""
-#~ "Nothing to connect extender to on the left.  Ignoring extender event."
-#~ msgstr ""
-#~ "Nichts vorhanden, um die Erweiterung nach links zu verbinden. "
-#~ "Erweiterungsanforderung wird ignoriert."
+#~ msgid "Nothing to connect extender to on the left.  Ignoring extender event."
+#~ msgstr "Nichts vorhanden, um die Erweiterung nach links zu verbinden. Erweiterungsanforderung wird ignoriert."
 
-#~ msgid "couldnnot find any font satisfying "
+#~ msgid "couldn't find any font satisfying "
 #~ msgstr "konnte keine passende Schriftart finden für "
 
 #~ msgid ""
@@ -3007,9 +3052,7 @@ msgstr "Behauptung gescheitert"
 #~ "Grob %s endet, bevor dies erwartet wurde."
 
 #~ msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-#~ msgstr ""
-#~ "Nichts vorhanden, um den Bindestrich nach links zu verbinden. "
-#~ "Bindestrichanforderung wird ignoriert."
+#~ msgstr "Nichts vorhanden, um den Bindestrich nach links zu verbinden. Bindestrichanforderung wird ignoriert."
 
 #~ msgid "Score contains errors; will not process it"
 #~ msgstr "Noten enthalten Fehler; keine weitere Verarbeitung"
@@ -3042,8 +3085,7 @@ msgstr "Behauptung gescheitert"
 #~ msgstr "Mensural_ligature: delta-pitch undefiniert bei flexa %d; nehme 0 an"
 
 #~ msgid "Mensural_ligature:flexa-width undefined on flexa %d; assuming 2.0"
-#~ msgstr ""
-#~ "Mensural_ligature: flexa-width undefiniert bei flexa %d; nehme 2.0 an"
+#~ msgstr "Mensural_ligature: flexa-width undefiniert bei flexa %d; nehme 2.0 an"
 
 #~ msgid "silly duration"
 #~ msgstr "sinnlose Dauer"
@@ -3070,8 +3112,7 @@ msgstr "Behauptung gescheitert"
 #~ msgstr "Staff_symbol: Einrückung reicht über das Zeilenende hinaus"
 
 #~ msgid "Error syncing file (disk full?)"
-#~ msgstr ""
-#~ "Datei konnte nicht synchronisiert (geschrieben) werden. (Platte voll?)"
+#~ msgstr "Datei konnte nicht synchronisiert (geschrieben) werden. (Platte voll?)"
 
 #~ msgid "No ties were created!"
 #~ msgstr "Es wurden keine Bindebögen erzeugt!"
@@ -3086,8 +3127,7 @@ msgstr "Behauptung gescheitert"
 #~ msgstr "Vaticana_ligature:delta-pitch -> Kombination wird ignoriert"
 
 #~ msgid "First argument must be a procedure taking one argument"
-#~ msgstr ""
-#~ "Das erste Argument muss eine Prozedur sein, welche ein Argument erwartet"
+#~ msgstr "Das erste Argument muss eine Prozedur sein, welche ein Argument erwartet"
 
 #~ msgid "Expecting musical-pitch value"
 #~ msgstr "Erwarte musikalischen Tonhöhenwert"
@@ -3176,5 +3216,5 @@ msgstr "Behauptung gescheitert"
 #~ msgid "Text_spanner too small"
 #~ msgstr "Textklammer zu klein"
 
-#~ msgid "Cannot specify direction for this request"
+#~ msgid "Can't specify direction for this request"
 #~ msgstr "Es kann keine Richtung für diese Anforderung angegeben werden"
index 2df5913accf0d072761995820353bc41245e4eca..e263d3d29e0a5908591f199a3eaa3e515afe0dd1 100644 (file)
@@ -197,7 +197,7 @@ bind def
        stroke
 } bind def
 
-/draw_dashed_line % dx dy thickness dashpattern draw_dashed_line
+/draw_dashed_line % dx dy thickness dashpattern offset draw_dashed_line
 {
        1 setlinecap
        1 setlinejoin
index 147813ef195087359bb1112e4c27e3e8f87c4a9e..54db434b49d8e86682f69e5eb702593240502adb 100644 (file)
@@ -2933,7 +2933,9 @@ def conv (str):
                   sub_acc_name, str) 
     str = re.sub (r"(KeySignature|Accidental[A-Za-z]*)\s*#'style\s*=\s*#'([a-z]+)",
                   r"\1 #'glyph-name-alist = #alteration-\2-glyph-name-alist", str)
-            
+    ## FIXME: standard vs default, alteration-FOO vs FOO-alteration
+    str = str.replace ('alteration-default-glyph-name-alist',
+                       'standard-alteration-glyph-name-alist')
     return str
 
 conversions.append (((2, 11, 6), conv, """Rename accidental glyphs, use glyph-name-alist."""))
index 156c9b7c8da95e21516f0775685ccff32f0fa242..43722345932a551150674a65027ae6cc266dcd59 100644 (file)
@@ -3,7 +3,7 @@
 # 
 # source file of the GNU LilyPond music typesetter
 #
-# (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+# (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 #                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 import __main__
index 69ac12848cea0a9f2b9eb060e722fe79dd762ee1..d9febf7aa3c0173765228b1e27b032b682bf561c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 2001--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 2001--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
             Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
index e7b3870425cabd4344322035742174c9b533c6d5..b543dbc2e6056d5267406d485c13137d4dc25d15 100644 (file)
@@ -498,7 +498,78 @@ class TieEvent(Event):
     def ly_expression (self):
         return '~'
 
+
+class HairpinEvent (Event):
+    def __init__ (self, type):
+        self.type = type
+    def hairpin_to_ly (self):
+        val = ''
+        tp = { 0: '\!', 1: '\<', -1: '\>' }.get (self.type)
+        if tp:
+            val += tp
+        return val
+    
+    def ly_expression (self):
+        return self.hairpin_to_ly ()
     
+    def print_ly (self, printer):
+        val = self.hairpin_to_ly ()
+        if val:
+            printer.dump (val)
+
+
+
+class DynamicsEvent (Event):
+    def __init__ (self):
+        self.type = None
+        self.available_commands = [ "ppppp", "pppp", "ppp", "pp", "p", 
+                                    "mp", "mf", 
+                                    "f", "ff", "fff", "ffff", 
+                                    "fp", "sf", "sff", "sp", "spp", "sfz", "rfz" ];
+    def ly_expression (self):
+        if self.type == None:
+            return;
+        elif self.type in self.available_commands:
+            return '\%s' % self.type
+        else:
+            return '\markup{ \dynamic %s }' % self.type
+        
+    def print_ly (self, printer):
+        if self.type == None:
+            return
+        elif self.type in self.available_commands:
+            printer.dump ("\\%s" % self.type)
+        else:
+            printer.dump ("\\markup{ \\dynamic %s }" % self.type)
+
+
+class ArticulationEvent (Event):
+    def __init__ (self):
+        self.type = None
+        self.force_direction = None
+
+    def direction_mod (self):
+        dirstr = { 1: '^', -1: '_', 0: '-' }.get (self.force_direction)
+        if dirstr:
+            return dirstr
+        else:
+            return ''
+
+    def ly_expression (self):
+        return '%s\\%s' % (self.direction_mod (), self.type)
+
+
+class TremoloEvent (Event):
+    def __init__ (self):
+        self.bars = 0;
+
+    def ly_expression (self):
+        str=''
+        if self.bars > 0:
+            str += ':%s' % (2 ** (2 + string.atoi (self.bars)))
+        return str
+
+
 class RhythmicEvent(Event):
     def __init__ (self):
         Event.__init__ (self)
index 3466473c4352a879c2d1259e46f4f3b6d90f6f4a..132ce5a752021d2798d60f0c86425873cb37b628 100644 (file)
@@ -39,10 +39,13 @@ class Xml_node:
             p = p.get_parent ()
         
     def get_typed_children (self, klass):
-       return [c for c in self._children if isinstance(c, klass)]
+        if not klass:
+            return []
+        else:
+            return [c for c in self._children if isinstance(c, klass)]
 
     def get_named_children (self, nm):
-       return self.get_typed_children (class_dict[nm])
+       return self.get_typed_children (class_dict.get (nm))
 
     def get_named_child (self, nm):
        return self.get_maybe_exist_named_child (nm)
@@ -354,14 +357,16 @@ class Part (Music_xml_node):
        for n in elements:
            voice_id = n.get_maybe_exist_typed_child (class_dict['voice'])
 
-           if not (voice_id or isinstance (n, Attributes)):
+            # TODO: If the first element of a voice is a dynamics entry,
+            #       then voice_id is not yet set! Thus it will currently be ignored
+           if not (voice_id or isinstance (n, Attributes) or isinstance (n, Direction) ):
                continue
 
            if isinstance (n, Attributes) and not start_attr:
                start_attr = n
                continue
 
-           if isinstance (n, Attributes):
+           if isinstance (n, Attributes) or isinstance (n, Direction):
                for v in voices.values ():
                    v.add_element (n)
                continue
@@ -450,6 +455,34 @@ class Staff (Music_xml_node):
 class Instrument (Music_xml_node):
     pass
 
+class Fermata (Music_xml_node):
+    pass
+class Dynamics (Music_xml_node):
+    pass
+class Articulations (Music_xml_node):
+    pass
+class Accent (Music_xml_node):
+    pass
+class Staccato (Music_xml_node):
+    pass
+class Tenuto (Music_xml_node):
+    pass
+class Tremolo (Music_xml_node):
+    pass
+class Technical (Music_xml_node):
+    pass
+class Ornaments (Music_xml_node):
+    pass
+
+
+class Direction (Music_xml_node):
+    pass
+class DirType (Music_xml_node):
+    pass
+class Wedge (Music_xml_node):
+    pass
+
+
 ## need this, not all classes are instantiated
 ## for every input file.
 class_dict = {
@@ -477,6 +510,18 @@ class_dict = {
        'type': Type,
        'part-list': Part_list,
        'staff': Staff,
+        'fermata': Fermata,
+        'articulations': Articulations,
+        'accent': Accent,
+        'staccato': Staccato,
+        'tenuto': Tenuto,
+        'tremolo': Tremolo,
+        'technical': Technical,
+        'ornaments': Ornaments,
+        'direction': Direction,
+        'direction-type': DirType,
+        'dynamics': Dynamics,
+        'wedge': Wedge
 }
 
 def name2class_name (name):
index 610cb051f413ef7984c6f3e7eefe0283fe5b9483..56d1ce7311aaa572caaef09ca2a6035db4d56b87 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2000--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;;; specify generic beam begin and end times
 
index 0f13b6f55aad0f71f50353619d297c0e1c7c8011..45b156a6c8d84a67a46ef4159f7d5f158b78a5e6 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2005--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2005--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
index 800d08bfe6b8f2578edeb7ff5c198660d628c12e..17586d1f385a1683935260b045194cf407c47a5c 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;;; Note: this file can't be used without LilyPond executable
index 275367bb39fec37fdb7663ab28ab9e9835f2b440..80a473acb177118d0cccc6b02fef78ed4c9e91f0 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-public (construct-chord-elements root duration modifications)
   " Build a chord on root using modifiers in MODIFICATIONS. NoteEvents
index c35a50cea2c2770cdbbcc3a6df5f4482e03ea58c..923cddd2cfa027d9be00302d9aeeb44e8ea37e04 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2003--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2003--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 ;;;; NOTE: this is experimental code
index b3cdb56946627a20df319b4ade4ecc6188066fc9..fb1a534342a66864f678b494c10687c74f26ea79 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2000--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
 
index 939ae7b91eebf91940af60650e9b11a96621a03a..c49443f2ef6e719a9e9cceed856fee193eba9e0d 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2000--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define (natural-chord-alteration p)
index fd840c0457356e0a9882c1cbd22dbfe4849395c6..51685c1e86308dc3632b140cd9af90f2a6143c23 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                  Jan Nieuwenhuizen <janneke@gnu.org>
 
 
@@ -279,6 +279,7 @@ containing @code{(@var{step} . @var{alter})} or @code{((@var{octave} .
 0 to@tie{}6 and @var{alter} a fraction, denoting alteration.  For
 alterations, use symbols, e.g. @code{keySignature = #`((6 . ,FLAT))}.")
 
+     (lyricMelismaAlignment ,ly:dir? "Alignment to use for a melisma syllable.")
 
      (majorSevenSymbol ,markup? "How should the major 7th be formatted
 in a chord name?")
index 46d23d949a46556acdc6e2f17540104b87dbeeca..a6dfb3a63d6725a8df66b1a18ba582e039481cfa 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 
 (ly:add-interface
  'accidental-suggestion-interface
-   "An accidental, printed as a suggestion (typically: vertically over a note)"
-   '())
+ "An accidental, printed as a suggestion (typically: vertically over a
+note)."
+ '())
 
 (ly:add-interface
  'bass-figure-interface
- "A bass figure text"
+ "A bass figure text."
  '(implicit))
 
+(ly:add-interface
+ 'bass-figure-alignment-interface
+ "Align a bass figure."
+ '())
+
 (ly:add-interface
  'bend-after-interface
  "A doit or drop."
  '(thickness delta-position))
 
-(ly:add-interface
- 'bass-figure-alignment-interface
- ""
- '())
-
 (ly:add-interface
  'dynamic-interface
  "Any kind of loudness sign"
  '())
"Any kind of loudness sign."
+ '())
 
 (ly:add-interface
  'dynamic-line-spanner-interface
  "Dynamic line spanner"
  '(avoid-slur))
"Dynamic line spanner."
+ '(avoid-slur))
 
 (ly:add-interface
  'dynamic-text-spanner-interface
  "Dynamic text spanner"
  '(text))
"Dynamic text spanner."
+ '(text))
 
 (ly:add-interface
  'finger-interface
- "A fingering instruction"
+ "A fingering instruction."
  '())
 
 (ly:add-interface
  'fret-diagram-interface
- "A fret diagram"
-
+ "A fret diagram."
  '(align-dir barre-type dot-color dot-radius finger-code fret-count
 label-dir number-type size string-count xo-font-magnification
 mute-string open-string orientation string-fret-finger-combinations
@@ -65,28 +65,17 @@ thickness))
 
 (ly:add-interface
  'key-cancellation-interface
- "A key cancellation"
- '())
-
-(ly:add-interface
- 'ligature-interface
- "A ligature"
- '())
-
-(ly:add-interface
- 'key-cancellation-interface
- "A key cancellation"
+ "A key cancellation."
  '())
 
 (ly:add-interface
  'ligature-bracket-interface
- "A bracket indicating a ligature in the original edition"
+ "A bracket indicating a ligature in the original edition."
  '(width thickness height))
 
-
 (ly:add-interface
- 'lyric-syllable-interface
- "A single piece of lyrics"
+ 'ligature-interface
+ "A ligature."
  '())
 
 (ly:add-interface
@@ -94,14 +83,19 @@ thickness))
  "Any object that is related to lyrics."
  '())
 
+(ly:add-interface
+ 'lyric-syllable-interface
+ "A single piece of lyrics."
+ '())
+
 (ly:add-interface
  'mark-interface
- "A rehearsal mark"
+ "A rehearsal mark."
  '())
 
 (ly:add-interface
  'metronome-mark-interface
- "A metronome mark"
+ "A metronome mark."
  '())
 
 (ly:add-interface
@@ -110,8 +104,8 @@ thickness))
  '(bound-padding))
 
 (ly:add-interface
-'note-name-interface
- "Note name"
+ 'note-name-interface
+ "Note names."
  '(style))
 
 (ly:add-interface
@@ -121,60 +115,48 @@ thickness))
 
 (ly:add-interface
  'parentheses-interface
- "Parentheses for other objects"
+ "Parentheses for other objects."
  '(padding stencils))
 
 (ly:add-interface
  'piano-pedal-interface
- "A piano pedal sign"
+ "A piano pedal sign."
  '())
 
 (ly:add-interface
  'piano-pedal-script-interface
- "A piano pedal sign, fixed size"
+ "A piano pedal sign, fixed size."
  '())
 
 (ly:add-interface
  'pitched-trill-interface
-   "A note head to indicate trill pitches"
-   '(accidental-grob))
-
-(ly:add-interface
- 'trill-pitch-accidental-interface
- "An accidental for trill pitch"
- '()
- )
-
-(ly:add-interface
- 'trill-spanner-interface
- "An accidental for trill pitch"
- '())
+ "A note head to indicate trill pitches."
+ '(accidental-grob))
 
 (ly:add-interface
  'rhythmic-grob-interface
- "Any object with a duration. Used to determine which grobs are
+ "Any object with a duration.  Used to determine which grobs are
 interesting enough to maintain a hara-kiri staff."
  '())
 
-
 (ly:add-interface
  'spacing-options-interface
- "Supports setting of spacing variables"
+ "Supports setting of spacing variables."
  '(spacing-increment shortest-duration-space))
 
 (ly:add-interface
  'stanza-number-interface
- "A stanza number, to be put in from of a lyrics line"
+ "A stanza number, to be put in from of a lyrics line."
  '())
 
 (ly:add-interface
  'string-number-interface
- "A string number instruction"
+ "A string number instruction."
  '())
 
 (ly:add-interface
  'stroke-finger-interface
- "A right hand finger instruction"
+ "A right hand finger instruction."
  '(digit-names))
 
 (ly:add-interface
@@ -185,18 +167,27 @@ interesting enough to maintain a hara-kiri staff."
 ;;; todo: this is not typesetting info. Move to interpretation.
 (ly:add-interface
  'tablature-interface
- "An interface for any notes set in a tablature staff"
+ "An interface for any notes set in a tablature staff."
+ '())
+
+(ly:add-interface
+ 'trill-spanner-interface
+ "A trill spanner."
+ '())
+
+(ly:add-interface
+ 'trill-pitch-accidental-interface
+ "An accidental for trill pitch."
  '())
 
 (ly:add-interface
  'unbreakable-spanner-interface
- "A spanner that should not be broken across line breaks. Override
-with @code{breakable=##t}. "
+ "A spanner that should not be broken across line breaks.  Override
+with @code{breakable=##t}."
  '(breakable))
 
 (ly:add-interface
  'vertically-spaceable-interface
- "Objects that should be kept at constant vertical distances. Typically:
+ "Objects that should be kept at constant vertical distances.  Typically:
 @internalsref{VerticalAxisGroup} objects of @internalsref{Staff} contexts."
  '())
index 10cdb8e4f2333d5b92a0fc3887a7d33235354c17..1319cf645d225343d4f39f149284d135534dbbd2 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define (define-grob-property symbol type? description)
@@ -94,7 +94,7 @@ printing of the bracket.  Setting the property to @code{if-no-beam}
 makes it print only if there is no beam associated with this tuplet
 bracket.")
      (break-align-anchor ,number? "Grobs aligned to this break-align
-grob will have their X-offsets shifted by this number. In barlines,
+grob will have their X-offsets shifted by this number.  In barlines,
 for example, this is used to position grobs relative to the (visual)
 center of the barline.")
      (break-align-anchor-alignment ,number? "Read by
@@ -103,7 +103,7 @@ an anchor to a grobs extent")
      (break-align-symbol ,symbol? "This key is used for aligning and
 spacing breakable items.")
      (break-align-symbols ,list? "A list of symbols that determine
-which break-aligned grobs to align this to. If the grob selected by
+which break-aligned grobs to align this to.  If the grob selected by
 the first symbol in the list is invisible due to break-visibility,
 we will align to the next grob (and so on).")
      (break-align-orders ,vector? "Defines the order in which
@@ -172,7 +172,7 @@ but also other numerical values are permitted.")
      (dot-count ,integer? "The number of dots.")
      (dot-radius ,number? "Radius of dots.")
      (duration-log ,integer? "The 2-log of the note head duration,
-i.e. @code{0} = whole note, @code{1} = half note, etc.")
+i.e., @code{0} = whole note, @code{1} = half note, etc.")
 
      (eccentricity ,number? "How asymmetrical to make a slur.
 Positive means move the center to the right.")
@@ -189,7 +189,8 @@ X@tie{}dimension by this much.")
      (extra-dy ,number? "Slope glissandi this much extra.")
      (extra-offset ,number-pair? "A pair representing an offset.  This
 offset is added just before outputting the symbol, so the typesetting
-engine is completely oblivious to it.")
+engine is completely oblivious to it.  The values are measured in
+@code{staff-space} units of the staff's @code{StaffSymbol}.")
      (extra-spacing-width ,number-pair? "In the horizontal spacing
 problem, we pad each item by this amount (by adding the @q{car} on the
 left side of the item and adding the @q{cdr} on the right side of the
@@ -220,7 +221,7 @@ include @code{medium}, @code{bold}, @code{bold-narrow}, etc.")
 include @code{upright}, @code{italic}, @code{caps}.")
      (font-size ,number? "The font size, compared to the @q{normal}
 size.  @code{0}@tie{}is style-sheet's normal size, @code{-1} is
-smaller, @code{+1} is bigger. Each step of@tie{}1 is approximately
+smaller, @code{+1} is bigger.  Each step of@tie{}1 is approximately
 12% larger, 6@tie{}steps are exactly a factor@tie{}2 larger.
 Fractional values are allowed.")
      (force-hshift ,number? "This specifies a manual shift for notes
@@ -330,7 +331,7 @@ collisions, even if they have a different number of dots.  This is
 normal notation for some types of polyphonic music.
 
 @code{merge-differently-dotted} only applies to opposing stem
-directions (i.e. voice 1 &@tie{}2).")
+directions (i.e., voice 1 &@tie{}2).")
      (merge-differently-headed ,boolean? "Merge note heads in
 collisions, even if they have different note heads.  The
 smaller of the two heads is rendered invisible.  This is used in
@@ -338,7 +339,7 @@ polyphonic guitar notation.  The value of this setting is used by
 @internalsref{note-collision-interface}.
 
 @code{merge-differently-headed} only applies to opposing stem
-directions (i.e. voice 1 &@tie{}2).")
+directions (i.e., voice 1 &@tie{}2).")
      (minimum-X-extent ,number-pair? "Minimum size of an object in
 X@tie{}dimension, measured in @code{staff-space} units.")
      (minimum-Y-extent ,number-pair? "See @code{minimum-X-extent}.")
@@ -467,8 +468,13 @@ prefatory items, like clef and time-signature.  The format is an alist
 of spacing tuples: @code{(@var{break-align-symbol} @var{type}
 . @var{distance})}, where @var{type} can be the symbols
 @code{minimum-space} or @code{extra-space}.")
+     (space-to-barline ,boolean? "If set, the distance between a note
+and the following non-musical column will be measured to the barline
+instead of to the beginning of the non-musical column.  If there is a
+clef change followed by a barline, for example, this means that we will
+try to space the non-musical column as though the clef is not there.")
      (spacing-increment ,number? "Add this much space for a doubled
-duration.  Typically, the width of a note head. See also
+duration.  Typically, the width of a note head.  See also
 @internalsref{spacing-spanner-interface}.")
      (springs-and-rods ,boolean? "Dummy variable for triggering
 spacing routines.")
@@ -578,185 +584,241 @@ be constructed from a whole number of squiggles.")
    `(
      ;;;;;;;;;;;;;;;;
      ;; grobs & grob arrays. (alphabetical)
-     (X-common ,ly:grob? "Common refpoint for axis group.")
+     (X-common ,ly:grob? "Common reference point for axis group.")
+
      (Y-common ,ly:grob? "See @code{X-common}.")
-     (adjacent-pure-heights ,vector? "Used by a VerticalAxisGroup to cache the Y-extents of different column ranges.")
-     (axis-group-parent-X ,ly:grob? "Containing X axis group")
-     (axis-group-parent-Y ,ly:grob? "Containing Y axis group")
-     (accidental-grobs ,list? "Alist with (NOTENAME . GROBLIST) entries")
-     (adjacent-hairpins ,ly:grob-array? "List of directly neighboring hairpins")
-     (all-elements ,ly:grob-array? "list of all grobs in this line. Its
+
+     (accidental-grob ,ly:grob? "The accidental for this note.")
+     (accidental-grobs ,list? "An alist with @code{(@var{notename} .
+@var{groblist})} entries.")
+     (adjacent-pure-heights ,vector? "Used by a @code{VerticalAxisGroup} to
+cache the @code{Y-extent}s of different column ranges.")
+     (adjacent-hairpins ,ly:grob-array? "A list of directly neighboring
+hairpins.")
+     (all-elements ,ly:grob-array? "A list of all grobs in this line.  Its
 function is to protect objects from being garbage collected.")
-     (arpeggio ,ly:grob? "pointer to arpeggio object.")
-     (beam ,ly:grob? "pointer to the beam, if applicable.")
-     (bracket ,ly:grob? "the bracket for a  number.")
-     (cross-staff ,boolean? "for a beam or a stem, true if we depend on inter-staff spacing")
-     (direction-source ,ly:grob? "in case side-relative-direction is
-set, which grob to get the direction from .")
-     (dot ,ly:grob? "reference to Dots object.")
-     (dots ,ly:grob-array? "multiple Dots objects.")
-     (figures ,ly:grob-array? "Figured bass objects for continuation line.")
-     (important-column-ranks ,vector? "Cache of columns that contain items-worth-living.")
-     (items-worth-living ,ly:grob-array? "A list of interesting items. If
-empty in a particular staff, then that staff is erased.")
+     (arpeggio ,ly:grob? "A pointer to an @code{Arpeggio} object.")
+     (axis-group-parent-X ,ly:grob? "Containing X@tie{}axis group.")
+     (axis-group-parent-Y ,ly:grob? "Containing Y@tie{}axis group.")
+
+     (bars ,ly:grob-array? "A list of bar line pointers.")
+     (beam ,ly:grob? "A pointer to the beam, if applicable.")
+     (bounded-by-me ,ly:grob-array? "A list of spanners that have this
+column as start/begin point.  Only columns that have grobs or act as
+bounds are spaced.")
+     (bracket ,ly:grob? "The bracket for a number.")
 
-     (glyph-name ,string? "a name of character within font.")
-     (left-neighbors ,ly:grob-array? " List of
-spacing-wish grobs that are close to the current column.
+     (columns ,ly:grob-array? "A list of grobs, typically containing
+@code{PaperColumn} or @code{NoteColumn} objects.")
+     (conditional-elements ,ly:grob-array? "Internal use only.")
+     (cross-staff ,boolean? "For a beam or a stem, this is true if we
+depend on inter-staff spacing.")
 
-The closest spacing-wishes determine the actual distances between the
-columns.
-")
-     (left-items ,ly:grob-array? "")
-     (pedal-text ,ly:grob? "Pointer to the text of a mixed-style piano pedal.")
-     
-     (pure-Y-common ,ly:grob? "Caches the common_refpoint_of_array of the elements grob-set")
-     (pure-relevant-items ,ly:grob-array? "A subset of elements that are relevant for finding the pure-Y-extent.")
-     (pure-relevant-spanners ,ly:grob-array? "A subset of elements that are relevant for finding the pure-Y-extent.")
-     (stem ,ly:grob? "pointer to Stem object.")
-     (tremolo-flag ,ly:grob? "The tremolo object on a stem.")
-     (tie ,ly:grob? "")
-     (staff-symbol ,ly:grob? "the staff symbol grob that we're in.")
-     (rest ,ly:grob? "the staff symbol grob that we're in.")
-     (rests ,ly:grob-array? "A list of rest objects.")
-     (rest-collision ,ly:grob? "rest collision that a rest is in.")
-     (accidental-grob ,ly:grob? "Accidental for this note.")
-     (bars ,ly:grob-array? "list of bar line pointers.")
-     (bounded-by-me ,ly:grob-array? "list of spanners that have this
-column as start/begin point. Only columns that have grobs or act as
-bounds are spaced.")
-     
-     (columns ,ly:grob-array? "list of grobs, typically containing
-paper-columns or note-column objects.")
-     (conditional-elements ,ly:grob-array? "Internal use only")
+     (direction-source ,ly:grob? "In case @code{side-relative-direction} is
+set, which grob to get the direction from.")
+     (dot ,ly:grob? "A reference to a @code{Dots} object.")
+     (dots ,ly:grob-array? "Multiple @code{Dots} objects.")
+
+     (elements ,ly:grob-array? "A list of grobs; the type is depending on
+the grob where this is set in.")
      (encompass-objects ,ly:grob-array? "Objects that a slur should avoid
 in addition to notes and stems.")
-     (elements ,ly:grob-array? "list of grobs, type depending on the Grob
-where this is set in.")
-     (grace-spacing ,ly:grob? "a run of grace notes.")
-     (heads ,ly:grob-array? "List of note heads.")
-
-     (note-columns ,pair? "list of NoteColumn grobs.")
-
-     (normal-stems ,ly:grob-array? "Array of visible stems.") 
-     (note-heads ,ly:grob-array? "List of note head grobs")
-     (note-head ,ly:grob? "A single note head")
-     (pure-Y-offset-in-progress ,boolean? "A debugging aid for catching cyclic dependencies.")
-     (right-items ,ly:grob-array? "")
-     (right-neighbors ,ly:grob-array? "see left-neighbors")
+
+     (figures ,ly:grob-array? "Figured bass objects for continuation line.")
+
+     (glyph-name ,string? "The glyph name within the font.")
+     (grace-spacing ,ly:grob? "A run of grace notes.")
+
+     (heads ,ly:grob-array? "A list of note heads.")
+
+     (important-column-ranks ,vector? "A cache of columns that contain
+@code{items-worth-living} data.")
+     (items-worth-living ,ly:grob-array? "A list of interesting items.  If
+empty in a particular staff, then that staff is erased.")
+
+     (left-items ,ly:grob-array? "DOCME")
+     (left-neighbors ,ly:grob-array? "A list of @code{spacing-wishes} grobs
+that are close to the current column.
+
+The closest @code{spacing-wishes} determine the actual distances between the
+columns.")
+
+     (normal-stems ,ly:grob-array? "An array of visible stems.")
+     (note-columns ,pair? "A list of @code{NoteColumn} grobs.")
+     (note-head ,ly:grob? "A single note head.")
+     (note-heads ,ly:grob-array? "A list of note head grobs.")
+
+     (pedal-text ,ly:grob? "A pointer to the text of a mixed-style piano
+pedal.")
+     (pure-Y-common ,ly:grob? "A cache of the
+@code{common_refpoint_of_array} of the @code{elements} grob set.")
+     (pure-Y-offset-in-progress ,boolean? "A debugging aid for catching
+cyclic dependencies.")
+     (pure-relevant-items ,ly:grob-array? "A subset of elements that are
+relevant for finding the @code{pure-Y-extent}.")
+     (pure-relevant-spanners ,ly:grob-array? "A subset of elements that are
+relevant for finding the @code{pure-Y-extent}.")
+
+     (rest ,ly:grob? "A pointer to a @code{Rest} object.")
+     (rest-collision ,ly:grob? "A rest collision that a rest is in.")
+     (rests ,ly:grob-array? "A list of rest objects.")
+     (right-items ,ly:grob-array? "DOCME")
+     (right-neighbors ,ly:grob-array? "See @code{left-neighbors}.")
+
      (separation-item ,ly:grob? "A separation item.")
-     (slur ,ly:grob? "A pointer to a slur object")
-     (spacing ,ly:grob? "the spacing spanner governing this section.")
-     (spaceable-staves ,ly:grob-array? "Objects to be spaced during page layout.")
-     (side-support-elements ,ly:grob-array? "the support, a list of grobs.")
-     (spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing objects.")
-     (stems ,ly:grob-array? "list of stem objects, corresponding to the notes that the arpeggio has to be before.")
-     (tuplets ,ly:grob-array? "list of smaller tuplet brackets")
-     (tuplet-number ,ly:grob? "the number for a bracket.")
+     (side-support-elements ,ly:grob-array? "The side support, a list of
+grobs.")
+     (slur ,ly:grob? "A pointer to a @code{Slur} object.")
+     (spaceable-staves ,ly:grob-array? "Objects to be spaced during page
+layout.")
+     (spacing ,ly:grob? "The spacing spanner governing this section.")
+     (spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing
+objects.")
+     (staff-symbol ,ly:grob? "The staff symbol grob that we are in.")
+     (stem ,ly:grob? "A pointer to a @code{Stem} object.")
+     (stems ,ly:grob-array? "A list of stem objects, corresponding to the
+notes that the arpeggio has to be before.")
+
+     (tie ,ly:grob? "A pointer to a @code{Tie} object.")
+     (tremolo-flag ,ly:grob? "The tremolo object on a stem.")
+     (tuplet-number ,ly:grob? "The number for a bracket.")
+     (tuplets ,ly:grob-array? "A list of smaller tuplet brackets.")
 
-     
-     
      ;;;;;;;;;;;;;;;;
      ;; other
-     (begin-of-line-visible ,boolean? "Used for marking ChordNames that should only show changes.")
-     (cause ,scheme? "Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.  ")
-     (circled-tip ,boolean? "Put a circle at start/end of hairpins (al/del niente)")
-     (delta-position ,number? "vertical position difference")
-     (details ,list? "alist of parameters for detailed grob behavior.
-
-more information on the allowed parameters can be found by inspecting
-lily/slur-scoring.cc, lily/beam-quanting.cc, and
-lily/tie-formatting-problem.cc.  Setting @code{debug-tie-scoring},
+     (begin-of-line-visible ,boolean? "Used for marking @code{ChordNames}
+that should only show changes.")
+
+     (cause ,scheme? "Any kind of causation objects (i.e., music, or perhaps
+translator) that was the cause for this grob.")
+     (circled-tip ,boolean? "Put a circle at start/end of hairpins (al/del
+niente).")
+
+     (delta-position ,number? "The vertical position difference.")
+     (details ,list? "Alist of parameters for detailed grob behavior.
+
+More information on the allowed parameters can be found by inspecting
+@file{lily/slur-scoring.cc}, @file{lily/beam-quanting.cc}, and
+@file{lily/tie-formatting-problem.cc}.  Setting @code{debug-tie-scoring},
 @code{debug-beam-scoring} or @code{debug-slur-scoring} also provides
-useful clues.
+useful clues.")
 
-")
+     (font ,ly:font-metric? "A cached font metric object.")
 
-     (font ,ly:font-metric? "Cached font metric object")
-     (head-width ,ly:dimension? "width of this ligature head")
+     (head-width ,ly:dimension? "The width of this ligature head.")
      
-     (ideal-distances ,list? "(@var{obj} . (@var{dist} . @var{strength})) pairs.")
-     (interfaces ,list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.")
-     (least-squares-dy ,number? 
-                      "ideal beam slope, without damping.")
+     (ideal-distances ,list? "@code{(@var{obj} . (@var{dist} .
+@var{strength}))} pairs.")
+     (interfaces ,list? "A list of symbols indicating the interfaces
+supported by this object.  It is initialized from the @code{meta} field.")
+
+     (least-squares-dy ,number? "The ideal beam slope, without damping.")
 
-     (meta ,list? "Contains meta information. It is an alist with the
+     (meta ,list? "Provide meta information.  It is an alist with the
 entries @code{name} and @code{interfaces}.")
-     (minimum-distances ,list? "list of rods, that have the format (@var{obj} . @var{dist}).")
+     (minimum-distances ,list? "A list of rods that have the format
+@code{(@var{obj} . @var{dist})}.")
      
-     (positioning-done ,boolean?
-                      "Used to signal that a positioning element
-did its job. This ensures that a positioning is only done once.")
-     (pure-Y-extent ,number-pair? "The estimated height of a system")
-
-     (quantized-positions ,number-pair? "Beam positions after quanting.")
-     (quantize-position ,boolean? "If set, a vertical alignment is aligned to be within staff spaces.")
-     (quant-score ,string? "Beam quanting score -- can be stored for
-debugging")
+     (positioning-done ,boolean? "Used to signal that a positioning element
+did its job.  This ensures that a positioning is only done once.")
+     (pure-Y-extent ,number-pair? "The estimated height of a system.")
+
+     (quant-score ,string? "The Beam quanting score -- can be stored for
+debugging.")
+     (quantize-position ,boolean? "If set, a vertical alignment is aligned
+to be within staff spaces.")
+     (quantized-positions ,number-pair? "The beam positions after
+quanting.")
      
-     (script-stencil ,pair? "Pair (@code{type} . @code{arg}), which
-acts as an index for looking up a Stencil object.")
-
-     (stem-info ,pair? "caching of stem parameters")
-     (shorten ,ly:dimension? "The amount of space that a
-stem. Internally used to distribute beam shortening over stems. ")
-     (skyline-distance ,number? "The distance between this staff and the next one, as determined by a skyline algorithm.")
-     (skyline-horizontal-padding ,number? "For determining the vertical distance between 2 staves, it is possible to have a configuration which would result in a tight interleaving of grobs from the top staff and the bottom staff. The larger this parameter is, the farther apart the staves are placed in such a configuration.")
+     (script-stencil ,pair? "A pair @code{(@var{type} . @var{arg})} which
+acts as an index for looking up a @code{Stencil} object.")
+     (shorten ,ly:dimension? "The amount of space that a stem is shortened.
+Internally used to distribute beam shortening over stems.")
+     (skyline-distance ,number? "The distance between this staff and the
+next one, as determined by a skyline algorithm.")
+     (skyline-horizontal-padding ,number? "For determining the vertical
+distance between two staves, it is possible to have a configuration which
+would result in a tight interleaving of grobs from the top staff and the
+bottom staff.  The larger this parameter is, the farther apart the staves
+are placed in such a configuration.")
+     (stem-info ,pair? "A cache of stem parameters.")
+
      (use-breve-rest ,boolean? "Use breve rests for measures longer
 than a whole rest.")
-     
 
-     
+     ;;;;;;;;;;;;;;;;
      ;; ancient notation
-     (join-right-amount ,number? "")
-     (primitive ,integer? "Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. ")
 
-     
      ;;;;;;; TODO:
-     ;; there are too many properties for ancient notation
+     ;; There are too many properties for ancient notation;
      ;; probably neume-types (a list of symbols) would also work.
 
-     ;; However, such this list would consist of a couple of dozens of
+     ;; However, such a list would consist of a couple of dozens of
      ;; entries, since head prefixes may be combined in many ways.  If
-     ;; the macros in gregorian-init.ly would directly set prefix-set,
+     ;; the macros in `gregorian-init.ly' would directly set prefix-set,
      ;; all the head prefixes could be junked; however, such macros
      ;; would be quite numerous, I guess.  --jr
 
-     (auctum ,boolean? "is this neume liquescentically augmented?")
-     (ascendens ,boolean? "is this neume of an ascending type?")
-     (add-cauda ,boolean? "does this flexa require an additional cauda on the left side?")
-     (add-join ,boolean? "is this ligature head joined with the next one by a vertical line?")
-     (cavum ,boolean? "is this neume outlined?")
-     (descendens ,boolean? "is this neume of a descendent type?")
-     (deminutum ,boolean? "is this neume deminished?")
-     (flexa-height ,ly:dimension? "height of a flexa shape in a ligature grob in staff_space.")
-     (flexa-width ,ly:dimension? "width of a flexa shape in a ligature grob in staff_space.")
-     (join-heads ,boolean? "Whether to join the note heads of an ambitus grob with a vertical line.")
-     (linea ,boolean? "attach vertical lines to this neume?")
-     (add-stem ,boolean? "is this ligature head a virga and therefore needs an additional stem on the right side?")
-     (context-info ,integer? "Within a ligature, the final glyph or shape of a head may be affected by the left and/or right neighbour head.  context-info holds for each head such information about the left and right neighbour, encoded as a bit mask.")
-     (inclinatum ,boolean? "is this neume an inclinatum?")
-     (oriscus ,boolean? "is this neume an oriscus?")
-     (quilisma ,boolean? "is this neume a quilisma?")
-     (pes-or-flexa ,boolean? "shall this neume be joined with the previous head?")
-     (prefix-set ,number? "a bit mask that holds all Gregorian head prefixes, such as @code{\\virga} or @code{\\quilisma}")
+     (add-cauda ,boolean? "Does this flexa require an additional cauda on
+the left side?")
+     (add-join ,boolean? "Is this ligature head-joined with the next one
+by a vertical line?")
+     (add-stem ,boolean? "Is this ligature head a virga and therefore needs
+an additional stem on the right side?")
+     (ascendens ,boolean? "Is this neume of ascending type?")
+     (auctum ,boolean? "Is this neume liquescentically augmented?")
+
+     (cavum ,boolean? "Is this neume outlined?")
+     (context-info ,integer? "Within a ligature, the final glyph or shape of
+a head may be affected by the left and/or right neighbour head.
+@code{context-info} holds for each head such information about the left and
+right neighbour, encoded as a bit mask.")
+
+     (descendens ,boolean? "Is this neume of descendent type?")
+     (deminutum ,boolean? "Is this neume deminished?")
+
+     (flexa-height ,ly:dimension? "The height of a flexa shape in a ligature
+grob (in @code{staff-space} units).")
+     (flexa-width ,ly:dimension? "The width of a flexa shape in a
+ligature grob in (in @code{staff-space} units).")
+
+     (inclinatum ,boolean? "Is this neume an inclinatum?")
+
+     (join-heads ,boolean? "Whether to join the note heads of an ambitus
+grob with a vertical line.")
+     (join-right-amount ,number? "DOCME")
+
+     (linea ,boolean? "Attach vertical lines to this neume?")
+
+     (oriscus ,boolean? "Is this neume an oriscus?")
+
+     (pes-or-flexa ,boolean? "Shall this neume be joined with the previous
+head?")
+     (prefix-set ,number? "A bit mask that holds all Gregorian head
+prefixes, such as @code{\\virga} or @code{\\quilisma}.")
+     (primitive ,integer? "A pointer to a ligature primitive, i.e., an item
+similar to a note head that is part of a ligature.")
+
+     (quilisma ,boolean? "Is this neume a quilisma?")
+
      (stropha ,boolean? "Is this neume a stropha?")
+
      (virga ,boolean? "Is this neume a virga?")
-     (x-offset ,ly:dimension? "Extra horizontal offset for ligature heads.")
 
-     ;; end ancient notation
+     (x-offset ,ly:dimension? "Extra horizontal offset for ligature heads.")
 
+     ;;;;;;;;;;;;;;;;
      ;; fret-diagrams extra properties
-     (xo-font-magnification ,number? "Magnification used for mute and
-         open string indicators in fret diagrams")
-     (mute-string ,string? "String to be used to indicate muted string in
-         fret diagrams")
-     (open-string ,string? "String to be used to indicate open string in
-         fret diagrams")
-     (orientation ,symbol? "Orientation of fret-diagram.  Options include @code{normal} and @code{landscape}")
-
-     )))
+     (mute-string ,string? "String to be used to indicate a muted string in
+fret diagrams")
+     (open-string ,string? "A string to be used to indicate an open string
+in fret diagrams")
+     (orientation ,symbol? "The orientation of a fret-diagram.  Options
+include @code{normal} and @code{landscape}.")
+     (xo-font-magnification ,number? "Magnification used for mute and open
+string indicators in fret diagrams.")
+
+    )))
 
 (define-public all-backend-properties
   (append
index 6b2135c9e6014e8fb45633f1bdb3a21ae3830b1a..ce76c346f861aae96b3daefcb6446e497e5621f2 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;;;; distances are given in line-thickness (thicknesses) and
      . (
        (stem-spacing-correction . 0.5)
        (same-direction-correction . 0.25)
+       (space-to-barline . #t)
        ;; Changed this from 0.75.
        ;; If you ever change this back, please document! --hwn
        (knee-spacing-correction . 1.0)
index 58b446e1cd74be51bf0f18014c13893a1cd123f5..55a313f3ecf1e423cb7c198b73bb02db17e97c5a 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2000--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                  Jan Nieuwenhuizen <janneke@gnu.org>
 
 
@@ -1107,7 +1107,7 @@ Use the filled head if @var{filled} is specified."
      name)))
 
 (define-builtin-markup-command (musicglyph layout props glyph-name) (string?)
-  "@var{glyph0name} is converted to a musical symbol; for example,
+  "@var{glyph-name} is converted to a musical symbol; for example,
 @code{\\musicglyph #\"accidentals.natural\"} selects the natural sign from
 the music font.  See @usermanref{The Feta font} for a complete listing of
 the possible glyphs."
index e3afd7f273adfe88d23b4079302bff5bd542972b..d5449925ece4f4138aac0d7aab2971f7fff6fda7 100644 (file)
@@ -1,7 +1,7 @@
 ;;; define-music-display-methods.scm -- data for displaying music
 ;;; expressions using LilyPond notation.
 ;;;
-;;; (c) 2005--2006 Nicolas Sceaux  <nicolas.sceaux@free.fr>
+;;; (c) 2005--2007 Nicolas Sceaux  <nicolas.sceaux@free.fr>
 ;;;
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
index 2e95b5a7c9a8297df89a9875596370938ef27080..d6202d79ff48679ed601b2b6cfcf2357f93e47cb 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define (music-property-description symbol type? description)
index 993d93b6d002c1f270c5102933a8d3d4d5d50df9..a6e1cbe178a4e2f7077bcd49f3eba5b198a52a80 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;; TODO: should link back into user manual.
index 6a027b6ed4a62b8ac1729221cd63241614a70146..fac14b3d6b8ac8bd413eabf29e815be191b3d33f 100644 (file)
@@ -3,7 +3,7 @@
 ;;
 ;; source file of the GNU LilyPond music typesetter
 ;;
-;; (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;; (c) 2005--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;
 
 (map ly:register-stencil-expression
index b7e253566aa54414529d9b099bacf6da21be42e9..eb1b876739308d4bdff97b309902bf0f4ebb5c8f 100644 (file)
@@ -2,7 +2,7 @@
 ;;;
 ;;;
 ;;;
-;;; (c) 2005--2006 Nicolas Sceaux  <nicolas.sceaux@free.fr>
+;;; (c) 2005--2007 Nicolas Sceaux  <nicolas.sceaux@free.fr>
 ;;;
 
 ;;; - This file defines the procedures used to define display methods for each
index 2a23e49afa7ce40a1edb9dc39beca88aa46a8085..610f7c094a44ea30ec566c9aa623ee8c4af94af2 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2000--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;; Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define (interface-doc-string interface grob-description)
              (interface-doc-string (cdr interface) '())
              "\n\n"
              "This grob interface is used in the following graphical objects: "
-
              (human-listify
               (map ref-ify
                    (sort 
                     (map symbol->string
                          (hashq-ref iface->grob-table (car interface) '()))
-                    string<?)))))))
+                    string<?)))
+             "."))))
 
 (define (grob-alist->texi alist)
   (let* ((uprops (filter (lambda (x) (not (object-property x 'backend-internal)))
index b057a7aab58a86837d6e09c966fd5ff244778dd3..1e473f107ac3b61e444fa243abe41ed4927e3a41 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (use-modules
index 4396ea4d38b8575f030833e41253991cce92ac98..8761deb83db17b031f0d65f12f1d7e9ef7395053 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define (doc-markup-function func)
index 0d01abb6b9c66b5289ae8ab0cda057f387240150..4c12b6b1e9a9e39621f688760bec1b315f55ec5a 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define (music-props-doc)
index 9db6bb4b882e31dff0ab0946657473eb60f648fa..921d8192b9b9d46f1515d2cbdc351fdec5508cd4 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2000--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define (engraver-makes-grob? name-symbol grav)
index fa6298cd00e32caf6af5be4846720e7509d7cc84..3d4adf09fc8aa13e92f38934a5defeba40cb32d2 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2000--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;; Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;;; File entry point for generated documentation
index 5dc35f25a9386b03a7922ae2b9c555f6f09d0684..5239ce78912fec620d955a0936c96560537bde4b 100644 (file)
@@ -3,7 +3,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2000--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (use-modules (oop goops)
index e08543966659a041e953149e4b76d3e149a98ba9..c22ff25a717c7f4baafce4a2c026df08199fdbf3 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2005--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2005--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define-module (scm editor))
 
index 9263d467c4ccd418b2436538e0f305ebea1641f9..a5aaa8d19a035b871ce747fdd297ba322e59468f 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2004--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 
index 332f9bab107ef7af33d8ee9604bb3c1b0f593439..2dfed77686e4b02421a2b3b90b2660c144368d47 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2005--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
 (define cache-hash-tab  (make-hash-table 11))
index 4d5a4bcef367f8c3ca93b4fb6086283bf0884204..eefc1c26ee9627316e43e11e09101d9e4ceebbe2 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;; TODO:
 ;;
index 85a4a9863600332d3c77044b92d456068a14cce6..c39fb518a9405cffc42cac173dd0f0429cd0733d 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-module (scm framework-eps))
 
index 1f5860433c23e5bcb33843df8f3990d574fae38b..44427dbd09e272f45f365199cba17bca31c5f724 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-module (scm framework-ps))
 
index 87480f1955893dfdee22905f23a585940dd71f64..4b723e0135b2e95c2234d4d6b06d4d06285fa2a3 100644 (file)
@@ -3,7 +3,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2004--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define-module (scm framework-svg))
 
index 5553b5b442ea19e8dfabb7650c1f3bb0e73f162c..8b10bac42c8ab0cc8803660ce1cd3be6c1d11cdc 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-module (scm framework-tex)
   #:export (output-framework-tex       
index 2dcbebe9fc20df719f9da28676376d026b8a3a54..3f61aeab06500e42f716ca5a9fae0ea2516b860c 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-module (scm framework-texstr)
   #:export (output-framework-tex       
index 6112d8ad7731b3d26855cd673ed0ec2744350b5d..2fe8f33605d36e3a1ca28cc0d8dedaf1eb5204de 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006 Carl D. Sorensen <c_sorensen@byu.edu>
+;;;; (c) 2004--2007 Carl D. Sorensen <c_sorensen@byu.edu>
 
 (define (fret-parse-marking-list marking-list fret-count)
    (let* ((fret-range (list 1 fret-count))
index 64f2b59831d2276c4a552030a8b0ea39c00f9af0..a4df921a9f9fcfa64bc0f1fe5395af861f4411ea 100644 (file)
@@ -4,7 +4,7 @@
 ;;
 ;; source file of the GNU LilyPond music typesetter
 ;;
-;; (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;; (c) 2005--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;
 
 (define-module (scm kpathsea))
index 8edfd9c757f33365f1fcf65ba9d5d0f2665ffb51..ef5cde47788bb246dcabda9f1e615787636722b4 100644 (file)
@@ -3,7 +3,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2000--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 
 (define ((check-beam-quant posl posr) beam posns)
index 68cc9d49c8f1d6a86577f2adeb511cc722b4bb6e..38da734bd38a5b6add540937a7ab56680b0d014b 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2004--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2004--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;         Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-module (scm layout-page-layout)
index 93ec7435f4c94eaa13f41b167c9e66ab86b051e6..d458506f179320884ff8a701d48f74c753be984f 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2000--2007 Jan Nieuwenhuizen <janneke@gnu.org>
                                ;
 ; this is put into the slur-details property of Slur and PhrasingSlur
 (define default-slur-details
index 6bd66501e4950e911c9ab1204cca99e4712fda9b..c925a808f17c0704598ccd452e38bd7432f256c3 100644 (file)
@@ -3,7 +3,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   (let*
       ((paper (ly:parser-lookup parser '$defaultpaper))
        (layout (ly:parser-lookup parser '$defaultlayout))
-
        (count (ly:parser-lookup parser 'output-count))
-       (base (ly:parser-output-name parser)))
+       (base (ly:parser-output-name parser))
+       (output-suffix (ly:parser-lookup parser 'output-suffix)) )
+
+    (if (string? output-suffix)
+       (set! base (format "~a-~a" base (string-regexp-substitute
+                                          "[^a-zA-Z0-9-]" "_" output-suffix))))
 
     ;; must be careful: output-count is under user control.
     (if (not (integer? count))
 
     (if (> count 0)
        (set! base (format #f "~a-~a" base count)))
-
     (ly:parser-define! parser 'output-count (1+ count))
     (process-procedure book paper layout base)
     ))
index bddf997764e03ca8d930f66875748749d445aa13..3701011a4facf91e054e1bbdd363849ed9fbaacc 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;; Internationalisation: (_i "to be translated") gets an entry in the
index 70baeaa54dd5d2070792a159f01cfc80b15a7e70..c47cb4a6c3685206678ef8ad9fd54111a8c28b9e 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2003--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2003--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 "
 Internally markup is stored as lists, whose head is a function.
index cef0fae28b07d31369ec4860f2eae14120131f43..715c8c0e37fc8fa1ddf2d32fb9bfae90f188069e 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2000--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 
index 471f9e8707f68b4fca45110a16da260d9e0fc391..5585eebdb734c9ff59690f5edde7491d8d2b3e26 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;; (use-modules (ice-9 optargs)) 
index bd3aa52744aea695cfce8e72ce91341f3683a5ea..745c231c48256610251b1c30ca175b1a9ac89c7d 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
@@ -383,6 +383,9 @@ centered, X==1 is at the right, X == -1 is at the left."
        (-3/4 . "accidentals.mirroredflat.flat")
        ))
 
+;; FIXME: standard vs default, alteration-FOO vs FOO-alteration
+(define-public alteration-default-glyph-name-alist standard-alteration-glyph-name-alist)
+
 (define-public makam-alteration-glyph-name-alist
      '((1 . "accidentals.doublesharp")
        (8/9 . "accidentals.sharp.slashslashslash.stemstem")
@@ -398,24 +401,24 @@ centered, X==1 is at the right, X == -1 is at the left."
        ))
   
 (define-public alteration-hufnagel-glyph-name-alist
-   '((1/2 . "accidentals.hufnagel-1")
+   '((-1/2 . "accidentals.hufnagel-1")
      (0 . "accidentals.vaticana0")
-     (-1/2 . "accidentals.mensural1")))
+     (1/2 . "accidentals.mensural1")))
 
 (define-public alteration-medicaea-glyph-name-alist
-   '((1/2 . "accidentals.medicaea-1")
+   '((-1/2 . "accidentals.medicaea-1")
      (0 . "accidentals.vaticana0")
-     (-1/2 . "accidentals.mensural1")))
+     (1/2 . "accidentals.mensural1")))
 
 (define-public alteration-vaticana-glyph-name-alist
-   '((1/2 . "accidentals.vaticana-1")
+   '((-1/2 . "accidentals.vaticana-1")
      (0 . "accidentals.vaticana0")
-     (-1/2 . "accidentals.mensural1")))
+     (1/2 . "accidentals.mensural1")))
 
 (define-public alteration-mensural-glyph-name-alist
-   '((1/2 . "accidentals.mensural-1")
+   '((-1/2 . "accidentals.mensural-1")
      (0 . "accidentals.vaticana0")
-     (-1/2 . "accidentals.mensural1")))
+     (1/2 . "accidentals.mensural1")))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
index 11e2190286434c18c0436048e8635eb9998a7ef7..5b5217868caf4bef7ca986f64df2fa622421ae9c 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;;;; Note: currently misused as testbed for titles with markup, see
index 51a491a8ef5d4d07277a952fb31fb5327b92e40d..8a8960e6d339b1fb04d9fa33a042f7d60e739af8 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2002--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2002--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;;;; http://www.w3.org/TR/SVG11
 ;;;; http://www.w3.org/TR/SVG12/ -- page, pageSet in draft
index 00e0fea7ba2e1d54b6414e15924324bff7c7d85c..af663cbf0e71f0fb348f4d19894b092d3969286b 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
index 81303dc0cace8d595283b9e45050266113e74e93..841e71a0470a4def11c386f109080fb237d3b458 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-module (scm output-texstr))
 (define this-module (current-module))
index dd2ba52b6f530fad58e58ab465af673c1ddfafe3..87d171802e27a73d16b9e3552f2ba0d83f5248b8 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-public (set-paper-dimension-variables mod)
   (module-define! mod 'dimension-variables
index a18ab2cdac4fbd4952d84466f3703108e7b8886f..4724090ff92a0962a176d7671345072bf4f8e521 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
 ;; (name . (glyph clef-position octavation))
index 86f3f89a27e8652ac7708a357db855d0daa67008..31f04444378af967be319ecc1c475997405aa8b8 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006  Nicolas Sceaux  <nicolas.sceaux@free.fr>
+;;;; (c) 2004--2007  Nicolas Sceaux  <nicolas.sceaux@free.fr>
 ;;;;           Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define gen-lily-sym
index cc051cd5e639d23d0ddaf24e9bb16e874fb32432..81c6e3685075ffcd7fce1be946ebcf7da1ee5830 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006    Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007    Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;; todo: figure out how to make module,
 ;; without breaking nested ly scopes
index a41a1ca6fa9f431d063bde48f4f45b30d4c3dfa7..deca66008a977edd6738e895c9695ff5f5c24e6a 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2005--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2005--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define-module (scm ps-to-png))
 
index 8309ec390f52bbedc80bca10d979c6b5ea7a72d6..6c2917890e8a3c0003ed2f8b8c921229986e829c 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (map
  (lambda (sym)
index a31e201abab03290ecf773760b8ab89aeea4540c..9df3e8905ceeea724e104e830c6de23816713758 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2000--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2000--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-public default-script-alist
   '(("thumb" .
index 8fbf6b1f65e7319e28e210b57fea2b0e43df238c..1bed6c7f5e3b1ece0a36bb80cfa38dd2ada7bb16 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
index 127a5f62ad95f442c3ae090d6cdae6ee03c0d3d4..e4c15978b4fb6288b589a96f5648a8fa9a42637d 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2003--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2003--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-public (stack-stencils axis dir padding stils)
   "Stack stencils STILS in direction AXIS, DIR, using PADDING."
index 7eae28e66df9e78300e7f694de1a4783626b0d42..23fdce87752f5415d1f6d4626c7e6df7d061219a 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2004--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2004--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;          Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 (define-public (layout-extract-page-properties layout)
index 437cc03b4af6becca1f2574b31430d67f0a99c7f..09acee7a65f2e9c1036bb18363d3e5276247c8f2 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2003--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 2003--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define-module (scm to-xml))
index eab413f5ce8a1cd7ba220b5025dcb073889b58c6..366f44fa3baf095b706501c6a21d045f985b2b85 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;; metronome marks
index 77f3838b8b7a949c7bf2d8acbc4a43174f8e23b4..9454a8fe7760c790881be88751b16eecad0a82ae 100644 (file)
@@ -3,7 +3,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 2005--2006 Bernard Hurley <bernard@fong-hurley.org.uk>
+;;;; (c) 2005--2007 Bernard Hurley <bernard@fong-hurley.org.uk>
 ;;;;
 
 (define x11-color-list             
index cf67f9f2400d0fbdb42ecf2d08299c5f283648fd..9501b405fe69c43a7eeb8809402112cd87eba423 100644 (file)
@@ -4,7 +4,7 @@
 #
 # source file of the GNU LilyPond music typesetter
 #
-# (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+# (c) 1998--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 #                 Jan Nieuwenhuizen <janneke@gnu.org>
 #
 # converting rules are found in python/convertrules.py
index 2ff452fdf9304d6ffd34a03e6c60ab66b19e021c..cf51582dd58ac952d6200f986059799cc3677d88 100644 (file)
@@ -101,7 +101,7 @@ def warranty ():
 
 %s
 %s
-''' % ( _ ('Copyright (c) %s by') % '2001--2006',
+''' % ( _ ('Copyright (c) %s by') % '2001--2007',
     ' '.join (authors),
    _ ("Distributed under terms of the GNU General Public License."),
    _ ("It comes with NO WARRANTY.")))
old mode 100755 (executable)
new mode 100644 (file)
index 0d8ca9e..e03a2af
@@ -4,7 +4,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; (c) 2005--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2005--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;; gui debug helper
 ;; (define (exit x) (system "sleep 10"))
index 35b10f39874a9dd3f5d561c07d92928d9b02e87d..157275c251e23d126995276615b7c9b0eb4d17b4 100644 (file)
@@ -4,7 +4,7 @@
 # 
 # source file of the GNU LilyPond music typesetter
 #
-# (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+# (c) 1998--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 #                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
index c29daed136ca268bd0ff01c85504943b0a3be894..9a09fa2dc50e90150293d806c44a23ad003d875a 100644 (file)
@@ -131,10 +131,10 @@ def musicxml_attributes_to_lily (attrs):
         'key': musicxml_key_to_lily
     }
     for (k, func) in attr_dispatch.items ():
-        childs = attrs.get_named_children (k)
+        children = attrs.get_named_children (k)
 
         ## ugh: you get clefs spread over staves for piano
-        if childs:
+        if children:
             elts.append (func (attrs))
     
     return elts
@@ -168,13 +168,136 @@ def musicxml_spanner_to_lily_event (mxl_event):
 
     return ev
 
+def musicxml_direction_to_indicator (direction):
+    val = { "above": 1, "upright": 1, "below": -1, "downright": -1 }.get (direction)
+    if val:
+        return val
+    else:
+        return ''
+
+def musicxml_fermata_to_lily_event (mxl_event):
+    ev = musicexp.ArticulationEvent ()
+    ev.type = "fermata"
+    if hasattr (mxl_event, 'type'):
+      dir = musicxml_direction_to_indicator (mxl_event.type)
+      if dir:
+        ev.force_direction = dir
+    return ev
+
+def musicxml_tremolo_to_lily_event(mxl_event):
+    if mxl_event.get_name () != "tremolo": 
+        return
+    ev = musicexp.TremoloEvent ()
+    ev.bars = mxl_event.get_text ()
+    return ev
+
+# TODO: Some translations are missing!
+articulations_dict = { 
+    ##### ORNAMENTS
+    "trill-mark": "trill", 
+    "turn": "turn", 
+    #"delayed-turn": "?", 
+    "inverted-turn": "reverseturn", 
+    #"shake": "?", 
+    #"wavy-line": "?", 
+    "mordent": "mordent",
+    #"inverted-mordent": "?", 
+    #"schleifer": "?" 
+    ##### TECHNICALS
+    "up-bow": "upbow", 
+    "down-bow": "downbow", 
+    #"harmonic": "", 
+    #"open-string": "", 
+    #"thumb-position": "", 
+    #"fingering": "", 
+    #"pluck": "", 
+    #"double-tongue": "", 
+    #"triple-tongue": "", 
+    #"stopped": "", 
+    #"snap-pizzicato": "", 
+    #"fret": "", 
+    #"string": "", 
+    #"hammer-on": "", 
+    #"pull-off": "", 
+    #"bend": "", 
+    #"tap": "", 
+    #"heel": "", 
+    #"toe": "", 
+    #"fingernails": ""
+    ##### ARTICULATIONS
+    "accent": "accent", 
+    "strong-accent": "marcato", 
+    "staccato": "staccato", 
+    "tenuto": "tenuto", 
+    #"detached-legato": "", 
+    "staccatissimo": "staccatissimo", 
+    #"spiccato": "", 
+    #"scoop": "", 
+    #"plop": "", 
+    #"doit": "", 
+    #"falloff": "",
+    "breath-mark": "breathe", 
+    #"caesura": "caesura", 
+    #"stress": "", 
+    #"unstress": ""
+}
+
+def musicxml_articulation_to_lily_event(mxl_event):
+    ev = musicexp.ArticulationEvent ()
+    tp = articulations_dict.get (mxl_event.get_name ())
+    if not tp:
+        return
+    
+    ev.type = tp
+
+    # Some articulations use the type attribute, other the placement...
+    dir = None
+    if hasattr (mxl_event, 'type'):
+        dir = musicxml_direction_to_indicator (mxl_event.type)
+    if hasattr (mxl_event, 'placement'):
+        dir = musicxml_direction_to_indicator (mxl_event.placement)
+    if dir:
+        ev.force_direction = dir
+    return ev
+
+
+def musicxml_direction_to_lily( n ):
+    # TODO: Handle the <staff> element!
+    res = []
+    dirtype = n.get_maybe_exist_typed_child (musicxml.DirType)
+    if not dirtype: 
+      return res
+
+    for entry in dirtype.get_all_children ():
+        if entry.get_name () == "dynamics":
+            for dynentry in entry.get_all_children ():
+                dynamics_available = ( "p", "pp", "ppp", "pppp", "ppppp", "pppppp", 
+                    "f", "ff", "fff", "ffff", "fffff", "ffffff", 
+                    "mp", "mf", "sf", "sfp", "sfpp", "fp", 
+                    "rf", "rfz", "sfz", "sffz", "fz" )
+                if not dynentry.get_name() in dynamics_available: 
+                    continue
+                event = musicexp.DynamicsEvent ()
+                event.type = dynentry.get_name ()
+                res.append (event)
+      
+        if entry.get_name() == "wedge":
+            if hasattr (entry, 'type'):
+                wedgetype = entry.type;
+                wedgetypeval = {"crescendo" : 1, "decrescendo" : -1, 
+                                "diminuendo" : -1, "stop" : 0 }.get (wedgetype)
+                if wedgetypeval != None:
+                    event = musicexp.HairpinEvent (wedgetypeval)
+                    res.append (event)
+
+    return res
+
 instrument_drumtype_dict = {
     'Acoustic Snare Drum': 'acousticsnare',
     'Side Stick': 'sidestick',
     'Open Triangle': 'opentriangle',
     'Mute Triangle': 'mutetriangle',
-    'Tambourine': 'tambourine',
-    
+    'Tambourine': 'tambourine'
 }
 
 def musicxml_note_to_lily_main_event (n):
@@ -219,6 +342,7 @@ class NegativeSkip:
 class LilyPondVoiceBuilder:
     def __init__ (self):
         self.elements = []
+        self.pending_dynamics = []
         self.end_moment = Rational (0)
         self.begin_moment = Rational (0)
         self.pending_multibar = Rational (0)
@@ -246,6 +370,16 @@ class LilyPondVoiceBuilder:
         self.begin_moment = self.end_moment
         self.end_moment = self.begin_moment + duration 
 
+        # Insert all pending dynamics right after the note/rest:
+        if duration > Rational (0):
+            for d in self.pending_dynamics:
+                self.elements.append (d)
+            self.pending_dynamics = []
+
+    def add_dynamics (self, dynamic):
+        # store the dynamic item(s) until we encounter the next note/rest:
+        self.pending_dynamics.append (dynamic)
+
     def add_bar_check (self, number):
         b = musicexp.BarCheck ()
         b.bar_number = number
@@ -297,6 +431,11 @@ def musicxml_voice_to_lily_voice (voice):
         if n.get_name () == 'forward':
             continue
 
+        if isinstance (n, musicxml.Direction):
+            for a in musicxml_direction_to_lily (n):
+                voice_builder.add_dynamics (a)
+            continue
+        
         if not n.get_maybe_exist_named_child ('chord'):
             try:
                 voice_builder.jumpto (n._when)
@@ -353,6 +492,12 @@ def musicxml_voice_to_lily_voice (voice):
         notations = n.get_maybe_exist_typed_child (musicxml.Notations)
         tuplet_event = None
         span_events = []
+        
+        # The <notation> element can have the following children (+ means implemented, ~ partially, - not):
+        # +tied | +slur | +tuplet | glissando | slide | 
+             # ornaments | technical | articulations | dynamics |
+             # +fermata | arpeggiate | non-arpeggiate | 
+             # accidental-mark | other-notation
         if notations:
             if notations.get_tuplet():
                 tuplet_event = notations.get_tuplet()
@@ -375,6 +520,50 @@ def musicxml_voice_to_lily_voice (voice):
             mxl_tie = notations.get_tie ()
             if mxl_tie and mxl_tie.type == 'start':
                 ev_chord.append (musicexp.TieEvent ())
+                
+            fermatas = notations.get_named_children ('fermata')
+            for a in fermatas:
+                ev = musicxml_fermata_to_lily_event (a);
+                if ev: 
+                    ev_chord.append (ev)
+                
+            # Articulations can contain the following child elements:
+            #         accent | strong-accent | staccato | tenuto |
+            #         detached-legato | staccatissimo | spiccato |
+            #         scoop | plop | doit | falloff | breath-mark | 
+            #         caesura | stress | unstress
+            # Technical can contain the following child elements:
+            #         up-bow | down-bow | harmonic | open-string |
+            #         thumb-position | fingering | pluck | double-tongue |
+            #         triple-tongue | stopped | snap-pizzicato | fret |
+            #         string | hammer-on | pull-off | bend | tap | heel |
+            #         toe | fingernails | other-technical
+            # Ornaments can contain the following child elements:
+            #         trill-mark | turn | delayed-turn | inverted-turn |
+            #         shake | wavy-line | mordent | inverted-mordent | 
+            #         schleifer | tremolo | other-ornament, accidental-mark
+            ornaments = notations.get_named_children ('ornaments')
+            for a in ornaments:
+                for ch in a.get_named_children ('tremolo'):
+                    ev = musicxml_tremolo_to_lily_event (ch)
+                    if ev: 
+                        ev_chord.append (ev)
+
+            ornaments += notations.get_named_children ('articulations')
+            ornaments += notations.get_named_children ('technical')
+
+            for a in ornaments:
+                for ch in a.get_all_children ():
+                    ev = musicxml_articulation_to_lily_event (ch)
+                    if ev: 
+                        ev_chord.append (ev)
+
+            dynamics = notations.get_named_children ('dynamics')
+            for a in dynamics:
+                for ch in a.get_all_children ():
+                    ev = musicxml_dynamics_to_lily_event (ch)
+                    if ev:
+                        ev_chord.append (ev)
 
         mxl_beams = [b for b in n.get_named_children ('beam')
                      if (b.get_type () in ('begin', 'end')
@@ -422,12 +611,11 @@ def musicxml_voice_to_lily_voice (voice):
 
 
 def musicxml_id_to_lily (id):
-    digits = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
-              'nine', 'ten']
+    digits = ['Zero', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight',
+              'Nine', 'Ten']
     
     for dig in digits:
-        d = digits.index (dig) + 1
-        dig = dig[0].upper() + dig[1:]
+        d = digits.index (dig)
         id = re.sub ('%d' % d, dig, id)
 
     id = re.sub  ('[^a-zA-Z]', 'X', id)
@@ -479,7 +667,7 @@ License and you are welcome to change it and/or distribute copies of it
 under certain conditions.  Invoke as `%s --warranty' for more
 information.""") % 'lilypond'
 + """
-Copyright (c) 2005--2006 by
+Copyright (c) 2005--2007 by
     Han-Wen Nienhuys <hanwen@xs4all.nl> and
     Jan Nieuwenhuizen <janneke@gnu.org>
 """),
@@ -512,9 +700,13 @@ def music_xml_voice_name_to_lily_name (part, name):
     str = "Part%sVoice%s" % (part.id, name)
     return musicxml_id_to_lily (str) 
 
-def print_voice_definitions (printer, voices):
+def print_voice_definitions (printer, part_list, voices):
+    part_dict={}
     for (part, nv_dict) in voices.items():
-        
+        part_dict[part.id] = (part, nv_dict)
+
+    for part in part_list:
+        (part, nv_dict) = part_dict[part.id]
         for (name, (voice, mxlvoice)) in nv_dict.items ():
             k = music_xml_voice_name_to_lily_name (part, name)
             printer.dump ('%s = ' % k)
@@ -627,7 +819,7 @@ def convert (filename, options):
     printer.set_file (open (defs_ly_name, 'w'))
 
     print_ly_preamble (printer, filename)
-    print_voice_definitions (printer, voices)
+    print_voice_definitions (printer, part_list, voices)
     
     printer.close ()
     
index 30451cef6f9eb954f774c6865d43ebb36e35926d..534e591ae42a844baecd28e7e1131b038a0b57a2 100644 (file)
@@ -11,7 +11,8 @@ GENERATE_OMF = $(PYTHON) $(buildscript-dir)/texi2omf.py --format $(1) --location
 
 TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
 
-MAKEINFO = LANG= $(MAKEINFO_PROGRAM)  --enable-encoding
+MAKEINFO_FLAGS = --enable-encoding
+MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
 
 # info stuff
index b7bf6d2a691b95aa5f083cdea8e7f1f7ed13e41f..467f5639951c6118cbba7060c057a05af1f12b25 100644 (file)
@@ -2,7 +2,7 @@
 %%%
 %%%  source file of the GNU LilyPond music typesetter
 %%% 
-%%% (c) 1998--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+%%% (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
 %%%                 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 %%%                 Mats Bengtsson <mats.bengtsson@s3.kth.se>
 %%%
index 7087f3d0644dedfe9110cd43e7300a1dfd1906b3..a998a3ebb0b41f99f180da18a2f46ef8bbc42edf 100644 (file)
@@ -12,7 +12,7 @@ endif
 let current_compiler = "lilypond"
 
 " default make
-setlocal makeprg=lilypond $*
+setlocal makeprg=lilypond\ $*
 " errorformat for lily (with columns) and gcc
 " (how to see multiple-line error messages?)
 setlocal errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m