]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of ssh+git://hanwen@git.sv.gnu.org/srv/git/lilypond
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 17 Feb 2008 18:14:04 +0000 (15:14 -0300)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 17 Feb 2008 18:14:04 +0000 (15:14 -0300)
156 files changed:
.gitignore
Documentation/de/index.html.in
Documentation/de/user/changing-defaults.itely
Documentation/de/user/converters.itely
Documentation/de/user/editorial.itely [new file with mode: 0644]
Documentation/de/user/fundamental.itely
Documentation/de/user/input.itely
Documentation/de/user/install.itely
Documentation/de/user/lilypond-book.itely
Documentation/de/user/lilypond-learning.tely
Documentation/de/user/lilypond-program.tely
Documentation/de/user/lilypond.tely
Documentation/de/user/non-music.itely
Documentation/de/user/programming-interface.itely
Documentation/de/user/running.itely
Documentation/de/user/spacing.itely
Documentation/de/user/text.itely
Documentation/de/user/vocal.itely
Documentation/es/user/converters.itely
Documentation/es/user/editorial.itely [new file with mode: 0644]
Documentation/es/user/fundamental.itely
Documentation/es/user/input.itely
Documentation/es/user/install.itely
Documentation/es/user/lilypond-book.itely
Documentation/es/user/lilypond-learning.tely
Documentation/es/user/lilypond-program.tely
Documentation/es/user/lilypond.tely
Documentation/es/user/programming-interface.itely
Documentation/es/user/running.itely
Documentation/es/user/scheme-tutorial.itely
Documentation/es/user/spacing.itely
Documentation/fr/user/ancient.itely
Documentation/fr/user/bagpipes.itely
Documentation/fr/user/changing-defaults.itely
Documentation/fr/user/cheatsheet.itely
Documentation/fr/user/chords.itely
Documentation/fr/user/converters.itely
Documentation/fr/user/editorial.itely [new file with mode: 0644]
Documentation/fr/user/educational.itely [deleted file]
Documentation/fr/user/expressive.itely
Documentation/fr/user/fundamental.itely
Documentation/fr/user/guitar.itely
Documentation/fr/user/input.itely
Documentation/fr/user/introduction.itely
Documentation/fr/user/lilypond-book.itely
Documentation/fr/user/lilypond-learning.tely
Documentation/fr/user/lilypond-program.tely
Documentation/fr/user/lilypond.tely
Documentation/fr/user/literature.itely
Documentation/fr/user/non-music.itely
Documentation/fr/user/notation-appendices.itely
Documentation/fr/user/notation.itely
Documentation/fr/user/percussion.itely
Documentation/fr/user/piano.itely
Documentation/fr/user/pitches.itely
Documentation/fr/user/preface.itely
Documentation/fr/user/programming-interface.itely
Documentation/fr/user/repeats.itely
Documentation/fr/user/rhythms.itely
Documentation/fr/user/running.itely
Documentation/fr/user/scheme-tutorial.itely
Documentation/fr/user/setup.itely
Documentation/fr/user/simultaneous.itely
Documentation/fr/user/spacing.itely
Documentation/fr/user/specialist.itely
Documentation/fr/user/staff.itely
Documentation/fr/user/strings.itely
Documentation/fr/user/templates.itely
Documentation/fr/user/text.itely
Documentation/fr/user/tutorial.itely
Documentation/fr/user/tweaks.itely
Documentation/fr/user/vocal.itely
Documentation/fr/user/working.itely
Documentation/po/GNUmakefile
Documentation/translations.template.html [new file with mode: 0644]
Documentation/user/GNUmakefile
Documentation/user/changing-defaults.itely
Documentation/user/editorial.itely
Documentation/user/expressive.itely
Documentation/user/fundamental.itely
Documentation/user/input.itely
Documentation/user/introduction.itely
Documentation/user/lilypond.tely
Documentation/user/macros.itexi
Documentation/user/music-glossary.tely
Documentation/user/pitches.itely
Documentation/user/programming-interface.itely
Documentation/user/rhythms.itely
Documentation/user/staff.itely
Documentation/user/text.itely
Documentation/user/tweaks.itely
Documentation/user/working.itely
THANKS
buildscripts/translations-status.py [new file with mode: 0644]
buildscripts/www_post.py
input/lsr/applying-noteheads-styles-depending-on-the-step-of-the-scale.ly
input/lsr/creating-real-parenthesized-dynamics.ly [new file with mode: 0644]
input/lsr/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly
input/lsr/entering-several-tuplets-using-only-one--times-command.ly [new file with mode: 0644]
input/lsr/expressive-marks.snippet-list
input/lsr/percussion.snippet-list
input/lsr/printing-music-with-different-time-signatures.ly [new file with mode: 0644]
input/lsr/rhythms.snippet-list
input/lsr/spacing.snippet-list
input/lsr/text.snippet-list
input/lsr/tweaks-and-overrides.snippet-list
input/lsr/vertically-centered-dynamics-and-textscripts.ly [new file with mode: 0644]
input/new/incipit.ly [new file with mode: 0644]
input/regression/accidental-broken-tie-spacing.ly [new file with mode: 0644]
input/regression/incipit.ly [new file with mode: 0644]
input/regression/instrument-name-x-align.ly [new file with mode: 0644]
input/regression/musicxml/00i-Basics-NoKeyOrClef.xml
input/regression/musicxml/00j-Basics-NoTime-PJB.xml
input/regression/musicxml/00l-Basics-Tie-PJB.xml
input/regression/musicxml/02a-Notations-MusicXML.xml
input/regression/musicxml/02b-Articulations-Texts-PJB.xml [new file with mode: 0644]
input/regression/musicxml/02c-MultipleNotationChildren-RFK.xml [new file with mode: 0644]
input/regression/musicxml/02d-Arpeggio.xml [new file with mode: 0644]
input/regression/musicxml/02h-MultipleNotationChildren-RFK.xml [deleted file]
input/regression/musicxml/02i-Articulations-Texts-PJB.xml [deleted file]
input/regression/musicxml/03a-Directions-MusicXML.xml
input/regression/musicxml/03b-AccordionRegistrations-MusicXML.xml [new file with mode: 0644]
input/regression/musicxml/04b-Glissando.xml [new file with mode: 0644]
input/regression/musicxml/05a-HeaderQuotes-Finale.xml
lily/accidental.cc
lily/bar-line.cc
lily/note-spacing.cc
lily/output-def-scheme.cc
lily/score-scheme.cc
lily/spacing-spanner.cc
lily/stem.cc
lily/system-start-text.cc
make/doclang-rules.make
make/doclang-targets.make
make/doclang-vars.make
make/lilypond-vars.make
po/it.po
po/ja.po
po/lilypond.pot
po/vi.po
python/convertrules.py
python/lilylib.py
python/musicexp.py
python/musicxml.py
scm/define-grobs.scm
scm/markup.scm
scm/paper.scm
scripts/abc2ly.py
scripts/convert-ly.py
scripts/etf2ly.py
scripts/lilypond-book.py
scripts/midi2ly.py
scripts/musicxml2ly.py
stepmake/stepmake/metafont-rules.make
stepmake/stepmake/texinfo-rules.make
stepmake/stepmake/texinfo-vars.make

index 346f815f15ae53653e341ae799c5374f731183d2..78ddd2aade5ee09961d04eb11cc570b259b134f3 100644 (file)
@@ -70,3 +70,4 @@ out-test
 pats
 tags
 test-output-distance
+Documentation/user/lilypond
index 5e1565f95d5f0a15ae45e8806771db9894612a8b..7416fb4050899757c51d9af7815871b5af1dd8a6 100644 (file)
        <br>
        <strong>@DATE@</strong>
       </p>
+      
+      <p>
+      <strong>Achtung:</strong> Diese &Uuml;bersetzung befindet sich noch in der Entwicklung, <br>
+      die englische Version (Link unten auf der Seite) bietet die
+      vollst&auml;ndige Fassung der Dokumentation.
+      </p>
     </div>
 
     <table align="center">
index a9f29ffe3f89654e473c49b41d17d5c71bc1f65e..c956e6c2cd008b6ed21c240bfee33724a21d406e 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 59fb3c552061f0a3316b1dcf9b794e6fbe863eae..eb6a41a5617283b8e6f361b61bedba2546275d79 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
diff --git a/Documentation/de/user/editorial.itely b/Documentation/de/user/editorial.itely
new file mode 100644 (file)
index 0000000..3785235
--- /dev/null
@@ -0,0 +1,97 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
+@c This file is part of lilypond.tely
+@ignore
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@node Editorial annotations
+@section Editorial annotations
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Inside the staff::
+* Outside the staff::
+@end menu 
+@node Inside the staff
+@subsection Inside the staff
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Selecting notation font size::
+* Fingering instructions::
+* Hidden notes::
+* Coloring objects::
+* Parentheses::
+* Stems::
+@end menu 
+@node Selecting notation font size
+@subsubsection Selecting notation font size
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fingering instructions
+@subsubsection Fingering instructions
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Hidden notes
+@subsubsection Hidden notes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Coloring objects
+@subsubsection Coloring objects
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Parentheses
+@subsubsection Parentheses
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Stems
+@subsubsection Stems
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Outside the staff
+@subsection Outside the staff
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Balloon help::
+* Grid lines::
+* Blank music sheet::
+* Analysis brackets::
+@end menu 
+@node Balloon help
+@subsubsection Balloon help
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Grid lines
+@subsubsection Grid lines
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Blank music sheet
+@subsubsection Blank music sheet
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Analysis brackets
+@subsubsection Analysis brackets
+
+UNTRANSLATED NODE: IGNORE ME
+
+
+-- SKELETON FILE --
+When you actually translate this file, please remove these lines as
+well as all `UNTRANSLATED NODE: IGNORE ME' lines.
index 7f636d80b5bbaebba8f92f0db441bf72c600cfb1..c6e90289a80e06646716d0bb8481a244e6ca16ab 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond-learning.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -27,7 +27,7 @@ UNTRANSLATED NODE: IGNORE ME
 @menu 
 * Introduction to the LilyPond file structure::
 * Score is a (single) compound musical expression::
-* Nesting Music Expressions::
+* Nesting music expressions::
 * On the un-nestedness of brackets and ties::
 @end menu 
 @node Introduction to the LilyPond file structure
@@ -40,8 +40,8 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
-@node Nesting Music Expressions
-@subsection Nesting Music Expressions
+@node Nesting music expressions
+@subsection Nesting music expressions
 
 UNTRANSLATED NODE: IGNORE ME
 
@@ -113,7 +113,9 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@subsubsection Changing a single context
 @ 
+@subsubsection Changing all contexts of the same type
 @node Extending the templates
 @section Extending the templates
 
index 3972e4f2cd11b4dafb2e50d5cfd085ac0fd49662..db42d3d39c795a51dc86b5bed5a73719ee69b42a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -73,11 +73,11 @@ UNTRANSLATED NODE: IGNORE ME
 UNTRANSLATED NODE: IGNORE ME
 
 @menu 
-* Up and down::
+* Controlling direction::
 * Distances and measurements MAYBE MOVE::
 @end menu 
-@node Up and down
-@subsection Up and down
+@node Controlling direction
+@subsection Controlling direction
 
 UNTRANSLATED NODE: IGNORE ME
 
index 072a77f71dea99ac4cf331d233bb17946a0042b5..c8c3e06956796ab034affa9cf41ca3aa4a5ef670 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 129ddf52876eb771f487d5438896b2eace710265..87684bfca484117fe0f7e2492321f3e285ca7e24 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -74,6 +74,10 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@subheading Format-specific instructions
+@subsubheading @LaTeX{}
+@subsubheading Texinfo
+@subheading Command line options
 @node Filename extensions
 @section Filename extensions
 
index f2391bdf32b3a3e08624f6cf175024d80972c61d..361370139528840e86c7b2b1b73e421ffc67d602 100644 (file)
@@ -29,6 +29,7 @@
 @omflanguage German
 @end ignore
 
+@c Translators: Till Rettig
 
 @ifhtml
 Dieses Dokument ist auch als
index 4b4a2e4895f9ac5608a0a1aa8ae692fe6585ff5a..91807ef20ee896c88b00893148c20457a0e8c7d8 100644 (file)
@@ -29,6 +29,7 @@
 @omflanguage German
 @end ignore
 
+@c Translators: Till Rettig
 
 @ifhtml
 Dieses Dokument ist auch als
index ed215c154d0060e2b7cf7116ba4cfb33098719c8..134cffcd2b53596e345ab8a0977490ce43618528 100644 (file)
@@ -59,6 +59,7 @@ Distributions will want to install lilypond.info in postinstall, doing:
 @omflanguage German
 @end ignore
 
+@c Translators: Till Rettig
 
 @ifhtml
 Dieses Dokument ist auch als
index 9f1e0f11120150525d8bd06ef824fff81d2a6c1c..81d471ea576452f0e7dbb8a330a06fd30f59aaa5 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -16,6 +16,7 @@ UNTRANSLATED NODE: IGNORE ME
 @menu 
 * Titles and headers::
 * MIDI output::
+* other midi::
 @end menu 
 @node Titles and headers
 @section Titles and headers
@@ -83,7 +84,12 @@ UNTRANSLATED NODE: IGNORE ME
 * Repeats and MIDI::
 @end menu 
 @node Repeats and MIDI
-@unnumberedsubsubsec Repeats and MIDI
+@subsubsection Repeats and MIDI
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node other midi
+@section other midi
 
 UNTRANSLATED NODE: IGNORE ME
 
index 41a0fd73432671b60584419935a9937e2c56c444..6d48c59f4062e85eb2672e9d97951bd167892b24 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index be697c2db583efefef47446584d41b033313daa8..a1778a7d60385928ec4fef3dfb32d784034e6d5a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index c19e873607fa20a6ecc4278f8996eed9c2e92dff..3075758d1e5f934deeef36a0d54bb17f3adb6239 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -20,6 +20,7 @@ UNTRANSLATED NODE: IGNORE ME
 * Breaks::
 * Vertical spacing::
 * Horizontal spacing::
+* Page layout MOVED FROM LM::
 @end menu 
 @node Paper and pages
 @section Paper and pages
@@ -187,6 +188,43 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@node Page layout MOVED FROM LM
+@section Page layout MOVED FROM LM
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Introduction to layout::
+* Global sizes::
+* Line breaks::
+* Page breaks::
+* Fitting music onto fewer pages::
+@end menu 
+@node Introduction to layout
+@subsection Introduction to layout
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Global sizes
+@subsection Global sizes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Line breaks
+@subsection Line breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Page breaks
+@subsection Page breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fitting music onto fewer pages
+@subsection Fitting music onto fewer pages
+
+UNTRANSLATED NODE: IGNORE ME
+
 
 -- SKELETON FILE --
 When you actually translate this file, please remove these lines as
index b4a6545a11c7180484dab6e460310a9281508fa1..d0a8e72cb88b223d6aeba9b1284f93a392a8d682 100644 (file)
@@ -1,8 +1,105 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
+@c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: f7420240e4ce1fe2217646482a47d00f566af52c
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+
+@node Text
+@section Text
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Writing text::
+* Text markup::
+* Special text concerns::
+@end menu 
+@node Writing text
+@subsection Writing text
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Overview of text entry::
+* Text scripts::
+* Text spanners::
+* Text marks::
+@end menu 
+@node Overview of text entry
+@subsubsection Overview of text entry
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text scripts
+@subsubsection Text scripts
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text spanners
+@subsubsection Text spanners
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text marks
+@subsubsection Text marks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text markup
+@subsection Text markup
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Text markup introduction::
+* Nested scores::
+* Page wrapping text::
+* Font selection::
+@end menu 
+@node Text markup introduction
+@subsubsection Text markup introduction
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Nested scores
+@subsubsection Nested scores
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Page wrapping text
+@subsubsection Page wrapping text
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Font selection
+@subsubsection Font selection
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Special text concerns
+@subsection Special text concerns
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* New dynamic marks::
+* Text and line spanners::
+@end menu 
+@node New dynamic marks
+@subsubsection New dynamic marks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Text and line spanners
+@subsubsection Text and line spanners
+
+UNTRANSLATED NODE: IGNORE ME
+
+
+-- SKELETON FILE --
+When you actually translate this file, please remove these lines as
+well as all `UNTRANSLATED NODE: IGNORE ME' lines.
index f4636a02f131564c761254368dfd69121744a84c..b7c2cb190ed42e3590eb80041a3c860ce058a049 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -31,12 +31,12 @@ UNTRANSLATED NODE: IGNORE ME
 * Entering lyrics::
 @end menu 
 @node Setting simple songs
-@unnumberedsubsubsec Setting simple songs
+@subsubsection Setting simple songs
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Entering lyrics
-@unnumberedsubsubsec Entering lyrics
+@subsubsection Entering lyrics
 
 UNTRANSLATED NODE: IGNORE ME
 
@@ -53,27 +53,27 @@ UNTRANSLATED NODE: IGNORE ME
 * Extenders and hyphens::
 @end menu 
 @node Automatic syllable durations
-@unnumberedsubsubsec Automatic syllable durations
+@subsubsection Automatic syllable durations
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Another way of entering lyrics
-@unnumberedsubsubsec Another way of entering lyrics
+@subsubsection Another way of entering lyrics
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Assigning more than one syllable to a single note
-@unnumberedsubsubsec Assigning more than one syllable to a single note
+@subsubsection Assigning more than one syllable to a single note
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node More than one note on a single syllable
-@unnumberedsubsubsec More than one note on a single syllable
+@subsubsection More than one note on a single syllable
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Extenders and hyphens
-@unnumberedsubsubsec Extenders and hyphens
+@subsubsection Extenders and hyphens
 
 UNTRANSLATED NODE: IGNORE ME
 
@@ -86,7 +86,7 @@ UNTRANSLATED NODE: IGNORE ME
 * Working with lyrics and variables::
 @end menu 
 @node Working with lyrics and variables
-@unnumberedsubsubsec Working with lyrics and variables
+@subsubsection Working with lyrics and variables
 
 UNTRANSLATED NODE: IGNORE ME
 
@@ -102,22 +102,22 @@ UNTRANSLATED NODE: IGNORE ME
 * Lyrics independent of notes::
 @end menu 
 @node Lyrics to multiple notes of a melisma
-@unnumberedsubsubsec Lyrics to multiple notes of a melisma
+@subsubsection Lyrics to multiple notes of a melisma
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Divisi lyrics
-@unnumberedsubsubsec Divisi lyrics
+@subsubsection Divisi lyrics
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Switching the melody associated with a lyrics line
-@unnumberedsubsubsec Switching the melody associated with a lyrics line
+@subsubsection Switching the melody associated with a lyrics line
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Lyrics independent of notes
-@unnumberedsubsubsec Lyrics independent of notes
+@subsubsection Lyrics independent of notes
 
 UNTRANSLATED NODE: IGNORE ME
 
@@ -130,7 +130,7 @@ UNTRANSLATED NODE: IGNORE ME
 * Spacing lyrics::
 @end menu 
 @node Spacing lyrics
-@unnumberedsubsubsec Spacing lyrics
+@subsubsection Spacing lyrics
 
 UNTRANSLATED NODE: IGNORE ME
 
@@ -147,27 +147,27 @@ UNTRANSLATED NODE: IGNORE ME
 * Printing stanzas at the end in multiple columns ::
 @end menu 
 @node Adding stanza numbers 
-@unnumberedsubsubsec Adding stanza numbers 
+@subsubsection Adding stanza numbers 
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Adding dynamics marks
-@unnumberedsubsubsec Adding dynamics marks
+@subsubsection Adding dynamics marks
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Adding singer names
-@unnumberedsubsubsec Adding singer names
+@subsubsection Adding singer names
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Printing stanzas at the end 
-@unnumberedsubsubsec Printing stanzas at the end 
+@subsubsection Printing stanzas at the end 
 
 UNTRANSLATED NODE: IGNORE ME
 
 @node Printing stanzas at the end in multiple columns 
-@unnumberedsubsubsec Printing stanzas at the end in multiple columns 
+@subsubsection Printing stanzas at the end in multiple columns 
 
 UNTRANSLATED NODE: IGNORE ME
 
index 3097e3470fd90c5176d7f16b317d675bfe3d2d69..22e411b3ba25f2aac4c6b27af7952e9906be0894 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
diff --git a/Documentation/es/user/editorial.itely b/Documentation/es/user/editorial.itely
new file mode 100644 (file)
index 0000000..8b1d495
--- /dev/null
@@ -0,0 +1,97 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
+@c This file is part of lilypond.tely
+@ignore
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@node Editorial annotations
+@section Editorial annotations
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Inside the staff::
+* Outside the staff::
+@end menu 
+@node Inside the staff
+@subsection Inside the staff
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Selecting notation font size::
+* Fingering instructions::
+* Hidden notes::
+* Coloring objects::
+* Parentheses::
+* Stems::
+@end menu 
+@node Selecting notation font size
+@subsubsection Selecting notation font size
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fingering instructions
+@subsubsection Fingering instructions
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Hidden notes
+@subsubsection Hidden notes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Coloring objects
+@subsubsection Coloring objects
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Parentheses
+@subsubsection Parentheses
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Stems
+@subsubsection Stems
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Outside the staff
+@subsection Outside the staff
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Balloon help::
+* Grid lines::
+* Blank music sheet::
+* Analysis brackets::
+@end menu 
+@node Balloon help
+@subsubsection Balloon help
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Grid lines
+@subsubsection Grid lines
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Blank music sheet
+@subsubsection Blank music sheet
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Analysis brackets
+@subsubsection Analysis brackets
+
+UNTRANSLATED NODE: IGNORE ME
+
+
+-- SKELETON FILE --
+When you actually translate this file, please remove these lines as
+well as all `UNTRANSLATED NODE: IGNORE ME' lines.
index 00afb08b1454e9454960a72f464397dad8b5cf91..e08c948b14c80063bf2028331100c5bb7957f571 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond-learning.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -27,7 +27,7 @@ UNTRANSLATED NODE: IGNORE ME
 @menu 
 * Introduction to the LilyPond file structure::
 * Score is a (single) compound musical expression::
-* Nesting Music Expressions::
+* Nesting music expressions::
 * On the un-nestedness of brackets and ties::
 @end menu 
 @node Introduction to the LilyPond file structure
@@ -40,8 +40,8 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
-@node Nesting Music Expressions
-@subsection Nesting Music Expressions
+@node Nesting music expressions
+@subsection Nesting music expressions
 
 UNTRANSLATED NODE: IGNORE ME
 
@@ -113,7 +113,9 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@subsubsection Changing a single context
 @ 
+@subsubsection Changing all contexts of the same type
 @node Extending the templates
 @section Extending the templates
 
index f156a254c06d629e97a7076449ce825af7394550..dc9a122ee9ef79e7cb597d50e3516915c5339cf9 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -73,11 +73,11 @@ UNTRANSLATED NODE: IGNORE ME
 UNTRANSLATED NODE: IGNORE ME
 
 @menu 
-* Up and down::
+* Controlling direction::
 * Distances and measurements MAYBE MOVE::
 @end menu 
-@node Up and down
-@subsection Up and down
+@node Controlling direction
+@subsection Controlling direction
 
 UNTRANSLATED NODE: IGNORE ME
 
index 859b6b9611ee77f1617b1559a5e28d61e22a2aa9..590ffef5fdc980763e2bfda253e3c2684f225ef9 100644 (file)
@@ -8,6 +8,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Francisco Vila
+
 @ifclear INSTALL
 @node Install
 @chapter Install
index a4bc2088712c35aa65780093a0da76405b1b07a6..02f9a8809fece76e74303208a2ed797f35122d01 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -74,6 +74,10 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@subheading Format-specific instructions
+@subsubheading @LaTeX{}
+@subsubheading Texinfo
+@subheading Command line options
 @node Filename extensions
 @section Filename extensions
 
index 6e625330bc005bfdad4d00ceb5105c983f59b95c..456aea9525350de7ec5df5655fe38c94b7770d42 100644 (file)
@@ -9,7 +9,6 @@
 @settitle GNU LilyPond Learning Manual
 @documentencoding UTF-8
 @documentlanguage es
-@c TRANSLATE ME
 
 @iftex
 @afourpaper
@@ -30,6 +29,7 @@
 @omflanguage Spanish
 @end ignore
 
+@c Translators: Francisco Vila
 
 @ifhtml
 Este documento también está disponible como
index 7b7c6873a8709ac6e0327181577269499dbd2d75..30c2f701c305459965ca90628101263388edae04 100644 (file)
@@ -29,6 +29,7 @@
 @omflanguage English
 @end ignore
 
+@c Translators: Francisco Vila
 
 @ifhtml
 Este documento está disponible también en formato
index debfe8bec024bedf75ebe1c562d4499227d69bc0..0ac45d902bc758ecb41c3613b8a85832e1dc17b7 100644 (file)
@@ -59,6 +59,7 @@ Distributions will want to install lilypond.info in postinstall, doing:
 @omflanguage Spanish
 @end ignore
 
+@c Translators: Francisco Vila
 
 @ifhtml
 Este documento también está disponible como
index 1b412a21d623e33695b29feb3ba01427910717aa..9a28825111eb71a727490a00f07aa48952d7402b 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 8ddeab724a604aea78789e5c7a9ac3a5b8a627ef..715b03eb9eb4b533ecfe44bf6936a3394ccb532e 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 902e83b7619d89aef6cbe3a82a80431ea2ebafbb..273fc8e4c2c181ff2a6f1f51f712de491b80f564 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond-learning.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 66d8ee725a12949339331d743419bbf2c7773847..bc545d3835f7a0bd76c8025eba7bfe9bb0c59369 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 5a2beb9fbe0e28ed499f0191d16f7e2a5d86dee1
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -20,6 +20,7 @@ UNTRANSLATED NODE: IGNORE ME
 * Breaks::
 * Vertical spacing::
 * Horizontal spacing::
+* Page layout MOVED FROM LM::
 @end menu 
 @node Paper and pages
 @section Paper and pages
@@ -187,6 +188,43 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@node Page layout MOVED FROM LM
+@section Page layout MOVED FROM LM
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Introduction to layout::
+* Global sizes::
+* Line breaks::
+* Page breaks::
+* Fitting music onto fewer pages::
+@end menu 
+@node Introduction to layout
+@subsection Introduction to layout
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Global sizes
+@subsection Global sizes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Line breaks
+@subsection Line breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Page breaks
+@subsection Page breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fitting music onto fewer pages
+@subsection Fitting music onto fewer pages
+
+UNTRANSLATED NODE: IGNORE ME
+
 
 -- SKELETON FILE --
 When you actually translate this file, please remove these lines as
index 768671c422e4b22fc00c68e022e7c9697c17611d..bec2dc3506b22b68de9a45e1bce6b8d5dcd4b4b9 100644 (file)
@@ -7,6 +7,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Ancient notation
 @section Ancient notation
index 51d80c000b4a43f245e63d9bf0142a5b8e933418..ad1346ec933fbe7df9b2c4c4fe008eb41dc6dd40 100644 (file)
@@ -7,6 +7,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Bagpipes
 @section Bagpipes
index e394eadbdbb3d99e4f27769f1cce79084cf48ae2..57bd2ac9b7cee03b33004aef46fd4de4d9ed94cf 100644 (file)
@@ -7,10 +7,12 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Gilles Thibault
+
 @node Changing defaults
 @chapter Changing defaults
 
-
 LilyPond est conçu pour engendrer, par défaut, des partitions de la
 plus haute qualité.  Cependant, on peut parfois avoir à modifier cette
 mise en page par défaut.  Celle-ci est réglée par tout un ensemble de
index edac05330298da51412e6584bbaf539e33c85cbf..1f3f39143895534733e89f38d9b60499ebaeccd3 100644 (file)
@@ -7,6 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
 
 @c TODO: add tablature.
 
index 288efdb166dbe9d621235d710577126a62e51416..a378630f4701db3ac0620a669beea58cfa485c7d 100644 (file)
@@ -7,19 +7,29 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
-@node Chords Blah
-@section Chords Blah
+@node Chords
+@section Chords
 
 Intro text.
 
 @menu 
-* TODO chords fix::
+* Chords sections::
 @end menu
 
-@node TODO chords fix
-@subsection TODO chords fix
+@node Chords sections
+@subsection Chords sections
 
+@c awkard bit of English docs (not reproduced here):
+@c "A lead sheet" is shovved in here from the tutorial,
+@c before "Introducing chord names".
+@menu
+* Introducing chord names::     
+* Chords mode::                 
+* Printing chord names::        
+@end menu
 
 
 @c  awkward name; awkward section name.
index c9c711a4269ddb70d0146091272443c3aa4886fb..d47d50ee5f84242d0cccbd18fedf7b67b9d7f6ac 100644 (file)
@@ -3,11 +3,11 @@
 @ignore
     Translation of GIT committish: 27af34a245b02a6b89c9af3becefcfe676b2e19d
 
-
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Jean-Charles Malahieude
 
 @node Converting from other formats
 @chapter Converting from other formats
diff --git a/Documentation/fr/user/editorial.itely b/Documentation/fr/user/editorial.itely
new file mode 100644 (file)
index 0000000..e8d5093
--- /dev/null
@@ -0,0 +1,669 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: f7420240e4ce1fe2217646482a47d00f566af52c
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@c Translators: Jean-Charles Malahieude
+
+@node Educational use
+@section Educational use
+
+@menu
+* Note heads::                  
+* Inside the staff::            
+* Outside the staff::           
+@end menu
+
+
+@node Note heads
+@subsection Note heads
+
+@menu
+* Easy notation note heads::    
+* Shape note heads::            
+* Improvisation::               
+* Special noteheads::           
+@end menu
+
+@node Easy Notation note heads
+@unnumberedsubsubsec Easy Notation note heads
+
+@cindex tête de note, apprentissage
+@cindex notation facile
+@cindex Hal Leonard
+
+Les notes @q{easy play} comportent le nom de la note à l'intérieur de
+la tête.  On l'utilise dans des partitions pour débutants.
+
+@lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
+  \easyHeadsOn
+  c'2 e'4 f' | g'1
+@end lilypond
+
+La commande @code{\easyHeadsOn} remplace tous les réglages de l'objet
+@internalsref{NoteHead}.  L'impression doit être de plus grande
+taille, afin que les lettres soient lisibles.  Voir à ce propos
+@ref{Setting the staff size}.
+
+@refcommands
+
+@funindex \easyHeadsOn
+@code{\easyHeadsOn}
+
+
+@node Shape note heads
+@unnumberedsubsubsec Shape note heads
+
+@cindex tête de note, allure
+
+En notation profilée, le profil d'une tête de note correspond à la
+fonction harmonique de cette note dans la gamme.  Ce style de notation
+était très en vogue dans les recueils de chansons américains du XIXe
+siècle. 
+
+Des notes profilées sont produites après activation de
+@code{\aikenHeads} ou @code{\sacredHarpHeads}, selon le style.
+
+@lilypond[verbatim,relative=1,fragment]
+  \aikenHeads
+  c8 d4 e8 a2 g1
+  \sacredHarpHeads
+  c8 d4. e8 a2 g1
+@end lilypond
+
+Les profils sont déterminés par la hauteur dans la gamme, le premier
+degré étant défini par la commande @code{\key}. 
+
+@funindex \key
+@funindex shapeNoteStyles
+@funindex \aikenHeads
+@funindex \sacredHarpHeads
+
+Les notes profilées sont mises en œuvre par la propriété
+@code{shapeNoteStyles}, dont les valeurs sont constituées d'une liste
+de symboles.  Le n-ième élément indique le style à utiliser pour le
+n-ième degré de la gamme.  Toutes les combinaisons sont possibles :
+
+@lilypond[verbatim,relative=1,fragment]
+  \set shapeNoteStyles  = ##(cross triangle fa #f mensural xcircle diamond)
+  c8 d4. e8 a2 g1
+@end lilypond
+
+
+@node Improvisation
+@unnumberedsubsubsec Improvisation
+
+L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme
+allongée (@emph{slash}).  Ces têtes de notes sont créées  par
+l'adjonction du graveur @internalsref{Pitch_squash_engraver} au
+contexte @internalsref{Voice}, de telle sorte que la commande
+
+@example
+\set squashedPosition = #0
+\override NoteHead #'style = #'slash
+@end example
+
+@noindent
+active les notes penchées.
+
+Vous disposez des raccourcis @code{\improvisationOn} et son corollaire
+@code{\improvisationOff} pour cette séquence, comme l'illustre
+l'exemple ci dessous.
+
+@lilypond[verbatim,ragged-right,quote]
+\new Voice \with {
+  \consists Pitch_squash_engraver
+} \transpose c c' {
+  e8 e g a a16(bes)(a8) g \improvisationOn
+  e8
+  ~e2~e8 f4 fis8
+  ~fis2 \improvisationOff a16(bes) a8 g e
+}
+@end lilypond
+
+
+@node Special noteheads
+@unnumberedsubsubsec Special noteheads
+
+@cindex têtes de note, spéciales
+
+Certains instruments utilisent des têtes de note différentes à des
+fins spécifiques --- des croix pour le @q{parlato} des chanteurs ou les
+notes étouffées des guitares ; des losanges pour les harmoniques des
+cordes.  Il existe un raccourci (@code{\harmonic}) pour les notes en
+losange ; pour les autres styles de tête, il vous faudra jouer avec la
+propriété @code{NoteHead}.
+
+@lilypond[ragged-right,relative=1,fragment,verbatim,quote]
+c4 d
+\override NoteHead #'style = #'cross
+e f
+\revert NoteHead #'style
+e d <c f\harmonic> <d a'\harmonic>
+@end lilypond
+
+@noindent
+Pour une liste exhaustive des styles de tête de note, consultez 
+@ref{Note head styles}.
+
+
+@seealso
+
+Référence du programme : @internalsref{NoteHead}.
+
+
+@node Inside the staff
+@subsection Inside the staff
+
+
+@menu
+* Selecting notation font size::  
+* Fingering instructions::      
+* Hidden notes::                
+* Coloring objects::            
+* Parentheses::                 
+* Ambitus::                     
+* Stems::                       
+@end menu
+
+@node Selecting notation font size
+@unnumberedsubsubsec Selecting notation font size
+
+Le plus sûr moyen de régler la taille de la police, quelque soit le
+contexte, consiste à définir la propriété @code{fontSize}.
+
+@lilypond[quote,fragment,relative=1,verbatim]
+c8
+\set fontSize = #-4
+c f
+\set fontSize = #3
+g
+@end lilypond
+
+@noindent
+Ceci ne modifiera en rien la taille des différents symboles tels que
+ligatures ou liaisons.
+
+En interne, la propriété @code{fontSize} d'un contexte aura pour effet
+de définir la propriété @code{font-size} pour tous les objets de
+rendu.  La valeur de @code{font-size} est un entier représentant la
+taille proportionnellement à la hauteur standard de la portée en
+cours.  Chaque incrément correspond à une augmentation d'environ
+12@tie{}% de la taille de la police. Un pas de six aboutit exactement
+au doublement de la taille.  La fonction Scheme @code{magstep}
+convertit le nombre affecté à @code{font-size} en facteur d'échelle.
+Vous pouvez aussi définir directement la propriété @code{font-size} de
+manière à n'affecter seulement que certains objets de rendu.
+
+@lilypond[quote,fragment,relative=1,verbatim]
+c8
+\override NoteHead #'font-size = #-4
+c f
+\override NoteHead #'font-size = #3
+g
+@end lilypond
+
+Pour changer la taille des symboles musicaux (police Feta), LilyPond met
+à l'échelle la fonte dont la taille est la plus proche de la taille voulue ---
+cf. @ref{Setting the staff size}.  La taille standard, pour laquelle
+@code{font-size} vaut 0, dépend de la hauteur de la portée.  À une
+portée de 20 points correspond une police de 10 points.
+
+La propriété @code{font-size} ne peut intervenir que pour les objets
+qui utilisent des polices, autrement dit ceux qui disposent de
+l'interface de rendu @internalsref{font-interface}.
+
+@refcommands
+
+Les commandes suivantes définissent @code{fontSize} pour la voix en
+cours :
+
+@funindex \tiny
+@code{\tiny},
+@funindex \small
+@code{\small},
+@funindex \normalsize
+@code{\normalsize}.
+
+
+
+@node Fingering instructions
+@unnumberedsubsubsec Fingering instructions
+
+@cindex doigté
+@cindex substitution de doigt
+
+
+Les doigtés peuvent être indiqués comme suit :
+@example
+@var{note}-@var{chiffre_du_doigt}
+@end example
+Pour les substitutions de doigts, on a recours à une indication
+textuelle (commande @code{\markup}) de doigté
+(commande @code{\finger}).
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
+c4-1 c-2 c-3 c-4
+c^\markup { \finger "2 - 3" }
+@end lilypond
+
+
+La commande @code{\thumb} peut être utilisée pour indiquer, par exemple
+dans une partition de violoncelle, si une note doit être jouée avec le
+pouce (@q{thumb} en anglais).
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+<a_\thumb a'-3>8 <b_\thumb b'-3>
+@end lilypond
+
+
+Les doigtés des accords peuvent être saisis note par note,
+en les indiquant après chaque hauteur de note.
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+< c-1 e-2 g-3 b-5 >4
+@end lilypond
+
+
+@commonprop
+
+On peut contrôler précisément les doigtés des accords en réglant
+la propriété @code{fingeringOrientations}.
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
+\set fingeringOrientations = #'(left down)
+<c-1 es-2 g-4 bes-5 > 4
+\set fingeringOrientations = #'(up right down)
+<c-1 es-2 g-4 bes-5 > 4
+@end lilypond
+
+
+Cette propriété permet également, dans de la musique monophonique,
+d'indiquer des doigtés très proches des têtes de notes.
+
+@lilypond[verbatim,ragged-right,quote,fragment]
+\set fingeringOrientations = #'(right)
+<es'-2>4
+@end lilypond
+
+
+@seealso
+
+Référence du programme : @internalsref{Fingering}.
+
+D'autres exemples : @lsr{expressive,fingering-chords.ly}.
+
+
+@node Hidden notes
+@unnumberedsubsubsec Hidden notes
+
+@cindex Masquées, notes
+@cindex Invisibles, notes
+@cindex Transparentes, notes
+
+@funindex \hideNotes
+@funindex \unHideNotes
+Les notes masquées --- ou invisibles ou encore transparentes --- sont
+utiles dans le cadre d'exercices de théorie ou de composition.
+
+@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
+c4 d4
+\hideNotes
+e4 f4
+\unHideNotes
+g4 a
+@end lilypond
+
+
+@node Coloring objects
+@unnumberedsubsubsec Coloring objects
+
+Des objets peuvent être colorisés individuellement.  Une listes des
+noms des couleurs disponibles se trouvent à l'annexe @ref{List of colors}.
+
+@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
+\override NoteHead #'color = #red
+c4 c
+\override NoteHead #'color = #(x11-color 'LimeGreen)
+d
+\override Stem #'color = #blue
+e
+@end lilypond
+
+L'intégralité de la palette des couleurs définies pour X11 est
+accessible par la fonction Scheme x11-color.  Cette fonction prend
+en argument une expression symbolique
+
+@example
+\override Beam #'color = #(x11-color 'MediumTurquoise)
+@end example
+
+ou une chaîne de caractères
+
+@example
+\override Beam #'color = #(x11-color "MediumTurquoise")
+@end example
+
+La première formulation est à la fois plus rapide à écrire et aussi
+plus efficace.  Néanmoins, la deuxième forme permet d'accéder aux noms
+composés des couleurs de X11.
+
+@example
+\override Beam #'color = #(x11-color "medium turquoise")
+@end example
+
+Lorsque la fonction x11-color ne trouve pas le paramètre fourni, elle
+revient à la couleur par défaut, le noir.  Le problème ressort de
+façon évidente au vu de la partition finale.
+
+L'exemple suivant illustre l'utilisation de la fonction
+@code{x11-color}.  Notez que, après avoir été définie à (x11-color
+'Boggle), la couleur des hampes repasse au noir.
+
+@lilypond[quote,ragged-right,verbatim]
+{
+  \override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
+  \set Staff.instrumentName = \markup {
+    \with-color #(x11-color 'navy) "Clarinet"
+  }
+  \time 2/4
+  gis''8 a''
+  \override Beam #'color = #(x11-color "medium turquoise")
+  gis'' a''
+  \override NoteHead #'color = #(x11-color "LimeGreen")
+  gis'' a''
+  \override Stem #'color = #(x11-color 'Boggle)
+  gis'' a''
+}
+@end lilypond
+
+
+@seealso
+
+Annexes : @ref{List of colors}.
+
+
+@refbugs
+Les couleurs de X11 ne sont pas toutes perceptibles dans un navigateur
+internet.  Aussi nous vous recommandons, dans le cadre d'une
+présentation multimedia, d'utiliser des couleurs de base.
+
+Une couleur x11 n'aura pas forcément le même rendu qu'une couleur
+normale ayant un nom similaire.
+
+Vous ne pouvez pas coloriser des notes à l'intérieur d'un accord avec
+@code{\override}. si besoin est, utilisez @code{\tweak}.  
+Pour plus de détails, consultez @ref{Objects connected to the input}.
+
+
+@node Parentheses
+@unnumberedsubsubsec Parentheses
+
+@cindex fantômes, notes
+@cindex notes fantômes
+@cindex parenthèses, notes entre
+
+Des objets peuvent être mis entre parenthèses en saisissant
+@code{\parenthesize} juste avant l'événement musical.
+
+@lilypond[relative=2,fragment,verbatim,ragged-right]
+<
+  c
+  \parenthesize d
+  g
+>4-\parenthesize -.
+@end lilypond
+
+Ceci n'est opérationnel que dans le cadre d'un accord, qui peut ne
+comprendre qu'une seule note.
+
+@example
+< \parenthesize NOTE>
+@end example
+
+
+@node Ambitus
+@unnumberedsubsubsec Ambitus
+@cindex ambitus
+
+L'@emph{ambitus} est l'amplitude des hauteurs d'une voix donnée dans une
+partition.  Ce terme peut aussi désigner la tessiture qu'un instrument
+est capable d'atteindre.  Souvent, cet ambitus est imprimé au début des
+partitions vocales, afin que les exécutants puissent voir au premier
+coup d'oeil s'ils sont en mesure de tenir la partie en question.
+
+Pour exprimer l'ambitus d'une pièce, on indique avant la clé deux notes
+représentant la hauteur la plus basse et la plus haute.  Pour imprimer
+cet ambitus, il faut ajouter le graveur @internalsref{Ambitus_engraver}
+au contexte @internalsref{Voice}.  Ainsi,
+
+@example
+\layout @{
+  \context @{
+    \Voice
+    \consists Ambitus_engraver
+  @}
+@}
+@end example
+
+@noindent
+donne pour résultat
+
+@lilypond[quote,ragged-right]
+\layout {
+  \context {
+    \Staff
+    \consists Ambitus_engraver
+  }
+}
+
+\relative \new Staff {
+  as'' c e2 cis,2
+}
+@end lilypond
+
+Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
+graveur @internalsref{Ambitus_engraver} au contexte @internalsref{Staff}
+plutôt qu'au contexte @internalsref{Voice} ; l'ambitus affiché sera
+alors celui de toutes les voix cumulées, non d'une seule des voix
+actives.
+
+@lilypond[verbatim,ragged-right,quote]
+\new Staff \with {
+  \consists "Ambitus_engraver"
+}
+<<
+  \new Voice \with {
+    \remove "Ambitus_engraver"
+  } \relative c'' {
+    \override Ambitus #'X-offset = #-1.0
+    \voiceOne
+    c4 a d e f2
+  }
+  \new Voice \with {
+    \remove "Ambitus_engraver"
+  } \relative c' {
+    \voiceTwo
+    es4 f g as b2
+  }
+>>
+@end lilypond
+
+@noindent
+Cet exemple met en œuvre une fonctionnalité avancée :
+
+@example
+\override Ambitus #'X-offset = #-1.0
+@end example
+
+@noindent
+Ce réglage déplace l'ambitus vers la gauche.  Le même résultat aurait pu
+être obtenu avec @code{extra-offset}, mais alors le système de mise en
+forme n'aurait pas attribué d'espace supplémentaire pour l'objet
+déplacé.
+
+@seealso
+
+Référence du programme : @internalsref{Ambitus},
+@internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead},
+@internalsref{AmbitusAccidental}.
+
+Exemples :
+@lsr{vocal,ambitus@/.ly}.
+
+@refbugs
+
+LilyPond ne gère pas les collisions entre plusieurs ambitus présents sur
+une même portée.
+
+
+@node Stems
+@unnumberedsubsubsec Stems
+
+Dès qu'une note est rencontrée, un objet @internalsref{Stem} se crée
+automatiquement.  Pour les rondes et les silences, ils sont aussi
+créés, mais en mode invisible.
+
+@refcommands
+
+@funindex \stemUp
+@code{\stemUp},
+@funindex \stemDown
+@code{\stemDown},
+@funindex \stemNeutral
+@code{\stemNeutral}.
+
+
+@commonprop
+
+Pour changer la direction des hampes au milieu de la portée, utilisez
+
+@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+a4 b c b
+\override Stem #'neutral-direction = #up
+a4 b c b
+\override Stem #'neutral-direction = #down
+a4 b c b
+@end lilypond
+
+
+@node Outside the staff
+@subsection Outside the staff
+
+
+@menu
+* Balloon help::                
+* Grid lines::                  
+* Blank music sheet::           
+@end menu
+
+@node Balloon help
+@subsection Balloon help
+
+Vous pouvez marquer et nommer des éléments de notation à l'aide de
+bulles.  L'objectif premier de cette fonctionnalité est d'expliquer la
+notation. 
+
+En voici un exemple :
+@c KEEP LY
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\new Voice \with { \consists "Balloon_engraver" }
+{
+  \balloonGrobText #'Stem #'(3 . 4) \markup { "Je suis une hampe" }
+  <c-\balloonText #'(-2 . -2) \markup { Hello }  >8
+}
+@end lilypond
+
+@noindent
+Vous disposez de deux fonctions musicales, @code{balloonText} et
+@code{balloonGrobText}.  @code{balloonGrobText} prend en argument
+l'objet graphique à agrémenter, alors que @code{balloonText} s'utilise
+comme une simple articulation.  Les autres arguments sont le décalage
+et le texte de la bulle.
+
+@cindex bulles
+@cindex notation, expliquer
+
+@seealso
+
+Référence du programme : @internalsref{text-balloon-interface}.
+
+
+@node Grid lines
+@subsection Grid lines
+
+Vous pouvez tracer des lignes entre les portées, synchronisées avec
+les notes.
+@c KEEP LY
+@lilypond[ragged-right,quote,verbatim]
+\layout {
+  \context {
+    \Staff
+    \consists "Grid_point_engraver" %% active les guides
+    gridInterval = #(ly:make-moment 1 4)
+  }
+}
+
+\new Score \with {
+  \consists "Grid_line_span_engraver"
+  %% centre les lignes guides horizontalement sous les notes
+  \override NoteColumn #'X-offset = #-0.5
+}
+
+\new ChoirStaff <<
+  \new Staff {
+    \stemUp
+    \relative {
+      c'4. d8 e8 f g4
+    }
+  }
+  \new Staff {
+    %% centre les lignes guides verticalement
+    \override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
+    \stemDown
+    \clef bass
+    \relative c {
+      c4  g'  f  e
+    }
+  }
+>>
+@end lilypond
+
+Exemples : @lsrdir{education}
+
+
+@node Blank music sheet
+@subsection Blank music sheet
+
+@cindex Papier musique
+@cindex Portées, feuille blanche
+
+Une feuille de papier musique s'obtient en utilisant des notes
+invisibles, et en invalidant le @code{Bar_number_engraver}.
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+\layout{ indent = #0 }
+emptymusic = {
+  \repeat unfold 2 % À modifier pour plus de lignes.
+  { s1\break }
+  \bar "|."
+}
+\new Score \with {
+  \override TimeSignature #'transparent = ##t
+% décommenter la  ligne suivante selon besoin
+%  \override Clef #'transparent = ##t
+  defaultBarType = #""
+  \remove Bar_number_engraver
+} <<
+
+% à adapter selon les portées désirées
+  \new Staff \emptymusic
+  \new TabStaff \emptymusic
+>>
+@end lilypond
+
+
diff --git a/Documentation/fr/user/educational.itely b/Documentation/fr/user/educational.itely
deleted file mode 100644 (file)
index 9b39c56..0000000
+++ /dev/null
@@ -1,667 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
-@ignore
-    Translation of GIT committish: f7420240e4ce1fe2217646482a47d00f566af52c
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
-@end ignore
-
-@node Educational use
-@section Educational use
-
-@menu
-* Note heads::                  
-* Inside the staff::            
-* Outside the staff::           
-@end menu
-
-
-@node Note heads
-@subsection Note heads
-
-@menu
-* Easy notation note heads::    
-* Shape note heads::            
-* Improvisation::               
-* Special noteheads::           
-@end menu
-
-@node Easy Notation note heads
-@unnumberedsubsubsec Easy Notation note heads
-
-@cindex tête de note, apprentissage
-@cindex notation facile
-@cindex Hal Leonard
-
-Les notes @q{easy play} comportent le nom de la note à l'intérieur de
-la tête.  On l'utilise dans des partitions pour débutants.
-
-@lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
-  \easyHeadsOn
-  c'2 e'4 f' | g'1
-@end lilypond
-
-La commande @code{\easyHeadsOn} remplace tous les réglages de l'objet
-@internalsref{NoteHead}.  L'impression doit être de plus grande
-taille, afin que les lettres soient lisibles.  Voir à ce propos
-@ref{Setting the staff size}.
-
-@refcommands
-
-@funindex \easyHeadsOn
-@code{\easyHeadsOn}
-
-
-@node Shape note heads
-@unnumberedsubsubsec Shape note heads
-
-@cindex tête de note, allure
-
-En notation profilée, le profil d'une tête de note correspond à la
-fonction harmonique de cette note dans la gamme.  Ce style de notation
-était très en vogue dans les recueils de chansons américains du XIXe
-siècle. 
-
-Des notes profilées sont produites après activation de
-@code{\aikenHeads} ou @code{\sacredHarpHeads}, selon le style.
-
-@lilypond[verbatim,relative=1,fragment]
-  \aikenHeads
-  c8 d4 e8 a2 g1
-  \sacredHarpHeads
-  c8 d4. e8 a2 g1
-@end lilypond
-
-Les profils sont déterminés par la hauteur dans la gamme, le premier
-degré étant défini par la commande @code{\key}. 
-
-@funindex \key
-@funindex shapeNoteStyles
-@funindex \aikenHeads
-@funindex \sacredHarpHeads
-
-Les notes profilées sont mises en œuvre par la propriété
-@code{shapeNoteStyles}, dont les valeurs sont constituées d'une liste
-de symboles.  Le n-ième élément indique le style à utiliser pour le
-n-ième degré de la gamme.  Toutes les combinaisons sont possibles :
-
-@lilypond[verbatim,relative=1,fragment]
-  \set shapeNoteStyles  = ##(cross triangle fa #f mensural xcircle diamond)
-  c8 d4. e8 a2 g1
-@end lilypond
-
-
-@node Improvisation
-@unnumberedsubsubsec Improvisation
-
-L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme
-allongée (@emph{slash}).  Ces têtes de notes sont créées  par
-l'adjonction du graveur @internalsref{Pitch_squash_engraver} au
-contexte @internalsref{Voice}, de telle sorte que la commande
-
-@example
-\set squashedPosition = #0
-\override NoteHead #'style = #'slash
-@end example
-
-@noindent
-active les notes penchées.
-
-Vous disposez des raccourcis @code{\improvisationOn} et son corollaire
-@code{\improvisationOff} pour cette séquence, comme l'illustre
-l'exemple ci dessous.
-
-@lilypond[verbatim,ragged-right,quote]
-\new Voice \with {
-  \consists Pitch_squash_engraver
-} \transpose c c' {
-  e8 e g a a16(bes)(a8) g \improvisationOn
-  e8
-  ~e2~e8 f4 fis8
-  ~fis2 \improvisationOff a16(bes) a8 g e
-}
-@end lilypond
-
-
-@node Special noteheads
-@unnumberedsubsubsec Special noteheads
-
-@cindex têtes de note, spéciales
-
-Certains instruments utilisent des têtes de note différentes à des
-fins spécifiques --- des croix pour le @q{parlato} des chanteurs ou les
-notes étouffées des guitares ; des losanges pour les harmoniques des
-cordes.  Il existe un raccourci (@code{\harmonic}) pour les notes en
-losange ; pour les autres styles de tête, il vous faudra jouer avec la
-propriété @code{NoteHead}.
-
-@lilypond[ragged-right,relative=1,fragment,verbatim,quote]
-c4 d
-\override NoteHead #'style = #'cross
-e f
-\revert NoteHead #'style
-e d <c f\harmonic> <d a'\harmonic>
-@end lilypond
-
-@noindent
-Pour une liste exhaustive des styles de tête de note, consultez 
-@ref{Note head styles}.
-
-
-@seealso
-
-Référence du programme : @internalsref{NoteHead}.
-
-
-@node Inside the staff
-@subsection Inside the staff
-
-
-@menu
-* Selecting notation font size::  
-* Fingering instructions::      
-* Hidden notes::                
-* Coloring objects::            
-* Parentheses::                 
-* Ambitus::                     
-* Stems::                       
-@end menu
-
-@node Selecting notation font size
-@unnumberedsubsubsec Selecting notation font size
-
-Le plus sûr moyen de régler la taille de la police, quelque soit le
-contexte, consiste à définir la propriété @code{fontSize}.
-
-@lilypond[quote,fragment,relative=1,verbatim]
-c8
-\set fontSize = #-4
-c f
-\set fontSize = #3
-g
-@end lilypond
-
-@noindent
-Ceci ne modifiera en rien la taille des différents symboles tels que
-ligatures ou liaisons.
-
-En interne, la propriété @code{fontSize} d'un contexte aura pour effet
-de définir la propriété @code{font-size} pour tous les objets de
-rendu.  La valeur de @code{font-size} est un entier représentant la
-taille proportionnellement à la hauteur standard de la portée en
-cours.  Chaque incrément correspond à une augmentation d'environ
-12@tie{}% de la taille de la police. Un pas de six aboutit exactement
-au doublement de la taille.  La fonction Scheme @code{magstep}
-convertit le nombre affecté à @code{font-size} en facteur d'échelle.
-Vous pouvez aussi définir directement la propriété @code{font-size} de
-manière à n'affecter seulement que certains objets de rendu.
-
-@lilypond[quote,fragment,relative=1,verbatim]
-c8
-\override NoteHead #'font-size = #-4
-c f
-\override NoteHead #'font-size = #3
-g
-@end lilypond
-
-Pour changer la taille des symboles musicaux (police Feta), LilyPond met
-à l'échelle la fonte dont la taille est la plus proche de la taille voulue ---
-cf. @ref{Setting the staff size}.  La taille standard, pour laquelle
-@code{font-size} vaut 0, dépend de la hauteur de la portée.  À une
-portée de 20 points correspond une police de 10 points.
-
-La propriété @code{font-size} ne peut intervenir que pour les objets
-qui utilisent des polices, autrement dit ceux qui disposent de
-l'interface de rendu @internalsref{font-interface}.
-
-@refcommands
-
-Les commandes suivantes définissent @code{fontSize} pour la voix en
-cours :
-
-@funindex \tiny
-@code{\tiny},
-@funindex \small
-@code{\small},
-@funindex \normalsize
-@code{\normalsize}.
-
-
-
-@node Fingering instructions
-@unnumberedsubsubsec Fingering instructions
-
-@cindex doigté
-@cindex substitution de doigt
-
-
-Les doigtés peuvent être indiqués comme suit :
-@example
-@var{note}-@var{chiffre_du_doigt}
-@end example
-Pour les substitutions de doigts, on a recours à une indication
-textuelle (commande @code{\markup}) de doigté
-(commande @code{\finger}).
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
-c4-1 c-2 c-3 c-4
-c^\markup { \finger "2 - 3" }
-@end lilypond
-
-
-La commande @code{\thumb} peut être utilisée pour indiquer, par exemple
-dans une partition de violoncelle, si une note doit être jouée avec le
-pouce (@q{thumb} en anglais).
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-<a_\thumb a'-3>8 <b_\thumb b'-3>
-@end lilypond
-
-
-Les doigtés des accords peuvent être saisis note par note,
-en les indiquant après chaque hauteur de note.
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-< c-1 e-2 g-3 b-5 >4
-@end lilypond
-
-
-@commonprop
-
-On peut contrôler précisément les doigtés des accords en réglant
-la propriété @code{fingeringOrientations}.
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
-\set fingeringOrientations = #'(left down)
-<c-1 es-2 g-4 bes-5 > 4
-\set fingeringOrientations = #'(up right down)
-<c-1 es-2 g-4 bes-5 > 4
-@end lilypond
-
-
-Cette propriété permet également, dans de la musique monophonique,
-d'indiquer des doigtés très proches des têtes de notes.
-
-@lilypond[verbatim,ragged-right,quote,fragment]
-\set fingeringOrientations = #'(right)
-<es'-2>4
-@end lilypond
-
-
-@seealso
-
-Référence du programme : @internalsref{Fingering}.
-
-D'autres exemples : @lsr{expressive,fingering-chords.ly}.
-
-
-@node Hidden notes
-@unnumberedsubsubsec Hidden notes
-
-@cindex Masquées, notes
-@cindex Invisibles, notes
-@cindex Transparentes, notes
-
-@funindex \hideNotes
-@funindex \unHideNotes
-Les notes masquées --- ou invisibles ou encore transparentes --- sont
-utiles dans le cadre d'exercices de théorie ou de composition.
-
-@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
-c4 d4
-\hideNotes
-e4 f4
-\unHideNotes
-g4 a
-@end lilypond
-
-
-@node Coloring objects
-@unnumberedsubsubsec Coloring objects
-
-Des objets peuvent être colorisés individuellement.  Une listes des
-noms des couleurs disponibles se trouvent à l'annexe @ref{List of colors}.
-
-@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\override NoteHead #'color = #red
-c4 c
-\override NoteHead #'color = #(x11-color 'LimeGreen)
-d
-\override Stem #'color = #blue
-e
-@end lilypond
-
-L'intégralité de la palette des couleurs définies pour X11 est
-accessible par la fonction Scheme x11-color.  Cette fonction prend
-en argument une expression symbolique
-
-@example
-\override Beam #'color = #(x11-color 'MediumTurquoise)
-@end example
-
-ou une chaîne de caractères
-
-@example
-\override Beam #'color = #(x11-color "MediumTurquoise")
-@end example
-
-La première formulation est à la fois plus rapide à écrire et aussi
-plus efficace.  Néanmoins, la deuxième forme permet d'accéder aux noms
-composés des couleurs de X11.
-
-@example
-\override Beam #'color = #(x11-color "medium turquoise")
-@end example
-
-Lorsque la fonction x11-color ne trouve pas le paramètre fourni, elle
-revient à la couleur par défaut, le noir.  Le problème ressort de
-façon évidente au vu de la partition finale.
-
-L'exemple suivant illustre l'utilisation de la fonction
-@code{x11-color}.  Notez que, après avoir été définie à (x11-color
-'Boggle), la couleur des hampes repasse au noir.
-
-@lilypond[quote,ragged-right,verbatim]
-{
-  \override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
-  \set Staff.instrumentName = \markup {
-    \with-color #(x11-color 'navy) "Clarinet"
-  }
-  \time 2/4
-  gis''8 a''
-  \override Beam #'color = #(x11-color "medium turquoise")
-  gis'' a''
-  \override NoteHead #'color = #(x11-color "LimeGreen")
-  gis'' a''
-  \override Stem #'color = #(x11-color 'Boggle)
-  gis'' a''
-}
-@end lilypond
-
-
-@seealso
-
-Annexes : @ref{List of colors}.
-
-
-@refbugs
-Les couleurs de X11 ne sont pas toutes perceptibles dans un navigateur
-internet.  Aussi nous vous recommandons, dans le cadre d'une
-présentation multimedia, d'utiliser des couleurs de base.
-
-Une couleur x11 n'aura pas forcément le même rendu qu'une couleur
-normale ayant un nom similaire.
-
-Vous ne pouvez pas coloriser des notes à l'intérieur d'un accord avec
-@code{\override}. si besoin est, utilisez @code{\tweak}.  
-Pour plus de détails, consultez @ref{Objects connected to the input}.
-
-
-@node Parentheses
-@unnumberedsubsubsec Parentheses
-
-@cindex fantômes, notes
-@cindex notes fantômes
-@cindex parenthèses, notes entre
-
-Des objets peuvent être mis entre parenthèses en saisissant
-@code{\parenthesize} juste avant l'événement musical.
-
-@lilypond[relative=2,fragment,verbatim,ragged-right]
-<
-  c
-  \parenthesize d
-  g
->4-\parenthesize -.
-@end lilypond
-
-Ceci n'est opérationnel que dans le cadre d'un accord, qui peut ne
-comprendre qu'une seule note.
-
-@example
-< \parenthesize NOTE>
-@end example
-
-
-@node Ambitus
-@unnumberedsubsubsec Ambitus
-@cindex ambitus
-
-L'@emph{ambitus} est l'amplitude des hauteurs d'une voix donnée dans une
-partition.  Ce terme peut aussi désigner la tessiture qu'un instrument
-est capable d'atteindre.  Souvent, cet ambitus est imprimé au début des
-partitions vocales, afin que les exécutants puissent voir au premier
-coup d'oeil s'ils sont en mesure de tenir la partie en question.
-
-Pour exprimer l'ambitus d'une pièce, on indique avant la clé deux notes
-représentant la hauteur la plus basse et la plus haute.  Pour imprimer
-cet ambitus, il faut ajouter le graveur @internalsref{Ambitus_engraver}
-au contexte @internalsref{Voice}.  Ainsi,
-
-@example
-\layout @{
-  \context @{
-    \Voice
-    \consists Ambitus_engraver
-  @}
-@}
-@end example
-
-@noindent
-donne pour résultat
-
-@lilypond[quote,ragged-right]
-\layout {
-  \context {
-    \Staff
-    \consists Ambitus_engraver
-  }
-}
-
-\relative \new Staff {
-  as'' c e2 cis,2
-}
-@end lilypond
-
-Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
-graveur @internalsref{Ambitus_engraver} au contexte @internalsref{Staff}
-plutôt qu'au contexte @internalsref{Voice} ; l'ambitus affiché sera
-alors celui de toutes les voix cumulées, non d'une seule des voix
-actives.
-
-@lilypond[verbatim,ragged-right,quote]
-\new Staff \with {
-  \consists "Ambitus_engraver"
-}
-<<
-  \new Voice \with {
-    \remove "Ambitus_engraver"
-  } \relative c'' {
-    \override Ambitus #'X-offset = #-1.0
-    \voiceOne
-    c4 a d e f2
-  }
-  \new Voice \with {
-    \remove "Ambitus_engraver"
-  } \relative c' {
-    \voiceTwo
-    es4 f g as b2
-  }
->>
-@end lilypond
-
-@noindent
-Cet exemple met en œuvre une fonctionnalité avancée :
-
-@example
-\override Ambitus #'X-offset = #-1.0
-@end example
-
-@noindent
-Ce réglage déplace l'ambitus vers la gauche.  Le même résultat aurait pu
-être obtenu avec @code{extra-offset}, mais alors le système de mise en
-forme n'aurait pas attribué d'espace supplémentaire pour l'objet
-déplacé.
-
-@seealso
-
-Référence du programme : @internalsref{Ambitus},
-@internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead},
-@internalsref{AmbitusAccidental}.
-
-Exemples :
-@lsr{vocal,ambitus@/.ly}.
-
-@refbugs
-
-LilyPond ne gère pas les collisions entre plusieurs ambitus présents sur
-une même portée.
-
-
-@node Stems
-@unnumberedsubsubsec Stems
-
-Dès qu'une note est rencontrée, un objet @internalsref{Stem} se crée
-automatiquement.  Pour les rondes et les silences, ils sont aussi
-créés, mais en mode invisible.
-
-@refcommands
-
-@funindex \stemUp
-@code{\stemUp},
-@funindex \stemDown
-@code{\stemDown},
-@funindex \stemNeutral
-@code{\stemNeutral}.
-
-
-@commonprop
-
-Pour changer la direction des hampes au milieu de la portée, utilisez
-
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-a4 b c b
-\override Stem #'neutral-direction = #up
-a4 b c b
-\override Stem #'neutral-direction = #down
-a4 b c b
-@end lilypond
-
-
-@node Outside the staff
-@subsection Outside the staff
-
-
-@menu
-* Balloon help::                
-* Grid lines::                  
-* Blank music sheet::           
-@end menu
-
-@node Balloon help
-@subsection Balloon help
-
-Vous pouvez marquer et nommer des éléments de notation à l'aide de
-bulles.  L'objectif premier de cette fonctionnalité est d'expliquer la
-notation. 
-
-En voici un exemple :
-@c KEEP LY
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\new Voice \with { \consists "Balloon_engraver" }
-{
-  \balloonGrobText #'Stem #'(3 . 4) \markup { "Je suis une hampe" }
-  <c-\balloonText #'(-2 . -2) \markup { Hello }  >8
-}
-@end lilypond
-
-@noindent
-Vous disposez de deux fonctions musicales, @code{balloonText} et
-@code{balloonGrobText}.  @code{balloonGrobText} prend en argument
-l'objet graphique à agrémenter, alors que @code{balloonText} s'utilise
-comme une simple articulation.  Les autres arguments sont le décalage
-et le texte de la bulle.
-
-@cindex bulles
-@cindex notation, expliquer
-
-@seealso
-
-Référence du programme : @internalsref{text-balloon-interface}.
-
-
-@node Grid lines
-@subsection Grid lines
-
-Vous pouvez tracer des lignes entre les portées, synchronisées avec
-les notes.
-@c KEEP LY
-@lilypond[ragged-right,quote,verbatim]
-\layout {
-  \context {
-    \Staff
-    \consists "Grid_point_engraver" %% active les guides
-    gridInterval = #(ly:make-moment 1 4)
-  }
-}
-
-\new Score \with {
-  \consists "Grid_line_span_engraver"
-  %% centre les lignes guides horizontalement sous les notes
-  \override NoteColumn #'X-offset = #-0.5
-}
-
-\new ChoirStaff <<
-  \new Staff {
-    \stemUp
-    \relative {
-      c'4. d8 e8 f g4
-    }
-  }
-  \new Staff {
-    %% centre les lignes guides verticalement
-    \override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
-    \stemDown
-    \clef bass
-    \relative c {
-      c4  g'  f  e
-    }
-  }
->>
-@end lilypond
-
-Exemples : @lsrdir{education}
-
-
-@node Blank music sheet
-@subsection Blank music sheet
-
-@cindex Papier musique
-@cindex Portées, feuille blanche
-
-Une feuille de papier musique s'obtient en utilisant des notes
-invisibles, et en invalidant le @code{Bar_number_engraver}.
-
-@c KEEP LY
-@lilypond[quote,verbatim]
-\layout{ indent = #0 }
-emptymusic = {
-  \repeat unfold 2 % À modifier pour plus de lignes.
-  { s1\break }
-  \bar "|."
-}
-\new Score \with {
-  \override TimeSignature #'transparent = ##t
-% décommenter la  ligne suivante selon besoin
-%  \override Clef #'transparent = ##t
-  defaultBarType = #""
-  \remove Bar_number_engraver
-} <<
-
-% à adapter selon les portées désirées
-  \new Staff \emptymusic
-  \new TabStaff \emptymusic
->>
-@end lilypond
-
-
index f93caa44e54b6f7b4ed9c5fca7d80e9ebcc55b13..bc069c6f6919bb3c1909767f87419c56d5c445ab 100644 (file)
@@ -6,6 +6,10 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
+
+
 @node Expressive marks
 @section Expressive marks
 
index 9f65c9054e6f0f52ac61c47b9c813af88b3bce57..764d7e679fc312f9110570bcb09e39b751aec71f 100644 (file)
@@ -7,6 +7,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Fundamental concepts
 @chapter Fundamental concepts
index 62aec56c2e37f56a9f1c6b675df7740817111981..99439c8647d3f726b4f732d1e1d825d33c54fb88 100644 (file)
@@ -7,6 +7,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Guitar
 @section Guitar
 @cindex tablature de guitare
 
 @menu 
-* Guitar TODO::
+* Guitar sections::
 @end menu
 
-@node Guitar TODO
-@subsection Guitar TODO
+@node Guitar sections
+@subsection Guitar sections
 
-@menu 
+@menu
 * String number indications::
 * Tablatures basic::
 * Non-guitar tablatures::
index a66a0813ef43545c6db8d75e1bb1ecc59e0ad8a2..95e6ff948f647a08207927c8d59893c2b65684f1 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -73,11 +73,11 @@ UNTRANSLATED NODE: IGNORE ME
 UNTRANSLATED NODE: IGNORE ME
 
 @menu 
-* Up and down::
+* Controlling direction::
 * Distances and measurements MAYBE MOVE::
 @end menu 
-@node Up and down
-@subsection Up and down
+@node Controlling direction
+@subsection Controlling direction
 
 UNTRANSLATED NODE: IGNORE ME
 
index 6b2545a3ac140aa55c7cbf52e7555d7082f13667..5c4fd589f2ef1d725ab45cf61cb2a0870d6a9778 100644 (file)
@@ -7,6 +7,10 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Ludovic Sardain, John Mandereau
+@c Translation checkers: Jean-Charles Malahieude, Jean-Yves Baudais
+
+
 @node Introduction
 @chapter Introduction
 
index 28bea5e50510f8175473ed6f11a4f967ec6caeb0..223a39199caaf680ac9f59008945e9f5f8c408c8 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -74,6 +74,10 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@subheading Format-specific instructions
+@subsubheading @LaTeX{}
+@subsubheading Texinfo
+@subheading Command line options
 @node Filename extensions
 @section Filename extensions
 
index 29dbb2a076e4e01c3d321c6a555acd904b3c184d..2d028fd15282d58f36567c7fae405ae2ec8ba346 100644 (file)
@@ -29,6 +29,7 @@
 @omflanguage French
 @end ignore
 
+@c Translators: John Mandereau
 
 @ifhtml
 Ce document est également disponible au format
index 024572dc05c0514655787ef361089f620570de38..a496a9f505c2d107a73703a62fc77dc4025ee0eb 100644 (file)
@@ -28,6 +28,8 @@
 @omflanguage French
 @end ignore
 
+@c Translators: John Mandereau
+
 @ifhtml
 Ce document est également disponible au format
 @uref{source/Documentation/user/lilypond-program.fr.pdf,PDF}.
index b646fa6b5c4119d1770196125d83e984233c00b1..c03bcd60a43fc411e645b032edefc143238949fd 100644 (file)
@@ -30,6 +30,8 @@
 @omflanguage French
 @end ignore
 
+@c Translators: John Mandereau
+
 @ifhtml
 Ce document est également disponible au format
 @uref{source/Documentation/user/lilypond.fr.pdf,PDF}.
index bb6a03b07eec8c38917045476fd17844de009416..83deae3addebe45b720a91b4c60b58dfb4d7bcb4 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 7e6e7bbfc4a5cf2acbba1abb32f32eedadeb2068..c9e45a13ca4809fcd9e3e0be11d0c8991e67f0c2 100644 (file)
@@ -8,6 +8,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Jean-Charles Malahieude
 
 @node Non-musical notation
 @chapter Non-musical notation
index 0738f95bff50664253101c6bca9a8f743eede324..ced4b2254e4f1b58aeacf54c3dbcb324f6f7c31b 100644 (file)
@@ -7,6 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Frédéric Chiasson, Jean-Charles Malahieude
 
 @node Notation manual tables
 @appendix Notation manual tables
index 93fddb97cc8b608477555ac86d666ee3beff1bb4..23da2555d6d177203c2ad5d4c58404de0344fddc 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: 1859194a9f46a8886166cafee0e450b39fc5a963
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -9,17 +9,17 @@
 @node Musical notation
 @chapter Musical notation
 
-This chapter explains how to create musical notation.
+Ce chapitre explique comment créer la notation musicale standard.
 
 @menu
-* Pitches::            Writing and display the pitches of notes.
-* Rhythms::            Writing and displaying the durations of notes.
-* Expressive marks::   Adding expression to notes.
-* Repeats::            Repeat music.
-* Simultaneous notes:: More than one note at once.
-* Staff notation::     Displaying staves.
-* Educational use::    Special notation to increase legibility.
-* Text::               Adding text to scores.
+* Pitches::            écriture et gravure des hauteurs de note.
+* Rhythms::            écriture et gravure des durées.
+* Expressive marks::   ajout de signes d'exécution et d'interprétation.
+* Repeats::            différents types de répétitions de musique.
+* Simultaneous notes:: polyphonie et accords.
+* Staff notation::     gravure de la portée.
+* Editorial annotations:: annotations d'édition ou à usage pédagogique.
+* Text::               ajout de texte à la partition.
 @end menu
 
 @include pitches.itely
@@ -28,6 +28,6 @@ This chapter explains how to create musical notation.
 @include repeats.itely
 @include simultaneous.itely
 @include staff.itely
-@include educational.itely
+@include editorial.itely
 @include text.itely
 
index b5e989bd0e57fece64f1843210fa36e3ac94e22f..8977ea0543213c548664c99c592b0b5a7f047cd0 100644 (file)
@@ -7,16 +7,18 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Percussion
 @section Percussion
 
-@menu 
-* TODO percussion node fix::
+@menu
+* Percussion sections::
 @end menu
 
-@node TODO percussion node fix
-@subsection TODO percussion node fix
+@node Percussion sections
+@subsection Percussion sections
 
 La notation rythmique sert avant tout aux parties de percussions ou de
 batterie, mais on peut aussi s'en servir à des fins pédagogiques, pour
index 962cb0631f4c83ac2441a7e3ca609fb7bf84f6d0..6c372f260f790b3957a19841395bae806cbf4894 100644 (file)
@@ -7,16 +7,18 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Piano music
 @section Piano music
 
 @menu 
-* TODO piano node fix::
+* Piano sections::
 @end menu
 
-@node TODO piano node fix
-@subsection TODO piano node fix
+@node Piano sections
+@subsection Piano sections
 
 Les systèmes de piano comprennent deux portées réunies par une accolade.
 Les portées sont largement autonomes, mais il arrive que des voix passent
index 68c6bd0af19b5741ce8e1d4bec4496efbec55faf..e7782818d6e6eb7783ca03add8f45ae5a37eb884 100644 (file)
@@ -6,6 +6,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Frédéric Chiasson
+@c Translation checkers: Valentin Villenave, Jean-Charles Malahieude
+
 @node Pitches
 @section Pitches
 
index b2868fe4d2fe85344564b9061b70078a50672042..f17c5130933da2f24c489f26cba4cf8009078fd3 100644 (file)
@@ -7,6 +7,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Ludovic Sardain
+
 @node Preface
 @unnumbered Preface
 
index d6bb38e195ea7d643ae3af00cdf4881dddb2442f..8cfe27f740540ed1aad79a09326829394199b7c3 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 4961e763c1816412e0b110b00a79ab04aa25dd6c..494a1efb9d6a11d59b9141f2bd86cf2b8940eebd 100644 (file)
@@ -6,6 +6,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
+
 @node Repeats
 @section Repeats
 
index 1acb7ef84c4e2b95129c04a6f00d84bb3795fe8a..4675e288b8e4d9497f7fe6ef908bc5ea0540dfb9 100644 (file)
@@ -6,6 +6,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Frédéric Chiasson
+@c Translation checkers: Valentin Villenave, Jean-Charles Malahieude
+
 @node Rhythms
 @section Rhythms
 
index 466ed51a1affb4e3acc5d612a9c5711f2d105f1b..0d3deb42da1bfa1cdd0489990a8f66ac5bf260a0 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 3a7f134d24eda10ee95d604b08ba8e6f7aa94acd..f4717689657828c89a29a5a739e3f276d3f3b34d 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond-learning.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index d57f193d0d9085cbfc2af2c474259181f4a07bd9..e25cfded2736faf9edd995659a11dc82f79e3bb3 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond-program.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index b74ae652ef00907a9a3fe25a7bae3821331d3576..c3177761ca7977c638d564cfbc8433359e3606c3 100644 (file)
@@ -6,6 +6,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Frédéric Chiasson, Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
+
 @node Simultaneous notes
 @section Simultaneous notes
 
index d8b8366561c3c5f7f908af2ba3008b350093de80..ea647cbbf41f4887243a89124cbf9a79c65cc5ff 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -20,6 +20,7 @@ UNTRANSLATED NODE: IGNORE ME
 * Breaks::
 * Vertical spacing::
 * Horizontal spacing::
+* Page layout MOVED FROM LM::
 @end menu 
 @node Paper and pages
 @section Paper and pages
@@ -187,6 +188,43 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@node Page layout MOVED FROM LM
+@section Page layout MOVED FROM LM
+
+UNTRANSLATED NODE: IGNORE ME
+
+@menu 
+* Introduction to layout::
+* Global sizes::
+* Line breaks::
+* Page breaks::
+* Fitting music onto fewer pages::
+@end menu 
+@node Introduction to layout
+@subsection Introduction to layout
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Global sizes
+@subsection Global sizes
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Line breaks
+@subsection Line breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Page breaks
+@subsection Page breaks
+
+UNTRANSLATED NODE: IGNORE ME
+
+@node Fitting music onto fewer pages
+@subsection Fitting music onto fewer pages
+
+UNTRANSLATED NODE: IGNORE ME
+
 
 -- SKELETON FILE --
 When you actually translate this file, please remove these lines as
index 66edc579f2880b8c5b1242fd1318cd0301531cb0..66500a0b05d8cb3305f1a1d61341799ea2a1d9ef 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: 1859194a9f46a8886166cafee0e450b39fc5a963
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -9,17 +9,18 @@
 @node Specialist notation
 @chapter Specialist notation
 
-This chapter explains how to create musical notation.
+Ce chapitre explique comment créer la notation musicale
+spécifique à certains intruments ou certaines époques.
 
 @menu
-* Vocal music:: a
-* Chords Blah:: b
-* Piano music:: c
-* Percussion:: d
-* Guitar:: e
+* Vocal music::
+* Chords::
+* Piano music::
+* Percussion::
+* Guitar::
 * Orchestral strings::
 * Bagpipes::
-* Ancient notation:: g
+* Ancient notation::
 @end menu
 
 @include vocal.itely
index cbc72dc99ea9cb8bbee1de9f2d2f9acd7310eda0..3258d4041ddce65fbfcc93475234c97132babb08 100644 (file)
@@ -6,6 +6,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave, Jean-Charles Malahieude
+@c Translation checkers: John Mandereau
+
 @node Staff notation
 @section Staff notation
 
index 39c150c27189fe0fe7629100d2cafbf6efb383ce..d01927dcfae9c00ca4df0d83304f38f2633be349 100644 (file)
@@ -7,6 +7,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Orchestral strings
 @section Orchestral strings
 Cette section dispense des informations supplémentaires et utiles à
 l'écriture pour les cordes frottées.
 
-@menu 
-* Orchestral strings TODO::
+@menu
+* Orchestral strings sections::
 @end menu
 
 
-@node Orchestral strings TODO
-@subsection Orchestral strings TODO
+@node Orchestral strings sections
+@subsection Orchestral strings sections
 
-@menu 
+@menu
 * Artificial harmonics (strings)::
 @end menu
 
index 2bd76f2d3f653201b3e7c9260a9ddc6a627d5e81..4939ec95a13c72096944e723af513527fba8aba2 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond-learning.tely
 @ignore
-    Translation of GIT committish: 007d0b5b94c36f9d9e228309d5b0e6a67ae27ebc
+    Translation of GIT committish: d9b4bfc69674eb4ed7b8c6eaa0b646f00eae6c8d
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
index 86e8e3475805f7aa3fb971263a89b1c793ee2ceb..aa552ebe131a6519c1e64db5aefb0c8cc65110bf 100644 (file)
@@ -6,6 +6,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Jean-Charles Malahieude
+@c Translation checkers: Valentin Villenave, John Mandereau
+
 @node Text
 @section Text
 
index 46233483a3694bda957248eac12b6cc1092018d4..e1644f0d080c351734f29411a5aa463ff6f02836 100644 (file)
@@ -34,6 +34,10 @@ Tutorial guidelines:
 
 @c Your first LilyPond score in 10 minutes?
 
+@c Translators: Nicolas Grandclaude, Ludovic Sardain, Gauvain Pocentek
+@c Translation checkers: Jean-Charles Malahieude, Valentin Villenave, John Mandereau
+
+
 @node Tutorial
 @chapter Tutorial
 
index 38c9f4d527cae4b00eac5cc5756b5d1524e40b81..3393cfe8eae904056b3607281107c2b9b0002cf3 100644 (file)
@@ -7,6 +7,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave, Nicolas Klutchnikoff
+@c Translation checkers: Jean-Charles Malahieude, John Mandereau
+
 @node Tweaking output
 @chapter Tweaking output
 
index 37041fd0e311083de0ea56937665bf5de7c52602..e4bda96e20c1754cb3fc31d5126d20f242873c77 100644 (file)
@@ -7,6 +7,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Valentin Villenave
+@c Translation checkers: Jean-Charles Malahieude
 
 @node Vocal music
 @section Vocal music
index 1625af305e412cadffbae072bce334a100304b04..ae0b394095d57471ee64c357928e26078d655113 100644 (file)
@@ -7,6 +7,9 @@
    version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@c Translators: Ludovic Sardain
+@c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau, Jean-Charles Malahieude
+
 @node Working on LilyPond projects
 @chapter Working on LilyPond projects
 
index 19b27e23be23468633e8f10dca501f698bf57cc1..4542740e1d21e3a45bcf10eb4c22a9e385071ab8 100644 (file)
@@ -11,11 +11,14 @@ DOC_PO_SOURCES = add_html_footer.py texi-gettext.py
 TELY_FILES = $(shell ls $(depth)/Documentation/user/lilypond*.tely)
 TELY_FILES += $(foreach l, $(LANGS), $(shell ls $(depth)/Documentation/$(l)/user/lilypond*.tely))
 
-messages: $(MO_FILES)
+messages: $(outdir)/messages
+
+$(outdir)/messages: $(MO_FILES)
        for i in $(CATALOGS); do \
          mkdir -p $(doc-localedir)/$$i/LC_MESSAGES; \
          cp $(outdir)/$$i.mo $(doc-localedir)/$$i/LC_MESSAGES/$(DOMAIN).mo; \
        done
+       touch $@
 
 po-update:
        $(PYTHON) $(buildscript-dir)/texi-langutils.py -d $(outdir) -o texi.pot --gettext $(TELY_FILES:%.tely=../%.tely)
diff --git a/Documentation/translations.template.html b/Documentation/translations.template.html
new file mode 100644 (file)
index 0000000..e0bbadc
--- /dev/null
@@ -0,0 +1,40 @@
+<html>
+<!--
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+!-->
+<head>
+  <title>LilyPond documentation translations status</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+<p><a href="index.html">Up to documentation index</a></p>
+
+<h1>Documentation translations status</h1>
+
+<p>This is an overview of which parts of LilyPond @TOPLEVEL_VERSION@
+  documentation are translated; for each documentation section, you
+  can read the word count in parentheses, who translated and verified
+  it (translation checkers are printed with a smaller font size), how
+  much of the original section in English has been translation, how
+  up-to-date is the translation, and whether the translation has
+  already been updated after Grand Documentation Project (GDP) was
+  started.
+</p>
+
+<p>Please note that GDP makes a lot of changes to documentation in
+  English, therefore translated documentation is mostly not
+  up-to-date; however, this does not mean translated documentation is
+  inaccurate regarding current LilyPond version, it only means that
+  translated docmentation is not synced with documentation in English.
+  We do our best to keep translated documentation consistent with
+  current LilyPond syntax and features, and will update it per
+  section, when GDP processing of the corresponding section in English
+  is finished.
+</p>
+
+</body>
+</html>
index d5ef01202c23897b98f845037f258c2b44cf87a2..5994526b73e71ae9fcf2d94c0aa09ada0072c0d5 100644 (file)
@@ -21,12 +21,17 @@ HTML_FILES = $(TELY_FILES:%.tely=$(outdir)/%-big-page.html)\
 
 # todo: add latex.
 PDF_FILES = $(TELY_FILES:%.tely=$(outdir)/%.pdf)
+# this prevents aux files from being reused for translated docs
+TEXI2PDF_FLAGS = --tidy
 
 INFO_DOCS = lilypond lilypond-internals music-glossary lilypond-program lilypond-learning
 INFO_FILES = $(INFO_DOCS:%=$(outdir)/%.info)
 
+ifeq ($(out),www)
+INFO_IMAGES_DIR = lilypond
+endif
+
 STEPMAKE_TEMPLATES=tex texinfo omf documentation
-#TEXI2DVI_FLAGS = -E
 OMF_FILES += $(outdir)/lilypond-internals.html.omf
 
 LOCALSTEPMAKE_TEMPLATES=lilypond ly
@@ -48,13 +53,27 @@ xml: $(outdir)/lilypond/lilypond.xml $(outdir)/lilypond-internals/lilypond-inter
 ifeq ($(out),www)
 
 # This builds all .info targets with images, in out-www.
-# Viewawble with a recent Emacs, doing: M-x info out-www/lilypond.info
+# Viewable with a recent Emacs, doing: C-u C-h i out-www/lilypond.info
 
 # Cancel the special, non-image info generation rule that skips images:
 $(outdir)/%.info: $(outdir)/%.nexi
 
+# "makeinfo --info" MUST be able to read PNGs from CWD for info images
+# to work, hence lilypond/ -> $(outdir)/ symlink.
+# $(outdir)/lilypond/*.png symlinks are only needed to view
+# out-www/*.info with Emacs -- HTML docs no longer need these
+# symlinks, see replace_symlinks_urls in
+# buildscripts/add_html_footer.py.
+$(outdir)/%.info: lilypond
+lilypond: $(OUT_PNG_IMAGES)
+       rm -f lilypond
+       ln -s $(outdir) lilypond
+       mkdir -p $(outdir)/lilypond
+       find $(outdir)/lilypond/ -name '*'.png | xargs rm -f
+       (cd $(outdir)/lilypond/ ; ln -sf ../*.png . )
+
 local-install-info: info
-       -$(INSTALL) -d $(DESTDIR)$(package_infodir)
+       -$(INSTALL) -d $(DESTDIR)$(infodir)
 ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
 ## Can not have absolute symlinks because some binary packages build schemes
 ## install files in nonstandard root.  Best we can do is to notify the
@@ -67,25 +86,27 @@ ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
        @echo
        @echo "For images in the INFO docs to work, do: "
        @echo
-       @echo "    (cd $(package_infodir) && ln -sf ../../doc/lilypond/Documentation/user/*png .)"
+       @echo "    (cd $(infodir) && ln -sfT ../doc/lilypond/html/Documentation/user lilypond)"
        @echo "or add something like that to the postinstall script."
        @echo
 else # installing directly into standard /usr/...
-       -$(INSTALL) -d $(DESTDIR)$(package_infodir)
+       -$(INSTALL) -d $(DESTDIR)$(infodir)
        -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
        -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
        -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-learning.info
+       -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-internals.info
+       -install-info --remove --info-dir=$(infodir) $(outdir)/music-glossary.info
        install-info --info-dir=$(infodir) $(outdir)/lilypond.info
-       (cd $(package_infodir) && ln -sf $(webdir)/Documentation/user/*png .)
+       cd $(infodir) && ln -sfT $(webdir)/Documentation/user lilypond
 endif # installing directly into standard /usr/...
 
 local-uninstall-WWW:
-       rm -f $(package_infodir)/*.png
+       rm -f $(infodir)/lilypond
 
 else # out!=www
 
 # Cancel the default info generation rule that generates images:
-$(outdir)/%.info: $(outdir)/%.texi
+$(outdir)/%.info: $(outdir)/%.texi
 
 local-install-info: info
        -$(INSTALL) -d $(DESTDIR)$(package_infodir)
@@ -106,10 +127,12 @@ ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
        @echo "and read the extra instructions."
        @echo
 else # installing directly into standard /usr/...
-       -$(INSTALL) -d $(DESTDIR)$(package_infodir)
+       -$(INSTALL) -d $(DESTDIR)$(infodir)
        -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
        -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
        -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-learning.info
+       -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-internals.info
+       -install-info --remove --info-dir=$(infodir) $(outdir)/music-glossary.info
        install-info --info-dir=$(infodir) $(outdir)/lilypond.info
        @echo
        @echo "***************************************************************"
@@ -128,12 +151,13 @@ local-uninstall-WWW: local-uninstall-info
 
 default:
 
+local-clean:
+       rm -f lilypond
 
 local-help: extra-local-help
 
 extra-local-help:
        @echo -e "\
-  dvi         update dvi documents\n\
   info        update info pages\n\
   ps          update PostScript documents\n\
   xml        update Docbook xml documentation\n\
@@ -145,82 +169,20 @@ $(outdir)/lilypond.texi: $(outdir)/lilypond-internals.texi
 $(outdir)/lilypond.nexi: $(outdir)/lilypond-internals.texi
 
 #
-# The split user manual
+# Split manuals in HTML
 #
-$(outdir)/lilypond/index.html: $(outdir)/lilypond.texi $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
-       mkdir -p $(dir $@)
-       $(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-# we /might/ switch to texi2html if it can be fixed:
-#      echo "*************************************"
-#      echo $<
-#      cd $(outdir)
-#      texi2html --output=$(outdir)/lilypond --css-include=$(top-src-dir)/Documentation/texinfo.css $<
-       find $(outdir)/lilypond/ -name '*'.png -o -name '*'.ly | xargs rm -f
-# symbolic links to save space
-       (cd $(outdir)/lilypond/ ; ln -sf ../*.png ../*.ly . )
+$(outdir)/lilypond/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
+$(outdir)/lilypond-program/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
+$(outdir)/lilypond-learning/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
+$(outdir)/music-glossary/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
 
-#
-# One big page user manual
-#
-$(outdir)/lilypond-big-page.html: $(outdir)/lilypond.texi $(OUT_PNG_IMAGES)
-       $(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
 
 #
-# The split program usage
+# Manuals in one big HTML page
 #
-$(outdir)/lilypond-program/index.html: $(outdir)/lilypond-program.texi $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
-       mkdir -p $(dir $@)
-       $(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond-program --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-       find $(outdir)/lilypond-program/ -name '*'.png -o -name '*'.ly | xargs rm -f
-# symbolic links to save space
-       (cd $(outdir)/lilypond-program/ ; ln -sf ../*.png ../*.ly . )
-
-#
-# The Learning Manual
-#
-$(outdir)/lilypond-learning/index.html: $(outdir)/lilypond-learning.texi $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
-       mkdir -p $(dir $@)
-       $(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond-learning --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-       find $(outdir)/lilypond-learning/ -name '*'.png -o -name '*'.ly | xargs rm -f
-# symbolic links to save space
-       (cd $(outdir)/lilypond-learning/ ; ln -sf ../*.png ../*.ly . )
-
-
-#
-# One big page program usage
-#
-$(outdir)/lilypond-program-big-page.html: $(outdir)/lilypond-program.texi $(OUT_PNG_IMAGES)
-       $(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
-
-#
-# One big page learning manual
-#
-$(outdir)/lilypond-learning-big-page.html: $(outdir)/lilypond-learning.texi $(OUT_PNG_IMAGES)
-       $(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
-
-
-#
-# The split internals reference
-#
-$(outdir)/lilypond-internals/index.html: $(outdir)/lilypond-internals.texi
-       mkdir -p $(dir $@)
-       $(MAKEINFO) --output=$(outdir)/lilypond-internals --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-
-#
-# One big page internals reference
-#
-$(outdir)/lilypond-internals-big-page.html: $(outdir)/lilypond-internals.texi
-       $(MAKEINFO) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
-
-#
-# The split glossary
-#
-$(outdir)/music-glossary/index.html: $(outdir)/music-glossary.texi
-       mkdir -p $(dir $@)
-       $(MAKEINFO) --output=$(outdir)/music-glossary --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-       find $(outdir)/music-glossary/ -name '*'.png -o -name '*'.ly | xargs rm -f
-# symbolic links to save space
-       (cd $(outdir)/music-glossary/ ; ln -sf ../*.png ../*.ly . )
+$(outdir)/lilypond-big-page.html: $(OUT_PNG_IMAGES)
+$(outdir)/lilypond-program-big-page.html: $(OUT_PNG_IMAGES)
+$(outdir)/lilypond-learning-big-page.html: $(OUT_PNG_IMAGES)
 
 $(outdir)/lilypond.xml: $(outdir)/lilypond.texi
        mkdir -p $(dir $@)
@@ -230,11 +192,8 @@ $(outdir)/lilypond-internals/lilypond-internals.xml: $(outdir)/lilypond-internal
        mkdir -p $(dir $@)
        $(MAKEINFO) --output=$(outdir)/lilypond-internals --docbook $<
 
-$(outdir)/lilypond.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
-
-$(outdir)/lilypond-program.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
-
-$(outdir)/lilypond-learning.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
+$(outdir)/lilypond.pdf $(outdir)/lilypond-program.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
+$(outdir)/lilypond-learning.pdf $(outdir)/music-glossary.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
 
 $(outdir)/%.png: %.png
        convert -depth 8 -geometry 50x50% $< $@
@@ -263,32 +222,13 @@ $(outdir)/source:
        @rm -f $(@)
        ln -sf ../../ $(@)
 
-$(outdir)/lilypond/source:
-       @rm -f $(@)
-       mkdir -p $(outdir)/lilypond
-       ln -sf ../../../ $(@)
-
-$(outdir)/music-glossary/source:
-       @rm -f $(@)
-       mkdir -p $(outdir)/music-glossary
-       ln -sf ../../../ $(@)
-
-$(outdir)/lilypond-program/source:
+$(outdir)/%/source:
        @rm -f $(@)
-       mkdir -p $(outdir)/lilypond-program
-       ln -sf ../../../ $(@)
-
-$(outdir)/lilypond-learning/source:
-       @rm -f $(@)
-       mkdir -p $(outdir)/lilypond-learning
+       mkdir -p $(dir $@)
        ln -sf ../../../ $(@)
 
 local-WWW: $(HTML_FILES) $(DEEP_HTML_FILES)\
- $(datafiles) $(PDF_FILES) $(source-links) info info-dir
-
-info-dir:
-       $(SHELL) $(buildscript-dir)/install-info-html.sh --dir=$(outdir) lilypond lilypond-internals music-glossary lilypond-program lilypond-learning
-
+ $(datafiles) $(PDF_FILES) $(source-links) info
 
 $(outdir)/%.bib: %.bib
        ln -f $< $@
@@ -298,11 +238,9 @@ $(outdir)/%.bib: %.bib
 $(top-build-dir)/mf/$(outconfbase)/feta16list.ly:
        $(MAKE) -C $(top-src-dir)/mf
 
-$(outdir)/lilypond.texi: $(ITELY_FILES) $(ITEXI_FILES)
-$(outdir)/lilypond.nexi: $(ITELY_FILES) $(ITEXI_FILES)
+$(outdir)/lilypond.texi $(outdir)/lilypond-program.texi $(outdir)/lilypond-learning.texi: $(ITELY_FILES) $(ITEXI_FILES)
+$(outdir)/lilypond.nexi $(outdir)/lilypond-program.nexi $(outdir)/lilypond-learning.nexi: $(ITELY_FILES) $(ITEXI_FILES)
 
-# Prevent building music-glossary.texi from default target
-$(outdir)/music-glossary.nexi:
 
 # Rules for the automatically generated documentation
 
index 9e379f688a1f99ffa63426ef77033c8579ef62e2..d69c86d1c7a1675c21da22fc1996664906820f4a 100644 (file)
@@ -118,7 +118,7 @@ example: a @code{Staff} can contain many @code{Voice}s, and a
 @code{Score} can contain many @code{Staff} contexts.
 
 @quotation
-@image{context-example,5cm,,}
+@sourceimage{context-example,5cm,,}
 @end quotation
 
 Each context has the responsibility for enforcing some notation rules,
index 2f94c9f27170e32e9f91f0bd0618b6abb6bbe501..b01f51afc190baa48e300b66255cb2b5d8ce2fa1 100644 (file)
@@ -110,23 +110,22 @@ Internals Reference: @internalsref{font-interface}.
 @cindex finger change
 
 Fingering instructions can be entered using
+@var{note}-@var{digit}:
 
-@example
-@var{note}-@var{digit}
-@end example
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+c4-1 d-2 f-4 e-3
+@end lilypond
 
-For finger changes, use markup texts
+Use markup texts for finger changes. 
 
-@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
-c4-1 c-2 c-3 c-4
-c^\markup { \finger "2 - 3" }
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+c4-1 d-2 f-4 c^\markup { \finger "2 - 3" }
 @end lilypond
 
 @cindex thumb-script
 
-
-You can use the thumb-script to indicate that a note should be
-played with the thumb (e.g., in cello music)
+You can use the thumb-script (e.g., in cello music)to indicate that a 
+note should be played with the thumb. 
 
 @lilypond[quote,verbatim,ragged-right,fragment,relative=2]
 <a_\thumb a'-3>8 <b_\thumb b'-3>
@@ -136,34 +135,33 @@ played with the thumb (e.g., in cello music)
 @cindex chords, fingering
 
 Fingerings for chords can also be added to individual notes of the
-chord by adding them after the pitches
+chord by adding them after the pitches.
 
 @lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-< c-1 e-2 g-3 b-5 >4
+< c-1 e-2 g-3 b-5 >2 < d-1 f-2 a-3 c-5 >
 @end lilypond
 
 
 @commonprop
 
-You may exercise greater control over fingering chords by setting
-@code{fingeringOrientations}
+@code{fingeringOrientations} are used to control where the fingering
+numbers are placed.
 
-@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+\set fingeringOrientations = #'(left)
+<c-1 e-3 a-5 > 4
+\set fingeringOrientations = #'(down)
+<c-1 e-3 a-5 > 
+\set fingeringOrientations = #'(right)
+<c-1 e-3 a-5 > 
+\set fingeringOrientations = #'(up)
+<c-1 e-3 a-5 > 
 \set fingeringOrientations = #'(left down)
-<c-1 es-2 g-4 bes-5 > 4
+<c-1 e-3 a-5 > 2
 \set fingeringOrientations = #'(up right down)
-<c-1 es-2 g-4 bes-5 > 4
-@end lilypond
-
-Using this feature, it is also possible to put fingering
-instructions very close to note heads in monophonic music,
-
-@lilypond[verbatim,ragged-right,quote,fragment]
-\set fingeringOrientations = #'(right)
-<es'-2>4
+<c-1 e-3 a-5 >
 @end lilypond
 
-
 @seealso
 
 Snippets: @lsrdir{Editorial,Editorial-annotations}.
index 4f07dbbbed42efd6351beaba08e73e1ec882c049..3aa252c270b09933fe33a76322e55af8fb4981ca 100644 (file)
@@ -43,14 +43,40 @@ can be attached to a note using the syntax
 The possible values for @var{name} are listed in @ref{List of
 articulations}.
 
-Some of these articulations have shorthands for easier entry.  They
-are used by adding a dash and the character signifying
-the articulation to the note name.  The available shorthands and
-their output are:
+Some of these articulations have shorthands for easier entry.
+Shorthands are appended to the note name, and their syntax
+consists of a dash (@code{-}) followed by a symbol signifying the
+articulation.  The available shorthands are:
+
+@itemize
+@item
+@code{-^} (@notation{marcato})
+
+@item
+@code{-+} (@notation{stopped})
+
+@item
+@code{--} (@notation{tenuto})
+
+@item
+@code{-|} (@notation{staccatissimo})
+
+@item
+@code{->} (@notation{accent})
+
+@item
+@code{-.} (@notation{staccato})
+
+@item
+@code{-_} (@notation{portato})
+
+@end itemize
+
+and their corresponding output:
 
 @lilypond[verbatim,quote,ragged-right,fragment,relative=2]
-c4-.  c--   c-+   c-|
-c->   c-  c-_
+c4-^  c-+  c--  c-|
+c->   c-.  c-_
 @end lilypond
 
 The marks are automatically placed, but the direction can be
@@ -99,13 +125,15 @@ c\fermata c^\fermata c_\fermata
 
 @commonprop
 
-The meanings of the shorthands can be changed.  They are defined
-in @file{ly/@/script@/-init@/.ly}, where the variables
-@code{dashDot}, @code{dashDash}, @code{dashPlus}, @code{dashBar},
-@code{dashLarger}, @code{dashHat}, and @code{dashUnderscore}
-are associated with the default articulation marks.  If you want,
-e.g., @code{-+} to produce a trill instead of a "+", you can
-redefine the variable in your document:
+The shorthands are defined in @file{ly/@/script@/-init@/.ly},
+where the variables @code{dashHat}, @code{dashPlus},
+@code{dashDash}, @code{dashBar}, @code{dashLarger},
+@code{dashDot}, and @code{dashUnderscore} are assigned default
+values.  The default values for the shorthands can be modified.
+For example, to associate the @code{-+} (@code{dashPlus})
+shorthand with the @notation{trill} symbol instead of the default
+@notation{+} symbol, assign the value @code{trill} to the variable
+@code{dashPlus}:
 
 @lilypond[verbatim,quote,ragged-right]
 \relative c'' { c-+ }
@@ -118,7 +146,7 @@ The vertical ordering of scripts is controlled with the
 closer it will be put to the note.  In this example, the
 @code{TextScript} (the sharp symbol) first has the lowest
 priority, so it is put lowest in the first example.  In the
-second, the prall trill (the @code{Script}) has the
+second, the @notation{prall trill} (the @code{Script}) has the
 lowest, so it is on the inside.  When two objects have the same
 priority, the order in which they are entered decides which one
 comes first.
@@ -187,12 +215,13 @@ c_\spp c_\staccato^\ff
 @funindex \>
 @funindex \!
 
-A crescendo mark is started with @code{\<} and terminated with
-@code{\!} or an absolute dynamic.  A decrescendo is started with
-@code{\>} and is also terminated with @code{\!} or an absolute
-dynamic.  @code{\cr} and @code{\decr} may be used instead of
-@code{\<} and @code{\>}.  They can be engraved either using a
-graphical sign (a @q{hairpin}), or with textual signs.
+A @notation{crescendo} mark is started with @code{\<} and
+terminated with @code{\!} or an absolute dynamic.  A
+@notation{decrescendo} is started with @code{\>} and is also
+terminated with @code{\!} or an absolute dynamic.  @code{\cr} and
+@code{\decr} may be used instead of @code{\<} and @code{\>}.  They
+can be engraved either using a graphical sign (a @q{hairpin}), or
+with textual signs.
 
 Because these marks are bound to notes, you must use spacer notes
 if multiple marks are needed during one note.
@@ -483,7 +512,8 @@ d4
 
 @seealso
 
-Snippets: @lsrdir{Expressive,Expressive-marks}, @c @lsr{expressive,breathing-sign.ly}.
+Snippets: @lsrdir{Expressive,Expressive-marks},
+@c @lsr{expressive,breathing-sign.ly}.
 
 Internals Reference: @internalsref{BreathingSign}.
 
index d25e7ffe4e4a0ff888978c803a5add5903731a4e..1e56b0e4f250f3d2d11292d75891b65d8fdbf93f 100644 (file)
@@ -1195,7 +1195,7 @@ For example: a @code{Staff} context can contain many
 contain many @code{Staff} contexts.
 
 @quotation
-@image{context-example,5cm,,}
+@sourceimage{context-example,5cm,,}
 @end quotation
 
 Each context has the responsibility for enforcing some notation rules,
index dcfd9176c0d79d5ea8860842c07c378e3b931772..036367738b3f29df0ab23908576e8878afa73040 100644 (file)
@@ -511,12 +511,12 @@ sections.
 @section Common syntax issues TODO name?
 
 @menu
-* Up and down::                 
+* Controlling direction::       
 * Distances and measurements MAYBE MOVE::  
 @end menu
 
-@node Up and down
-@subsection Up and down
+@node Controlling direction
+@subsection Controlling direction
 
 TODO: everything
 
@@ -537,6 +537,10 @@ Also cover
 
 Maybe rename section to "directions".
 
+Also mention \override Foo #'direction = #'DOWN.
+
+also mention the typical \fooDown, \fooNeutral predefined commands.
+
 
 @node Distances and measurements MAYBE MOVE
 @subsection Distances and measurements MAYBE MOVE
index bf0dcb70b70d2351d8854bbd06ee3740e77185b0..c6761089033ce9623a1d49e7c83cd751a981aa55 100644 (file)
@@ -87,9 +87,8 @@ computer edition.
 @end ifnottex
 @end ifnotinfo
 @ifinfo
-@c workaround for makeinfo-4.6: line breaks and multi-column cookies
-@image{henle-flat-bw,,,png} @image{baer-flat-bw,,,png}
-@image{lily-flat-bw,,,png}
+@image{lilypond/henle-flat-bw,,,png} @image{lilypond/baer-flat-bw,,,png}
+@image{lilypond/lily-flat-bw,,,png}
 @end ifinfo
 
 @item @tab
index dc8a5298337e7680cbb3085a36d011719214fe2c..0631951f5ae237ab2a5e22c3f9c1008e4eea1073 100644 (file)
@@ -23,7 +23,7 @@
 @ignore
 Distributions will want to install lilypond.info in postinstall, doing:
 
-    install-info --info-dir=/usr/share/info out/lilypond.info
+    install-info --info-dir=/usr/share/info out[-www]/lilypond.info
 
   * Prepend GNU for dir, must be unique.
 
@@ -38,16 +38,21 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 
 @c
-@c Info files are installed in subdirectories to allow images to be present. 
-@c 
-@dircategory LilyPond
+@c Info files are no longer installed in a subdirectory, images are
+@c expected to be found in lilypond/ subdirectory.
+@dircategory GNU LilyPond --- the music typesetter
 @direntry
-* LilyPond: (lilypond/lilypond).           The GNU music typesetter.
-* abc2ly: (lilypond/lilypond-program)Invoking abc2ly.          Importing ABC.      
-* convert-ly: (lilypond/lilypond-program)Invoking convert-ly.  Older LilyPond versions.
-* etf2ly: (lilypond/lilypond-program)Invoking etf2ly.          Importing Finale.
-* lilypond-book: (lilypond/lilypond-program)LilyPond-book.     Integrating text and music.
-* midi2ly: (lilypond/lilypond-program)Invoking midi2ly.        Importing MIDI.
+* LilyPond Learning Manual: (lilypond-learning).  Start here.
+* Music Glossary: (music-glossary).               For non-English users.
+* LilyPond: (lilypond).                           LilyPond Notation Reference.
+* LilyPond Internals Reference: (lilypond-internals).  Definitions for tweaking.
+* LilyPond Application Usage: (lilypond-program). Installing and running applications.
+* abc2ly: (lilypond-program)Invoking abc2ly.      Importing ABC.      
+* convert-ly: (lilypond-program)Updating files with convert-ly. Older LilyPond versions.
+* etf2ly: (lilypond-program)Invoking etf2ly.      Importing Finale.
+* lilypond-book: (lilypond-program)LilyPond-book. Integrating text and music.
+* midi2ly: (lilypond-program)Invoking midi2ly.    Importing MIDI.
+* musicxml2ly: (lilypond-program)Invoking musicxml2ly.  Importing MusicXML.
 @end direntry
 
 @c don't remove this comment.
@@ -203,11 +208,15 @@ Appendices
 @node LilyPond command index
 @appendix LilyPond command index
 
+This index does blah blah blah.
+
 @printindex ky
 
 @node LilyPond index
 @appendix LilyPond index
 
+In contrast, this index does blaz blaz blaz.
+
 @printindex cp
 
 @bye
index c29ba57026d1fe43c8a4cf04491eff529595b2e7..ab06cecbb6fe5ba9cddfcb35edc3ecc68abb40d7 100644 (file)
 @end quotation
 @end macro
 
-@c TODO: define different output for info
+@ifnotinfo
 @macro notation{TEXT}
 @var{\TEXT\}
 @end macro
+@end ifnotinfo
 
+@ifinfo
+@macro notation{TEXT}
+\TEXT\
+@end macro
+@end ifinfo
 
-
-@c   **** Headings in a doc subsection ****
-
-@c not really a heading, but...
 @macro smallspace
 @sp 1
 @end macro
 
+
+@c   **** Displaying images not generated by lilypond-book
+
+@c current installation setup of Info docs requires that all images are
+@c expected to be found in lilypond/ subdirectory.  lilypond-book already
+@c generates proper @image commands for images of music; these macros
+@c definitions do the same for other images.
+
+@ifnotinfo
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+@end ifnotinfo
+
+@ifinfo
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{lilypond/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+@end ifinfo
+
+
+@c   **** Headings in a doc subsection ****
+
 @c obsolete; being removed.
 @macro refcommands
 @noindent
 @c   **** Links and references ****
 
 @c usage: @lsr{ancient,Ancient-notation,custodes.ly}
+@ignore
+
+DEPRECATED
+
 @macro lsr{SECTION,DIR,TEXT}
 @ifhtml
 @uref{source/input/lsr/snippets/\DIR\.html#\TEXT\,@file{\SECTION\/\TEXT\}}
 @file{\SECTION\/\TEXT\}
 @end ifnothtml
 @end macro
+@end ignore
 
 @c usage: @lsrdir{ancient,Ancient-notation}
 @macro lsrdir{SECTION,DIR}
 @ifhtml
 @c ***** HTML *****
 
-@c makeinfo-4.7 encodes html names, which means that nodes that
-@c contain nonalphanum characters will be broken links on the website.
-@c @uref{../lilypond-internals/\TEXT\.html,\TEXT\}@c
-@c @inforef{} adds ``See'' to the sentence, which is annoying, but
-@c better than a broken link.
-@c @inforef{\TEXT\,,lilypond-internals}@c
-@c using @ref without punctuation is OK without for formats other than info
-
 @ifset bigpage
 
 @macro internalsref{TEXT}
index e618107881bc685551f388d94d580099033b4ff6..0c100d79abb9429d70ed06bdf5e728f0c6596590 100644 (file)
@@ -130,12 +130,12 @@ Copyright 1999--2007 by the authors
 
 Languages in this order.
 @itemize
+@item UK - British English (where it differs from American English)
 @item ES - Spanish
 @item I - Italian
 @item F - French
 @item D - German
 @item NL - Dutch
-@item UK - British English
 @item DK - Danish
 @item S - Swedish
 @item FI - Finnish
@@ -297,6 +297,7 @@ Languages in this order.
 * lilypond::                    
 * ligature::                    
 * line::                        
+* loco::                        
 * long appoggiatura::           
 * longa::                       
 * lyrics::                      
@@ -334,11 +335,11 @@ Languages in this order.
 * note head::                   
 * note names::                  
 * note value::                  
+* octavation::                      
 * octave sign::                 
 * octave::                      
 * ornament::                    
 * ossia::                       
-* ottava::                      
 * part::                        
 * pause::                       
 * pennant::                     
@@ -361,6 +362,7 @@ Languages in this order.
 * quadruplet::                  
 * quarter note::                
 * quarter rest::                
+* quarter tone::                
 * quintuplet::                  
 * rallentando::                 
 * relative key::                
@@ -1194,6 +1196,7 @@ FI: hengitysmerkki.
 
 Indication of where to breathe in vocal and wind instrument parts.
 
+
 @node breve
 @section breve
 
@@ -1885,7 +1888,58 @@ DK: ?,
 S: ?,
 FI: ?.
 
-FIXME: this is a placeholder
+The pitch at which the piano and other nontransposing instruments play: such
+instruments are said to be @q{in C}.  The following list includes some (but not
+all) instruments that play in concert pitch:
+
+@itemize
+
+@item Woodwinds
+@itemize
+@item flute
+@item oboe
+@item bassoon
+@end itemize
+
+@item Brass
+@itemize
+@item alto trombone
+@item tenor trombone
+@item bass trombone
+@end itemize
+
+@item Strings
+@itemize
+@item violin
+@item viola
+@item violincello
+@end itemize
+
+@item piano
+
+@end itemize
+
+The trombones are a special case: although they are said to be @q{in F} (alto or
+bass) or @q{in B-flat} (tenor), this refers to their fundamental note, not to
+their parts' transposition.  (In fact, the trombones' parts are written at
+concert pitch with an appropriate clef -- alto, tenor or bass.)  This differs
+from other instruments @q{in F}, @q{in B-flat}, and so on, which are transposing
+instruments.
+
+Instruments that play @q{in C} but in a different octave than what is written
+are, technically speaking, @emph{transposing instruments}:
+
+@itemize
+
+@item piccolo (plays an octave higher)
+@item celesta (plays an octave higher)
+@item double-bass (plays an octave lower)
+
+@end itemize
+
+@seealso
+
+@ref{transposing instrument}.
 
 
 @node conjunct movement
@@ -2804,10 +2858,10 @@ FI: E, e.
 @node eighth note
 @section eighth note
 
+UK: quaver,
 ES: corchea,
 I: croma,
 F: croche,
-UK: quaver,
 D: Achtel, Achtelnote,
 NL: achtste noot,
 DK: ottendedelsnode,
@@ -2822,10 +2876,10 @@ FI: kahdeksasosanuotti.
 @node eighth rest
 @section eighth rest
 
+UK: quaver rest,
 ES: silencio de corchea,
 I: pausa di croma,
 F: demi-soupir,
-UK: quaver rest,
 D: Achtelpause,
 NL: achtste rust,
 DK: ottendedelspause,
@@ -3002,11 +3056,15 @@ example, a series of notes to be played on the G string would be
 indicated @samp{sul G}, another series to be played on the D string
 would be indicated @samp{sul D}, and so on.
 
+@item
+With an octave indication (also called @emph{octavation}, q.v.) to indicate that
+a passage is to be played higher or lower by the given number of octaves.
+
 @end itemize
 
 @seealso
 
-@ref{melisma}, @ref{sul G}, @ref{thorough bass}
+@ref{melisma}, @ref{sul G}, @ref{thorough bass}, @ref{octavation}.
 
 
 @node F
@@ -3521,10 +3579,10 @@ usage.  In the standard usage of these countries, @samp{B} means
 @node half note
 @section half note
 
+UK: minim,
 ES: blanca,
 I: minima,
 F: blanche,
-UK: minim,
 D: Halbe, halbe Note,
 NL: halve noot,
 DK: halvnode,
@@ -3539,10 +3597,10 @@ FI: puolinuotti.
 @node half rest
 @section half rest
 
+UK: minim rest,
 ES: silencio de blanca,
 I: pausa di minima,
 F: demi-pause,
-UK: minim rest,
 D: halbe Pause,
 NL: halve, rust,
 DK: halvnodespause,
@@ -3968,10 +4026,10 @@ notes, unlike (b) @emph{leggiero} or @emph{non-legato}, (c)
 @node lilypond
 @section lilypond
 
+UK: lily pond,
 ES: estanque de nenúfares,
 I: stagno del giglio,
-F: étang de lis,
-UK: lily pond,
+F: étang de nénuphars, étang de nymphéas,
 D: Seerosenteich,
 NL: le@-lie@-vij@-ver,
 DK: liliedam,
@@ -4020,6 +4078,26 @@ FI: viiva, nuottiviiva.
 @ref{staff}.
 
 
+@node loco
+@section loco
+
+ES: ?,
+I: loco,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
+[From Italian, @q{place}].  Instruction to play the following passage at the
+written pitch.  Cancels octavation (q.v.).
+
+@seealso
+
+@ref{octavation}.
+
+
 @node long appoggiatura
 @section long appoggiatura
 
@@ -4199,9 +4277,12 @@ mediant (variant tonic).
 @section melisma
 
 ES: melisma,
+I: ?,
 F: mélisme,
 D: Melisma,
 NL: melisma,
+DK: ?,
+S: ?,
 FI: melisma, laulettavan tavun sävelkuvio.
 
 A melisma (plural, from Greek: melismata) is a group of notes or tones
@@ -4213,6 +4294,15 @@ sung on one syllable, especially as applied to liturgical chant.
 
 @c TODO: add languages
 
+ES: ?,
+I: ?,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
 @seealso
 
 @ref{extender line}.
@@ -4229,7 +4319,7 @@ sung on one syllable, especially as applied to liturgical chant.
 @node mensural notation
 @section mensural notation
 
-@c FIXME: add languages
+@c TODO: add languages
 
 ES: ?,
 I: ?,
@@ -4242,7 +4332,7 @@ FI: ?.
 
 @c TODO: add definition (inc. info on proportional notation)
 
-@c FIXME: add cross-references.
+@c TODO: add cross-references.
 
 
 @node meter
@@ -4852,9 +4942,71 @@ dotted notes are also frequently used.
 @end lilypond
 
 
+@node octavation
+@section octavation
+
+ES: ?,
+I: ?,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
+The use of a phrase or abbreviation with an extender line or bracket to indicate
+that a passage is to be played in a different octave:
+
+@itemize
+
+@item @samp{15ma}: play two octaves higher
+@item @samp{8va}: play one octave higher
+@item @samp{8vb}: play one octave lower
+@item @samp{8va} written below the passage: same as @samp{8vb}
+@item @samp{15vb}: play two octaves lower
+@item @samp{15va} written below the passage: same as @samp{15vb}
+
+@end itemize
+
+Another practice, which may be useful for longer passages, is to indicate the
+different octave with a phrase at the beginning (see below).  When the music
+returns to the written pitch, the octavation is cancelled with the word
+@emph{loco} (q.v.).
+
+To parallel the list above:
+
+@itemize
+
+@item @samp{15ma}: @emph{alla quindicesima (alta)}
+@item @samp{8va}: @emph{all'ottava} or @emph{ottava sopra}
+@item @samp{8vb}: @emph{ottava bassa}, @emph{ottava sotto}
+@item @samp{15vb}: @emph{alla quindicesima (bassa)}
+
+@end itemize
+
+@emph{Quindicesima} can be replaced with @emph{quindecima}, which is Latin.
+
+@seealso
+
+@ref{interval}, @ref{loco}, @ref{octave}.
+
+
 @node octave sign
 @section octave sign
 
+ES: ?,
+I: ?,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
+Putting 8 or 15 above or below the clef to indicate that the entire part is
+played in the indicated octave: a clef-wide octavation.  An octave sign can be
+applied to any clef, though it is most frequently used with the G and F clefs.
+
 @seealso
 
 @ref{G clef}, @ref{F clef}.
@@ -4872,9 +5024,14 @@ DK: oktav,
 S: oktav,
 FI: oktaavi.
 
+The interval of an octave, sometimes abbreviated @samp{8ve}.
+
+For uses like @emph{all'ottava} or @emph{8va} with an extender line or
+bracket, or @samp{loco} see octavation.
+
 @seealso
 
-@ref{ottava}, @ref{interval}.
+@ref{interval}, @ref{octavation}.
 
 
 @node ornament
@@ -4955,33 +5112,6 @@ score, usually only a few measures long, which presents another version
 of the music, for example for small hands.
 
 
-@node ottava
-@section ottava
-
-@c TODO: translations
-
-ES: ?,
-I: ottava,
-F: octave,
-DE: Oktavierung,
-NL: ?,
-DK: ?,
-S: ?,
-FI: ?.
-
-[From Italian] The interval of an octave, abbreviated 8va.
-
-@emph{All'ottava}, @emph{ottava alta}, @emph{ottava sopra}, or
-@emph{8va} written above a passage indicates that it should be played
-an octave higher than written. @emph{Ottava bassa}, @emph{ottava
-sotto}, or @emph{8va} written below a passage indicates that it should
-be played an octave lower than written.
-
-@seealso
-
-@ref{interval}.
-
-
 @node part
 @section part
 
@@ -5319,10 +5449,10 @@ FI: kvartoli.
 @node quarter note
 @section quarter note
 
+UK: crotchet,
 ES: negra,
 I: semiminima, nera,
 F: noire,
-UK: crotchet,
 D: Viertel, Viertelnote,
 NL: kwartnoot,
 DK: fjerdedelsnode,
@@ -5337,10 +5467,10 @@ FI: neljännesosanuotti.
 @node quarter rest
 @section quarter rest
 
+UK: crotchet rest,
 ES: silencio de negra,
 I: pausa di semiminima,
 F: soupir,
-UK: crotchet rest,
 D: Viertelpause,
 NL: kwart rust,
 DK:@w{ }fjerdedelspause,
@@ -5352,6 +5482,25 @@ FI: neljännesosatauko.
 @ref{note value}.
 
 
+@node quarter tone
+@section quarter tone
+
+ES: ?,
+I: ?,
+F: quart de ton,
+D: Viertelton,
+NL: kwart toon,
+DK: ?,
+S: kvartston,
+FI: ?.
+
+An interval equal to half a semitone.
+
+@seealso
+
+@ref{interval}
+
+
 @node quintuplet
 @section quintuplet
 
@@ -5740,7 +5889,6 @@ FI: korotusmerkki.
 ES: ?,
 I: ?,
 F: ?,
-UK: ?,
 D: ?,
 NL: ?,
 DK: ?,
@@ -5758,10 +5906,10 @@ that does not include triplet subdivision of the beat.
 @node sixteenth note
 @section sixteenth note
 
+UK: semiquaver,
 ES: semicorchea,
 I: semicroma,
 F: double croche,
-UK: semiquaver,
 D: Sechzehntel, Sechzehntelnote,
 NL: zes@-ti@-ende noot,
 DK: sekstendedelsnode,
@@ -5776,10 +5924,10 @@ FI: kuudestoistaosanuotti.
 @node sixteenth rest
 @section sixteenth rest
 
+UK: semiquaver rest,
 ES: silencio de semicorchea,
 I: pausa di semicroma,
 F: quart de soupir,
-UK: semiquaver rest,
 D: Sechzehntelpause,
 NL: zestiende rust,
 DK: sekstendedelspause,
@@ -5811,10 +5959,10 @@ FI: seksti.
 @node sixty-fourth note
 @section sixty-fourth note
 
+UK: hemidemisemiquaver,
 ES: semifusa,
 I: semibiscroma,
 F: quadruple croche,
-UK: hemidemisemiquaver,
 D: Vierundsechzigstel, Vierundsechzigstelnote,
 NL: vierenzestigste noot,
 DK: fi@-re@-og@-tred@-sinds@-ty@-ven@-de@-dels@-no@-de,
@@ -5829,10 +5977,10 @@ FI: kuudeskymmenesneljäsosanuotti.
 @node sixty-fourth rest
 @section sixty-fourth rest
 
+UK: hemidemisemiquaver rest,
 ES: silencio de semifusa,
 I: pausa di semibiscroma,
 F: seizième de soupir,
-UK: hemidemisemiquaver rest,
 D: Vierundsechzigstelpause,
 NL: vierenzestigste rust,
 DK: fi@-re@-og@-tred@-sinds@-ty@-ven@-de@-dels@-pau@-se,
@@ -6340,10 +6488,10 @@ FI: terssi.
 @node thirty-second note
 @section thirty-second note
 
+UK: demisemiquaver,
 ES: fusa,
 I: biscroma,
 F: triple croche,
-UK: demisemiquaver,
 D: Zweiunddreissigstel, Zweiunddreissigstelnote,
 NL: twee-endertig@-ste noot,
 DK: toogtredivtedelsnode,
@@ -6358,10 +6506,10 @@ FI: kolmanneskymmeneskahdesosanuotti.
 @node thirty-second rest
 @section thirty-second rest
 
+UK: demisemiquaver rest,
 ES: silencio de fusa,
 I: pausa di biscroma,
 F: huitième de soupir,
-UK: demisemiquaver rest,
 D: Zweiunddreissigstel@-pause,
 NL: 32e rust,
 DK: toogtredivtedelspause,
@@ -6516,7 +6664,27 @@ DK: ?,
 S: ?,
 FI: ?.
 
-FIXME: this is a placeholder
+Instruments whose notated pitch is different from their sounded pitch.  Except
+for those whose notated and sounding pitches differ by one or more octaves (to
+reduce the number of ledger lines needed), most such instruments are identified
+by the letter name of the pitch class of their fundamental.  The pitch class is
+the note that @emph{sounds} (disregarding the octave in which it sounds) when
+the instrument plays a notated C.
+
+For example: when played on the B-flat clarinet, the note middle C @emph{sounds}
+the B-flat one tone lower.  If played on the A clarinet, the same written
+note sounds the A (one and half tones -- a minor third -- lower).
+
+Not all transposing instruments include the pitch class in their name:
+
+@itemize
+@item English horn (in F)
+@item Alto flute (in G)
+@end itemize
+
+@seealso
+
+@ref{concert pitch}.
 
 
 @node transposition
@@ -6807,10 +6975,10 @@ FI: tahdin heikko isku.
 @node whole note
 @section whole note
 
+UK: semibreve,
 ES: redonda,
 I: semibreve,
 F: ronde,
-UK: semibreve,
 D: Ganze, ganze Note,
 NL: hele noot,
 DK: helnode,
@@ -6825,10 +6993,10 @@ FI: kokonuotti.
 @node whole rest
 @section whole rest
 
+UK: semibreve rest,
 ES: silencio de redonda,
 I: pausa di semibreve,
 F: pause,
-UK: semibreve rest,
 D: ganze Pause, ganztaktige Pause,
 NL: hele rust,
 DK: helnodespause,
@@ -6878,140 +7046,184 @@ saxophone, and bassoon.
 @node Duration names notes and rests
 @chapter Duration names notes and rests
 
-@multitable @columnfractions .15 .26 .33 .26
+@multitable @columnfractions .07 .23 .23 .23 .24
 
 @headitem @strong{US}
-  @tab @strong{UK}
-  @tab @strong{I}
-  @tab @strong{F (note name / rest name)}
-@headitem
-  @tab @strong{D}
-  @tab @strong{NL}
-  @tab @strong{DK}
-@headitem
-  @tab @strong{S}
-  @tab @strong{FI}
-  @tab @strong{ES}
-
-@item @strong{longa}
-  @tab longa
-  @tab longa
-  @tab longa
-@item
-  @tab Longa
-  @tab longa
-  @tab longa
-@item
+  @tab long
+  @tab breve
+  @tab whole
+  @tab half
+@item @strong{UK}
   @tab longa
+  @tab breve
+  @tab semibreve
+  @tab minim
+@item @strong{ES}
   @tab longa
+  @tab cuadrada
+  @tab redonda
+  @tab blanca
+@item @strong{IT}
   @tab longa
-
-@item @strong{breve}
-  @tab breve
   @tab breve
+  @tab semibreve
+  @tab minima
+@item @strong{FR}
+  @tab longa
   @tab brève / double-pause
-@item
-  @tab Brevis
-  @tab brevis
-  @tab brevis
-@item
-  @tab brevis
-  @tab brevis
-  @tab cuadrada
-
-@item @strong{whole}
-  @tab semi@-breve
-  @tab semi@-breve
   @tab ronde / pause
-@item
-  @tab Ganze
-  @tab hele
-  @tab hel
-@item
-  @tab hel
-  @tab koko@-nuotti/@w{-tauko}
-  @tab redonda
-
-@item @strong{half}
-  @tab minim
-  @tab minima
   @tab blanche / demi-pause
-@item
+@item @strong{DE}
+  @tab Longa
+  @tab Brevis
+  @tab Ganze
   @tab Halbe
+@item @strong{NL}
+  @tab longa
+  @tab brevis
+  @tab hele
   @tab halve
+@item @strong{DK}
+  @tab longa
+  @tab brevis
+  @tab hel
   @tab halv
-@item
+@item @strong{SE}
+  @tab longa
+  @tab brevis
+  @tab hel
   @tab halv
+@item @strong{FI}
+  @tab longa
+  @tab brevis
+  @tab koko@-nuotti/@w{-tauko}
   @tab puoli@-nuotti/@w{-tauko}
-  @tab blanca
 
-@item @strong{quarter}
-  @tab crotchet
-  @tab semiminima
-  @tab noire / soupir
-@item
-  @tab Viertel
-  @tab kwart
-  @tab fjerdedel
-@item
-  @tab fjärdedel
-  @tab neljännesosa@-nuotti/@w{-tauko}
-  @tab negra
+@end multitable
+
+@multitable @columnfractions .07 .31 .31 .31
 
-@item @strong{eighth}
+@headitem @strong{US}
+  @tab quarter
+  @tab eighth
+  @tab sixteenth
+@item @strong{UK}
+  @tab crotchet
   @tab quaver
+  @tab semiquaver
+@item @strong{ES}
+  @tab negra
+  @tab corchea
+  @tab semicorchea
+@item @strong{IT}
+  @tab semiminima
   @tab croma
+  @tab semicroma
+@item @strong{FR}
+  @tab noire / soupir
   @tab croche / demi-soupir
-@item
+  @tab double* croche / quart de soupir
+@item @strong{DE}
+  @tab Viertel
   @tab Achtel
-  @tab achtste
-  @tab ottendedel
-@item
-  @tab åttondel
-  @tab kahdeksasosa@-nuotti/@w{-tauko}
-  @tab corchea
-
-@item @strong{sixteenth}
-  @tab semiquaver
-  @tab semicroma
-  @tab double croche / quart de soupir
-@item
   @tab Sechzehntel
+@item @strong{NL}
+  @tab kwart
+  @tab achtste
   @tab zestiende
+@item @strong{DK}
+  @tab fjerdedel
+  @tab ottendedel
   @tab sekstendedel
-@item
+@item @strong{SE}
+  @tab fjärdedel
+  @tab åttondel
   @tab sextondel
+@item @strong{FI}
+  @tab neljännesosa@-nuotti/@w{-tauko}
+  @tab kahdeksasosa@-nuotti/@w{-tauko}
   @tab kuudestoistaosa@-nuotti/@w{-tauko}
-  @tab semicorchea
 
-@item @strong{thirty-second}
-  @tab demisemiquaver
-  @tab biscroma
-  @tab triple croche / huitième de soupir
-@item
-  @tab Zweiunddreissigstel
-  @tab tweeendertigste
-  @tab toogtredivtedel
-@item
-  @tab trettiotvåondel
-  @tab kolmaskymme@-neskahdesosa@-nuotti/@w{-tauko}
-  @tab fusa
+@end multitable
+
+* About the French naming system: the word @emph{croche} refers to the
+note's "hook".  Therefore, from the eighth note on, the note names mean
+@q{hook}, @q{doubled hook}, @q{trebled hook}, and so on.
+
+The rest names are based on the @emph{soupir}, or quarter rest.  Subsequent
+rests are expressed as fractions thereof: half a @emph{soupir}, a quarter of
+a @emph{soupir}, and so on.
 
-@item @strong{sixty-fourth}
+@multitable @columnfractions .07 .46 .47
+
+@headitem @strong{US}
+  @tab thirty-second
+  @tab sixty-fourth
+@item @strong{UK}
+  @tab demisemiquaver
   @tab hemidemisemiquaver
+@item @strong{ES}
+  @tab fusa*
+  @tab semifusa
+@item @strong{IT}
+  @tab biscroma
   @tab semibiscroma
+@item @strong{FR} 
+  @tab triple croche / huitième de soupir
   @tab quadruple croche / seizième de soupir
-@item
+@item @strong{DE} 
+  @tab Zweiunddreissigstel
   @tab Vierundsechzigstel
+@item @strong{NL} 
+  @tab tweeendertigste
   @tab vierenzestigste
+@item @strong{DK} 
+  @tab toogtredivtedel
   @tab fireogtred@-sindstyvendedel
-@item
+@item @strong{SE} 
+  @tab trettiotvåondel
   @tab sextiofjärdedel
+@item @strong{FI}
+  @tab kolmaskymme@-neskahdesosa@-nuotti/@w{-tauko}
   @tab kuudeskymme@-nesneljäsosa@-nuotti/@w{-tauko}
+
+@end multitable
+
+@multitable @columnfractions .07 .46 .47
+
+@headitem @strong{US}  @tab one-hundred-twenty-eighth
+  @tab two-hundred-fifty-sixth@item @strong{UK}
+  @tab semihemidemisemiquaver or
+       quasihemidemisemiquaver  @tab demisemihemidemisemiquaver (?)
+@item @strong{IT}
+  @tab fusa*
   @tab semifusa
+@item @strong{ES} 
+  @tab garrapatea  @tab semigarrapatea@item @strong{FR} 
+  @tab quintuple croche / trente-deuxième de soupir  @tab sextuple croche / soixante-quatrième de soupir@item @strong{DE} 
+  @tab Hundertundachtundzwanzigstel  @tab Zweihundertundsechsundfünfzigstel@item @strong{NL} 
+  @tab ?
+  @tab ?
+@item @strong{DK} 
+  @tab ?
+  @tab ?
+@item @strong{SE} 
+  @tab ?
+  @tab ?
+@item @strong{FI}
+  @tab ?
+  @tab ?
 
 @end multitable
 
+* The terms @emph{fusa} and @emph{semifusa}, which derive from mensural notation
+(q.v), are used as note durations by the Italians and the Spanish, but for notes
+of different durations.
+
+@seealso
+
+@ref{mensural notation}
+
 
 @node Pitch names
 @chapter Pitch names
index cc6d1fcc5364ac1839806e80d341d549bf5f8716..4022056ecc39fc8ecfd9a72a194e5688ffb40d34 100644 (file)
@@ -244,6 +244,7 @@ see @rlearning{Accidentals and key signatures}.}
 @cindex sharp, double
 @cindex double flat
 @cindex flat, double
+@cindex natural sign
 
 A @notation{sharp} pitch is made by adding @code{is} to the note name,
 and a @notation{flat} pitch by adding @code{es}.  As you might expect,
@@ -316,8 +317,7 @@ cis
 @seealso
 
 Music Glossary: @rglos{sharp}, @rglos{flat}, @rglos{double sharp},
-@rglos{double flat}, @rglos{Pitch names}.
-@c FIXME: add @rglos{quarter-tone}
+@rglos{double flat}, @rglos{Pitch names}, @rglos{quarter-tone}.
 
 Learning Manual: @rlearning{Accidentals and key signatures}.
 
@@ -789,7 +789,6 @@ is done with the @code{\key} command:
 \key @var{pitch} @var{mode}
 @end example
 
-@funindex \minor
 @funindex \major
 @funindex \minor
 @funindex \ionian
@@ -800,6 +799,7 @@ is done with the @code{\key} command:
 @funindex \phrygian
 @funindex \dorian
 @cindex church modes
+@cindex modes
 
 Here, @var{mode} should be @code{\major} or @code{\minor} to get a
 key signature of @var{pitch}-major or @var{pitch}-minor,
@@ -869,7 +869,7 @@ The @code{set-octavation} function also takes -1 (for 8va bassa),
 
 @seealso
 
-Music Glossary: @rglos{ottava}.
+Music Glossary: @rglos{octavation}.
 
 Snippets: @lsrdir{Pitches,Pitches}.
 
@@ -882,6 +882,9 @@ Internals Reference: @internalsref{OttavaBracket}.
 
 @cindex transposition, MIDI
 @cindex transposition, instrument
+@cindex transposing instrument
+@cindex MIDI
+@funindex \transposition
 
 When typesetting scores that involve transposing instruments, some
 parts can be typeset in a different pitch than the
@@ -956,8 +959,7 @@ c2 g
 
 @seealso
 
-Music Glossary: @rglos{concert pitch},
-@rglos{transposing instrument}.
+Music Glossary: @rglos{concert pitch}, @rglos{transposing instrument}.
 
 Notation Reference: @ref{Quoting other voices}, @ref{Transpose}.
 
@@ -966,8 +968,13 @@ Snippets: @lsrdir{Pitches,Pitches}.
 
 @node Automatic accidentals
 @subsubsection Automatic accidentals
-@cindex automatic accidentals
 
+@cindex automatic accidentals
+@cindex accidentals, automatic
+@cindex accidentals
+@cindex accidental style
+@cindex default accidental style
+@cindex accidental style, default
 @funindex set-accidental-style
 
 There are many different conventions on how to typeset
@@ -1181,6 +1188,8 @@ musicB = {
 @end lilypond
 
 @item modern
+@cindex accidentals, modern style
+@cindex modern style accidentals
 @funindex modern style accidentals
 
 This rule corresponds to the common practice in the twentieth
@@ -1239,6 +1248,11 @@ musicB = {
 @end lilypond
 
 @item modern-cautionary
+@cindex accidentals, modern cautionary style
+@cindex modern style accidentals
+@cindex modern style cautionary accidentals
+@cindex modern accidental style
+@cindex modern cautionary accidental style
 @funindex modern-cautionary
 
 This rule is similar to @code{modern}, but the @q{extra}
@@ -1296,6 +1310,12 @@ musicB = {
 @end lilypond
 
 @item modern-voice
+@cindex accidentals, multivoice
+@cindex accidentals, modern
+@cindex modern accidentals
+@cindex multivoice accidentals
+@cindex accidental style, modern
+@cindex modern accidental style
 @funindex modern-voice
 
 This rule is used for multivoice accidentals to be read both by
@@ -1354,6 +1374,9 @@ musicB = {
 }
 @end lilypond
 
+@cindex accidental style, modern voice cautionary
+@cindex accidental style, cautionary, modern voice
+@cindex accidental style, voice, modern cautionary
 @funindex modern-voice-cautionary
 @item modern-voice-cautionary
 
@@ -1411,6 +1434,10 @@ musicB = {
 
 @item piano
 @funindex piano accidentals
+@cindex piano accidentals
+@cindex accidentals, piano
+@cindex piano accidental style
+@cindex accidental style, piano
 
 This rule reflects twentieth-century practice for piano notation.
 Its behavior is very similar to @code{modern} style, but here
@@ -1468,6 +1495,12 @@ musicB = {
 
 @item piano-cautionary
 @funindex #(set-accidental-style 'piano-cautionary)
+@cindex accidentals, piano cautionary
+@cindex cautionary accidentals, piano
+@cindex piano cautionary accidentals
+@cindex accidental style, piano cautionary
+@cindex cautionary accidental style, piano
+@cindex piano cautionary accidental style
 
 Same as @code{#(set-accidental-style 'piano)} but with the extra
 accidentals typeset as cautionaries.
@@ -1519,6 +1552,8 @@ musicB = {
 
 @item no-reset
 @funindex no-reset accidental style
+@cindex accidental style, no reset
+@cindex no reset accidental style
 
 This is the same as @code{default} but with accidentals lasting
 @q{forever} and not only within the same measure:
@@ -1571,6 +1606,8 @@ musicB = {
 
 @item forget
 @funindex forget accidental style
+@cindex forget accidental style
+@cindex accidental style, forget
 
 This is the opposite of @code{no-reset}: Accidentals are not
 remembered at all -- and hence all accidentals are typeset
@@ -1640,6 +1677,11 @@ Internals Reference: @internalsref{Accidental_engraver},
 @internalsref{PianoStaff}, @internalsref{Staff}.
 
 
+@cindex accidentals and simultaneous notes
+@cindex simultaneous notes and accidentals
+@cindex accidentals in chords
+@cindex chords, accidentals in
+
 @refbugs
 
 Simultaneous notes are considered to be entered in sequential
@@ -1654,7 +1696,11 @@ problematic notes.
 
 @node Ambitus
 @subsubsection Ambitus
+
 @cindex ambitus
+@cindex ambit
+@cindex range of pitches
+@cindex pitch range
 
 The term @notation{ambitus} or @notation{ambit} denotes a range of
 pitches for a given voice in a part of music.  It may also denote
@@ -1692,6 +1738,8 @@ printed if they are not part of the key signature.
 
 @seealso
 
+Music Glossary: @rglos{ambitus}.
+
 Snippets: @lsrdir{Pitches,Pitches}.
 
 Internals Reference: @internalsref{Ambitus},
@@ -1720,6 +1768,17 @@ ambitus.
 @subsubsection Special note heads
 
 @cindex note heads, special
+@cindex note heads, cross
+@cindex note heads, diamond
+@cindex note heads, parlato
+@cindex note heads, harmonic
+@cindex note heads, guitar
+@cindex special note heads
+@cindex cross note heads
+@cindex diamond note heads
+@cindex parlato note heads
+@cindex harmonic note heads
+@cindex guitar note heads
 
 Different note heads are used by various instruments for various
 meanings -- crosses are used for @q{parlato} with vocalists,
@@ -1757,6 +1816,10 @@ Internals Reference: @internalsref{NoteHead},
 @cindex note heads, easy notation
 @cindex easy notation
 @cindex Hal Leonard
+@cindex beginners' music
+@cindex music, beginners'
+@cindex easy play note heads
+@cindex note heads, easy play
 
 The @q{easy play} note head includes a note name inside the head.
 It is used in music for beginners.
@@ -1797,6 +1860,11 @@ Internals Reference: @internalsref{NoteHead}.
 @subsubsection Shape note heads
 
 @cindex note heads, shape
+@cindex note heads, Aiken
+@cindex note heads, sacred harp
+@cindex shape notes
+@cindex Aiken shape note heads
+@cindex sacred harp note heads
 @funindex \key
 @funindex shapeNoteStyles
 @funindex \aikenHeads
index 2783c79a6a1956b7f478b1d51cbc32f33bf80f07..ac5e5ea0a4e5a99475688dd6b5dd70458490df26 100644 (file)
@@ -263,7 +263,7 @@ without arguments,
 @example
 displayBarNum =
 #(define-music-function (parser location) ()
-   (if (eq? #t (ly:get-option display-bar-numbers))
+   (if (eq? #t (ly:get-option 'display-bar-numbers))
        #@{ \once \override Score.BarNumber #'break-visibility = ##f #@}
        #@{#@}))
 @end example
index 0b00aa569077248d1e06b8705ac909de84f7f6ae..49263ce4c68cd073d2db8b31f7c820853a0ab9bf 100644 (file)
@@ -168,15 +168,17 @@ tuplet is the triplet in which 3 notes have the length of 2, so
 the notes are 2/3 of their written length.
 
 @lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-g4 \times 2/3 {c4 c c} d4 d4
+a2 \times 2/3 {b4 b b}
+c4 c \times 2/3 {b4 a g}
+
 @end lilypond
 
-Tuplets may be nested; for example,
+Tuplets may be nested:
 
 @lilypond[fragment,ragged-right,verbatim,relative=2]
-\times 2/3 {
-  a4 a
-  \times 3/5 { a a a a a }
+\relative c'' {
+  \autoBeamOff
+  c4 \times 4/5 { f8 e f \times 2/3 {e[ f g] } } f4 |
 }
 @end lilypond
 
@@ -198,6 +200,12 @@ Tuplets may be nested; for example,
 @funindex tupletNumberFormatFunction
 @funindex tupletSpannerDuration
 
+@c when available
+@c @lilypondfile [ragged-right,line-width=16\cm,staffsize=14,quote]
+@c {Entering-several-tuplets-using-only-one-\times-command.ly}
+
+@ignore
+@c TODO Remove when snippet works ok
 @c Sent to Snippet 5 Feb 08
 The property @code{tupletSpannerDuration} specifies how long each
 bracket should last.  With this, you can make lots of tuplets
@@ -209,6 +217,7 @@ In the next example, there are two triplets shown, while
 \set tupletSpannerDuration = #(ly:make-moment 1 4)
 \times 2/3 { c8 c c c c c }
 @end lilypond
+@end ignore
 
 @noindent
 For more information about @code{make-moment}, see
@@ -246,7 +255,7 @@ removed from the @code{Voice context}.
 @funindex TupletBracket
 
 If nested tuplets do not begin at the same moment their
-appearance may be modified in the usual way with 
+appearance may be modified in the usual way with
 @code{\override} commands:
 
 @c NOTE Tuplet brackets collide if notes are high on staff
@@ -265,17 +274,17 @@ appearance may be modified in the usual way with
 
 However, if the nested tuplets begin at the same musical moment,
 @code{\override} commands cannot be applied to just one of them
--- they apply to both.  So to change the appearance of nested 
-tuplets beginning at the same musical moment individually, the 
-@code{\tweak} function must be used (see @ref{Objects connected 
+-- they apply to both.  So to change the appearance of nested
+tuplets beginning at the same musical moment individually, the
+@code{\tweak} function must be used (see @ref{Objects connected
 to the input}).  The @code{\tweak} function is applied to the
 following @code{\times} command as it appears in the input stream,
 and so can distinguish between separate @code{\times} commands
 even if their tuplets begin at the same musical moment.
 
-In this example, the @code{\tweak} command is used to specify 
-fraction text for the outer @code{TupletNumber} and denominator 
-text for the @code{TupletNumber} of the first of the three 
+In this example, the @code{\tweak} command is used to specify
+fraction text for the outer @code{TupletNumber} and denominator
+text for the @code{TupletNumber} of the first of the three
 inner tuplets.
 
 @c NOTE Tuplet brackets collide if notes are high on staff
@@ -297,7 +306,7 @@ together to specify @code{TupletBracket} direction.  The first
 tuplet above the staff.  The second @code{\tweak} positions the
 @code{TupletBracket} of the first of the three inner tuplets below
 the staff.  Note that the @code{\tweak} command needs to be used
-only for events that begin at the same music moment: the outer 
+only for events that begin at the same music moment: the outer
 tuplet and the first of the three inner tuplets.  To position the
 @code{TupletBracket}s of the second and third of the inner tuplets
 below the staff, we can use @code{\override} in the usual way.
@@ -322,12 +331,12 @@ below the staff, we can use @code{\override} in the usual way.
 @funindex tupletFullLength
 @funindex tupletFullLengthNote
 
-Tuplet brackets can be made to run to prefatory matter or the 
+Tuplet brackets can be made to run to prefatory matter or the
 next note.
 Default tuplet brackets end at the right edge of the final note
 of the tuplet; full-length tuplet brackets extend farther to the
 right, either to cover all the non-rhythmic notation up to the
-following note, or to cover only the whitespace before the next 
+following note, or to cover only the whitespace before the next
 item of notation, be that a clef, time signature, key signature,
 or another note.  The example shows how to switch tuplets to
 full length mode and how to modify what material they cover.
@@ -346,7 +355,7 @@ full length mode and how to modify what material they cover.
   \time 4/4
   \times 4/5 { c4 c1 }
   \time 3/4
-  c4 
+  c4
 }
 @end lilypond
 
@@ -357,17 +366,17 @@ full length mode and how to modify what material they cover.
 
 @code{\compressMusic} works similarly to \times, but does not
 create a tuplet bracket.  One application is in polymetric
-notation, as shown in the following example.  See 
+notation, as shown in the following example.  See
 @ref{Polymetric notation}.
 
-@c not added yet. -gp
+@c when available
 @c @lilypondfile [ragged-right,line-width=16\cm,staffsize=14,quote]
 @c {printing-music-with-different-time-signatures.ly}
 
 
 @seealso
 
-Music Glossary: @rglos{triplet}, @rglos{tuplet}, 
+Music Glossary: @rglos{triplet}, @rglos{tuplet},
 @rglos{polymetric}.
 
 Notation Reference: @ref{Time administration},
@@ -376,8 +385,12 @@ Notation Reference: @ref{Time administration},
 Snippets: @lsrdir{Rhythms,Rhythms}.
 
 Internals Reference: @internalsref{TupletBracket},
-@internalsref{TupletNumber}, and @internalsref{TimeScaledMusic}.
+@internalsref{TupletNumber}, @internalsref{TimeScaledMusic}.
+
+@refbugs
 
+Lines may be broken within a tuplet with @code{\bar "" \break},
+but the tuplet bracket does not correctly carry over.
 
 
 @node Scaling durations
@@ -402,7 +415,7 @@ b16*4 c4
 @end lilypond
 
 The duration of skip or spacing notes may also be modified by
-a multiplier.  This is useful for skipping many measures, e.g., 
+a multiplier.  This is useful for skipping many measures, e.g.,
 @code{s1*23}.
 
 @seealso
@@ -418,7 +431,7 @@ Snippets: @lsrdir{Rhythms,Rhythms}
 @funindex ~
 
 A tie connects two adjacent note heads of the same pitch.  The tie
-in effect extends the length of a note. 
+in effect extends the length of a note.
 
 @warning{Ties should not be confused with @emph{slurs}, which
 indicate articulation, or @emph{phrasing slurs}, which indicate
@@ -468,7 +481,7 @@ have to repeat the tie.  This can be achieved with
 
 @lilypond[fragment,quote,ragged-right,relative=2,verbatim]
 \repeat volta 2 { c g <c e>2 ~ }
-\alternative {{ <c e>2. r4 } {<c e>2\repeatTie d4 c }} 
+\alternative {{ <c e>2. r4 } {<c e>2\repeatTie d4 c }}
 @end lilypond
 
 @cindex laissez vibrer
@@ -487,7 +500,11 @@ be entered using @code{\laissezVibrer}:
 <c f g>\laissezVibrer
 @end lilypond
 
-The direction of a tie can be specified with @code{\tieUp} or
+The vertical placement of ties may be controlled; see
+@ref{Controlling direction}.
+
+@quotation
+DELETE THIS ?
 @code{\tieDown} (see example below).  @code{\tieNeutral} reverts
 to the default behaviour again.
 
@@ -498,21 +515,22 @@ convenient shorthand for forcing tie directions.  By adding
 @lilypond[relative=2,ragged-right,quote,verbatim,fragment]
 c4_~ c c^~ c)
 @end lilypond
+@end quotation
 
+@refcommands
 
-@seealso
-
-Music Glossary: @rglos{tie},
-@c [TODO]add @rglos{laissez vibrer}. when there is a glossary entry.
-
-Snippets: @lsrdir{Rhythms,Rhythms}
-
-Internals Reference:
-@internalsref{LaissezVibrerTie}
-@internalsref{LaissezVibrerTieColumn}
-
-Example files:
-@c @lsr{connecting,laissez-vibrer-ties.ly}
+@funindex \tieUp
+@code{\tieUp},
+@funindex \tieDown
+@code{\tieDown},
+@funindex \tieNeutral
+@code{\tieNeutral},
+@funindex \tieDotted
+@code{\tieDotted},
+@funindex \tieDashed
+@code{\tieDashed},
+@funindex \tieSolid
+@code{\tieSolid}.
 
 
 @commonprop
@@ -546,24 +564,21 @@ direction (1=up, -1=down).
 @end lilypond
 
 
-@refcommands
 
+@seealso
 
-@funindex \tieUp
-@code{\tieUp},
-@funindex \tieDown
-@code{\tieDown},
-@funindex \tieNeutral
-@code{\tieNeutral},
-@funindex \tieDotted
-@code{\tieDotted},
-@funindex \tieDashed
-@code{\tieDashed},
-@funindex \tieSolid
-@code{\tieSolid}.
+Music Glossary: @rglos{tie},
+@c [TODO]add @rglos{laissez vibrer}. when there is a glossary entry.
 
+Snippets: @lsrdir{Rhythms,Rhythms}
+
+Internals Reference:
+@internalsref{LaissezVibrerTie}
+@internalsref{LaissezVibrerTieColumn}
+
+Example files:
+@c @lsr{connecting,laissez-vibrer-ties.ly}
 
-@seealso
 
 
 
@@ -590,9 +605,9 @@ well-defined.  In these cases, a slur may be preferable.
 @subsection Writing rests
 
 @menu
-* Rests::                       
-* Skips::                       
-* Full measure rests::          
+* Rests::
+* Skips::
+* Full measure rests::
 @end menu
 
 @node Rests
@@ -2433,7 +2448,7 @@ Internals Reference: @internalsref{GraceMusic}.
 A multi-note beamed @emph{acciaccatura} is printed without a slash, 
 and looks exactly the same as a multi-note beamed
 @emph{appoggiatura}.
-@c TODO Add link to LSR snippet to add slash when available 
+@c TODO Add link to LSR snippet to add slash when available
 
 Grace note synchronization can also lead to surprises.  Staff
 notation, such as key signatures, bar lines, etc., are also
@@ -2584,3 +2599,4 @@ Internals Reference: @internalsref{Timing_translator},
 
 
 
+
index b1d47765da5a93a44bc020566946c2f4b257938f..ee40671d525a568bc6dc16f2b91ab96c459b91b8 100644 (file)
@@ -439,20 +439,20 @@ c''1
 
 @cindex instrument names, centering
 
-If you wish to center the instrument names, you must center all of
-them individually:
+As instrument names are centered by default, multi line names
+are better entered using @code{\center-align}:
 
 @lilypond[quote,verbatim,ragged-right]
 { <<
 \new Staff {
-  \set Staff.instrumentName = \markup {
-    \center-align { "Clarinetti"
-      \line { "in B" \smaller \flat } } }
+  \set Staff.instrumentName = \markup \center-align {
+    Clarinetti
+    \line { "in B" \smaller \flat }
+  }
   c''1
 }
 \new Staff {
-  \set Staff.instrumentName =
-       \markup{ \center-align { Vibraphone }}
+  \set Staff.instrumentName = "Vibraphone"
   c''1
 }
 >>
@@ -462,23 +462,9 @@ them individually:
 For longer instrument names, it may be useful to increase the
 @code{indent} setting in the @code{\layout} block.
 
-To center instrument names while leaving extra space to the right,
-
-@lilypond[quote,verbatim,ragged-right]
-\new StaffGroup \relative
-<<
-  \new Staff {
-    \set Staff.instrumentName =
-        \markup { \hcenter-in #10 "blabla" }
-    c1 c1
-  }
-  \new Staff {
-    \set Staff.instrumentName =
-         \markup { \hcenter-in #10 "blo" }
-    c1 c1
-  }
->>
-@end lilypond
+Short instrument names, printed before the systems following the first
+one, are also centered by default, in a space which width is given by
+the @code{short-indent} variable of the @code{\layout} block.
 
 To add instrument names to other contexts (such as
 @code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}), the
index e5655241a93393f3f4435d5e34d35845b0f0ca21..27e0a858168afb551aa0e0bdaedcf78afcdd19b8 100644 (file)
@@ -16,10 +16,10 @@ This section explains how to include text (with various
 formatting) in your scores.
 
 @cindex Text, other languages
-To write accented and special text (such as characters from other
-languages), simply insert the characters directly into the
-lilypond file.  The file must be saved as UTF-8.  For more
-information, see @ref{Text encoding}.
+@warning{To write accented and special text (such as characters
+from other languages), simply insert the characters directly into
+the lilypond file.  The file must be saved as UTF-8.  For more
+information, see @ref{Text encoding}.}
 
 @menu
 * Writing text::                
@@ -94,29 +94,17 @@ Snippets: @lsrdir{Text,Text}
 @cindex non-empty texts
 
 It is possible to place arbitrary strings of text or @ref{Text
-markup}, above or below notes by using a string @code{c^"text"}.
-By default, these indications do not influence the note spacing,
-but by using the command @code{\textLengthOn}, the widths will be taken
-into account
+markup} with @var{note}@code{-"}@var{text}@code{"}.
 
-@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c4^"longtext" \textLengthOn c4_"longlongtext" c4
-@end lilypond
-
-@noindent
-To prevent text from influencing spacing, use @code{\textLengthOff}.
+INSERT EXAMPLE
 
 More complex formatting may also be added to a note by using the
-markup command,
+@code{\markup} command, as described in @ref{Text markup}.
 
 @lilypond[fragment,ragged-right,verbatim,quote]
 c'4^\markup { bla \bold bla }
 @end lilypond
 
-The @code{\markup} is described in more detail in @ref{Text
-markup}.
-
-
 @refcommands
 
 @funindex \textLengthOn
@@ -126,7 +114,21 @@ markup}.
 
 
 @commonprop
+@c TODO: put this in the LSR. -vv
+By default, these indications do not influence the note spacing.
+However, by using the command @code{\textLengthOn}, the widths
+will be taken into account:
 
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+c4^"this does not affect spacing" \textLengthOn c4_"whereas this does" c4
+@end lilypond
+
+@noindent
+After having used such a command, to go back to the default behavior
+and prevent text from influencing spacing, use @code{\textLengthOff}.
+
+
+@c TODO: LSR-ize this as well -vv
 Checking to make sure that text scripts and lyrics are within the
 margins is a relatively large computational task.  To speed up
 processing, lilypond does not perform such calculations by
@@ -151,14 +153,24 @@ Internals Reference: @internalsref{TextScript}.
 
 @cindex Text spanners
 
+@c TODO: merge these explanations with the ones below in 
+@c "Text and Line spanners" -vv
+
 Some performance indications, e.g., @i{rallentando} or
 @i{accelerando}, are written as text and are extended over many
 measures with dotted lines.  Such texts are created using text
 spanners; attach @code{\startTextSpan} and @code{\stopTextSpan} to
 the first and last notes of the spanner.
 
+@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
+c1
+\override TextSpanner #'bound-details #'left #'text = "faster" 
+c2\startTextSpan b c\stopTextSpan a
+@end lilypond
+
+@noindent
 The string to be printed, as well as the style, is set through
-object properties
+object properties. It can accept @code{\markup} blocks as well:
 
 @lilypond[quote,ragged-right,fragment,relative=1,verbatim]
 c1
@@ -209,9 +221,16 @@ Internals Reference: @internalsref{TextSpanner}.
 @funindex \mark
 
 The @code{\mark} command is primarily used for @ref{Rehearsal
-marks}, but it can also be used to put signs like coda, segno, and
-fermata on a bar line.  Use @code{\markup} to access the
-appropriate symbol (symbols are listed in @ref{The Feta font}).
+marks}, but it can also be used to add text elements in a score:
+
+@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
+c4\mark "text" c c c
+@end lilypond
+
+As it can contain a @code{\markup} object, the @code{\mark} command
+makes possible to put any text, but also signs like coda, segno, or
+fermata on a bar line.  The appropriate symbol has to be specified in
+the @code{\markup} block; these symbols are listed in @ref{The Feta font}.
 
 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
 c1 \mark \markup { \musicglyph #"scripts.ufermata" }
@@ -219,7 +238,7 @@ c1
 @end lilypond
 
 @noindent
-@code{\mark} is only typeset above the top stave of the score.  If
+@code{\mark} is only typeset above the top staff of the score.  If
 you specify the @code{\mark} command at a bar line, the resulting
 mark is placed above the bar line.  If you specify it in the
 middle of a bar, the resulting mark is positioned between notes.
@@ -230,12 +249,15 @@ of the next line.
 
 @c  IMO this is a bug; hopefully it'll be fixed soon, so I can
 @c  delete this sentence.   -gp
+@noindent
 If there is no next line, then the mark will not be printed at
 all.
 
 
 @commonprop
 
+@c TODO: to be LSR-ized stuff -vv
+
 To print the mark at the end of the current line, use
 
 @example
@@ -287,7 +309,8 @@ Possible symbols for the @code{break-align-symbols} list are
 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 @code{break-align-anchor}
-properties for the appropriate grob.
+properties for the appropriate grob. For scores with multiple staves,
+this setting should be done for all the staves. 
 
 @lilypond[fragment,quote,ragged-right,verbatim]
 {
@@ -296,20 +319,20 @@ properties for the appropriate grob.
   \key cis \major
 
   % the RehearsalMark will be aligned with the left edge of the KeySignature
-  \once \override Staff.KeySignature #'break-align-anchor-alignment = #LEFT
+  \once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
   \mark \default
   cis1
   \key ces \major
 
   % the RehearsalMark will be aligned with the right edge of the KeySignature
-  \once \override Staff.KeySignature #'break-align-anchor-alignment = #RIGHT
+  \once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
   \mark \default
   ces1
   \key cis \major
 
   % 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
+  \once \override Score.KeySignature #'break-align-anchor = #2
   \mark \default
   ces1
 }
@@ -343,7 +366,9 @@ Snippets: @lsrdir{Text,Text}
 
 Internals Reference: @internalsref{RehearsalMark}.
 
-
+@c TODO: add this here? -vv
+@c @node Text marks
+@c @subsubsection Text marks
 
 @node Text markup
 @subsection Text markup
@@ -698,7 +723,8 @@ Snippets: @lsrdir{Text,Text}
 @node Special text concerns
 @subsection Special text concerns
 
-
+@c FIXME: this section is to be removed
+@c (see comments below) -vv
 
 @menu
 * New dynamic marks::           
@@ -708,6 +734,9 @@ Snippets: @lsrdir{Text,Text}
 @node New dynamic marks
 @subsubsection New dynamic marks
 
+@c FIXME: this whole section should be removed and put in
+@c "Writing text" -vv
+
 It is possible to print new dynamic marks or text that should be
 aligned with dynamics.  Use @code{make-dynamic-script} to create
 these marks.  Note that the dynamic font only contains the
@@ -749,6 +778,11 @@ Snippets: @lsrdir{Text,Text}
 @node Text and line spanners
 @subsubsection Text and line spanners
 
+@c FIXME: this whole section has to be removed.
+@c glissando stuff should go into Expressive marks;
+@c Text spanners should go into... Text spanners.
+@c (I'm on it) --vv
+
 Some performance indications, e.g., @i{rallentando} and
 @i{accelerando} and @i{trills} are written as text and are
 extended over many measures with lines, sometimes dotted or wavy.
index c35303a3a01e461ba3c93929bbd01bb4c2afc100..017b485f1f1fa58150704ebfd90e558f82729aed 100644 (file)
 This chapter discusses how to modify output.  LilyPond is extremely
 configurable; virtually every fragment of output may be changed.
 
-TODO: This chapter is still under development and this version is
-not yet complete.  Don't translate yet!
-
-
 
 @menu
 * Tweaking basics::             
 * The Internals Reference manual::  
-* Appearance of objects::       
+* Appearance of objects::
 * Placement of objects::        
 * Collisions of objects::       
 * Further tweaking::            
@@ -49,7 +45,7 @@ permit almost any desired appearance of the printed music to be
 achieved.
 
 In this section we cover the basic concepts required to understand
-tweaking.  Later we give a variety of potted commands which can
+tweaking.  Later we give a variety of ready-made commands which can
 simply be copied to obtain the same effect in your own scores, and
 at the same time we show how these commands may be constructed so 
 that you may learn how to develop your own tweaks.
@@ -80,10 +76,12 @@ constructed.  That @code{Staff} object then holds all the
 properties associated with that particular staff, for example, its
 name and its key signature, together with details of the engravers
 which have been assigned to operate within that staff's context.
-Similarly, there are @code{Voice} objects, @code{Score} objects,
-@code{Lyric} objects, and objects to represent bar lines,
- note heads, ties, dynamics, etc, each with their own set of
-properties.
+Similarly, there are objects to hold the properties of all other
+contexts, such as @code{Voice} objects, @code{Score} objects,
+@code{Lyrics} objects, as well as objects to represent all
+notational elements such as bar lines,
+note heads, ties, dynamics, etc.  Every object has its own set of
+property values.
 
 Some types of object are given special names.  Objects which
 represent items of notation on the printed output such as
@@ -133,9 +131,12 @@ verbatim.
 @headitem Object/property type           
   @tab Naming convention
   @tab Example
-@item Contexts, Layout Objects     
+@item Contexts
+  @tab Aaaa or AaaaAaaaAaaa
+  @tab Staff, GrandStaff
+@item Layout Objects
   @tab Aaaa or AaaaAaaaAaaa
-  @tab Staff, GrandStaff, 
+  @tab Slur, NoteHead
 @item Engravers
   @tab Aaaa_aaa_engraver
   @tab Clef_engraver, Note_heads_engraver
@@ -220,12 +221,12 @@ We mention it here for completeness, but for details see
 @c Maybe explain in a later iteration  -td
 
 The final tweaking command which is available is @code{\tweak}.
-It is not really a new command but a shorthand for an 
-@code{\override} command which must be used in a few special
-circumstances.  Again, we shall not discuss or use it here.  
-You may find the details in 
+This should be used to change the properties of objects which
+occur at the same musical moment, such as the notes within a
+chord.  Using @code{\override} would affect all the notes
+within a chord, whereas @code{\tweak} affects just the following
+item in the input stream.  You may find the details in
 @ruser{Objects connected to the input}.
-@c Maybe explain in a later iteration  -td
 
 @node The Internals Reference manual
 @section The Internals Reference manual
@@ -708,8 +709,8 @@ appearance of the printed music.
 
 @menu
 * Visibility and color of objects::  
-* Size of objects::             
-* Length and thickness of objects::  
+* Size of objects::
+* Length and thickness of objects::
 @end menu
 
 @node Visibility and color of objects
@@ -748,8 +749,6 @@ of these can affect the visibility of bar lines (and, of course,
 by extension, many other layout objects too.)  Let's consider
 each of these in turn.
 
-@c FIXME: is this what you meant?
-@c TODO Change all other headings like this
 @subheading stencil
 @cindex stencil property
 
@@ -1535,27 +1534,37 @@ and to a numerical value appropriate to each outside-staff object
 when the object is created.  The following table shows
 the default numerical values for some of the commonest
 outside-staff objects which are, by default, placed in the
-@code{Staff} Context.
+@code{Staff} or @code{Voice} contexts.
 
 @multitable @columnfractions .3 .3 .3
 @headitem Layout Object           
   @tab Priority     
   @tab Controls position of:
-@item @code{DynamicLineSpanner}   
-  @tab @code{ 250}  
-  @tab All dynamic markings
-@item @code{OttavaBracket}        
-  @tab @code{ 400}
-  @tab Ottava brackets
-@item @code{TextScript}           
-  @tab @code{ 450}
+@item @code{MultiMeasureRestText}
+  @tab @code{450}
+  @tab Text over full-bar rests
+@item @code{TextScript}
+  @tab @code{450}
   @tab Markup text
-@item @code{TextSpanner}          
-  @tab @code{ 350}
+@item @code{OttavaBracket}
+  @tab @code{400}
+  @tab Ottava brackets
+@item @code{TextSpanner}
+  @tab @code{350}
   @tab Text spanners
+@item @code{DynamicLineSpanner}
+  @tab @code{250}
+  @tab All dynamic markings
+@item @code{VoltaBracketSpanner}
+  @tab @code{100}
+  @tab Volta brackets
+@item @code{TrillSpanner}
+  @tab @code{50}
+  @tab Spanning trills
 @end multitable
 
-Here is an example showing the default placement of these.
+Here is an example showing the default placement of some of
+these.
 
 @cindex text spanner
 @funindex \startTextSpan
@@ -1609,18 +1618,19 @@ given the following default @code{outside-staff-priority} values:
 
 @multitable @columnfractions .3 .3
 @headitem Layout Object           @tab Priority
-@item @code{BarNumber}            @tab @code{ 100}
-@item @code{MetronomeMark}        @tab @code{1000}
 @item @code{RehearsalMark}        @tab @code{1500}
+@item @code{MetronomeMark}        @tab @code{1000}
+@item @code{BarNumber}            @tab @code{ 100}
 @end multitable
 
-If the default values of @code{outside-staff-priority} does not
+If the default values of @code{outside-staff-priority} do not
 give you the placing you want, the priority of any of the objects
 may be overridden.  Suppose we would
 like the ottava bracket to be placed below the text spanner in the
 example above.  All we need to do is to look up the priority of
 @code{OttavaBracket} in the IR or in the tables above, and reduce
-it to a value lower than that of a @code{TextSpanner}:
+it to a value lower than that of a @code{TextSpanner}, remembering
+that @code{OttavaBracket} is created in the @code{Staff} context:
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
 % Set details for later Text Spanner
@@ -1629,7 +1639,7 @@ it to a value lower than that of a @code{TextSpanner}:
 % Place dynamics above staff
 \dynamicUp
 %Place following Ottava Bracket below Text Spanners
-\once \override OttavaBracket #'outside-staff-priority = #340
+\once \override Staff.OttavaBracket #'outside-staff-priority = #340
 % Start Ottava Bracket
 #(set-octavation 1)
 c' \startTextSpan
@@ -1932,16 +1942,19 @@ objects, this value is set by default to be around 1.0 or less
 @code{self-alignment-X}
 
 @cindex self-alignment-X property
-This property aligns the object to the left, to the right, or
-centers it with respect to the parent object's reference point.
-It may be used with all objects which support the
-@code{self-alignment-interface}.  In general these are objects
+This property can be used to align the object to the left, to 
+the right, or to center it with respect to the parent object's 
+reference point.  It may be used with all objects which support
+the @code{self-alignment-interface}.  In general these are objects
 that contain text.  The values are @code{LEFT}, @code{RIGHT}
-or @code{CENTER}.  The movement is limited by the length of the
-object.  Any numerical value between @code{-1} and @code{+1} may
-also be specified, where @code{-1} is left-aligned, @code{+1}
-is right-aligned, and numbers in between move the text
-progressively from left-aligned to right-aligned.
+or @code{CENTER}.  Alternatively, a numerical value between 
+@code{-1} and @code{+1} may be specified, where @code{-1} is 
+left-aligned, @code{+1} is right-aligned, and numbers in between 
+move the text progressively from left-aligned to right-aligned.
+Numerical values greater than @code{1} may be specified to move
+the text even further to the left, or less than @code{-1} to
+move the text even further to the right.  A change of @code{1}
+in the value corresponds to a movement of half the text's length.
 
 @item
 @code{extra-spacing-width}
@@ -2029,7 +2042,12 @@ This is most useful for manually adjusting the slope and height
 of beams, slurs, and tuplets.   It takes a pair of numbers
 giving the position of the left and right ends of the beam, slur,
 etc. relative to the center line of the staff.  Units are
-staff-spaces.
+staff-spaces.  Note, though, that slurs and phrasing slurs cannot
+be repositioned by arbitrarily large amounts.  LilyPond first
+generates a list of possible positions for the slur and by default
+finds the slur that @qq{looks best}.  If the @code{positions}
+property has been overridden the slur that is closest to the
+requested positions is selected from the list.
 @end table
 
 Objects do not all have all of these properties in general.
@@ -2064,7 +2082,8 @@ should be used to move them.
 Let's now see how the properties in the previous section can
 help to resolve overlapping notation.
 
-@subheading padding property
+@c FIXME: formatting
+@subheading @code{padding}
 @cindex padding property
 
 The @code{padding} property can be set to increase
@@ -2089,12 +2108,19 @@ d1
 @end lilypond
 
 Note in the second example how important it is to figure out what
-context handles a certain object.  Since the @code{MetronomeMark} object
+context handles a certain object.  Since the @code{MetronomeMark}
+object
 is handled in the @code{Score} context, property changes in the
 @code{Voice} context will not be noticed.  For more details, see
 @ruser{Constructing a tweak}.
 
-@subheading left-padding and right-padding properties
+If the @code{padding} property of an object is increased when that
+object is in a stack of objects being positioned according to
+their @code{outside-staff-priority}, then that object and all 
+objects outside it are moved.
+
+@subheading @code{left-padding} and @code{right-padding}
 @cindex left-padding property
 @cindex right-padding property
 
@@ -2751,11 +2777,11 @@ lhMusic = \relative c' {
 @section Further tweaking
 
 @menu
-* Other uses for tweaks::       
-* Using variables for tweaks::  
-* Other sources of information::  
-* Advanced tweaks with Scheme::  
-* Avoiding tweaks with slower processing::  
+* Other uses for tweaks::
+* Using variables for tweaks::
+* Other sources of information::
+* Advanced tweaks with Scheme::
+* Avoiding tweaks with slower processing::
 @end menu
 
 @node Other uses for tweaks
@@ -2763,23 +2789,21 @@ lhMusic = \relative c' {
 
 @itemize
 
-@cindex transparent property
+@cindex transparent property, use of
 @cindex objects, making invisible
 @cindex removing objects
 @cindex objects, removing
 @cindex hiding objects
 @cindex invisible objects
+@cindex tying notes across voices
 
 @item
-Setting the @code{transparent} property will cause an object 
-to be printed in @q{invisible ink}: the object is not printed, 
-but all its other behavior is retained.  The object still takes 
-up space, it takes part in collisions, and slurs, ties, and beams
-can be attached to it.
+@subheading Tying notes across voices
 
-The following example demonstrates how to connect different voices
-using ties.  Normally, ties only connect two notes in the same
-voice.  By introducing a tie in a different voice,
+The following example demonstrates how to connect notes in
+different voices using ties.  Normally, ties can be used to
+only to connect two notes in the same voice.  By introducing 
+a tie in a different voice,
 
 @lilypond[quote,fragment,relative=2]
 << {
@@ -2790,8 +2814,8 @@ voice.  By introducing a tie in a different voice,
 @end lilypond
 
 @noindent
-and blanking the first up-stem in that voice, the tie appears to cross
-voices:
+and blanking the first up-stem in that voice, the tie appears to 
+cross voices:
 
 @lilypond[quote,fragment,relative=2,verbatim]
 << {
@@ -2802,9 +2826,9 @@ voices:
 } >>
 @end lilypond
 
-To make sure that the just-blanked stem doesn't squeeze the tie too much,
-we also lengthen the stem, by setting the @code{length} to
-@code{8},
+To make sure that the just-blanked stem doesn't squeeze the tie 
+too much, we can also lengthen the stem, by setting the 
+@code{length} to @code{8},
 
 @lilypond[quote,fragment,relative=2,verbatim]
 << {
@@ -2816,9 +2840,12 @@ we also lengthen the stem, by setting the @code{length} to
 } >>
 @end lilypond
 
-@cindex stencil property
-
 @item
+@subheading Simulating a fermata
+
+@cindex stencil property, use of
+@cindex fermata, implementing in MIDI
+
 For outside-staff objects it is usually better to override the
 object's @code{stencil} property rather than its @code{transparent}
 property when you wish to remove it from the printed output.  
@@ -2850,6 +2877,7 @@ We show here the effect of the two methods:
     \tempo 4=120
     a a a a
   }
+  \layout { }
   \midi { }
 }
 @end lilypond
@@ -2865,42 +2893,172 @@ while the second (with no stencil) does not.
 @node Using variables for tweaks
 @subsection Using variables for tweaks
 
-TODO Add section
+Override commands are often long and tedious to type, and they
+have to be absolutely correct.  If the same overrides are to be
+used many times it may be worth defining variables to hold them.
+Suppose we wish to emphasize certain words in lyrics by printing
+them in bold italics.  The @code{\italic} and @code{\bold} 
+commands do not work within lyrics so we must instead use the 
+following @code{\override} and @code{\revert} commands:
+
+@example
+@code{\override Lyrics . LyricText #'font-shape = #'italic}
+@code{\override Lyrics . LyricText #'font-series = #'bold}
+
+@code{\revert Lyrics . LyricText #'font-shape}
+@code{\revert Lyrics . LyricText #'font-series}
+@end example
+
+These would be extremely tedious to enter if there were many words
+requiring emphasis.  So instead we define these as two variables,
+and use them as follows:
+
+@lilypond[quote,verbatim]
+emph = {
+  \override Lyrics . LyricText #'font-shape = #'italic
+  \override Lyrics . LyricText #'font-series = #'bold
+}
+norm = {
+  \revert Lyrics . LyricText #'font-shape
+  \revert Lyrics . LyricText #'font-series
+}
+
+global = { \time 4/4 \partial 4 \key c \major}
+SopMusic   = \relative c' { c4 | e4. e8 g4  g  | a a g }
+AltoMusic  = \relative c' { c4 | c4. c8 e4  e  | f f e }
+TenorMusic = \relative c  { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic  = \relative c  { c4 | c4. c8 c4  c  | f8 g a b c4 }
+VerseOne   = \lyrics { E -- | ter -- nal \emph Fa -- ther, \norm | strong to save, }
+VerseTwo   = \lyricmode { O | \emph Christ, \norm whose voice the | wa -- ters heard, }
+VerseThree = \lyricmode { O | \emph Ho -- ly Spi -- rit, \norm | who didst brood }
+VerseFour  = \lyricmode { O | \emph Tri -- ni -- ty \norm of | love and pow'r }
+
+\score {
+  \new ChoirStaff <<
+    \new Staff <<
+      \clef "treble"
+      \new Voice = "Sop"  { \voiceOne \global \SopMusic }
+      \new Voice = "Alto" { \voiceTwo \AltoMusic }
+      \new Lyrics \lyricsto "Sop" { \VerseOne   }
+      \new Lyrics \lyricsto "Sop" { \VerseTwo   }
+      \new Lyrics \lyricsto "Sop" { \VerseThree }
+      \new Lyrics \lyricsto "Sop" { \VerseFour  }
+    >>
+    \new Staff <<
+      \clef "bass"
+      \new Voice = "Tenor" { \voiceOne \TenorMusic }
+      \new Voice = "Bass"  { \voiceTwo \BassMusic  }
+    >>
+  >>
+}
+@end lilypond
+
+
 
 @node Other sources of information
 @subsection Other sources of information
 
 The Internals Reference documentation contains a lot of information
 about LilyPond, but even more information can be gathered from
-looking at the internal LilyPond files.
-
-TODO Show example, then explain where to find ly/propert-ly.
-
-Some default settings (such as the definitions for
-@code{\header@{@}}s) are stored as @code{.ly} files.  Other
-settings (such as the definitions of markup commands) are
-stored as @code{.scm} (Scheme) files.  Further explanation is
-outside the scope of this manual; users should be warned that
-a substantial amount of technical knowledge or time is required
-to understand these files.
+looking at the internal LilyPond files.  To explore these, first
+find the directory appropriate to your system, as follows:
 
 @itemize
 
-@item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
+@item Linux: 
+Navigate to 
+@file{@var{installdir}/lilypond/usr/share/lilypond/current/}
 
 @item OSX:
+Navigate to
 @file{@var{installdir}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
-To access this, either @code{cd} into this directory from the
-Terminal, or control-click on the LilyPond application and select
-@q{Show Package Contents}.
+by either @code{cd}-ing into this directory from the
+Terminal, or control-clicking on the LilyPond application and 
+selecting @q{Show Package Contents}.
 
-@item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
+@item Windows: 
+Using Windows Explorer, navigate to
+@file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
 
 @end itemize
 
-The @file{ly/} and @file{scm/} directories will be of
-particular interest.  Files such as @file{ly/property-init.ly} and
-@file{ly/declarations-init.ly} define all the common tweaks.
+Within this directory the two interesting subdirectories are
+
+@itemize
+
+@item @file{../ly/} - contains files in LilyPond format
+
+@item @file{../scm/} - contains files in Scheme format
+
+@end itemize
+
+Let's begin by looking at some files in @file{../ly/}.
+Open @file{../ly/property-init.ly} in a text editor.  The one
+you normally use for @code{.ly} files will be fine.  This file
+contains the definitions of all the standard LilyPond built-in
+commands -- like @code{\stemUp} and @code{\slurDotted}.  You will
+see that these are nothing more than definitions of variables
+containing one or a group of @code{\override} commands.  For
+example, @code{/tieDotted} is defined to be:
+
+@example
+tieDotted = @{
+  \override Tie #'dash-period = #0.75
+  \override Tie #'dash-fraction = #0.1
+@}
+@end example
+
+If you do not like the default values these built-in commands can
+be redefined easily, just like any other variable, at the
+head of your input file.
+
+These are the most useful files to be found in @file{../ly/}:
+
+@multitable @columnfractions .4 .6
+@headitem Filename
+  @tab Contents
+@item @file{../ly/engraver-init.ly}
+  @tab Definitions of engraver Contexts
+@item @file{../ly/paper-defaults.ly}
+  @tab Specifications of paper-related defaults
+@item @file{../ly/performer-init.ly}
+  @tab Definitions of performer Contexts
+@item @file{../ly/property-init.ly}
+  @tab Definitions of all common macros
+@end multitable
+
+Other settings (such as the definitions of markup commands) are
+stored as @code{.scm} (Scheme) files.  The Scheme programming
+language is used to provide a programmable interface into
+LilyPond internal operation.  Further explanation of these files
+is currently outside the scope of this manual, as a knowledge of
+the Scheme language is required.  Users should be warned that
+a substantial amount of technical knowledge or time is required
+to understand Scheme and these files.
+
+If you have this knowledge, the Scheme files which may be of
+interest are:
+
+@multitable @columnfractions .4 .6
+@headitem Filename
+  @tab Contents
+@item @file{../scm/auto-beam.scm}
+  @tab Sub-beaming defaults
+@item @file{../scm/define-grobs.scm}
+  @tab Default settings for grob properties
+@item @file{../scm/define-markup-commands.scm}
+  @tab Specify all markup commands
+@item @file{../scm/midi.scm}
+  @tab Default settings for MIDI output
+@item @file{../scm/output-lib.scm}
+  @tab Settings that affect appearance of frets, colors,
+       accidentals, bar lines, etc
+@item @file{../scm/parser-clef.scm}
+  @tab Definitions of supported clefs
+@item @file{../scm/script.scm}
+  @tab Default settings for articulations
+@end multitable
+
 
 
 @node Advanced tweaks with Scheme
@@ -3007,3 +3165,5 @@ In some cases (see issue 246), this must be done before
 
 
 
+
+
index 94d43b171d09d5c742f27cb8e7a2a1ecfb5a433a..4f8820da016d072f01a86d28713f352daecd4baa 100644 (file)
@@ -647,8 +647,8 @@ examples are used for
 @itemize
 @item Bug reports
 @item Sending a help request to mailists
-@item Adding an example to the @uref{http://lsr@/.dsi@/.unimi@/.it/,LilyPond
-Snippet Repository}
+@item Adding an example to the @uref{http://lsr.dsi.unimi.it/,
+LilyPond Snippet Repository}
 @end itemize
 
 To construct an example which is as small as possible, the rule is
diff --git a/THANKS b/THANKS
index aeb8a83c9da5e82c0e0f0f075487f429e01e4a10..90b476020db5526f6506e8373c0595cb71e99343 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -2,7 +2,6 @@ Release 2.11
 ************
 
 
-
 DEVELOPMENT TEAM
 
 Han-Wen Nienhuys   - Core development
@@ -24,6 +23,7 @@ Erlend Aasland
 
 
 GRAND DOCUMENTATION PROJECT
+
 Trevor Daniels     - main Rewriter
 Eyolf Østrem       - main Rewriter
 Kurt Kroon         - Glossary updates
@@ -35,6 +35,7 @@ Trevor Baca        - Inspirational Headwords
 
 TRANSLATORS
 
+Clytie Siddall
 Francisco Vila
 Jean-Charles Malahieude
 John Mandereau
@@ -113,6 +114,7 @@ Zack Charter
 Zoltan Selyem
 
 
+
 Release 2.10
 ************
 
diff --git a/buildscripts/translations-status.py b/buildscripts/translations-status.py
new file mode 100644 (file)
index 0000000..494b59b
--- /dev/null
@@ -0,0 +1,366 @@
+#!@PYTHON@
+
+"""
+USAGE: translations-status.py BUILDSCRIPT-DIR LOCALEDIR
+
+  This script must be run from Documentation/
+
+  Reads template files translations.template.html
+and for each LANG in LANGUAGES LANG/translations.template.html
+
+  Writes translations.html.in and for each LANG in LANGUAGES
+translations.LANG.html.in
+"""
+
+import sys
+import re
+import string
+import os
+import gettext
+
+def progress (str):
+    sys.stderr.write (str + '\n')
+
+progress ("translations-status.py")
+
+buildscript_dir = sys.argv[1]
+localedir = sys.argv[2]
+
+_doc = lambda s: s
+
+sys.path.append (buildscript_dir)
+import langdefs
+
+# load gettext messages catalogs
+translation = {}
+for l in langdefs.LANGUAGES:
+    if l.enabled and l.code != 'en':
+        translation[l.code] = gettext.translation('lilypond-doc', localedir, [l.code]).gettext
+
+def read_pipe (command):
+    pipe = os.popen (command)
+    output = pipe.read ()
+    if pipe.close ():
+        print "pipe failed: %(command)s" % locals ()
+    return output
+
+comments_re = re.compile (r'^@ignore\n(.|\n)*?\n@end ignore$|@c .*?$', re.M)
+space_re = re.compile (r'\s+', re.M)
+lilypond_re = re.compile (r'@lilypond({.*?}|(.|\n)*?\n@end lilypond$)', re.M)
+node_re = re.compile ('^@node .*?$', re.M)
+title_re = re.compile ('^@(top|chapter|(?:sub){0,2}section|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?) (.*?)$', re.M)
+include_re = re.compile ('^@include (.*?)$', re.M)
+
+committish_re = re.compile ('GIT [Cc]ommittish: ([a-f0-9]+)')
+translators_re = re.compile (r'^@c\s+Translators\s*:\s*(.*?)$', re.M | re.I)
+checkers_re = re.compile (r'^@c\s+Translation\s*checkers\s*:\s*(.*?)$', re.M | re.I)
+status_re = re.compile (r'^@c\s+Translation\s*status\s*:\s*(.*?)$', re.M | re.I)
+post_gdp_re = re.compile ('post.GDP', re.I)
+untranslated_node_str = 'UNTRANSLATED NODE: IGNORE ME'
+skeleton_str = '-- SKELETON FILE --'
+
+diff_cmd = 'git diff --no-color %(committish)s HEAD -- %(original)s | cat'
+
+format_table = {
+    'not translated': {'color':'d0f0f8', 'short':_doc ('no'), 'long':_doc ('not translated')},
+    'partially translated': {'color':'dfef77', 'short':_doc ('partially (%(p)d %%)'),
+                             'long':_doc ('partially translated (%(p)d %%)')},
+    'fully translated': {'color':'1fff1f', 'short':_doc ('yes'), 'long': _doc ('translated')},
+    'up to date': {'short':_doc ('yes'), 'long':_doc ('up to date')},
+    'outdated': {'short':_doc ('partially (%(p)d %%)'), 'long':_doc ('partially up-to-date (%(p)d %%)')},
+    'pre-GDP':_doc ('pre-GDP'),
+    'post-GDP':_doc ('post-GDP')
+}
+
+texi_level = {
+# (Unumbered/Numbered/Lettered, level)
+    'top': ('u', 0),
+    'unnumbered': ('u', 1),
+    'unnumberedsec': ('u', 2),
+    'unnumberedsubsec': ('u', 3),
+    'chapter': ('n', 1),
+    'section': ('n', 2),
+    'subsection': ('n', 3),
+    'appendix': ('l', 1)
+}
+
+appendix_number_trans = string.maketrans ('@ABCDEFGHIJKLMNOPQRSTUVWXY','ABCDEFGHIJKLMNOPQRSTUVWXYZ')
+
+class SectionNumber (object):
+    def __init__ (self):
+        self.__current_number = [0]
+        self.__type = 'n'
+
+    def __increase_last_index (self):
+        if isinstance (self.__current_number[-1], str):
+            self.__current_number[-1] = self.__current_number[-1].translate (appendix_number_trans)
+        else:
+            self.__current_number[-1] += 1
+
+    # ugh, current implementation is too naive:
+    # unnumbered stuff is really printed without number for @top only
+    def format (self):
+        if self.__current_number == [0] or self.__type == 'u':
+            return ''
+        return '.'.join ([str (i) for i in self.__current_number[1:]]) + ' '
+
+    def increase (self, (type, level)):
+        if level == 0:
+            self.__current_number = [0]
+        while level + 1 < len (self.__current_number):
+            del self.__current_number[-1]
+        if level + 1 > len (self.__current_number):
+            self.__type = type
+            if type == 'l':
+                self.__current_number.append ('@')
+            else:
+                self.__current_number.append (0)
+
+        if type == self.__type:
+            self.__increase_last_index ()
+        elif type == 'l' and level == 1:
+            self.__current_number[-1] = 'A'
+        else:
+            self.__current_number[-1] = 1
+        return self.format ()
+
+
+def percentage_color (percent):
+    p = percent / 100.0
+    if p < 0.33:
+        c = [hex (int (3 * p * b + (1 - 3 * p) * a))[2:] for (a, b) in [(0xff, 0xff), (0x5c, 0xa6), (0x5c, 0x4c)]]
+    elif p < 0.67:
+        c = [hex (int ((3 * p - 1) * b + (2 - 3 * p) * a))[2:] for (a, b) in [(0xff, 0xff), (0xa6, 0xff), (0x4c, 0x3d)]]
+    else:
+        c = [hex (int ((3 * p - 2) * b + 3 * (1 - p) * a))[2:] for (a, b) in [(0xff, 0x1f), (0xff, 0xff), (0x3d, 0x1f)]]
+    return ''.join (c)
+
+def line_word_count (tely_line):
+    if tely_line.startswith ('@'):
+        return 0
+    tely_line = comments_re.sub ('', tely_line)
+    return len (space_re.split (tely_line))
+
+def tely_word_count (tely_doc):
+    '''
+    Calculate word count of a Texinfo document node by node.
+
+    Take string tely_doc as an argument.
+    Return a list of integers.
+
+    Texinfo comments and @lilypond blocks are not included in word counts.
+    '''
+    tely_doc = comments_re.sub ('', tely_doc)
+    tely_doc = lilypond_re.sub ('', tely_doc)
+    nodes = node_re.split (tely_doc)
+    return [len (space_re.split (n)) for n in nodes]
+
+
+class TelyDocument (object):
+    def __init__ (self, filename):
+        self.filename = filename
+        self.contents = open (filename).read ()
+
+        ## record title and sectionning level of first Texinfo section
+        m = title_re.search (self.contents)
+        if m:
+            self.title = m.group (2)
+            self.level = texi_level [m.group (1)]
+        else:
+            self.title = 'Untitled'
+            self.level = ('u', 1)
+
+        included_files = [os.path.join (os.path.dirname (filename), t) for t in include_re.findall (self.contents)]
+        self.included_files = [p for p in included_files if os.path.exists (p)]
+
+    def print_title (self, section_number):
+        return section_number.increase (self.level) + self.title
+
+
+class TranslatedTelyDocument (TelyDocument):
+    def __init__ (self, filename, masterdocument, parent_translation=None):
+        TelyDocument.__init__ (self, filename)
+
+        self.masterdocument = masterdocument
+
+        ## record authoring information
+        m = translators_re.search (self.contents)
+        if m:
+            self.translators = [n.strip () for n in m.group (1).split (',')]
+        else:
+            self.translators = parent_translation.translators
+        m = checkers_re.search (self.contents)
+        if m:
+            self.checkers = [n.strip () for n in m.group (1).split (',')]
+        elif isinstance (parent_translation, TranslatedTelyDocument):
+            self.checkers = parent_translation.checkers
+        else:
+            self.checkers = []
+
+        ## check whether translation is pre- or post-GDP
+        m = status_re.search (self.contents)
+        if m:
+            self.post_gdp = bool (post_gdp_re.search (m.group (1)))
+        else:
+            self.post_gdp = False
+
+        ## record which parts (nodes) of the file are actually translated
+        self.partially_translated = not skeleton_str in self.contents
+        nodes = node_re.split (self.contents)
+        self.translated_nodes = [not untranslated_node_str in n for n in nodes]
+
+        ## calculate translation percentage
+        master_total_word_count = sum (masterdocument.word_count)
+        translation_word_count = sum ([masterdocument.word_count[k] * self.translated_nodes[k]
+                                       for k in range (min (len (masterdocument.word_count), len (self.translated_nodes)))])
+        self.translation_percentage = 100 * translation_word_count / master_total_word_count
+
+        ## calculate how much the file is outdated
+        m = committish_re.search (self.contents)
+        if not m:
+            sys.stderr.write ('error: ' + filename + \
+                                  ": no 'GIT committish: <hash>' found.\nPlease check " + \
+                                  'the whole file against the original in English, then ' + \
+                                  'fill in HEAD committish in the header.\n')
+            sys.exit (1)
+        diff = read_pipe (diff_cmd % {'committish':m.group (1), 'original':masterdocument.filename}).splitlines ()
+        insertions = sum ([line_word_count (l[1:]) for l in diff if l.startswith ('+') and not l.startswith ('+++')])
+        deletions = sum ([line_word_count (l[1:]) for l in diff if l.startswith ('-') and not l.startswith ('---')])
+        outdateness_percentage = 50.0 * (deletions + insertions) / (master_total_word_count + 0.5 * (deletions - insertions))
+        self.uptodate_percentage = 100 - int (outdateness_percentage)
+        if self.uptodate_percentage > 100:
+            alternative = 50
+            progress ("%s: strange uptodateness percentage %d %%, setting to %d %%" \
+                          % (self.filename, self.uptodate_percentage, alternative))
+            self.uptodate_percentage = alternative
+        elif self.uptodate_percentage < 1:
+            alternative = 1
+            progress ("%s: strange uptodateness percentage %d %%, setting to %d %%" \
+                          % (self.filename, self.uptodate_percentage, alternative))
+            self.uptodate_percentage = alternative
+
+    def completeness (self, formats=['long']):
+        if isinstance (formats, str):
+            formats = [formats]
+        p = self.translation_percentage
+        if p == 0:
+            status = 'not translated'
+        elif p == 100:
+            status = 'fully translated'
+        else:
+            status = 'partially translated'
+        return dict ([(f, format_table[status][f] % locals()) for f in formats])
+
+    def uptodateness (self, formats=['long']):
+        if isinstance (formats, str):
+            formats = [formats]
+        p = self.uptodate_percentage
+        if p == 100:
+            status = 'up to date'
+        else:
+            status = 'outdated'
+        l = {}
+        for f in formats:
+            if f == 'color':
+                l['color'] = percentage_color (p)
+            else:
+                l[f] = format_table[status][f] % locals ()
+        return l
+
+    def gdp_status (self, translation=lambda s: s):
+        if self.post_gdp:
+            return translation (format-table['post-GDP'])
+        else:
+            return translation (format-table['pre-GDP'])
+
+    def short_html_status (self):
+        s = '  <td>'
+        if self.partially_translated:
+            s += '<br>\n   '.join (self.translators) + '<br>\n'
+            if self.checkers:
+                s += '   <small>' + '<br>\n   '.join (self.checkers) + '</small><br>\n'
+
+        c = self.completeness (['long', 'color'])
+        s += '   <span style="background-color: #%(color)s">%(long)s</span><br>\n' % c
+
+        if self.partially_translated:
+            u = self.uptodateness (['long', 'color'])
+            s += '   <span style="background-color: #%(color)s">%(long)s</span><br>\n' % u
+
+        s += '  </td>\n'
+        return s
+
+    def html_status (self):
+        # TODO
+        return ''
+
+class MasterTelyDocument (TelyDocument):
+    def __init__ (self, filename, parent_translations=dict ([(lang, None) for lang in langdefs.LANGDICT.keys()])):
+        #print "init MasterTelyDocument %s" % filename
+        TelyDocument.__init__ (self, filename)
+        self.word_count = tely_word_count (self.contents)
+        translations = dict ([(lang, os.path.join (lang, filename)) for lang in langdefs.LANGDICT.keys()])
+        #print translations
+        self.translations = dict ([(lang, TranslatedTelyDocument (translations[lang], self, parent_translations.get (lang)))
+                                   for lang in langdefs.LANGDICT.keys() if os.path.exists (translations[lang])])
+        if self.translations:
+            self.includes = [MasterTelyDocument (f, self.translations) for f in self.included_files]
+        else:
+            self.includes = []
+
+    # TODO
+    def print_wc_priority (self):
+        return
+
+    def html_status (self, numbering=SectionNumber ()):
+        if self.title == 'Untitled' or not self.translations:
+            return ''
+        if self.level[1] == 0: # if self is a master document
+            s = '''<table align="center" border="2">
+ <tr align="center">
+  <th>%s</th>''' % self.print_title (numbering)
+            s += ''.join (['  <th>%s</th>\n' % l for l in self.translations.keys ()])
+            s += ' </tr>\n'
+            s += ' <tr align="left">\n  <td>Section titles<br>(%d)</td>\n' \
+                % sum (self.word_count)
+
+        else:
+            s = ' <tr align="left">\n  <td>%s<br>(%d)</td>\n' \
+                % (self.print_title (numbering), sum (self.word_count))
+
+        s += ''.join ([t.short_html_status () for t in self.translations.values ()])
+        s += ' </tr>\n'
+        s += ''.join ([i.html_status (numbering) for i in self.includes])
+
+        if self.level[1] == 0:
+            s += '</table>\n<p></p>\n'
+        return s
+
+progress ("Reading documents...")
+
+tely_files = read_pipe ("find -maxdepth 2 -name '*.tely'").splitlines ()
+master_docs = [MasterTelyDocument (filename) for filename in tely_files]
+master_docs = [doc for doc in master_docs if doc.translations]
+
+main_status_page = open ('translations.template.html').read ()
+
+## TODO
+#per_lang_status_pages = dict ([(l, open (os.path.join (l, 'translations.template.html')). read ())
+#                               for l in langdefs.LANGDICT.keys ()
+#                               if langdefs.LANGDICT[l].enabled])
+
+progress ("Generating status pages...")
+
+main_status_html = ' <p><i>Last updated %s</i></p>\n' % read_pipe ('LANG= date -u')
+main_status_html += '\n'.join ([doc.html_status () for doc in master_docs])
+
+html_re = re.compile ('<html>', re.I)
+end_body_re = re.compile ('</body>', re.I)
+
+main_status_page = html_re.sub ('''<html>
+<!-- This page is automatically generated by translation-status.py from
+translations.template.html; DO NOT EDIT !-->''', main_status_page)
+
+main_status_page = end_body_re.sub (main_status_html + '\n</body>', main_status_page)
+
+open ('translations.html.in', 'w').write (main_status_page)
index 8d7899ef0ebf7de524234f0c27d235919101d5e7..26cd613e4cdad36764c976bb424b124bc1638b08 100644 (file)
@@ -17,19 +17,23 @@ outdir = os.path.normpath (outdir)
 doc_dirs = ['input', 'Documentation', outdir]
 target_pattern = os.path.join (outdir, '%s-root')
 
+# these redirection pages allow to go back to the documentation index
+# from HTML manuals/snippets page
 static_files = {
     os.path.join (outdir, 'index.html'):
-    '''<META HTTP-EQUIV="refresh" content="0;URL=Documentation/index.html">
+        '''<META HTTP-EQUIV="refresh" content="0;URL=Documentation/index.html">
 <html><body>Redirecting to the documentation index...</body></html>\n''',
     os.path.join (outdir, 'VERSION'):
-    package_version + '\n' }
+        package_version + '\n',
+    os.path.join ('input', 'lsr', outdir, 'index.html'):
+        '''<META HTTP-EQUIV="refresh" content="0;URL=../../index.html">
+<html><body>Redirecting to the documentation index...</body></html>\n'''
+    }
 
 import langdefs
 
-# ugly hack: the following overwrites HTML Info dir with a link to
-# the (more useful) documentation index
 for l in langdefs.LANGUAGES:
-    static_files[os.path.join ('Documentation/user', outdir, l.file_name ('index', '.html'))] = \
+    static_files[os.path.join ('Documentation', 'user', outdir, l.file_name ('index', '.html'))] = \
                                   '<META HTTP-EQUIV="refresh" content="0;URL=../' + l.file_name ('index', '.html') + \
                                   '">\n<html><body>Redirecting to the documentation index...</body></html>\n'
 
@@ -45,9 +49,9 @@ sys.stderr.write ("Mirrorring...\n")
 dirs, symlinks, files = mirrortree.walk_tree (
     tree_roots = doc_dirs,
     process_dirs = outdir,
-    exclude_dirs = '(^|/)(' + '|'.join ([l.code for l in langdefs.LANGUAGES]) + r'|po|out|\w*?-root)(/|$)',
+    exclude_dirs = '(^|/)(' + '|'.join ([l.code for l in langdefs.LANGUAGES]) + r'|po|out|.*?[.]t2d|\w*?-root)(/|$)',
     find_files = r'.*?\.(?:midi|html|pdf|png|txt|ly|signature)$|VERSION',
-    exclude_files = r'lily-[0-9a-f]+.*\.pdf')
+    exclude_files = r'lily-[0-9a-f]+.*\.(pdf|txt)')
 
 # actual mirrorring stuff
 html_files = []
index 70aef6b7b9981ef8c6d8f73736f6b7b5f556eb91..4a13c69df9296c14177217a6be8c24505d335569 100644 (file)
@@ -18,7 +18,7 @@ That said, if you're trying to imitate old American song books, you may
 also want to try LilyPond's predefined note heads styles, through
 shortcut commands such as \\aikenHeads or \\sacredHarpHeads.
 
-This exemple shows different ways to obtain shape note heads, and
+This example shows different ways to obtain shape note heads, and
 demonstrates the ability to transpose a melody without losing the
 correspondance between harmonic functions and note heads styles.
 " }
diff --git a/input/lsr/creating-real-parenthesized-dynamics.ly b/input/lsr/creating-real-parenthesized-dynamics.ly
new file mode 100644 (file)
index 0000000..87a0b64
--- /dev/null
@@ -0,0 +1,30 @@
+%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% This file is in the public domain.
+\version "2.11.38"
+
+\header {
+  lsrtags = "expressive-marks, text"
+ texidoc = "
+Although the easiest way to add parenthesis to a dynamic mark is to use
+a \\markup block, this method has a downside: the created objects will
+behave like text markups, and not like dynamics.
+
+However, it is possible to create a similar object using the equivalent
+Scheme code (as described in \"Markup programmer interface\"), combined
+with the make-dynamic-script function. This way, the markup will be
+regarded as a dynamic, and therefore will remain compatible with
+commands such as \\dynamicUp or \\dynamicDown.
+
+
+" }
+% begin verbatim
+\paper { ragged-right = ##t }
+
+parenF = #(make-dynamic-script (markup #:line(#:normal-text #:italic
+#:fontsize 2 "(" #:hspace -0.8 #:dynamic "f" #:normal-text #:italic
+#:fontsize 2 ")" )))
+
+\score
+{
+       { c''\parenF c'' c'' \dynamicUp c''\parenF }
+}
index 2b054fdaa361131998ebc106796775b5b1382548..70d106df8bb9b10412fc721edd44f743dbe94a53 100644 (file)
@@ -6,7 +6,7 @@
   lsrtags = "pitches"
  texidoc = "
 In early XXth century works, starting with Schönberg, Berg and Webern
-(the \"second\" Viennese school), every pitch in the twelve- note scale
+(the \"second\" Viennese school), every pitch in the twelve-tone scale
 has to be regarded as equal, without any hierarchy such as the
 classical (tonal) degrees. Therefore, these composers print one
 accidental for each note, even at natural pitches, to emphasize their
diff --git a/input/lsr/entering-several-tuplets-using-only-one--times-command.ly b/input/lsr/entering-several-tuplets-using-only-one--times-command.ly
new file mode 100644 (file)
index 0000000..d22e4b7
--- /dev/null
@@ -0,0 +1,24 @@
+%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% This file is in the public domain.
+\version "2.11.38"
+
+\header {
+  lsrtags = "rhythms"
+ texidoc = "
+This example shows how to specify how long each of the tuplets
+contained within the bracket after @code{\\times} should last.  Many
+consecutive tuplets can then be contained within a single @code{\\times
+@{ ... @}}, thus saving typing.
+
+In the example, two triplets are shown, while @code{\\times} was
+entered only once.
+
+
+For more information about @code{make-moment}, see \"Time
+administration\". 
+" }
+% begin verbatim
+\relative {
+  \set tupletSpannerDuration = #(ly:make-moment 1 4)
+  \times 2/3 { c8 c c c c c }
+}
index 7ed0da7c352070e49aa2c725f0f33b692cee1c66..14cfe8f7ef814f7fa4e451e5075922fcade1c1cc 100644 (file)
@@ -4,6 +4,7 @@ adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly
 changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly
 caesura-railtracks-with-fermata.ly
 breathing-sign.ly
+creating-real-parenthesized-dynamics.ly
 center-text-below-hairpin-dynamics.ly
 contemporary-glissando.ly
 adding-parentheses-around-an-expressive-mark.ly
index 6e43033c71f66e0c31a1263424eaf99db91d5e72..ee38205550b8156d50a32d3d3f9da4c621a19d40 100644 (file)
@@ -1,3 +1,4 @@
 jazz-combo-template.ly
 adding-drum-parts.ly
 heavily-customized-polymetric-time-signatures.ly
+printing-music-with-different-time-signatures.ly
diff --git a/input/lsr/printing-music-with-different-time-signatures.ly b/input/lsr/printing-music-with-different-time-signatures.ly
new file mode 100644 (file)
index 0000000..b62b308
--- /dev/null
@@ -0,0 +1,141 @@
+%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% This file is in the public domain.
+\version "2.11.38"
+
+\header {
+  lsrtags = "rhythms, percussion"
+ texidoc = "
+In the following snippet, two parts have a completely different time
+signature, and yet keep synchronized.
+
+This can be achieved with the \\compressMusic command, as demonstrated
+here.
+
+The barlines can't be printed at the Score level anymore, so you have
+to remove the Barline_engraver and put it in the Staff context.
+" }
+% begin verbatim
+% Thanks to Adam James Wilson for this snippet
+
+\paper {
+       indent = #0
+       ragged-right = ##t
+}
+
+global = { \time 3/4 { s2. * 3 } \bar "" \break { s2. * 3 }}
+
+\layout {
+       \context { \Score
+               \remove "Timing_translator"
+               \remove "Time_signature_engraver"
+               \remove "Default_bar_line_engraver"
+               \override SpacingSpanner #'uniform-stretching = ##t
+               \override SpacingSpanner #'strict-note-spacing = ##t
+               proportionalNotationDuration = #(ly:make-moment 1 64)
+       }
+       \context { \Staff
+               \consists "Timing_translator"
+               \consists "Default_bar_line_engraver"
+               \consists "Time_signature_engraver"
+       }
+       \context { \Voice
+               \remove Forbid_line_break_engraver
+               tupletFullLength = ##t
+       }
+}
+
+
+Bassklarinette =        \new Staff <<
+               \global
+               {
+               \bar "|"
+               \clef treble
+               \time 3/8
+               d''4.
+
+               \bar "|"
+               \time 3/4
+               r8 des''2( c''8)
+
+               \bar "|"
+               \time 7/8
+               r4. ees''2 ~
+
+               \bar "|"
+               \time 2/4
+               \tupletUp
+               \times 2/3 {ees''4 r4 d''4 ~}
+
+               \bar "|"
+               \time 3/8
+               \tupletUp
+               \times 3/4 {d''4 r4}
+
+               \bar "|"
+               \time 2/4
+               e''2
+
+               \bar "|"
+               \time 3/8
+       es''4.
+\bar "|"
+\time 3/4
+r8 d''2 r8
+\bar "|"
+               }
+       >>
+Perkussion =    \new StaffGroup <<
+               \new Staff <<
+                       \global
+                       {
+                       \bar "|"
+                       \clef percussion
+                       \time 3/4
+                       r4 c'2 ~
+
+                       \bar "|"
+                       c'2.
+
+                       \bar "|"
+                       R2.
+
+                       \bar "|"
+                       r2 g'4 ~
+
+                       \bar "|"
+                       g'2. ~
+
+                       \bar "|"
+                       g'2.
+                       }
+               >>
+               \new Staff <<
+                       \global
+                       {
+                       \bar "|"
+                       \clef percussion
+                       \time 3/4
+                       R2.
+
+                       \bar "|"
+                       g'2. ~
+
+                       \bar "|"
+                       g'2.
+
+                       \bar "|"
+                       r4 g'2 ~
+
+                       \bar "|"
+                       g'2 r4
+
+                       \bar "|"
+                       g'2.
+                       }
+               >>
+       >>
+
+\score { <<  \Bassklarinette \Perkussion >>
+
+}
+
index 2a1edde5b98697aee82366c8ea5d193ef263f5f7..63959b45bcba9639ea9dfd31e0ae26c4b66ac0f6 100644 (file)
@@ -2,6 +2,7 @@ altering-the-number-of-stems-in-a-beam.ly
 adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly
 conducting-signs,-measure-grouping-signs.ly
 heavily-customized-polymetric-time-signatures.ly
+skips-in-lyric-mode.ly
 rhythmic-slashes.ly
 skips-in-lyric-mode-2.ly
 manually-controlling-beam-positions.ly
@@ -10,10 +11,11 @@ changing-time-signatures-inside-a-polymetric-section-using--compressmusic.ly
 automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.ly
 making-an-object-invisible-with-the-transparent-property.ly
 automatic-beam-subdivisions.ly
+rest-styles.ly
 forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly
 controlling-tuplet-bracket-visibility.ly
 beam-across-line-breaks.ly
-skips-in-lyric-mode.ly
+printing-music-with-different-time-signatures.ly
 adding-drum-parts.ly
-rest-styles.ly
+entering-several-tuplets-using-only-one--times-command.ly
 compound-time-signatures.ly
index d9f5825d2e1e103ad235fda9f8ecc453a051ca18..1762bd4f7b006be693f1026f795ea61058ca2bd0 100644 (file)
@@ -1,5 +1,6 @@
-alignment-vertical-spacing.ly
 vertically-aligning-ossias-and-lyrics.ly
+adjusting-lyrics-vertical-spacing.ly
+alignment-vertical-spacing.ly
 page-label.ly
+vertically-centered-dynamics-and-textscripts.ly
 proportional-strict-notespacing.ly
-adjusting-lyrics-vertical-spacing.ly
index 7a103584fc7692cf17164ead0db2aa648a378687..b7e9f28d22ed449245d37ca406ef14e4ec3f0101 100644 (file)
@@ -1,14 +1,15 @@
 combining-dynamics-with-markup-texts.ly
 creating-text-spanners.ly
-vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
+creating-real-parenthesized-dynamics.ly
 markup-lines.ly
 center-text-below-hairpin-dynamics.ly
 ottava-text.ly
 demonstrating-all-headers.ly
+utf-8.ly
 changing-the-default-text-font-family.ly
 combining-two-parts-on-the-same-staff.ly
 aligning-and-centering-instrument-names.ly
-utf-8.ly
+vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
 outputting-the-version-number.ly
 blanking-staff-lines-using-the--whiteout-command.ly
 formatting-lyrics-syllables.ly
index eb85822dcaec15d917f312ad901a462e32e4e5b7..f1322ee7d811ac3b10b22b1a0ea614aa46966450 100644 (file)
@@ -1,8 +1,8 @@
 altering-the-number-of-stems-in-a-beam.ly
 time-signature-in-parentheses.ly
-changing-the-default-text-font-family.ly
+vertically-centered-dynamics-and-textscripts.ly
 proportional-strict-notespacing.ly
-making-an-object-invisible-with-the-transparent-property.ly
+changing-the-default-text-font-family.ly
 transcription-of-ancient-music-with-incipit.ly
 alignment-vertical-spacing.ly
 manually-controlling-beam-positions.ly
@@ -10,6 +10,7 @@ custodes.ly
 drawing-boxes-around-grobs.ly
 move-specific-text.ly
 drawing-circles-around-various-objects.ly
+making-an-object-invisible-with-the-transparent-property.ly
 rest-styles.ly
 creating-text-spanners.ly
 using-the--tweak-command-to-tweak-individual-grobs.ly
diff --git a/input/lsr/vertically-centered-dynamics-and-textscripts.ly b/input/lsr/vertically-centered-dynamics-and-textscripts.ly
new file mode 100644 (file)
index 0000000..5d183b4
--- /dev/null
@@ -0,0 +1,38 @@
+%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% This file is in the public domain.
+\version "2.11.38"
+
+\header {
+  lsrtags = "tweaks-and-overrides, spacing"
+ texidoc = "
+By setting the Y-extent property to a fixed value (here -1.5 . 1.5), we
+force LilyPond to align every elements of the DynamicLineSpanner (text
+elements and dynamics) to a common reference point, regardless to the
+actual extent of these objects. This way, every element will be
+vertically centered, for a nicer output (you can compare the first and
+the second line in this example; the trick is only applied on the
+second line).
+
+The same idea is used to align the text scripts along their baseline.
+" }
+% begin verbatim
+\paper { indent = 0 line-width = 5\in }
+
+music = \relative c''
+{
+   c2\p^\markup { "gorgeous" } c\f^\markup { "fantastic" }
+   c4\p c \f \> c c \! \p
+}
+
+\score
+{
+   {
+       \music \break
+
+       \override DynamicLineSpanner #'staff-padding = #2.0
+       \override DynamicLineSpanner #'Y-extent = #'(-1.5 . 1.5)
+       \override TextScript #'Y-extent = #'(-1.5 . 1.5)
+       \music
+   }
+}
+
diff --git a/input/new/incipit.ly b/input/new/incipit.ly
new file mode 100644 (file)
index 0000000..6710d99
--- /dev/null
@@ -0,0 +1,262 @@
+\version "2.11.39"
+\header {
+  doctitle = "Incipit"
+  lsrtags = "staff-notation,Ancient notation"
+  texidoc = "Incipits can be added using the instrument name grob, but
+keeping separate the instrument name definition and the incipit definition."
+}
+
+incipit =
+#(define-music-function (parser location incipit-music) (ly:music?)
+  #{
+    \once \override Staff.InstrumentName #'self-alignment-X = #RIGHT
+    \once \override Staff.InstrumentName #'self-alignment-Y = #UP
+    \once \override Staff.InstrumentName #'Y-offset = #4
+    \once \override Staff.InstrumentName #'padding = #0.3
+    \once \override Staff.InstrumentName #'stencil = 
+    #(lambda (grob)
+       (let* ((instrument-name (ly:grob-property grob 'long-text))
+              (layout (ly:output-def-clone (ly:grob-layout grob)))
+              (music (make-music 'SequentialMusic
+                      'elements (list (make-music 'ContextSpeccedMusic
+                                        'context-type 'MensuralStaff
+                                        'element (make-music 'PropertySet
+                                                   'symbol 'instrumentName
+                                                   'value instrument-name))
+                                      $incipit-music)))
+              (score (ly:make-score music))
+              (mm (ly:output-def-lookup layout 'mm))
+              (indent (ly:output-def-lookup layout 'indent))
+              (width (ly:output-def-lookup layout 'incipit-width))
+              (incipit-width (if (number? width)
+                                 (* width mm)
+                                 (* indent 0.5))))
+         (ly:output-def-set-variable! layout 'indent (- indent incipit-width))
+         (ly:output-def-set-variable! layout 'line-width indent)
+         (ly:output-def-set-variable! layout 'ragged-right #f)
+         (ly:output-def-set-variable! layout 'ragged-last #f)
+         (ly:output-def-set-variable! layout 'system-count 1)
+         (ly:score-add-output-def! score layout)
+         (set! (ly:grob-property grob 'long-text)
+               (markup #:score score))
+         (ly:system-start-text::print grob)))
+  #})
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+global = {
+  \set Score.skipBars = ##t
+  \key g \major
+  \time 4/4
+  
+  %make the staff lines invisible on staves
+  \override Staff.BarLine #'transparent = ##t
+  \skip 1*8 % the actual music
+
+  % let finis bar go through all staves
+  \override Staff.BarLine #'transparent = ##f
+
+  % finis bar
+  \bar "|."
+}
+
+discantusIncipit = <<
+  \new MensuralVoice = discantusIncipit <<
+    \repeat unfold 9 { s1 \noBreak }
+    {
+      \clef "neomensural-c1"
+      \key f \major
+      \time 2/2
+      c''1. 
+    }
+  >>
+  \new Lyrics \lyricsto discantusIncipit { IV- }
+>>
+
+discantusNotes = {
+  \transpose c' c'' {
+    \clef "treble"
+    d'2. d'4 |
+    b e' d'2 |
+    c'4 e'4.( d'8 c' b |
+    a4) b a2 |
+    b4.( c'8 d'4) c'4 |
+    \once \override NoteHead #'transparent = ##t c'1 |
+    b\breve |
+  }
+}
+
+discantusLyrics = \lyricmode {
+  Ju -- bi -- |
+  la -- te De -- |
+  o, om --
+  nis ter -- |
+  ra, __ om- |
+  "..." |
+  -us. |
+}
+
+altusIncipit = <<
+  \new MensuralVoice = altusIncipit <<
+    \repeat unfold 9 { s1 \noBreak }
+    {
+      \clef "neomensural-c3"
+      \key f \major
+      \time 2/2
+      r1 f'1. 
+    }
+  >>
+  \new Lyrics \lyricsto altusIncipit { IV- }
+>>
+
+altusNotes = {
+  \transpose c' c'' {
+    \clef "treble"
+    r2 g2. e4 fis g | % two bars
+    a2 g4 e |
+    fis g4.( fis16 e fis4) |
+    g1 |
+    \once \override NoteHead #'transparent = ##t g1 |
+    g\breve |
+  }
+}
+
+altusLyrics = \lyricmode {
+  Ju -- bi -- la -- te | % two bars
+  De -- o, om -- |
+  nis ter -- ra, |
+  "..." |
+  -us. |
+}
+
+tenorIncipit = <<
+  \new MensuralVoice = tenorIncipit <<
+    \repeat unfold 9 { s1 \noBreak }
+    {
+      \clef "neomensural-c4"
+      \key f \major
+      \time 2/2
+      r\longa
+      r\breve
+      r1 c'1.
+    }
+  >>
+  \new Lyrics \lyricsto tenorIncipit { IV- }
+>>
+
+tenorNotes = {
+  \transpose c' c' {
+    \once \override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 3)
+    \clef "treble_8"
+    R1 |
+    R1 |
+    R1 |
+    r2 d'2. d'4 b e' | % two bars
+    \once \override NoteHead #'transparent = ##t e'1 |
+    d'\breve |
+  }
+}
+
+tenorLyrics = \lyricmode {
+  Ju -- bi -- la -- te | % two bars
+  "..." |
+  -us. 
+}
+
+bassusIncipit = <<
+  \new MensuralVoice = bassusIncipit <<
+    \repeat unfold 9 { s1 \noBreak }
+    {
+      \clef "bass"
+      \key f \major
+      \time 2/2
+      %% incipit
+      r\maxima
+      f1.
+    }
+  >>
+  \new Lyrics \lyricsto bassusIncipit { IV- }
+>>
+
+bassusNotes = {
+  \transpose c' c' {
+    \clef "bass"
+    R1 |
+    R1 |
+    R1 |
+    R1 |
+    g2. e4 |
+    \once \override NoteHead #'transparent = ##t e1 |
+    g\breve |
+  }
+}
+
+bassusLyrics = \lyricmode {
+  Ju -- bi- |
+  "..." |
+  -us. 
+}
+
+\score {
+  <<
+    \new StaffGroup = choirStaff <<
+      \new Voice = "discantusNotes" <<
+        \global 
+        \set Staff.instrumentName = "Discantus"
+        \incipit \discantusIncipit
+        \discantusNotes
+      >>
+      \new Lyrics = "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics }
+      \new Voice = "altusNotes" <<
+        \global 
+        \set Staff.instrumentName = "Altus"
+        \incipit \altusIncipit
+        \altusNotes
+      >>
+      \new Lyrics = "altusLyrics" \lyricsto altusNotes { \altusLyrics }
+      \new Voice = "tenorNotes" <<
+        \global 
+        \set Staff.instrumentName = "Tenor"
+        \incipit \tenorIncipit
+        \tenorNotes
+      >>
+      \new Lyrics = "tenorLyrics" \lyricsto tenorNotes { \tenorLyrics }
+      \new Voice = "bassusNotes" <<
+        \set Staff.instrumentName = "Bassus"
+        \incipit \bassusIncipit
+        \bassusNotes
+      >>
+    >>
+    \new Lyrics = "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics } 
+    %% Keep the bass lyrics outside of the staff group to avoid bar lines
+    %% between the lyrics.
+  >>
+  \layout {
+    \context {
+      \Score
+      %% no bars in staves
+      \override BarLine #'transparent = ##t
+    }
+    %% the next three instructions keep the lyrics between the barlines
+    \context {
+      \Lyrics 
+      \consists "Bar_engraver" 
+      \override BarLine #'transparent = ##t
+    } 
+    \context { \StaffGroup \consists "Separating_line_group_engraver" }
+    \context {
+      \Voice
+      %% no slurs
+      \override Slur #'transparent = ##t
+      %% Comment in the below "\remove" command to allow line
+      %% breaking also at those barlines where a note overlaps
+      %% into the next bar.  The command is commented out in this
+      %% short example score, but especially for large scores, you
+      %% will typically yield better line breaking and thus improve
+      %% overall spacing if you comment in the following command.
+      %%\remove "Forbid_line_break_engraver"
+    }
+    indent=6\cm
+    incipit-width = 4\cm
+  }
+}
\ No newline at end of file
diff --git a/input/regression/accidental-broken-tie-spacing.ly b/input/regression/accidental-broken-tie-spacing.ly
new file mode 100644 (file)
index 0000000..f333f76
--- /dev/null
@@ -0,0 +1,11 @@
+\version "2.11.37"
+
+\header {
+  texidoc = "When a tie is broken, the spacing engine must consider the
+accidental after the line break, to prevent a collision from occurring."
+}
+
+{ \key g \major gis''1~ \break gis''4
+\repeat unfold 43 {d4 \noBreak} }
+
+
diff --git a/input/regression/incipit.ly b/input/regression/incipit.ly
new file mode 100644 (file)
index 0000000..d0073bd
--- /dev/null
@@ -0,0 +1,56 @@
+\header {
+
+  texidoc = "Incipit can be printed using an InstrumentName grob."
+
+}
+
+\version "2.11.39"
+
+%% to avoid warnings:
+#(set-object-property! 'music 'backend-type? ly:music?)
+#(set-object-property! 'music 'backend-doc "Incipit music")
+
+\score {
+  \new Staff {
+    %% All this would be shortcuted by an appropriate music function:
+    \override Staff.InstrumentName #'music = ##{ \clef "petrucci-c1" c'4 d' e' f' #}
+    \override Staff.InstrumentName #'self-alignment-X = #RIGHT
+    \override Staff.InstrumentName #'self-alignment-Y = #UP
+    \override Staff.InstrumentName #'Y-offset = #4
+    \override Staff.InstrumentName #'padding = #0
+    \override Staff.InstrumentName #'stencil = 
+    #(lambda (grob)
+       (let* ((instrument-name (ly:grob-property grob 'long-text))
+              (layout (ly:output-def-clone (ly:grob-layout grob)))
+              (music (make-music 'SequentialMusic
+                      'elements (list (make-music 'ContextSpeccedMusic
+                                        'context-type 'MensuralStaff
+                                        'element (make-music 'PropertySet
+                                                   'symbol 'instrumentName
+                                                   'value instrument-name))
+                                      (ly:grob-property grob 'music))))
+              (score (ly:make-score music))
+              (mm (ly:output-def-lookup layout 'mm))
+              (indent (ly:output-def-lookup layout 'indent))
+              (incipit-width (ly:output-def-lookup layout 'incipit-width))
+              (scaled-incipit-width (if (number? incipit-width)
+                                        (* incipit-width mm)
+                                        (* indent 0.5))))
+         (ly:output-def-set-variable! layout 'indent (- indent scaled-incipit-width))
+         (ly:output-def-set-variable! layout 'line-width indent)
+         (ly:output-def-set-variable! layout 'ragged-right #f)
+         (ly:score-add-output-def! score layout)
+         (set! (ly:grob-property grob 'long-text)
+               (markup #:score score))
+         (ly:system-start-text::print grob)))
+
+    %% the instrument name definition is separated:
+    \set Staff.instrumentName = \markup Instrument
+    c'4 d' e' f' g'1
+  }
+  \layout {
+    ragged-right = ##t
+    indent = 5\cm
+    incipit-width = 3 \cm
+  }
+}
\ No newline at end of file
diff --git a/input/regression/instrument-name-x-align.ly b/input/regression/instrument-name-x-align.ly
new file mode 100644 (file)
index 0000000..bfdd50f
--- /dev/null
@@ -0,0 +1,45 @@
+\header {
+
+  texidoc = "Instrument names horizontal alignment is tweaked by
+changing the @code{Staff.Instrument #'self-alignment-X} property.  The
+@code{\layout} variables @code{indent} and @code{short-indent} define
+the space where the instrument names are aligned before the first and
+the following systems, respectively."
+
+}
+
+\version "2.11.39"
+\paper { left-margin = 3\cm }
+\score {
+  \new StaffGroup <<
+    \new Staff {
+      \override Staff . InstrumentName #'self-alignment-X = #LEFT
+      \set Staff . instrumentName = \markup \column {
+       "Left aligned" "instrument name"
+      }
+      \set Staff . shortInstrumentName = "Left"
+      c''1 \break c''
+    }
+    \new Staff {
+      \override Staff . InstrumentName #'self-alignment-X = #CENTER
+      \set Staff . instrumentName = \markup \center-align {
+       "Centered" "instrument name"
+      }
+      \set Staff . shortInstrumentName = "Centered"
+      g'1 g'
+    }
+    \new Staff {
+      \override Staff . InstrumentName #'self-alignment-X = #RIGHT
+      \set Staff . instrumentName = \markup \column \right-align {
+       "Right aligned" "instrument name"
+      }
+      \set Staff . shortInstrumentName = "Right"
+      e' \break e'
+    }
+  >>
+  \layout {
+    ragged-right = ##t
+    indent = 4\cm
+    short-indent = 2\cm
+  }
+}
index 1a0c716453d0d0d1144905d777c5c2291cc82f86..f50d741ed12830d5f93ea592ec16abdf0428cdb5 100644 (file)
@@ -1,29 +1,17 @@
 <?xml version="1.0"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
-       <work> <work-title>/home/reinhold/lilypond-dev-files/07_nokey.xml</work-title></work> 
-       <identification> 
-               <rights>Unknown</rights>
-               <encoding>
-                       <software>Rosegarden-4</software>
-               </encoding>
-       </identification> 
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise version="2.0">
+       <work><work-title>No key or clef given</work-title></work> 
+       <identification/>
        <part-list>
                <score-part id="0">
-                       <part-name>NoClef Test</part-name>
-                       <score-instrument id="#1">
-                               <instrument-name>0</instrument-name>
-                       </score-instrument>
-                       <midi-instrument id="#1">
-                               <midi-channel>1</midi-channel>
-                               <midi-program>1</midi-program>
-                       </midi-instrument>
+                       <part-name></part-name>
                </score-part>
        </part-list>
        <part id="0">
                <measure number="1">
                        <attributes>
-                               <divisions>960</divisions>
+                               <divisions>1</divisions>
                                <time>
                                <beats>4</beats>
                                <beat-type>4</beat-type>
                                        <step>C</step>
                                        <octave>4</octave>
                                </pitch>
-                               <duration>3840</duration>
+                               <duration>4</duration>
                                <voice>1</voice>
                                <type>whole</type>
                        </note>
                </measure>
-
                <measure number="2">
                        <note>
                                <pitch>
                                        <step>C</step>
                                        <octave>4</octave>
                                </pitch>
-                               <duration>3840</duration>
+                               <duration>4</duration>
                                <voice>1</voice>
                                <type>whole</type>
                        </note>
index 0b274f79869daaaa0903802a3ca1a26113f47b78..e6c9ca066a4379299754ec81d923aaddecdd1fa4 100644 (file)
@@ -1,22 +1,18 @@
 <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6b Partwise//EN"
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"
  "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
-       <identification>
-               <encoding>
-                       <software>/usr/bin/vi</software>
-                       <encoding-date>2007-01-22</encoding-date>
-               </encoding>
-       </identification>
+<score-partwise version="2.0">
+  <work><work-title>No time signature given</work-title></work> 
+       <identification/>
        <part-list>
                <score-part id="P1">
-                       <part-name>MIDI Track 1</part-name>
+                       <part-name></part-name>
                </score-part>
        </part-list>
        <part id="P1">
                <measure number="1">
                        <attributes>
-                               <divisions>96</divisions>
+                               <divisions>1</divisions>
                                <key><fifths>0</fifths></key>
                                <staves>2</staves>
                                <clef number="1"><sign>G</sign><line>2</line></clef>
@@ -24,7 +20,7 @@
                        </attributes>
                        <note>
                                <pitch><step>F</step><octave>4</octave></pitch>
-                               <duration>384</duration>
+                               <duration>4</duration>
                                <voice>1</voice>
                                <type>whole</type>
                                <staff>1</staff>
@@ -32,7 +28,7 @@
                        <backup><duration>384</duration></backup>
                        <note>
                                <pitch><step>B</step><octave>2</octave></pitch>
-                               <duration>384</duration>
+                               <duration>4</duration>
                                <voice>2</voice>
                                <type>whole</type>
                                <staff>2</staff>
index 2d18a8ff4fc18a33d21ba5c66caee9f88c177ffa..e467ce7ab7a969823e632543aceb852b698d45af 100644 (file)
@@ -2,19 +2,15 @@
 <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6b Partwise//EN"
  "http://www.musicxml.org/dtds/partwise.dtd">
 <score-partwise>
-       <identification>
-               <encoding>
-                       <software>/usr/bin/vi</software>
-                       <encoding-date>2007-02-02</encoding-date>
-               </encoding>
-       </identification>
+       <work><work-title>A tie</work-title></work> 
+       <identification/>
        <part-list>
-               <score-part id="P1"><part-name>MIDI Track 1</part-name></score-part>
+               <score-part id="P1"><part-name></part-name></score-part>
        </part-list>
        <part id="P1">
                <measure number="1">
                        <attributes>
-                               <divisions>96</divisions>
+                               <divisions>1</divisions>
                                <key><fifths>0</fifths></key>
                                <time><beats>4</beats><beat-type>4</beat-type></time>
                                <staves>1</staves>
@@ -22,7 +18,7 @@
                        </attributes>
                        <note>
                                <pitch><step>F</step><octave>4</octave></pitch>
-                               <duration>384</duration>
+                               <duration>4</duration>
                                <tie type="start"/>
                                <voice>1</voice>
                                <type>whole</type>
@@ -33,7 +29,7 @@
                <measure number="2">
                        <note release="-684">
                                <pitch><step>F</step><octave>4</octave></pitch>
-                               <duration>384</duration>
+                               <duration>4</duration>
                                <tie type="stop"/>
                                <voice>1</voice>
                                <type>whole</type>
index 11ab61d902e48f42cd8d1bf5ed0e8c6fcdcd3bda..72408732ce87eab79a5ced407557660f4e31398b 100644 (file)
       </note>
     </measure>
     
-    <!-- General tests: multiple notations, directions, pedal spanners, etc. -->
+    <!-- General tests: multiple notations, directions, etc. -->
     <measure number="23">
-      <direction placement="below">
-        <direction-type>
-          <pedal line="no" relative-x="-9" type="start"/>
-        </direction-type>
-      </direction>
-      <note>
-        <pitch>
-          <step>G</step>
-          <octave>4</octave>
-        </pitch>
-        <duration>1</duration>
-        <voice>1</voice>
-        <type>quarter</type>
-      </note>
-      <direction placement="below">
-        <direction-type>
-          <pedal line="no" type="stop"/>
-        </direction-type>
-      </direction>
-      <note>
-        <pitch>
-          <step>G</step>
-          <octave>4</octave>
-        </pitch>
-        <duration>1</duration>
-        <voice>1</voice>
-        <type>quarter</type>
-      </note>
       <note>
         <pitch>
           <step>G</step>
         </notations>
         <lyric number="1"><text>ab./bel./bel.</text></lyric>
       </note>
+      <note>
+        <rest/>
+        <duration>2</duration>
+        <voice>1</voice>
+        <type>half</type>
+      </note>
       <barline location="right">
         <bar-style>light-heavy</bar-style>
       </barline>
diff --git a/input/regression/musicxml/02b-Articulations-Texts-PJB.xml b/input/regression/musicxml/02b-Articulations-Texts-PJB.xml
new file mode 100644 (file)
index 0000000..8e52b8d
--- /dev/null
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6b Partwise//EN"
+ "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise>
+       <identification>
+               <encoding>
+                       <software>/usr/bin/vi</software>
+                       <encoding-date>2007-02-01</encoding-date>
+               </encoding>
+       </identification>
+       <part-list>
+               <score-part id="P1"><part-name></part-name></score-part>
+       </part-list>
+       <part id="P1">
+               <measure number="1">
+                       <attributes>
+                               <divisions>96</divisions>
+                               <key><fifths>0</fifths></key>
+                               <time><beats>4</beats><beat-type>4</beat-type></time>
+                               <staves>1</staves>
+                               <clef number="1"><sign>G</sign><line>2</line></clef>
+                       </attributes>
+                       <direction placement="above">
+                               <direction-type>
+                                       <words default-x="-1" default-y="15" font-size="medium" font-weight="normal"> 
+                                               Normal, Medium
+                                       </words>
+                               </direction-type>
+                               <staff>1</staff>
+                       </direction>
+                       <note>
+                               <pitch><step>F</step><octave>4</octave></pitch>
+                               <duration>384</duration>
+                               <voice>1</voice>
+                               <type>eighth</type>
+                               <staff>1</staff>
+                       </note>
+                       <direction placement="below">
+                               <direction-type>
+                                       <words default-x="1" default-y="15" justify="left" font-size="medium" font-weight="bold"> 
+                                               Bold, Medium
+                                       </words>
+                               </direction-type>
+                               <staff>1</staff>
+                       </direction>
+               </measure>
+               <measure number="2">
+                       <direction placement="above">
+                               <direction-type>
+                                       <words default-x="1" default-y="15" font-size="large" font-weight="normal"> 
+                                               Normal, Large
+                                       </words>
+                               </direction-type>
+                               <staff>1</staff>
+                       </direction>
+                       <note>
+                               <pitch><step>G</step><octave>4</octave></pitch>
+                               <duration>384</duration>
+                               <voice>1</voice>
+                               <type>whole</type>
+                               <staff>1</staff>
+                       </note>
+                       <direction placement="below">
+                               <direction-type>
+                                       <words default-x="1" default-y="15" font-size="large" font-weight="bold"> 
+                                               Bold, Large
+                                       </words>
+                               </direction-type>
+                               <staff>1</staff>
+                       </direction>
+               </measure>
+               <measure number="3">
+                       <direction placement="above">
+                               <direction-type>
+                                       <words default-x="1" default-y="15" font-size="small" font-weight="normal"> 
+                                               Normal, Small
+                                       </words>
+                               </direction-type>
+                               <staff>1</staff>
+                       </direction>
+                       <note>
+                               <pitch><step>F</step><octave>4</octave></pitch>
+                               <duration>384</duration>
+                               <voice>1</voice>
+                               <type>whole</type>
+                               <staff>1</staff>
+                       </note>
+                        <direction placement="below">
+                            <direction-type>
+                                <words default-x="1" default-y="15" font-size="small" font-weight="bold"> 
+                                    Bold, Small
+                                </words>
+                            </direction-type>
+                            <staff>1</staff>
+                        </direction>
+                        <direction placement="below">
+                            <direction-type>
+                                <words default-x="1" default-y="-15" font-size="small" color="#FF8000"> 
+                                    Normal, Small, Colored, Below
+                                </words>
+                            </direction-type>
+                            <staff>1</staff>
+                        </direction>
+               </measure>
+       </part>
+</score-partwise>
diff --git a/input/regression/musicxml/02c-MultipleNotationChildren-RFK.xml b/input/regression/musicxml/02c-MultipleNotationChildren-RFK.xml
new file mode 100644 (file)
index 0000000..ae2a60c
--- /dev/null
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
+                                "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise>
+  <movement-title>Multiple notation and articulation children</movement-title>
+  <identification>
+    <rights>Public Domain</rights>
+    <encoding>
+      <software>Hand-crafted MusicXML</software>
+    </encoding>
+    <miscellaneous>
+      <miscellaneous-field name="comment">
+          It should not make any difference whether two articulations are given
+          inside to different notation elements, inside two different articulations 
+          children of the same notation element or inside the same articulations
+          element. Thus, all three notes should have a staccato and an accent.
+      </miscellaneous-field>
+    </miscellaneous>
+  </identification>
+  <part-list>
+    <score-part id="P1">
+      <part-name>MusicXML Part</part-name>
+    </score-part>
+  </part-list>
+  <!--=========================================================-->
+  <part id="P1">
+    <measure number="1">
+      <attributes>
+        <divisions>4</divisions>
+        <clef>
+          <sign>G</sign>
+          <line>2</line>
+        </clef>
+        <key>
+          <fifths>0</fifths>
+        </key>
+        <time>
+          <beats>3</beats>
+          <beat-type>4</beat-type>
+        </time>
+      </attributes>
+      <note>
+        <pitch>
+          <step>A</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>4</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <accidental>sharp</accidental>
+        <stem>down</stem>
+        <notations>
+          <articulations>
+            <staccato placement="above"/>
+          </articulations>
+        </notations>
+        <notations>
+          <articulations>
+            <accent placement="above"/>
+          </articulations>
+        </notations>
+      </note>
+      <note>
+        <pitch>
+          <step>A</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>4</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <accidental>sharp</accidental>
+        <stem>down</stem>
+        <notations>
+          <articulations>
+            <staccato placement="above"/>
+          </articulations>
+          <articulations>
+            <accent placement="above"/>
+          </articulations>
+        </notations>
+      </note>
+      <note>
+        <pitch>
+          <step>A</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>4</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <accidental>sharp</accidental>
+        <stem>down</stem>
+        <notations>
+          <articulations>
+            <staccato placement="above"/>
+            <accent placement="above"/>
+          </articulations>
+        </notations>
+      </note>
+    </measure>
+  </part>
+</score-partwise>
diff --git a/input/regression/musicxml/02d-Arpeggio.xml b/input/regression/musicxml/02d-Arpeggio.xml
new file mode 100644 (file)
index 0000000..97e33b1
--- /dev/null
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"
+                                "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise version="2.0">
+  <movement-title>Arpeggios in MusicXML</movement-title>
+  <identification/>
+  <defaults/>
+  <part-list>
+    <score-part id="P1">
+      <part-name></part-name>
+    </score-part>
+  </part-list>
+  <!--=========================================================-->
+  <part id="P1">
+    <!-- Different Arpeggiate styles: neutral, up, down and non-arpeggiate (bracket) -->
+    <measure number="1">
+      <attributes>
+        <divisions>1</divisions>
+        <key>
+          <fifths>0</fifths>
+          <mode>major</mode>
+        </key>
+        <clef>
+          <sign>G</sign>
+          <line>2</line>
+        </clef>
+      </attributes>
+      <note>
+        <pitch>
+          <step>C</step><octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+        <lyric number="1"><text>normal</text></lyric>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>E</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>G</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+      </note>
+      <note>
+        <pitch>
+          <step>C</step><octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate direction="up"/></notations>
+        <lyric number="1"><text>up</text></lyric>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>E</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate direction="up"/></notations>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>G</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate direction="up"/></notations>
+      </note>
+      <note>
+        <pitch>
+          <step>C</step><octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+        <lyric number="1"><text>normal</text></lyric>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>E</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>G</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+      </note>
+      <note>
+        <pitch>
+          <step>C</step><octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate direction="down"/></notations>
+        <lyric number="1"><text>down</text></lyric>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>E</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate direction="down"/></notations>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>G</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate direction="down"/></notations>
+      </note>
+      <note>
+        <pitch>
+          <step>C</step><octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+        <lyric number="1"><text>normal</text></lyric>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>E</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>G</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+      </note>
+      <note>
+        <pitch>
+          <step>C</step><octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><non-arpeggiate type="bottom"/></notations>
+        <lyric number="1"><text>non-arp.</text></lyric>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>E</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>G</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><non-arpeggiate type="top"/></notations>
+      </note>
+      <note>
+        <pitch>
+          <step>C</step><octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+        <lyric number="1"><text>normal</text></lyric>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>E</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+      </note>
+      <note>
+        <chord/>
+        <pitch>
+          <step>G</step><octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <notations><arpeggiate/></notations>
+      </note>
+      <barline location="right">
+        <bar-style>light-heavy</bar-style>
+      </barline>
+    </measure>
+  </part>
+</score-partwise>
diff --git a/input/regression/musicxml/02h-MultipleNotationChildren-RFK.xml b/input/regression/musicxml/02h-MultipleNotationChildren-RFK.xml
deleted file mode 100644 (file)
index ae2a60c..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
-                                "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
-  <movement-title>Multiple notation and articulation children</movement-title>
-  <identification>
-    <rights>Public Domain</rights>
-    <encoding>
-      <software>Hand-crafted MusicXML</software>
-    </encoding>
-    <miscellaneous>
-      <miscellaneous-field name="comment">
-          It should not make any difference whether two articulations are given
-          inside to different notation elements, inside two different articulations 
-          children of the same notation element or inside the same articulations
-          element. Thus, all three notes should have a staccato and an accent.
-      </miscellaneous-field>
-    </miscellaneous>
-  </identification>
-  <part-list>
-    <score-part id="P1">
-      <part-name>MusicXML Part</part-name>
-    </score-part>
-  </part-list>
-  <!--=========================================================-->
-  <part id="P1">
-    <measure number="1">
-      <attributes>
-        <divisions>4</divisions>
-        <clef>
-          <sign>G</sign>
-          <line>2</line>
-        </clef>
-        <key>
-          <fifths>0</fifths>
-        </key>
-        <time>
-          <beats>3</beats>
-          <beat-type>4</beat-type>
-        </time>
-      </attributes>
-      <note>
-        <pitch>
-          <step>A</step>
-          <octave>4</octave>
-        </pitch>
-        <duration>4</duration>
-        <voice>1</voice>
-        <type>quarter</type>
-        <accidental>sharp</accidental>
-        <stem>down</stem>
-        <notations>
-          <articulations>
-            <staccato placement="above"/>
-          </articulations>
-        </notations>
-        <notations>
-          <articulations>
-            <accent placement="above"/>
-          </articulations>
-        </notations>
-      </note>
-      <note>
-        <pitch>
-          <step>A</step>
-          <octave>4</octave>
-        </pitch>
-        <duration>4</duration>
-        <voice>1</voice>
-        <type>quarter</type>
-        <accidental>sharp</accidental>
-        <stem>down</stem>
-        <notations>
-          <articulations>
-            <staccato placement="above"/>
-          </articulations>
-          <articulations>
-            <accent placement="above"/>
-          </articulations>
-        </notations>
-      </note>
-      <note>
-        <pitch>
-          <step>A</step>
-          <octave>4</octave>
-        </pitch>
-        <duration>4</duration>
-        <voice>1</voice>
-        <type>quarter</type>
-        <accidental>sharp</accidental>
-        <stem>down</stem>
-        <notations>
-          <articulations>
-            <staccato placement="above"/>
-            <accent placement="above"/>
-          </articulations>
-        </notations>
-      </note>
-    </measure>
-  </part>
-</score-partwise>
diff --git a/input/regression/musicxml/02i-Articulations-Texts-PJB.xml b/input/regression/musicxml/02i-Articulations-Texts-PJB.xml
deleted file mode 100644 (file)
index 8e52b8d..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6b Partwise//EN"
- "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
-       <identification>
-               <encoding>
-                       <software>/usr/bin/vi</software>
-                       <encoding-date>2007-02-01</encoding-date>
-               </encoding>
-       </identification>
-       <part-list>
-               <score-part id="P1"><part-name></part-name></score-part>
-       </part-list>
-       <part id="P1">
-               <measure number="1">
-                       <attributes>
-                               <divisions>96</divisions>
-                               <key><fifths>0</fifths></key>
-                               <time><beats>4</beats><beat-type>4</beat-type></time>
-                               <staves>1</staves>
-                               <clef number="1"><sign>G</sign><line>2</line></clef>
-                       </attributes>
-                       <direction placement="above">
-                               <direction-type>
-                                       <words default-x="-1" default-y="15" font-size="medium" font-weight="normal"> 
-                                               Normal, Medium
-                                       </words>
-                               </direction-type>
-                               <staff>1</staff>
-                       </direction>
-                       <note>
-                               <pitch><step>F</step><octave>4</octave></pitch>
-                               <duration>384</duration>
-                               <voice>1</voice>
-                               <type>eighth</type>
-                               <staff>1</staff>
-                       </note>
-                       <direction placement="below">
-                               <direction-type>
-                                       <words default-x="1" default-y="15" justify="left" font-size="medium" font-weight="bold"> 
-                                               Bold, Medium
-                                       </words>
-                               </direction-type>
-                               <staff>1</staff>
-                       </direction>
-               </measure>
-               <measure number="2">
-                       <direction placement="above">
-                               <direction-type>
-                                       <words default-x="1" default-y="15" font-size="large" font-weight="normal"> 
-                                               Normal, Large
-                                       </words>
-                               </direction-type>
-                               <staff>1</staff>
-                       </direction>
-                       <note>
-                               <pitch><step>G</step><octave>4</octave></pitch>
-                               <duration>384</duration>
-                               <voice>1</voice>
-                               <type>whole</type>
-                               <staff>1</staff>
-                       </note>
-                       <direction placement="below">
-                               <direction-type>
-                                       <words default-x="1" default-y="15" font-size="large" font-weight="bold"> 
-                                               Bold, Large
-                                       </words>
-                               </direction-type>
-                               <staff>1</staff>
-                       </direction>
-               </measure>
-               <measure number="3">
-                       <direction placement="above">
-                               <direction-type>
-                                       <words default-x="1" default-y="15" font-size="small" font-weight="normal"> 
-                                               Normal, Small
-                                       </words>
-                               </direction-type>
-                               <staff>1</staff>
-                       </direction>
-                       <note>
-                               <pitch><step>F</step><octave>4</octave></pitch>
-                               <duration>384</duration>
-                               <voice>1</voice>
-                               <type>whole</type>
-                               <staff>1</staff>
-                       </note>
-                        <direction placement="below">
-                            <direction-type>
-                                <words default-x="1" default-y="15" font-size="small" font-weight="bold"> 
-                                    Bold, Small
-                                </words>
-                            </direction-type>
-                            <staff>1</staff>
-                        </direction>
-                        <direction placement="below">
-                            <direction-type>
-                                <words default-x="1" default-y="-15" font-size="small" color="#FF8000"> 
-                                    Normal, Small, Colored, Below
-                                </words>
-                            </direction-type>
-                            <staff>1</staff>
-                        </direction>
-               </measure>
-       </part>
-</score-partwise>
index 7c9d2f9e6a13752441b121e9387fabc82f9148a3..6863135b0d96c7ef6b12c50ee9cf2276e40f063d 100644 (file)
@@ -4,9 +4,10 @@
 <score-partwise version="2.0">\r
   <movement-title>MusicXML directions (attached to staff)</movement-title>\r
   <identification/>\r
+  <defaults/>\r
   <part-list>\r
     <score-part id="P1">\r
-      <part-name></part-name>\r
+      <part-name print-object="no">MusicXML Part</part-name>\r
     </score-part>\r
   </part-list>\r
   <!--=========================================================-->\r
       </note>\r
       <direction>\r
         <direction-type>\r
-          <braclet type="stop" line-end="none"/>\r
+          <bracket type="stop" line-end="none"/>\r
         </direction-type>\r
       </direction>\r
       <note>\r
       <direction>\r
         <direction-type>\r
           <harp-pedals>\r
-              <pedal-tuning>\r
-                  <pedal-step>C</pedal-step>\r
-                  <pedal-alter>-1</pedal-alter>\r
-              </pedal-tuning>\r
-              <pedal-tuning>\r
-                  <pedal-step>E</pedal-step>\r
-                  <pedal-alter>1</pedal-alter>\r
-              </pedal-tuning>\r
-              <pedal-tuning>\r
-                  <pedal-step>A</pedal-step>\r
-                  <pedal-alter>0</pedal-alter>\r
-              </pedal-tuning>\r
+            <pedal-tuning>\r
+              <pedal-step>D</pedal-step>\r
+              <pedal-alter>0</pedal-alter>\r
+            </pedal-tuning>\r
+            <pedal-tuning>\r
+              <pedal-step>C</pedal-step>\r
+              <pedal-alter>-1</pedal-alter>\r
+            </pedal-tuning>\r
+            <pedal-tuning>\r
+              <pedal-step>B</pedal-step>\r
+              <pedal-alter>-1</pedal-alter>\r
+            </pedal-tuning>\r
+            <pedal-tuning>\r
+              <pedal-step>E</pedal-step>\r
+              <pedal-alter>0</pedal-alter>\r
+            </pedal-tuning>\r
+            <pedal-tuning>\r
+              <pedal-step>F</pedal-step>\r
+              <pedal-alter>0</pedal-alter>\r
+            </pedal-tuning>\r
+            <pedal-tuning>\r
+              <pedal-step>G</pedal-step>\r
+              <pedal-alter>1</pedal-alter>\r
+            </pedal-tuning>\r
+            <pedal-tuning>\r
+              <pedal-step>A</pedal-step>\r
+              <pedal-alter>-1</pedal-alter>\r
+            </pedal-tuning>\r
           </harp-pedals>\r
         </direction-type>\r
       </direction>\r
       <direction placement="below">\r
         <direction-type>\r
           <dynamics><ppp/></dynamics>\r
+        </direction-type>\r
+        <direction-type>\r
           <wedge type="crescendo"/>\r
         </direction-type>\r
         <offset>2</offset>\r
       <direction placement="below">\r
         <direction-type>\r
           <wedge type="stop"/>\r
+        </direction-type>\r
+        <direction-type>\r
           <dynamics><fff/></dynamics>\r
         </direction-type>\r
         <offset>2</offset>\r
         <duration>1</duration>\r
         <voice>1</voice>\r
         <type>quarter</type>\r
-        <lyric number="1"><syllabic>begin</syllabic><text>to fff</text></lyric>\r
+        <lyric number="1"><syllabic>end</syllabic><text>to fff</text></lyric>\r
       </note>\r
       <note>\r
         <rest/>\r
diff --git a/input/regression/musicxml/03b-AccordionRegistrations-MusicXML.xml b/input/regression/musicxml/03b-AccordionRegistrations-MusicXML.xml
new file mode 100644 (file)
index 0000000..ad6fa3c
--- /dev/null
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"\r
+                                "http://www.musicxml.org/dtds/partwise.dtd">\r
+<score-partwise version="2.0">\r
+  <movement-title>Accordion registrations</movement-title>\r
+  <identification/>\r
+  <defaults/>\r
+  <part-list>\r
+    <score-part id="P1">\r
+      <part-name></part-name>\r
+    </score-part>\r
+  </part-list>\r
+  <!--=========================================================-->\r
+  <part id="P1">\r
+    <!-- Direction type can contain the following child types:\r
+         rehearsal+ | segno+ | words+ |\r
+         coda+ | wedge | dynamics+ | dashes | bracket | pedal | \r
+         metronome | octave-shift | harp-pedals | damp | \r
+         damp-all | eyeglasses | scordatura | image |\r
+         accordion-registration | other-direction -->\r
+    <!-- Rehearsal marks -->\r
+    <measure number="1">\r
+      <attributes>\r
+        <divisions>1</divisions>\r
+        <key>\r
+          <fifths>0</fifths>\r
+          <mode>major</mode>\r
+        </key>\r
+        <time symbol="common">\r
+          <beats>4</beats>\r
+          <beat-type>4</beat-type>\r
+        </time>\r
+        <clef>\r
+          <sign>G</sign>\r
+          <line>2</line>\r
+        </clef>\r
+      </attributes>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>0/0/1</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-middle>1</accordion-middle>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>0/1/0</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-middle>1</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>0/1/1</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-middle>2</accordion-middle>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>0/2/0</text></lyric>\r
+      </note>\r
+    </measure>\r
+    <measure number="2">\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-middle>2</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>0/2/1</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-middle>3</accordion-middle>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>0/3/0</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-middle>3</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>0/3/1</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>1/0/1</text></lyric>\r
+      </note>\r
+    </measure>\r
+    <measure number="3">\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>1/0/0</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>1</accordion-middle>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>1/1/0</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>1</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>1/1/1</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>2</accordion-middle>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>1/2/0</text></lyric>\r
+      </note>\r
+    </measure>\r
+    <measure number="4">\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>2</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>1/2/1</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>3</accordion-middle>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>1/3/0</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>3</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>1/3/1</text></lyric>\r
+      </note>\r
+      <!-- Special cases: No accordion-(high|middle|low) given, empty middle, \r
+           middle with invalid value, middle with 0 -->\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>empty</text></lyric>\r
+      </note>\r
+    </measure>\r
+    <measure number="5">\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle/>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>empty M</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>test</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>inval.M</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>0</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>M=0</text></lyric>\r
+      </note>\r
+      <direction>\r
+        <direction-type>\r
+          <accordion-registration>\r
+              <accordion-high/>\r
+              <accordion-middle>5</accordion-middle>\r
+              <accordion-low/>\r
+          </accordion-registration>\r
+        </direction-type>\r
+      </direction>\r
+      <note>\r
+        <pitch><step>C</step><octave>4</octave></pitch>\r
+        <duration>1</duration>\r
+        <voice>1</voice>\r
+        <type>quarter</type>\r
+        <lyric number="1"><text>M=5</text></lyric>\r
+      </note>\r
+      \r
+      <barline location="right">\r
+        <bar-style>light-heavy</bar-style>\r
+      </barline>\r
+    </measure>\r
+    <!--=======================================================-->\r
+  </part>\r
+  <!--=========================================================-->\r
+</score-partwise>\r
diff --git a/input/regression/musicxml/04b-Glissando.xml b/input/regression/musicxml/04b-Glissando.xml
new file mode 100644 (file)
index 0000000..a9e0e0a
--- /dev/null
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"
+                                "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise version="2.0">
+  <movement-title>Glissando and Slide in MusicXML</movement-title>
+  <identification/>
+  <defaults/>
+  <part-list>
+    <score-part id="P1">
+      <part-name></part-name>
+    </score-part>
+  </part-list>
+  <!--=========================================================-->
+  <part id="P1">
+    <!-- Glissando styles: glissando/slide, solid/dashed/dotted/wavy -->
+    <measure number="1">
+      <attributes>
+        <divisions>1</divisions>
+        <key>
+          <fifths>0</fifths>
+          <mode>major</mode>
+        </key>
+        <clef>
+          <sign>G</sign>
+          <line>2</line>
+        </clef>
+      </attributes>
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando number="1" type="start"/>
+        </notations>
+        <lyric number="1"><text>normal</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando number="1" type="stop"/>
+        </notations>
+        <lyric number="1"><text>glissando</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando line-type="solid" number="1" type="start">text</glissando>
+        </notations>
+        <lyric number="1"><text>solid</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando line-type="solid" number="1" type="stop"/>
+        </notations>
+        <lyric number="1"><text>(+text)</text></lyric>
+      </note>
+    </measure>
+    <measure number="2">
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando line-type="dashed" number="1" type="start"/>
+        </notations>
+        <lyric number="1"><text>dashed</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando line-type="dashed" number="1" type="stop"/>
+        </notations>
+      </note>
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando line-type="dotted" number="1" type="start"/>
+        </notations>
+        <lyric number="1"><text>dotted</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando line-type="dotted" number="1" type="stop"/>
+        </notations>
+      </note>
+    </measure>
+    <measure number="3">
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando line-type="wavy" number="1" type="start"/>
+        </notations>
+        <lyric number="1"><text>wavy</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <glissando line-type="wavy" number="1" type="stop"/>
+        </notations>
+      </note>
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide number="1" type="start"/>
+        </notations>
+        <lyric number="1"><text>normal</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide number="1" type="stop"/>
+        </notations>
+        <lyric number="1"><text>slide</text></lyric>
+      </note>
+    </measure>
+    <measure number="4">
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide line-type="solid" number="1" type="start">text</slide>
+        </notations>
+        <lyric number="1"><text>solid</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide line-type="solid" number="1" type="stop"/>
+        </notations>
+        <lyric number="1"><text>(+text)</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide line-type="dashed" number="1" type="start"/>
+        </notations>
+        <lyric number="1"><text>dashed</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide line-type="solid" number="1" type="stop"/>
+        </notations>
+      </note>
+    </measure>
+    <measure number="5">
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide line-type="dotted" number="1" type="start"/>
+        </notations>
+        <lyric number="1"><text>dotted</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide line-type="dotted" number="1" type="stop"/>
+        </notations>
+      </note>
+      <note>
+        <pitch>
+          <step>G</step>
+          <octave>4</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide line-type="wavy" number="1" type="start"/>
+        </notations>
+        <lyric number="1"><text>wavy</text></lyric>
+      </note>
+      <note>
+        <pitch>
+          <step>F</step>
+          <octave>5</octave>
+        </pitch>
+        <duration>1</duration>
+        <voice>1</voice>
+        <type>quarter</type>
+        <stem>down</stem>
+        <notations>
+          <slide line-type="wavy" number="1" type="stop"/>
+        </notations>
+      </note>
+      
+      <barline location="right">
+        <bar-style>light-heavy</bar-style>
+      </barline>
+    </measure>
+  </part>
+</score-partwise>
index a32187a23b847b69bb548bdce219b38565a0eeff..e98b46b46976f79e25b36bd61237da74a61857a3 100644 (file)
@@ -1,52 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"\r
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"\r
                                 "http://www.musicxml.org/dtds/partwise.dtd">\r
-<score-partwise>\r
-  <movement-title>Finale "Quoted" test</movement-title>\r
+<score-partwise version="2.0">\r
+  <movement-title>"Quotes" in header fields</movement-title>\r
   <identification>\r
-    <creator type="composer">Reinhold "Tester" Kainhofer</creator>\r
+    <creator type="composer">Some "Tester" Name</creator>\r
     <rights>Free for anyone ("Public Domain")</rights>\r
     <encoding>\r
-      <software>Finale 2007 for Windows</software>\r
-      <software>Dolet Light for Finale 2007</software>\r
-      <encoding-date>2007-09-01</encoding-date>\r
+      <software>"Hand-crafted" MusicXML file</software>\r
+      <encoding-date>2008-02-06</encoding-date>\r
     </encoding>\r
   </identification>\r
   <part-list>\r
     <score-part id="P1">\r
-      <part-name>MusicXML Part</part-name>\r
-      <score-instrument id="P1-I1">\r
-        <instrument-name>Grand Piano</instrument-name>\r
-      </score-instrument>\r
-      <midi-instrument id="P1-I1">\r
-        <midi-channel>1</midi-channel>\r
-        <midi-program>1</midi-program>\r
-      </midi-instrument>\r
+      <part-name>Staff "Test"</part-name>\r
     </score-part>\r
   </part-list>\r
   <!--=========================================================-->\r
   <part id="P1">\r
     <measure number="1">\r
-      <attributes>\r
-        <divisions>1</divisions>\r
-        <key>\r
-          <fifths>0</fifths>\r
-          <mode>major</mode>\r
-        </key>\r
-        <time symbol="common">\r
-          <beats>4</beats>\r
-          <beat-type>4</beat-type>\r
-        </time>\r
-        <clef>\r
-          <sign>G</sign>\r
-          <line>2</line>\r
-        </clef>\r
-      </attributes>\r
-      <sound tempo="120"/>\r
       <note>\r
         <rest/>\r
         <duration>4</duration>\r
         <voice>1</voice>\r
+        <type>whole</type>\r
       </note>\r
       <barline location="right">\r
         <bar-style>light-heavy</bar-style>\r
index afca79720e976390d13ca9beb9d61a44a6a07502..402a17e99d0d5a0326e9160d218dfc36591522eb 100644 (file)
@@ -67,7 +67,7 @@ Accidental_interface::pure_height (SCM smob, SCM start_scm, SCM)
 
   if (to_boolean (me->get_property ("forced"))
       || !unsmob_grob (me->get_object ("tie"))
-      || rank != start + 1) /* we are in the middle of a line */
+      || rank == start + 1) /* we are at the start of a line */
     {
       Stencil *s = unsmob_stencil (get_stencil (me));
       if (s)
index 800c138c9362e2231ee570497e3245a4e8e5ee41..a0fa5587b410ef0fb22b2ea16c8f61e56249c1f3 100644 (file)
@@ -24,7 +24,8 @@ Bar_line::calc_bar_extent (SCM smob)
 
   SCM size = me->get_property ("bar-size");
 
-  if (!scm_is_number (size))
+  if (!scm_is_number (size)
+      || !Staff_symbol_referencer::get_staff_symbol (me))
     return ly_interval2scm (Interval ());
 
   Real h = scm_to_double (size);
index 96f7b8f8e35078da3b53b6be2f5daa18c38d619b..ffb9d7c40ed28cecf85749e76afbce628c7ab6a2 100644 (file)
@@ -95,6 +95,8 @@ Note_spacing::get_spacing (Grob *me, Item *right_col,
   ideal = max (ideal, min_desired_space);
   stem_dir_correction (me, right_col, increment, &ideal, &min_desired_space);
 
+  /* TODO: grace notes look bad when things are stretched. Should we increase
+     their stretch strength? */
   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));
index 29c8949ab97994abafb2ba122e0e18d5cd6f4061..91a7933d00f20ebec81e6b2ecdc8e2c85683a3b9 100644 (file)
@@ -54,6 +54,17 @@ LY_DEFINE (ly_output_def_parent, "ly:output-def-parent",
   return op->parent_ ? op->parent_->self_scm () : SCM_EOL;
 }
 
+LY_DEFINE (ly_output_def_set_variable_x, "ly:output-def-set-variable!",
+           3, 0, 0, (SCM def, SCM sym, SCM val),
+           "Set an output definition @var{def} variable @var{sym} to @var{val}.")
+{
+  LY_ASSERT_SMOB (Output_def, def, 1);
+  Output_def *output_def = unsmob_output_def (def);
+  LY_ASSERT_TYPE (ly_is_symbol, sym, 2);
+  output_def->set_variable (sym, val);
+  return SCM_UNSPECIFIED;
+}
+
 LY_DEFINE (ly_output_def_clone, "ly:output-def-clone",
           1, 0, 0, (SCM def),
           "Clone output definition @var{def}.")
index c10347530251767fc8bfafd5e98f08b49f96bf3f..d52b25f0961b90b88b7138aaab1cb9456d23d8dc 100644 (file)
@@ -41,7 +41,17 @@ LY_DEFINE (ly_score_output_defs, "ly:score-output-defs",
   return scm_reverse_x (l, SCM_EOL);
 }
 
-
+LY_DEFINE (ly_score_add_output_def_x, "ly:score-add-output-def!",
+          2, 0, 0, (SCM score, SCM def),
+          "Add an output definition @var{def} to @var{score}.")
+{
+  LY_ASSERT_SMOB (Score, score, 1);
+  LY_ASSERT_SMOB (Output_def, def, 2);
+  Score *sc = unsmob_score (score);
+  Output_def *output_def = unsmob_output_def (def);
+  sc->add_output_def (output_def);
+  return SCM_UNSPECIFIED;
+}
 
 LY_DEFINE (ly_score_header, "ly:score-header",
           1, 0, 0, (SCM score),
index 53d6ef278b1b4b11a468e744edbbb62fea0fd957..512bfe4166a71565a5464b42d1a42630ebf05d5b 100644 (file)
@@ -337,7 +337,16 @@ Spacing_spanner::musical_column_spacing (Grob *me,
            This is probably a waste of time in the case of polyphonic
            music.  */
          if (Note_spacing::has_interface (wish))
-           springs.push_back (Note_spacing::get_spacing (wish, right_col, base_note_space, options->increment_));
+           {
+             Real inc = options->increment_;
+             if (Grob *gsp = unsmob_grob (left_col->get_object ("grace-spacing")))
+               {
+                 Spacing_options grace_opts;
+                 grace_opts.init_from_grob (gsp);
+                 inc = grace_opts.increment_;
+               }
+             springs.push_back (Note_spacing::get_spacing (wish, right_col, base_note_space, inc));
+           }
        }
 
       if (springs.empty ())
index 6016eebbb439b7b067201225a0f7adcdd84d85b0..31311f101da06e1deecccf317c1b9162334c9d59 100644 (file)
@@ -241,6 +241,7 @@ Stem::pure_height (SCM smob, SCM start, SCM end)
     return ly_interval2scm (iv);
 
   Real ss = Staff_symbol_referencer::staff_space (me);
+  Real rad = Staff_symbol_referencer::staff_radius (me);
 
   if (!to_boolean (me->get_property ("cross-staff")))
     {
@@ -255,12 +256,15 @@ Stem::pure_height (SCM smob, SCM start, SCM end)
 
       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);
+      /* extend the stem (away from the head) to cover the staff */
+      if (dir == UP)
+       iv[UP] = max (iv[UP], rad * ss);
+      else
+       iv[DOWN] = min (iv[DOWN], -rad * ss);
+    }
+  else
+    iv = Interval (-rad * ss, rad * ss);
 
   return ly_interval2scm (iv);
 }
index 494ab149b883f8f024df6d37ca685dca8e171dbf..c99f150fed06fa75d476799244a671d9823f4bc3 100644 (file)
@@ -45,7 +45,23 @@ System_start_text::get_stencil (Grob *me_grob)
       SCM align_y  = me_grob->get_property ("self-alignment-Y");
       if (scm_is_number (align_y))
        p->align_to (Y_AXIS, robust_scm2double (align_y, 0.0));
-      return *p;
+
+      /* Horizontal alignment according to the self-alignment-X property
+       * and indent value. */
+      Output_def *layout = me_grob->layout ();
+      Real indent;
+      if (me->get_break_index () == 0)
+       indent = robust_scm2double (layout->c_variable ("indent"), 0);
+      else
+       indent = robust_scm2double (layout->c_variable ("short-indent"), 0);
+      Real align_x = robust_scm2double (me->get_property ("self-alignment-X"), 0);
+      Interval p_extent_x = p->extent (X_AXIS);
+      Interval padding (0.0, max (0.0, indent - p_extent_x.length ()));
+      Real right_padding = padding.length () - padding.linear_combination (align_x);
+      Box box (Interval (p_extent_x[LEFT], p_extent_x[RIGHT] + right_padding),
+              p->extent (Y_AXIS));
+      Stencil *aligned_p = new Stencil (box, p->expr ());
+      return *aligned_p;
     }
   return Stencil ();
 }
@@ -101,4 +117,5 @@ ADD_INTERFACE (System_start_text,
               "text "
               "long-text "
               "self-alignment-Y "
+              "self-alignment-X "
               );
index ea30561d839798e1ef284fb70adc009fda12db16..f7b95d447869b7b64dd8485cd790c121cb8e8fbf 100644 (file)
@@ -1 +1,15 @@
-#empty
+# cancel the rule that generates .n[o lilypond images t]exi files
+$(outdir)/%.nexi: $(ITELY_FILES) $(ITEXI_FILES)
+
+$(outdir)/%/index.html: $(outdir)/%.texi
+       mkdir -p $(dir $@)
+       -$(MAKEINFO) -P $(outdir) --output=$(outdir)/$* --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
+
+$(outdir)/%-big-page.html: $(outdir)/%.texi
+       -$(MAKEINFO) -P $(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $< 
+
+$(outdir)/%.pdftexi: $(outdir)/%.texi doc-po
+       $(PYTHON) $(buildscript-dir)/texi-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG) $<
+
+$(outdir)/%.pdf: $(outdir)/%.pdftexi
+       cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $(notdir $*).pdftexi
index 496c1d9de411efa855706702a6e3e1e272159d78..cddd58615e0891b243b6c9e6934d287ddbd46d1e 100644 (file)
@@ -1,53 +1,11 @@
-# one assumes depth and ISOLANG are defined
-
-OUT_ITEXI_FILES = $(ITELY_FILES:%.itely=$(outdir)/%.itexi)
-
-TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
-
-LILYPOND_BOOK_INCLUDES += \
-  -I$(top-src-dir)/Documentation/user \
-  -I$(top-build-dir)/Documentation/user/$(outdir)
-
 default:
 
-$(outdir)/%.nexi: $(ITELY_FILES) $(ITEXI_FILES)
-
-MAKEINFO_FLAGS += --force
-
-$(outdir)/%/index.html: $(outdir)/%.nexi $(outdir)/user-ln doc-po
-       mkdir -p $(dir $@)
-       -$(MAKEINFO) $(MAKEINFO_FLAGS) -I$(outdir) --output=$(outdir)/$* --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-
-# we don't make the big page until the whole manual is translated
-# if this happens, we'll have to define local-WWW differently for this language
-#$(outdir)/lilypond.html: $(outdir)/lilypond.nexi
-#      -$(MAKEINFO) $(MAKEINFO_FLAGS) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $< 
-
-$(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/user-ln doc-po
-       $(PYTHON) $(buildscript-dir)/texi-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG) $<
-       cd $(outdir); texi2pdf --batch $(TEXINFO_PAPERSIZE_OPTION) $(notdir $*).pdftexi
-
-TELY_FILES = $(call src-wildcard,*.tely)
-DEEP_HTML_FILES = $(TELY_FILES:%.tely=$(outdir)/%/index.html)
-PDF_FILES = $(TELY_FILES:%.tely=$(outdir)/%.pdf)
-
-local-WWW: $(DEEP_HTML_FILES) $(PDF_FILES)
+# BIG_PAGE_HTML_FILES is defined differently in each language makefile
+local-WWW: $(DEEP_HTML_FILES) $(PDF_FILES) doc-po $(BIG_PAGE_HTML_FILES)
        find $(outdir) -name '*.html' | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | xargs $(PYTHON) $(buildscript-dir)/html-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG)
        find $(outdir) -name '*.html' | xargs grep -L --label="" 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(outdir)/!!g' | xargs $(PYTHON) $(buildscript-dir)/mass-link.py --prepend-suffix .$(ISOLANG) hard $(outdir) $(top-build-dir)/Documentation/user/$(outdir) $(TELY_FILES:%.tely=%.pdf)
-       find $(outdir) \( -name 'lily-??????????.png' -o -name 'lily-??????????.ly' \) -a -not -type l | sed 's!$(outdir)/!!g' | xargs $(PYTHON) $(buildscript-dir)/mass-link.py hard $(outdir) $(top-build-dir)/Documentation/user/$(outdir)
-
-LINKED_PNGS = henle-flat-gray.png baer-flat-gray.png lily-flat-bw.png
+       find $(outdir) \( -name 'lily-??????????.png' -o -name 'lily-??????????.ly' \) | sed 's!$(outdir)/!!g' | xargs $(PYTHON) $(buildscript-dir)/mass-link.py hard $(outdir) $(top-build-dir)/Documentation/user/$(outdir)
 
-# makeinfo MUST have PNGs in cwd for info images to work
-# symlinking PNGs...
-# texi2pdf -I flag confuses pdfetex with .aux and other files
-# from English manual
-# symlinking lily-*...
-$(outdir)/user-ln: $(top-build-dir)/Documentation/user/$(outdir)
-       $(PYTHON) $(buildscript-dir)/mass-link.py symbolic $(top-build-dir)/Documentation/user/$(outdir) $(outdir) 'lily-*.pdf' 'lily-*.tex' 'lily-*.texi' 'lily-*.ly' 'lily-*.txt' 'lily-*.png' 'henle-flat-gray.*' 'baer-flat-gray.*' 'lily-flat-bw.*' 'context-example.*'
-       mkdir -p $(outdir)/lilypond
-       cd $(outdir)/lilypond && $(foreach i, $(LINKED_PNGS), ln -sf ../../$(depth)/Documentation/user/$(i) $(i) &&) true
-       touch -mr $(top-build-dir)/Documentation/user/$(outdir) $@
 
 local-WWW-clean: deep-WWW-clean
 
@@ -58,4 +16,4 @@ web-clean: clean
        $(MAKE) out=www local-WWW-clean
 
 doc-po:
-       $(MAKE) -C $(depth)/Documentation/po messages
+       $(MAKE) -C $(depth)/Documentation/po out=www messages
index ea30561d839798e1ef284fb70adc009fda12db16..96c8bec42da70c33dc97c063fb7eca7c22bf5837 100644 (file)
@@ -1 +1,21 @@
-#empty
+# ISOLANG must be defined
+
+LANGS = $(shell $(PYTHON) $(buildscript-dir)/langdefs.py)
+
+OUT_ITEXI_FILES = $(ITELY_FILES:%.itely=$(outdir)/%.itexi)
+
+DOCUMENTATION_INCLUDES = \
+  -I $(top-src-dir)/Documentation/user \
+  -I $(top-build-dir)/Documentation/user/$(outdir)
+DOCUMENTATION_INCLUDES += $(foreach lang, $(LANGS), -I $(top-build-dir)/Documentation/$(lang)/user/$(outdir))
+
+LILYPOND_BOOK_INCLUDES += $(DOCUMENTATION_INCLUDES)
+MAKEINFO_FLAGS += --force --enable-encoding $(DOCUMENTATION_INCLUDES)
+MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
+
+TEXI2PDF_FLAGS += --batch --tidy
+TEXI2PDF_FLAGS += $(DOCUMENTATION_INCLUDES)
+
+TELY_FILES = $(call src-wildcard,*.tely)
+DEEP_HTML_FILES = $(TELY_FILES:%.tely=$(outdir)/%/index.html)
+PDF_FILES = $(TELY_FILES:%.tely=$(outdir)/%.pdf)
index b9f509dc862c9f77aadc8480a1a930f6c212daaa..e7abca9b7c4755571e6d68a69ca4663cedd04954 100644 (file)
@@ -31,7 +31,8 @@ ANTI_ALIAS_FACTOR=2
 LILYPOND_JOBS=$(if $(CPU_COUNT),-djob-count=$(CPU_COUNT),)
 LILYPOND_BOOK_LILYPOND_FLAGS=-dbackend=eps --formats=ps,png,pdf $(LILYPOND_JOBS) -dinclude-eps-fonts -dgs-load-fonts --header=texidoc -I $(top-src-dir)/input/manual -dcheck-internal-types -ddump-signatures -danti-alias-factor=$(ANTI_ALIAS_FACTOR)
 LILYPOND_BOOK_VERBOSE = --verbose
-LILYPOND_BOOK_FLAGS = --process="$(LILYPOND_BINARY) $(LILYPOND_BOOK_LILYPOND_FLAGS)" $(LILYPOND_BOOK_VERBOSE)
+LILYPOND_BOOK_INFO_IMAGES_DIR = $(if $(INFO_IMAGES_DIR),--info-images-dir=$(INFO_IMAGES_DIR),)
+LILYPOND_BOOK_FLAGS = --process="$(LILYPOND_BINARY) $(LILYPOND_BOOK_LILYPOND_FLAGS)" $(LILYPOND_BOOK_VERBOSE) $(LILYPOND_BOOK_INFO_IMAGES_DIR)
 TEXINPUTS=$(top-src-dir)/tex/::
 export TEXINPUTS
 
index 1d7ecfed34db066b9f6b3a89a205a2e4449e3b06..a607a7b2795294661c1423b2425ca7e41825ff3a 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -1,18 +1,19 @@
-# it.po -- GNU LilyPond's italian language file
-# Tineke de Munnik <jantien@xs4all.nl>, 1998.
-# Modified by Maurizio Umberto Puxeddu <umbpux@tin.it>, Feb1999
+# GNU LilyPond's Italian language file.
+# Copyright (C) 1998 Free Software Foundation, Inc.
 #
-#, fuzzy
+# Tineke de Munnik <jantien@xs4all.nl>, 1998.
+# Maurizio Umberto Puxeddu <umbpux@tin.it>, 1999
 msgid ""
 msgstr ""
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-12-24 10:40+0100\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Date: 1998-05-30 00:17:12+0200\n"
-"From:  <jantien@xs4all.nl>\n"
-"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po/"
-"out --add-comments --keyword=_ --keyword=_f\n"
-"Files: bow.cc int.cc\n"
+"Project-Id-Version: lilypond 1.6.0\n"
+"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
+"POT-Creation-Date: 2008-02-14 15:55+0100\n"
+"PO-Revision-Date: 1998-05-30 00:17:12+0200\n"
+"Last-Translator: Maurizio Umberto Puxeddu <umbpux@tin.it>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
 
 #: convertrules.py:12
 #, python-format
@@ -28,23 +29,330 @@ msgstr ""
 msgid "%s has been replaced by %s"
 msgstr ""
 
-#: convertrules.py:2398
+#: convertrules.py:24 musicexp.py:16 convert-ly.py:47 lilypond-book.py:82
+#: warn.cc:48 input.cc:90
+#, fuzzy, c-format, python-format
+msgid "warning: %s"
+msgstr "attenzione: "
+
+#: convertrules.py:33 convertrules.py:103
+msgid "\\header { key = concat + with + operator }"
+msgstr ""
+
+#: convertrules.py:48
+#, fuzzy, python-format
+msgid "deprecated %s"
+msgstr "approssimato: %s:"
+
+#: convertrules.py:61
+msgid "deprecated \\textstyle, new \\key syntax"
+msgstr ""
+
+#: convertrules.py:80 convertrules.py:2124 convertrules.py:2337
+#: convertrules.py:2512 convertrules.py:2889
+msgid "bump version for release"
+msgstr ""
+
+#: convertrules.py:99
+msgid "new \\header format"
+msgstr ""
+
+#: convertrules.py:133
+msgid "\\translator syntax"
+msgstr ""
+
+#: convertrules.py:211
+msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
+msgstr ""
+
+#: convertrules.py:254 convertrules.py:828 convertrules.py:1584
+#: convertrules.py:2685
+#, python-format
+msgid "deprecate %s"
+msgstr ""
+
+#: convertrules.py:361
+#, python-format
+msgid "deprecate %s "
+msgstr ""
+
+#: convertrules.py:384
+msgid "new \\notenames format"
+msgstr ""
+
+#: convertrules.py:404
+msgid "new tremolo format"
+msgstr ""
+
+#: convertrules.py:417
+msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
+msgstr ""
+
+#: convertrules.py:536
+msgid "change property definiton case (eg. onevoice -> oneVoice)"
+msgstr ""
+
+#: convertrules.py:544
+msgid "new \\textscript markup text"
+msgstr ""
+
+#: convertrules.py:638
+#, fuzzy, python-format
+msgid "identifier names: %s"
+msgstr "Il nome dell'identificatore è una parola chiave (`%s')"
+
+#: convertrules.py:679
+msgid "point-and-click argument changed to procedure."
+msgstr ""
+
+#: convertrules.py:739
+msgid "semicolons removed"
+msgstr ""
+
+#. 40 ?
+#: convertrules.py:795
+#, python-format
+msgid "%s property names"
+msgstr ""
+
+#: convertrules.py:865
+msgid "automaticMelismata turned on by default"
+msgstr ""
+
+#: convertrules.py:1131 convertrules.py:1893 convertrules.py:2166
+#: convertrules.py:2472
+#, fuzzy, python-format
+msgid "remove %s"
+msgstr "Genero le voci..."
+
+#: convertrules.py:1164 convertrules.py:1173
+msgid "cluster syntax"
+msgstr ""
+
+#: convertrules.py:1182
+msgid "new Pedal style syntax"
+msgstr ""
+
+#: convertrules.py:1451
+msgid ""
+"New relative mode,\n"
+"Postfix articulations, new text markup syntax, new chord syntax."
+msgstr ""
+
+#: convertrules.py:1475
+msgid "Remove - before articulation"
+msgstr ""
+
+#: convertrules.py:1515
+#, python-format
+msgid "%s misspelling"
+msgstr ""
+
+#: convertrules.py:1521
+msgid "attempting automatic \\figures conversion.  Check results!"
+msgstr ""
+
+#: convertrules.py:1550
+msgid "Swap < > and << >>"
+msgstr ""
+
+#: convertrules.py:1576
+msgid "Use Scheme code to construct arbitrary note events."
+msgstr ""
+
+#: convertrules.py:1609
+#, python-format
+msgid ""
+"\\outputproperty found,\n"
+"Please hand-edit, using\n"
+"\n"
+"  \\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)\n"
+"\n"
+"as a substitution text."
+msgstr ""
+
+#: convertrules.py:1623
+msgid ""
+"The alteration field of Scheme pitches was multiplied by 2\n"
+"to support quarter tone accidentals.  You must update the following constructs manually:\n"
+"\n"
+"* calls of ly:make-pitch and ly:pitch-alteration\n"
+"* keySignature settings made with \\property\n"
+msgstr ""
+
+#: convertrules.py:1633
+msgid ""
+"use symbolic constants for alterations,\n"
+"remove \\outputproperty, move ly:verbose into ly:get-option"
+msgstr ""
+
+#: convertrules.py:1692
+msgid "removal of automaticMelismata; use melismaBusyProperties instead."
+msgstr ""
+
+#: convertrules.py:1807
+msgid "\\partcombine syntax change to \\newpartcombine"
+msgstr ""
+
+#: convertrules.py:1824
+msgid "Drums found. Enclose drum notes in \\drummode"
+msgstr ""
+
+#: convertrules.py:1835 convertrules.py:1842 convertrules.py:1853
+#, python-format
+msgid ""
+"\n"
+"%s found. Check file manually!\n"
+msgstr ""
+
+#: convertrules.py:1835
+msgid "Drum notation"
+msgstr ""
+
+#: convertrules.py:1863
+msgid ""
+"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
+"Harmonic notes. Thread context removed. Lyrics context removed."
+msgstr ""
+
+#: convertrules.py:1924
+msgid "new syntax for property settings:"
+msgstr ""
+
+#: convertrules.py:1957
+msgid "Property setting syntax in \\translator{ }"
+msgstr ""
+
+#: convertrules.py:1978
+#, fuzzy, python-format
+msgid "use %s"
+msgstr "attenzione: "
+
+#: convertrules.py:1995
+msgid "Scheme grob function renaming"
+msgstr ""
+
+#: convertrules.py:2008
+msgid "More Scheme function renaming"
+msgstr ""
+
+#: convertrules.py:2140
+msgid ""
+"Page layout has been changed, using paper size and margins.\n"
+"textheight is no longer used.\n"
+msgstr ""
+
+#: convertrules.py:2259
+msgid ""
+"\\foo -> \\foomode (for chords, notes, etc.)\n"
+"fold \\new FooContext \\foomode into \\foo."
+msgstr ""
+
+#: convertrules.py:2285
+msgid ""
+"staff size should be changed at top-level\n"
+"with\n"
+"\n"
+"  #(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)\n"
+"\n"
+msgstr ""
+
+#: convertrules.py:2320
+msgid "regularize other identifiers"
+msgstr ""
+
+#: convertrules.py:2411
 msgid "LilyPond source must be UTF-8"
 msgstr ""
 
-#: convertrules.py:2401
+#: convertrules.py:2414
 msgid "Try the texstrings backend"
 msgstr ""
 
-#: convertrules.py:2404
+#: convertrules.py:2417
 #, python-format
 msgid "Do something like: %s"
 msgstr ""
 
-#: convertrules.py:2407
+#: convertrules.py:2420
 msgid "Or save as UTF-8 in your editor"
 msgstr ""
 
+#: convertrules.py:2452
+msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
+msgstr ""
+
+#: convertrules.py:2485
+msgid "auto beam settings"
+msgstr ""
+
+#: convertrules.py:2487
+msgid ""
+"\n"
+"Auto beam settings must now specify each interesting moment in a measure\n"
+"explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n"
+msgstr ""
+
+#: convertrules.py:2498
+msgid "warn about auto beam settings"
+msgstr ""
+
+#: convertrules.py:2624
+msgid "verticalAlignmentChildCallback has been deprecated"
+msgstr ""
+
+#: convertrules.py:2652
+msgid "Remove callbacks property, deprecate XY-extent-callback."
+msgstr ""
+
+#: convertrules.py:2663
+msgid "Use grob closures iso. XY-offset-callbacks."
+msgstr ""
+
+#: convertrules.py:2770
+msgid "foobar -> foo-bar for \\paper, \\layout"
+msgstr ""
+
+#: convertrules.py:2877
+msgid "deprecate \\tempo in \\midi"
+msgstr ""
+
+#: convertrules.py:2912
+msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
+msgstr ""
+
+#: convertrules.py:2941
+msgid "Rename accidental glyphs, use glyph-name-alist."
+msgstr ""
+
+#: convertrules.py:2973
+msgid "edge-text settings for TextSpanner."
+msgstr ""
+
+#: convertrules.py:2974
+#, fuzzy, python-format
+msgid ""
+"Use\n"
+"\n"
+"%s"
+msgstr "attenzione: "
+
+#: convertrules.py:3020
+msgid "all settings related to dashed lines.\n"
+msgstr ""
+
+#: convertrules.py:3021
+msgid "Use \\override ... #'style = #'line for solid lines and\n"
+msgstr ""
+
+#: convertrules.py:3022
+msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
+msgstr ""
+
+#: convertrules.py:3027
+msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
+msgstr ""
+
 #: fontextract.py:26
 #, fuzzy, python-format
 msgid "Scanning %s"
@@ -60,75 +368,109 @@ msgstr ""
 msgid "Writing fonts to %s"
 msgstr "non trovo e non posso creare `%s'"
 
-#: lilylib.py:85 lilylib.py:136
+#: lilylib.py:102 lilylib.py:153
 #, python-format
 msgid "Invoking `%s'"
 msgstr ""
 
-#: lilylib.py:87 lilylib.py:138
+#: lilylib.py:104 lilylib.py:155
 #, fuzzy, python-format
 msgid "Running %s..."
 msgstr "Genero le voci..."
 
-#: lilylib.py:203
+#: lilylib.py:220
 #, fuzzy, python-format
 msgid "Usage: %s"
 msgstr "attenzione: "
 
-#: abc2ly.py:1349 convert-ly.py:80 lilypond-book.py:125 midi2ly.py:869
+#: musicexp.py:577
+#, python-format
+msgid "unable to set the music %(music)s for the repeat %(repeat)s"
+msgstr ""
+
+#: musicexp.py:586
+msgid "encountered repeat without body"
+msgstr ""
+
+#: musicxml.py:13 convert-ly.py:50 lilypond-book.py:85 warn.cc:54 input.cc:96
+#: input.cc:104
+#, fuzzy, c-format, python-format
+msgid "error: %s"
+msgstr "errore: "
+
+#: musicxml.py:272
+msgid "requested time signature, but time sig is unknown"
+msgstr ""
+
+#: musicxml.py:338
+#, python-format
+msgid "Encountered note at %s with %s duration (no <type> element):"
+msgstr ""
+
+#: musicxml.py:372
+#, python-format
+msgid "Unable to find find instrument for ID=%s\n"
+msgstr ""
+
+#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:109 midi2ly.py:849
 #, fuzzy, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "Uso: %s [OPZIONE]... [FILE]"
 
-#: abc2ly.py:1351
+#: abc2ly.py:1343
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
 "%s) to LilyPond input."
 msgstr ""
 
-#: abc2ly.py:1355 etf2ly.py:1200 midi2ly.py:885
+#: abc2ly.py:1350 convert-ly.py:78 etf2ly.py:1190 lilypond-book.py:175
+#: midi2ly.py:885 musicxml2ly.py:1824 main.cc:161
+msgid "show version number and exit"
+msgstr ""
+
+#: abc2ly.py:1354 convert-ly.py:82 etf2ly.py:1186 lilypond-book.py:125
+#: midi2ly.py:864 musicxml2ly.py:1808 main.cc:150
+msgid "show this help and exit"
+msgstr ""
+
+#: abc2ly.py:1356 etf2ly.py:1191 midi2ly.py:868
 msgid "write output to FILE"
 msgstr ""
 
-#: abc2ly.py:1357
+#: abc2ly.py:1358
 msgid "be strict about succes"
 msgstr ""
 
-#: abc2ly.py:1359
+#: abc2ly.py:1360
 msgid "preserve ABC's notion of beams"
 msgstr ""
 
-#: abc2ly.py:1361 convert-ly.py:112 etf2ly.py:1208 lilypond-book.py:168
-#: midi2ly.py:911 musicxml2ly.py:505
+#: abc2ly.py:1361 convert-ly.py:111 etf2ly.py:1198 lilypond-book.py:180
+#: midi2ly.py:897 musicxml2ly.py:1872
+msgid "Bugs"
+msgstr ""
+
+#: abc2ly.py:1362 convert-ly.py:112 etf2ly.py:1199 lilypond-book.py:181
+#: midi2ly.py:898 musicxml2ly.py:1873
 msgid "Report bugs via"
 msgstr ""
 
-#: convert-ly.py:41
+#: 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 ""
 
-#: convert-ly.py:43 lilypond-book.py:73
+#: convert-ly.py:34 lilypond-book.py:59
 msgid "Examples:"
 msgstr ""
 
-#: convert-ly.py:56 lilypond-book.py:98 warn.cc:48 input.cc:90
-#, fuzzy, c-format, python-format
-msgid "warning: %s"
-msgstr "attenzione: "
-
-#: convert-ly.py:59 lilypond-book.py:101 warn.cc:54 input.cc:96 input.cc:104
-#, fuzzy, c-format, python-format
-msgid "error: %s"
-msgstr "errore: "
-
-#: convert-ly.py:75 etf2ly.py:1190 lilypond-book.py:121 midi2ly.py:98
+#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:105 midi2ly.py:79
 msgid "Distributed under terms of the GNU General Public License."
 msgstr ""
 
-#: convert-ly.py:76 etf2ly.py:1191 lilypond-book.py:122 midi2ly.py:99
+#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:106 midi2ly.py:80
 msgid "It comes with NO WARRANTY."
 msgstr ""
 
@@ -173,7 +515,7 @@ msgstr ""
 msgid "Processing `%s'... "
 msgstr "Elaboro..."
 
-#: convert-ly.py:277 relocate.cc:360 source-file.cc:54
+#: convert-ly.py:277 relocate.cc:362 source-file.cc:54
 #, c-format, python-format
 msgid "cannot open file: `%s'"
 msgstr "non posso aprire il file: `%s'"
@@ -183,294 +525,372 @@ msgstr "non posso aprire il file: `%s'"
 msgid "cannot determine version for `%s'.  Skipping"
 msgstr "non trovo il file: `%s'"
 
-#: etf2ly.py:1196
+#: etf2ly.py:1180
 #, fuzzy, python-format
 msgid "%s [OPTION]... ETF-FILE"
 msgstr "Uso: %s [OPZIONE]... [FILE]"
 
-#: etf2ly.py:1198
+#: etf2ly.py:1181
 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 ""
 
-#: etf2ly.py:1201 midi2ly.py:886 musicxml2ly.py:498 main.cc:172 main.cc:178
+#: etf2ly.py:1192 midi2ly.py:869 musicxml2ly.py:1866 main.cc:154 main.cc:159
 msgid "FILE"
 msgstr ""
 
-#: etf2ly.py:1203 lilypond-book.py:165 midi2ly.py:899 main.cc:185
+#: etf2ly.py:1194 lilypond-book.py:178 midi2ly.py:886 main.cc:163
 #, fuzzy
 msgid "show warranty and copyright"
 msgstr "  -w, --warranty         mostra la garanzia e il copyright\n"
 
-#: lilypond-book.py:71
-msgid ""
-"Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
+#: lilypond-book.py:57
+msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
 msgstr ""
 
-#: lilypond-book.py:78
+#: lilypond-book.py:64
 msgid "BOOK"
 msgstr ""
 
-#: lilypond-book.py:87
+#: lilypond-book.py:72
 #, fuzzy, python-format
 msgid "Exiting (%d)..."
 msgstr "Genero le voci..."
 
-#: lilypond-book.py:119
+#: lilypond-book.py:103
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s di"
 
-#: lilypond-book.py:129
+#: lilypond-book.py:113
 msgid "FILTER"
 msgstr ""
 
-#: lilypond-book.py:132
+#: lilypond-book.py:116
 msgid "pipe snippets through FILTER [convert-ly -n -]"
 msgstr ""
 
-#: lilypond-book.py:135
-msgid ""
-"use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
+#: lilypond-book.py:120
+msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
 msgstr ""
 
-#: lilypond-book.py:138
+#: lilypond-book.py:127
 #, fuzzy
 msgid "add DIR to include path"
 msgstr "  -I, --include=DIR      aggiunge DIR ai path di ricerca\n"
 
-#: lilypond-book.py:139 lilypond-book.py:144 main.cc:171
+#: lilypond-book.py:128 lilypond-book.py:135 lilypond-book.py:147 main.cc:153
 msgid "DIR"
 msgstr ""
 
-#: lilypond-book.py:143
+#: lilypond-book.py:133
+msgid "format Texinfo output so that Info will look for images of music in DIR"
+msgstr ""
+
+#: lilypond-book.py:140
+msgid "PAD"
+msgstr ""
+
+#: lilypond-book.py:142
+msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
+msgstr ""
+
+#: lilypond-book.py:146
 msgid "write output to DIR"
 msgstr ""
 
-#: lilypond-book.py:147
+#: lilypond-book.py:151
 msgid "COMMAND"
 msgstr ""
 
-#: lilypond-book.py:148
+#: lilypond-book.py:152
 msgid "process ly_files using COMMAND FILE..."
 msgstr ""
 
-#: lilypond-book.py:154
-msgid "Create PDF files for use with PDFTeX"
+#: lilypond-book.py:159
+msgid "create PDF files for use with PDFTeX"
 msgstr ""
 
-#: lilypond-book.py:157
+#: lilypond-book.py:163
 msgid ""
 "extract all PostScript fonts into INPUT.psfonts for LaTeX\n"
 "must use this with dvips -h INPUT.psfonts"
 msgstr ""
 
-#: lilypond-book.py:160 midi2ly.py:896 musicxml2ly.py:489 main.cc:184
+#: lilypond-book.py:167 midi2ly.py:879 musicxml2ly.py:1829 main.cc:162
 msgid "be verbose"
 msgstr ""
 
-#: lilypond-book.py:773
+#: lilypond-book.py:788
 #, python-format
 msgid "file not found: %s"
 msgstr ""
 
-#: lilypond-book.py:1004
+#: lilypond-book.py:1022
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr ""
 
-#: lilypond-book.py:1007
+#: lilypond-book.py:1025
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr ""
 
-#: lilypond-book.py:1011
+#: lilypond-book.py:1029
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr ""
 
-#: lilypond-book.py:1014
+#: lilypond-book.py:1032
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr ""
 
-#: lilypond-book.py:1033
+#: lilypond-book.py:1051
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr ""
 
-#: lilypond-book.py:1388
+#: lilypond-book.py:1422
 #, fuzzy, python-format
 msgid "Opening filter `%s'"
 msgstr "Genero le voci..."
 
-#: lilypond-book.py:1405
+#: lilypond-book.py:1439
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr ""
 
-#: lilypond-book.py:1406
+#: lilypond-book.py:1440
 msgid "The error log is as follows:"
 msgstr ""
 
-#: lilypond-book.py:1476
+#: lilypond-book.py:1512
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr ""
 
-#: lilypond-book.py:1586
+#: lilypond-book.py:1623
 #, fuzzy
 msgid "Writing snippets..."
 msgstr "Genero le voci..."
 
-#: lilypond-book.py:1591
+#: lilypond-book.py:1628
 #, fuzzy
 msgid "Processing..."
 msgstr "Elaboro..."
 
-#: lilypond-book.py:1595
+#: lilypond-book.py:1632
 msgid "All snippets are up to date..."
 msgstr ""
 
-#: lilypond-book.py:1605
+#: lilypond-book.py:1642
 #, fuzzy, python-format
 msgid "cannot determine format for: %s"
 msgstr "non trovo il file: `%s'"
 
-#: lilypond-book.py:1616
+#: lilypond-book.py:1653
 #, python-format
 msgid "%s is up to date."
 msgstr ""
 
-#: lilypond-book.py:1622
+#: lilypond-book.py:1659
 #, fuzzy, python-format
 msgid "Writing `%s'..."
 msgstr "Genero le voci..."
 
-#: lilypond-book.py:1677
+#: lilypond-book.py:1714
 msgid "Output would overwrite input file; use --output."
 msgstr ""
 
-#: lilypond-book.py:1681
+#: lilypond-book.py:1718
 #, fuzzy, python-format
 msgid "Reading %s..."
 msgstr "Genero le voci..."
 
-#: lilypond-book.py:1700
+#: lilypond-book.py:1737
 #, fuzzy
 msgid "Dissecting..."
 msgstr "Genero le voci..."
 
-#: lilypond-book.py:1716
+#: lilypond-book.py:1753
 #, fuzzy, python-format
 msgid "Compiling %s..."
 msgstr "Genero le voci..."
 
-#: lilypond-book.py:1725
+#: lilypond-book.py:1762
 #, fuzzy, python-format
 msgid "Processing include: %s"
 msgstr "Elaboro..."
 
-#: lilypond-book.py:1739
+#: lilypond-book.py:1776
 #, fuzzy, python-format
 msgid "Removing `%s'"
 msgstr "Genero le voci..."
 
-#: lilypond-book.py:1815
-#, fuzzy, python-format
-msgid "Writing fonts to %s..."
-msgstr "non trovo e non posso creare `%s'"
-
-#: lilypond-book.py:1830
+#: lilypond-book.py:1809
 msgid "option --psfonts not used"
 msgstr ""
 
-#: lilypond-book.py:1831
+#: lilypond-book.py:1810
 msgid "processing with dvips will have no fonts"
 msgstr ""
 
-#: lilypond-book.py:1834
+#: lilypond-book.py:1813
 msgid "DVIPS usage:"
 msgstr ""
 
-#: midi2ly.py:106 lily-library.scm:624 lily-library.scm:632
+#: lilypond-book.py:1869
+#, fuzzy, python-format
+msgid "Writing fonts to %s..."
+msgstr "non trovo e non posso creare `%s'"
+
+#: midi2ly.py:87 lily-library.scm:615 lily-library.scm:624
 msgid "warning: "
 msgstr "attenzione: "
 
-#: midi2ly.py:109 midi2ly.py:924
+#: midi2ly.py:90 midi2ly.py:911
 msgid "error: "
 msgstr "errore: "
 
-#: midi2ly.py:110
-msgid "Exiting ... "
-msgstr ""
+#: midi2ly.py:91
+#, fuzzy
+msgid "Exiting... "
+msgstr "Genero le voci..."
 
-#: midi2ly.py:857
+#: midi2ly.py:837
 #, fuzzy, python-format
 msgid "%s output to `%s'..."
-msgstr "L'output MIDI è inviato a %s..."
+msgstr "L'output MIDI è inviato a %s..."
 
-#: midi2ly.py:871 musicxml2ly.py:485
+#: midi2ly.py:850 musicxml2ly.py:1803
 #, python-format
 msgid "Convert %s to LilyPond input."
 msgstr ""
 
-#: midi2ly.py:875
+#: midi2ly.py:855
 msgid "print absolute pitches"
 msgstr ""
 
-#: midi2ly.py:877 midi2ly.py:889
+#: midi2ly.py:857 midi2ly.py:872
 msgid "DUR"
 msgstr ""
 
-#: midi2ly.py:878
+#: midi2ly.py:858
 msgid "quantise note durations on DUR"
 msgstr ""
 
-#: midi2ly.py:881
+#: midi2ly.py:861
 msgid "print explicit durations"
 msgstr ""
 
-#: midi2ly.py:882
+#: midi2ly.py:865
 #, fuzzy
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr ""
-" -k, --key=ACC[:MINOR]  imposta l'armatura: ACC +diesis/-bemolli; :1 minore\n"
+msgstr " -k, --key=ACC[:MINOR]  imposta l'armatura: ACC +diesis/-bemolli; :1 minore\n"
 
-#: midi2ly.py:883
+#: midi2ly.py:866
 msgid "ALT[:MINOR]"
 msgstr ""
 
-#: midi2ly.py:888
+#: midi2ly.py:871
 msgid "quantise note starts on DUR"
 msgstr ""
 
-#: midi2ly.py:891
+#: midi2ly.py:874
 msgid "DUR*NUM/DEN"
 msgstr ""
 
-#: midi2ly.py:894
+#: midi2ly.py:877
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr ""
 
-#: midi2ly.py:902
+#: midi2ly.py:889
 msgid "treat every text as a lyric"
 msgstr ""
 
-#: midi2ly.py:905
+#: midi2ly.py:892
 msgid "Examples"
 msgstr ""
 
-#: midi2ly.py:925
+#: midi2ly.py:912
 msgid "no files specified on command line."
 msgstr ""
 
-#: musicxml2ly.py:473
-msgid "musicxml2ly FILE.xml"
+#: musicxml2ly.py:193 musicxml2ly.py:195
+#, python-format
+msgid "Unprocessed PartGroupInfo %s encountered"
 msgstr ""
 
-#: musicxml2ly.py:476
+#: musicxml2ly.py:426
+#, python-format
+msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
+msgstr ""
+
+#: musicxml2ly.py:609
+#, python-format
+msgid "unknown mode %s, expecting 'major' or 'minor'"
+msgstr ""
+
+#: musicxml2ly.py:647
+#, python-format
+msgid "Encountered unprocessed marker %s\n"
+msgstr ""
+
+#: musicxml2ly.py:741
+#, fuzzy, python-format
+msgid "unknown span event %s"
+msgstr "tipo di chiave sconosciuto"
+
+#: musicxml2ly.py:751
+#, fuzzy, python-format
+msgid "unknown span type %s for %s"
+msgstr "traduttore sconosciuto `%s'"
+
+#: musicxml2ly.py:1259
+#, python-format
+msgid "drum %s type unknown, please add to instrument_drumtype_dict"
+msgstr ""
+
+#: musicxml2ly.py:1263
+#, fuzzy
+msgid "cannot find suitable event"
+msgstr "non trovo il file: `%s'"
+
+#: musicxml2ly.py:1346
+#, python-format
+msgid "Negative skip %s"
+msgstr ""
+
+#: musicxml2ly.py:1480
+#, python-format
+msgid "Negative skip found: from %s to %s, difference is %s"
+msgstr ""
+
+#: musicxml2ly.py:1505
+#, fuzzy, python-format
+msgid "unexpected %s; expected %s or %s or %s"
+msgstr "Errore non fatale: "
+
+#: musicxml2ly.py:1583
+msgid "cannot have two simultaneous slurs"
+msgstr ""
+
+#: musicxml2ly.py:1711
+#, python-format
+msgid "cannot simultaneously have more than one mode: %s"
+msgstr ""
+
+#: musicxml2ly.py:1791
+#, fuzzy
+msgid "Converting to LilyPond expressions..."
+msgstr "Genero le voci..."
+
+#: musicxml2ly.py:1802
+msgid "musicxml2ly [options] FILE.xml"
+msgstr ""
+
+#: musicxml2ly.py:1812
 #, python-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -479,14 +899,63 @@ msgid ""
 "information."
 msgstr ""
 
-#: musicxml2ly.py:495
-msgid "Use lxml.etree; uses less memory and cpu time."
+#: musicxml2ly.py:1835
+msgid "use lxml.etree; uses less memory and cpu time"
+msgstr ""
+
+#: musicxml2ly.py:1841
+msgid "input file is a zip-compressed MusicXML file"
+msgstr ""
+
+#: musicxml2ly.py:1847
+msgid "convert pitches in relative mode (default)"
+msgstr ""
+
+#: musicxml2ly.py:1852
+msgid "convert pitches in absolute mode"
+msgstr ""
+
+#: musicxml2ly.py:1855
+msgid "LANG"
+msgstr ""
+
+#: musicxml2ly.py:1857
+msgid "use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly"
 msgstr ""
 
-#: musicxml2ly.py:503
+#: musicxml2ly.py:1863
+msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
+msgstr ""
+
+#: musicxml2ly.py:1871
 msgid "set output filename to FILE"
 msgstr ""
 
+#: musicxml2ly.py:1929
+#, fuzzy, python-format
+msgid "unknown part in part-list: %s"
+msgstr "traduttore sconosciuto `%s'"
+
+#: musicxml2ly.py:1985
+#, python-format
+msgid "Input file %s is compressed, extracting raw MusicXML data"
+msgstr ""
+
+#: musicxml2ly.py:2011
+#, fuzzy, python-format
+msgid "Reading MusicXML from %s ..."
+msgstr "Genero le voci..."
+
+#: musicxml2ly.py:2039 musicxml2ly.py:2053
+#, fuzzy, python-format
+msgid "Output to `%s'"
+msgstr "L'output MIDI è inviato a %s..."
+
+#: musicxml2ly.py:2096
+#, fuzzy, python-format
+msgid "Unable to find input file %s"
+msgstr "non trovo il file: `%s'"
+
 #: getopt-long.cc:140
 #, c-format
 msgid "option `%s' requires an argument"
@@ -507,7 +976,7 @@ msgstr "opzione non riconosciuta: `%s'"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "argomento `%s' non valido per l'opzione `%s'"
 
-#: warn.cc:68 grob.cc:559 input.cc:82
+#: warn.cc:68 grob.cc:566 input.cc:82
 #, c-format
 msgid "programming error: %s"
 msgstr ""
@@ -516,37 +985,35 @@ msgstr ""
 msgid "continuing, cross fingers"
 msgstr ""
 
-#: accidental-engraver.cc:240
+#: accidental-engraver.cc:250
 #, c-format
 msgid "accidental typesetting list must begin with context-name: %s"
 msgstr ""
 
-#: accidental-engraver.cc:268
-#, c-format
-msgid "ignoring unknown accidental: %s"
-msgstr ""
+#: accidental-engraver.cc:277
+#, fuzzy, c-format
+msgid "ignoring unknown accidental rule: %s"
+msgstr "stringa di escape sconosciuta: `\\%s'"
 
-#: accidental-engraver.cc:284
+#: accidental-engraver.cc:293
 #, c-format
 msgid "pair or context-name expected for accidental rule, found %s"
 msgstr ""
 
-#: accidental.cc:243 key-signature-interface.cc:133
+#: accidental.cc:187
 #, c-format
-msgid "accidental `%s' not found"
+msgid "Could not find glyph-name for alteration %s"
 msgstr ""
 
-#: align-interface.cc:222
-msgid ""
-"vertical alignment called before line-breaking.\n"
-"Only do cross-staff spanners with PianoStaff."
+#: accidental.cc:202
+msgid "natural alteration glyph not found"
 msgstr ""
 
-#: align-interface.cc:329
+#: align-interface.cc:325
 msgid "tried to get a translation for something that is no child of mine"
 msgstr ""
 
-#: all-font-metrics.cc:173
+#: all-font-metrics.cc:143
 #, fuzzy, c-format
 msgid "cannot find font: `%s'"
 msgstr "non trovo il file: `%s'"
@@ -572,44 +1039,35 @@ msgstr ""
 msgid "removing this vertical group"
 msgstr ""
 
-#: axis-group-interface.cc:96
-msgid "tried to calculate pure-height at a non-breakpoint"
-msgstr ""
-
-#: axis-group-interface.cc:370
+#: axis-group-interface.cc:524
 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 ""
-
 #: bar-check-iterator.cc:73
 #, fuzzy, c-format
 msgid "barcheck failed at: %s"
 msgstr "controllo del battute fallito: %s"
 
-#: beam-engraver.cc:128
+#: beam-engraver.cc:126
 msgid "already have a beam"
 msgstr ""
 
-#: beam-engraver.cc:196
+#: beam-engraver.cc:202
 #, fuzzy
 msgid "unterminated beam"
 msgstr "beam non terminato"
 
-#: beam-engraver.cc:238 chord-tremolo-engraver.cc:134
+#: beam-engraver.cc:244 chord-tremolo-engraver.cc:138
 #, fuzzy
 msgid "stem must have Rhythmic structure"
 msgstr "I gambi devono avere una struttura ritmica."
 
-#: beam-engraver.cc:246
+#: beam-engraver.cc:252
 #, fuzzy
 msgid "stem does not fit in beam"
 msgstr "il gambo non rientra nel beam"
 
-#: beam-engraver.cc:247
+#: beam-engraver.cc:253
 msgid "beam was started here"
 msgstr ""
 
@@ -617,16 +1075,16 @@ msgstr ""
 msgid "no feasible beam position"
 msgstr ""
 
-#: beam.cc:144
+#: beam.cc:160
 #, fuzzy
 msgid "removing beam with no stems"
 msgstr "beam con meno di due gambi"
 
-#: beam.cc:1007
+#: beam.cc:1069
 msgid "no viable initial configuration found: may not find good beam slope"
 msgstr ""
 
-#: break-alignment-interface.cc:208
+#: break-alignment-interface.cc:195
 #, fuzzy, c-format
 msgid "No spacing entry from %s to `%s'"
 msgstr "traduttore sconosciuto `%s'"
@@ -666,7 +1124,7 @@ msgstr ""
 msgid "unterminated chord tremolo"
 msgstr "beam non terminato"
 
-#: chord-tremolo-iterator.cc:33
+#: chord-tremolo-iterator.cc:35
 #, c-format
 msgid "expect 2 elements for chord tremolo, found %d"
 msgstr ""
@@ -681,7 +1139,7 @@ msgstr ""
 msgid "unknown cluster style `%s'"
 msgstr "tipo di chiave sconosciuto"
 
-#: cluster.cc:135
+#: cluster.cc:147
 msgid "junking empty cluster"
 msgstr ""
 
@@ -691,7 +1149,7 @@ msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr ""
 
 #. 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
 #, fuzzy
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "la soluzione non soddisfa i vincoli"
@@ -701,26 +1159,26 @@ msgstr "la soluzione non soddisfa i vincoli"
 msgid "program has no such type: `%s'"
 msgstr ""
 
-#: context-property.cc:76
+#: context-property.cc:30
 msgid "need symbol arguments for \\override and \\revert"
 msgstr ""
 
-#: context.cc:151
+#: context.cc:144
 #, fuzzy, c-format
 msgid "cannot find or create new `%s'"
 msgstr "non trovo e non posso creare `%s'"
 
-#: context.cc:213
+#: context.cc:206
 #, fuzzy, c-format
 msgid "cannot find or create `%s' called `%s'"
 msgstr "non trovo e non posso creare '%s' chiamato '%s'"
 
-#: context.cc:276
+#: context.cc:268
 #, c-format
 msgid "Invalid CreateContext event: Cannot create %s context"
 msgstr ""
 
-#: context.cc:388
+#: context.cc:380
 #, fuzzy, c-format
 msgid "cannot find or create: `%s'"
 msgstr "non trovo e non posso creare `%s'"
@@ -739,37 +1197,37 @@ msgstr ""
 msgid "Unknown event class %s"
 msgstr "tipo di chiave sconosciuto"
 
-#: dots.cc:38
+#: dots.cc:37
 #, c-format
 msgid "dot `%s' not found"
 msgstr ""
 
-#: dynamic-engraver.cc:186 span-dynamic-performer.cc:87
+#: dynamic-engraver.cc:192
 #, fuzzy
 msgid "cannot find start of (de)crescendo"
 msgstr "non trovo un (de)crescendo fino alla fine"
 
-#: dynamic-engraver.cc:195
+#: dynamic-engraver.cc:201
 #, fuzzy
 msgid "already have a decrescendo"
 msgstr "crescendo non terminato"
 
-#: dynamic-engraver.cc:197
+#: dynamic-engraver.cc:203
 #, fuzzy
 msgid "already have a crescendo"
 msgstr "crescendo non terminato"
 
-#: dynamic-engraver.cc:200
+#: dynamic-engraver.cc:206
 #, fuzzy
 msgid "cresc starts here"
-msgstr "un cambio di tempo non è ammesso in questo punto"
+msgstr "un cambio di tempo non è ammesso in questo punto"
 
-#: dynamic-engraver.cc:323
+#: dynamic-engraver.cc:335
 #, fuzzy
 msgid "unterminated (de)crescendo"
 msgstr "crescendo non terminato"
 
-#: extender-engraver.cc:131 extender-engraver.cc:140
+#: extender-engraver.cc:142 extender-engraver.cc:151
 msgid "unterminated extender"
 msgstr "extender non terminato"
 
@@ -782,40 +1240,44 @@ msgstr ""
 msgid "Rebuilding FontConfig cache %s, this may take a while..."
 msgstr ""
 
-#: font-config.cc:55
+#: font-config.cc:57
 #, fuzzy, c-format
 msgid "failed adding font directory: %s"
 msgstr "non trovo e non posso creare `%s'"
 
-#: font-config.cc:57
+#: font-config.cc:59
 #, fuzzy, c-format
 msgid "adding font directory: %s"
 msgstr "non trovo e non posso creare `%s'"
 
-#: general-scheme.cc:160
+#: general-scheme.cc:201
 msgid "infinity or NaN encountered while converting Real number"
 msgstr ""
 
-#: general-scheme.cc:161
+#: general-scheme.cc:202
 msgid "setting to zero"
 msgstr ""
 
-#: glissando-engraver.cc:92
+#: general-scheme.cc:421 output-ps.scm:61
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr ""
+
+#: glissando-engraver.cc:94
 #, fuzzy
 msgid "unterminated glissando"
 msgstr "slur non terminato"
 
-#: global-context-scheme.cc:91 global-context-scheme.cc:107
+#: global-context-scheme.cc:85 global-context-scheme.cc:103
 #, fuzzy
 msgid "no music found in score"
 msgstr "ho bisogno di musica nello spartito"
 
-#: global-context-scheme.cc:97
+#: global-context-scheme.cc:93
 #, fuzzy
 msgid "Interpreting music... "
 msgstr "Interpretazione della musica..."
 
-#: global-context-scheme.cc:120
+#: global-context-scheme.cc:116
 #, fuzzy, c-format
 msgid "elapsed time: %.2f seconds"
 msgstr "durata: %.2f secondi"
@@ -834,7 +1296,7 @@ msgstr ""
 #: gregorian-ligature-engraver.cc:212
 #, fuzzy
 msgid "cannot apply `\\~' on first head of ligature"
-msgstr "non trovo le estremità di %s"
+msgstr "non trovo le estremità di %s"
 
 #. (pitch == prev_pitch)
 #: gregorian-ligature-engraver.cc:224
@@ -851,11 +1313,21 @@ msgstr "tipo di chiave sconosciuto"
 msgid "Grob `%s' has no interface for property `%s'"
 msgstr ""
 
-#: grob.cc:253
+#: grob-property.cc:34
+#, c-format
+msgid "%d: %s"
+msgstr ""
+
+#: grob-property.cc:173
+#, c-format
+msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
+msgstr ""
+
+#: grob.cc:251
 msgid "Infinity or NaN encountered"
 msgstr ""
 
-#: hairpin.cc:183
+#: hairpin.cc:187
 msgid "decrescendo too small"
 msgstr ""
 
@@ -878,38 +1350,43 @@ msgstr "beam non terminato"
 msgid "unterminated hyphen; removing"
 msgstr "beam non terminato"
 
-#: includable-lexer.cc:53
-msgid "include files are not allowed in safe mode"
-msgstr ""
-
-#: 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 "non trovo il file: `%s'"
 
-#: includable-lexer.cc:62 lily-parser-scheme.cc:107
+#: includable-lexer.cc:55 lily-parser-scheme.cc:108
 #, fuzzy, c-format
 msgid "(search path: `%s')"
-msgstr "(Il path di caricamento è `%s'"
+msgstr "(Il path di caricamento è `%s'"
 
 #: input.cc:112 source-file.cc:168 source-file.cc:183
 msgid "position unknown"
 msgstr "posizione sconosciuta"
 
-#: ligature-engraver.cc:93
-#, fuzzy
-msgid "cannot find start of ligature"
-msgstr "non trovo le estremità di %s"
+#: key-signature-interface.cc:74
+#, c-format
+msgid "No glyph found for alteration: %s"
+msgstr ""
 
-#: ligature-engraver.cc:98
-msgid "no right bound"
+#: key-signature-interface.cc:84
+msgid "alteration not found"
 msgstr ""
 
-#: ligature-engraver.cc:120
+#: ligature-bracket-engraver.cc:62 ligature-engraver.cc:93
+#, fuzzy
+msgid "cannot find start of ligature"
+msgstr "non trovo le estremità di %s"
+
+#: ligature-bracket-engraver.cc:75 ligature-engraver.cc:120
 #, fuzzy
 msgid "already have a ligature"
 msgstr "crescendo non terminato"
 
+#: ligature-engraver.cc:98
+msgid "no right bound"
+msgstr ""
+
 #: ligature-engraver.cc:129
 msgid "no left bound"
 msgstr ""
@@ -926,57 +1403,61 @@ msgstr ""
 #: ligature-engraver.cc:203
 #, fuzzy
 msgid "ligature was started here"
-msgstr "un cambio di tempo non è ammesso in questo punto"
+msgstr "un cambio di tempo non è ammesso in questo punto"
 
-#: lily-guile.cc:92
+#: lily-guile.cc:78
 #, fuzzy, c-format
 msgid "(load path: `%s')"
-msgstr "(Il path di caricamento è `%s'"
+msgstr "(Il path di caricamento è `%s'"
 
-#: lily-guile.cc:518
+#: lily-guile.cc:438
 #, c-format
 msgid "cannot find property type-check for `%s' (%s)."
 msgstr ""
 
-#: lily-guile.cc:521
+#: lily-guile.cc:441
 msgid "perhaps a typing error?"
 msgstr ""
 
-#: lily-guile.cc:527
+#: lily-guile.cc:448
 msgid "doing assignment anyway"
 msgstr ""
 
-#: lily-guile.cc:539
+#: lily-guile.cc:460
 #, c-format
 msgid "type check for `%s' failed; value `%s' must be of type `%s'"
 msgstr ""
 
-#: lily-lexer.cc:254
+#: lily-lexer.cc:251
+msgid "include files are not allowed in safe mode"
+msgstr ""
+
+#: lily-lexer.cc:270
 #, fuzzy, c-format
 msgid "identifier name is a keyword: `%s'"
-msgstr "Il nome dell'identificatore è una parola chiave (`%s')"
+msgstr "Il nome dell'identificatore è una parola chiave (`%s')"
 
-#: lily-lexer.cc:269
+#: lily-lexer.cc:285
 #, c-format
 msgid "error at EOF: %s"
 msgstr "errore alla fine del file: %s"
 
-#: lily-parser-scheme.cc:29
+#: lily-parser-scheme.cc:30
 #, fuzzy, c-format
 msgid "deprecated function called: %s"
 msgstr "non riesco a trovare il carattere `%s'"
 
-#: lily-parser-scheme.cc:88
+#: lily-parser-scheme.cc:89
 #, fuzzy, c-format
 msgid "Changing working directory to: `%s'"
 msgstr "non trovo e non posso creare `%s'"
 
-#: lily-parser-scheme.cc:106
+#: lily-parser-scheme.cc:107
 #, fuzzy, c-format
 msgid "cannot find init file: `%s'"
 msgstr "non trovo il file: `%s'"
 
-#: lily-parser-scheme.cc:125
+#: lily-parser-scheme.cc:126
 #, fuzzy, c-format
 msgid "Processing `%s'"
 msgstr "Elaboro..."
@@ -990,12 +1471,16 @@ msgstr "Analisi..."
 msgid "braces do not match"
 msgstr "le bretelle no si accoppiano"
 
-#: lyric-combine-music-iterator.cc:291
+#: lyric-combine-music-iterator.cc:327
 #, fuzzy, c-format
 msgid "cannot find Voice `%s'"
 msgstr "Non trovo il file `%s'"
 
-#: main.cc:116
+#: lyric-engraver.cc:158
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr ""
+
+#: main.cc:100
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -1004,7 +1489,7 @@ msgid ""
 "information.\n"
 msgstr ""
 
-#: main.cc:122
+#: main.cc:106
 #, fuzzy
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
@@ -1021,146 +1506,109 @@ msgid ""
 "the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 msgstr ""
-"    Questo programma è free software; puoi ridistribuirlo e/o\n"
-"modificarlo sotto le condizioni della GNU General Public License, versione "
-"2,\n"
+"    Questo programma è free software; puoi ridistribuirlo e/o\n"
+"modificarlo sotto le condizioni della GNU General Public License, versione 2,\n"
 "come pubblicata dalla Free Software Foundation.\n"
-"    Questo programma è distribuito nella speranza che possa essere utile,\n"
-"ma SENZA ALCUNA GARANZIA; è privo anche di garanzia implicita di\n"
-"COMMERCIABILITA' o della POSSIBILITA' D'USO A SCOPI PARTICOLARI. Si veda la "
-"GNU\n"
+"    Questo programma è distribuito nella speranza che possa essere utile,\n"
+"ma SENZA ALCUNA GARANZIA; è privo anche di garanzia implicita di\n"
+"COMMERCIABILITA' o della POSSIBILITA' D'USO A SCOPI PARTICOLARI. Si veda la GNU\n"
 "General Public License per ulteriori dettagli.\n"
 "\n"
 "    Con questo programma dovresti aver ricevuto una copia della\n"
-"GNU General Public License (ci riferiamo al file COPYING); se ciò non "
-"èavvenuto, scrivi a: Free Software Foundation, Inc., 675 Mass Ave, "
-"Cambridge, MA 02136\n"
+"GNU General Public License (ci riferiamo al file COPYING); se ciò non èavvenuto, scrivi a: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02136\n"
 "USA.\n"
 
-#: main.cc:153
-msgid "BACK"
-msgstr ""
-
-#: main.cc:153
-msgid ""
-"use backend BACK (eps, gnome, ps [default],\n"
-"scm, svg, tex, texstr)"
-msgstr ""
-
-#: main.cc:155
+#: main.cc:137
 msgid "SYM[=VAL]"
 msgstr ""
 
-#: main.cc:156
+#: 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 ""
 
-#: main.cc:159
+#: main.cc:141
 msgid "EXPR"
 msgstr ""
 
-#: main.cc:159
+#: main.cc:141
 msgid "evaluate scheme code"
 msgstr ""
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:162
+#: main.cc:144
 msgid "FORMATs"
 msgstr ""
 
-#: main.cc:162
+#: main.cc:144
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr ""
 
-#: main.cc:163
+#: main.cc:145
 #, fuzzy
 msgid "generate DVI (tex backend only)"
 msgstr "vincoli degenerati"
 
-#: main.cc:164
+#: main.cc:146
 #, fuzzy
 msgid "generate PDF (default)"
 msgstr "vincoli degenerati"
 
-#: main.cc:165
+#: main.cc:147
 #, fuzzy
 msgid "generate PNG"
 msgstr "vincoli degenerati"
 
-#: main.cc:166
+#: main.cc:148
 #, fuzzy
 msgid "generate PostScript"
 msgstr "vincoli degenerati"
 
-#: main.cc:167
+#: main.cc:149
 msgid "generate TeX (tex backend only)"
 msgstr ""
 
-#: main.cc:168
-msgid "show this help and exit"
-msgstr ""
-
-#: main.cc:169
+#: main.cc:151
 msgid "FIELD"
 msgstr ""
 
-#: main.cc:169
+#: main.cc:151
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
 msgstr ""
 
-#: main.cc:171
+#: main.cc:153
 #, fuzzy
 msgid "add DIR to search path"
 msgstr "  -I, --include=DIR      aggiunge DIR ai path di ricerca\n"
 
-#: main.cc:172
+#: main.cc:154
 #, fuzzy
 msgid "use FILE as init file"
 msgstr "  -i, --init=NOMEFILE    usa NOMEFILE come file iniziale\n"
 
-#: main.cc:174
-msgid "USER,GROUP,JAIL,DIR"
+#: main.cc:156
+msgid "USER, GROUP, JAIL, DIR"
 msgstr ""
 
-#: main.cc:174
+#: main.cc:156
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
 msgstr ""
 
-#: main.cc:177
-#, fuzzy
-msgid "do not generate printed output"
-msgstr "vincoli degenerati"
-
-#: main.cc:178
+#: main.cc:159
 msgid "write output to FILE (suffix will be added)"
 msgstr ""
 
-#: main.cc:179
-msgid "generate a preview of the first system"
-msgstr ""
-
-#: main.cc:180
+#: main.cc:160
 msgid "relocate using directory of lilypond program"
 msgstr ""
 
-#: main.cc:181
-msgid ""
-"disallow unsafe Scheme and PostScript\n"
-"operations"
-msgstr ""
-
-#: main.cc:183
-msgid "show version number and exit"
-msgstr ""
-
-#: main.cc:224
+#: main.cc:203
 #, fuzzy, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -1168,97 +1616,92 @@ msgid ""
 msgstr "Copyright (c) %s di"
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:251
+#: main.cc:230
 #, fuzzy, c-format
 msgid "Usage: %s [OPTION]... FILE..."
 msgstr "Uso: %s [OPZIONE]... [FILE]..."
 
-#: main.cc:253
+#: main.cc:232
 #, fuzzy, c-format
 msgid "Typeset music and/or produce MIDI from FILE."
 msgstr "Stampa partitura oppure suona una song MIDI da FILE o <stdin>."
 
-#: main.cc:255
+#: main.cc:234
 #, c-format
 msgid "LilyPond produces beautiful music notation."
 msgstr ""
 
-#: main.cc:257
+#: main.cc:236
 #, c-format
 msgid "For more information, see %s"
 msgstr ""
 
-#: main.cc:259
+#: main.cc:238
 #, c-format
 msgid "Options:"
 msgstr "Opzioni: "
 
-#: main.cc:263
+#: main.cc:242
 #, c-format
 msgid "Report bugs via %s"
 msgstr ""
 
-#: main.cc:309
+#: main.cc:288
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr ""
 
-#: main.cc:323
+#: main.cc:302
 #, fuzzy, c-format
 msgid "no such user: %s"
 msgstr "% strumento:"
 
-#: main.cc:325
+#: main.cc:304
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
 msgstr ""
 
-#: main.cc:340
+#: main.cc:319
 #, fuzzy, c-format
 msgid "no such group: %s"
 msgstr "% strumento:"
 
-#: main.cc:342
+#: main.cc:321
 #, fuzzy, c-format
 msgid "cannot get group id from group name: %s: %s"
 msgstr "non posso cambiare `%s' in `%s'"
 
-#: main.cc:350
+#: main.cc:329
 #, fuzzy, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr "non trovo e non posso creare `%s'"
 
-#: main.cc:357
+#: main.cc:336
 #, fuzzy, c-format
 msgid "cannot change group id to: %d: %s"
 msgstr "non posso cambiare `%s' in `%s'"
 
-#: main.cc:363
+#: main.cc:342
 #, fuzzy, c-format
 msgid "cannot change user id to: %d: %s"
 msgstr "non posso cambiare `%s' in `%s'"
 
-#: main.cc:369
+#: main.cc:348
 #, fuzzy, c-format
 msgid "cannot change working directory to: %s: %s"
 msgstr "non trovo e non posso creare `%s'"
 
-#: main.cc:415
-#, c-format
-msgid "Evaluating %s"
-msgstr ""
-
-#: main.cc:645
+#: main.cc:594
 #, c-format
 msgid "exception caught: %s"
 msgstr ""
 
 #. FIXME: constant error message.
-#: mark-engraver.cc:154
+#: mark-engraver.cc:129
 msgid "rehearsalMark must have integer value"
 msgstr ""
 
-#: mark-engraver.cc:160
+#: mark-engraver.cc:135
 msgid "mark label must be a markup object"
 msgstr ""
 
@@ -1312,16 +1755,11 @@ msgstr ""
 msgid "Mensural_ligature: (join_right == 0)"
 msgstr ""
 
-#: midi-item.cc:152
+#: midi-item.cc:81
 #, fuzzy, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "% strumento:"
 
-#: midi-item.cc:285
-#, c-format
-msgid "experimental: temporarily fine tuning (of %d cents) a channel."
-msgstr ""
-
 #: midi-stream.cc:28
 #, fuzzy, c-format
 msgid "cannot open for write: %s: %s"
@@ -1332,19 +1770,24 @@ msgstr "non posso aprire il file: `%s'"
 msgid "cannot write to file: `%s'"
 msgstr "non posso aprire il file: `%s'"
 
+#: minimal-page-breaking.cc:42
+#, fuzzy
+msgid "Computing page breaks..."
+msgstr "Calcolo delle posizioni della colonne..."
+
 #: music-iterator.cc:171
 msgid "Sending non-event to context"
 msgstr ""
 
-#: music.cc:141
+#: music.cc:140
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
 msgstr ""
 
-#: music.cc:207
+#: music.cc:203
 #, fuzzy, c-format
 msgid "transposition by %s makes alteration larger than double"
-msgstr "la trasposizine di %s rende le alterazioni più che doppie"
+msgstr "la trasposizine di %s rende le alterazioni più che doppie"
 
 #: new-fingering-engraver.cc:96
 msgid "cannot add text scripts to individual note heads"
@@ -1358,7 +1801,7 @@ msgstr ""
 msgid "placing below"
 msgstr ""
 
-#: note-collision.cc:457
+#: note-collision.cc:463
 #, fuzzy
 msgid "ignoring too many clashing note columns"
 msgstr "Troppe collisioni tra colonne di note. Le ignoro."
@@ -1372,7 +1815,7 @@ msgstr ""
 msgid "none of note heads `%s' or `%s' found"
 msgstr ""
 
-#: note-heads-engraver.cc:61
+#: note-heads-engraver.cc:64
 msgid "NoteEvent without pitch"
 msgstr ""
 
@@ -1386,57 +1829,119 @@ msgstr "non posso maneggiare %s"
 msgid "cannot load font table: %s"
 msgstr "non trovo il file: `%s'"
 
-#: open-type-font.cc:98
+#: open-type-font.cc:42
+#, fuzzy, c-format
+msgid "Free type error: %s"
+msgstr "errore: "
+
+#: open-type-font.cc:100
 #, c-format
 msgid "unsupported font format: %s"
 msgstr ""
 
-#: open-type-font.cc:100
+#: open-type-font.cc:102
+#, fuzzy, c-format
+msgid "error reading font file %s: %s"
+msgstr "non trovo e non posso creare `%s'"
+
+#: open-type-font.cc:177
 #, c-format
-msgid "unknown error: %d reading font file: %s"
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
 msgstr ""
 
-#: open-type-font.cc:173 open-type-font.cc:297
+#: open-type-font.cc:302 pango-font.cc:167
 #, c-format
-msgid "FT_Get_Glyph_Name() returned error: %u"
+msgid "FT_Get_Glyph_Name () error: %s"
 msgstr ""
 
-#: 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."
+#. find out the ideal number of pages
+#: optimal-page-breaking.cc:56
+msgid "Finding the ideal number of pages..."
 msgstr ""
 
-#: page-turn-page-breaking.cc:218
+#: optimal-page-breaking.cc:71
+msgid "Fitting music on 1 page..."
+msgstr ""
+
+#: optimal-page-breaking.cc:73
+#, fuzzy, c-format
+msgid "Fitting music on %d pages..."
+msgstr "non trovo e non posso creare `%s'"
+
+#: optimal-page-breaking.cc:75
 #, c-format
-msgid "Calculating page and line breaks (%d possible page breaks)..."
+msgid "Fitting music on %d or %d pages..."
 msgstr ""
 
-#: page-turn-page-breaking.cc:236 paper-score.cc:154
+#: optimal-page-breaking.cc:152 page-turn-page-breaking.cc:226
+#: paper-score.cc:146
 #, fuzzy
 msgid "Drawing systems..."
 msgstr "Genero le voci..."
 
-#: pango-font.cc:181
+#: page-turn-page-breaking.cc:146
+#, c-format
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr ""
+
+#: 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 ""
+
+#: page-turn-page-breaking.cc:208
+#, c-format
+msgid "Calculating page and line breaks (%d possible page breaks)..."
+msgstr ""
+
+#: page-turn-page-breaking.cc:275
+#, c-format
+msgid "break starting at page %d"
+msgstr ""
+
+#: page-turn-page-breaking.cc:276
+#, c-format
+msgid "\tdemerits: %f"
+msgstr ""
+
+#: page-turn-page-breaking.cc:277
+#, c-format
+msgid "\tsystem count: %d"
+msgstr ""
+
+#: page-turn-page-breaking.cc:278
+#, c-format
+msgid "\tpage count: %d"
+msgstr ""
+
+#: page-turn-page-breaking.cc:279
+#, c-format
+msgid "\tprevious break: %d"
+msgstr ""
+
+#: pango-font.cc:184
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
 "Skipping glyph U+%0X, file %s"
 msgstr ""
 
-#: pango-font.cc:224
+#: pango-font.cc:229
 #, fuzzy, c-format
 msgid "no PostScript font name for font `%s'"
 msgstr "non posso aprire il file: `%s'"
 
-#: pango-font.cc:272
+#: pango-font.cc:277
 msgid "FreeType face has no PostScript font name"
 msgstr ""
 
-#: paper-outputter-scheme.cc:33
+#: paper-column-engraver.cc:221
+msgid "forced break was overridden by some other event, should you be using bar checks?"
+msgstr ""
+
+#: paper-outputter-scheme.cc:30
 #, fuzzy, c-format
 msgid "Layout output to `%s'..."
-msgstr "L'output MIDI è inviato a %s..."
+msgstr "L'output MIDI è inviato a %s..."
 
 #: paper-score.cc:105
 #, fuzzy
@@ -1453,7 +1958,7 @@ msgstr ""
 msgid "Preprocessing graphical objects..."
 msgstr "Pre-elaborazione..."
 
-#: parse-scm.cc:83
+#: parse-scm.cc:87
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr ""
 
@@ -1462,25 +1967,25 @@ msgstr ""
 msgid "unterminated percent repeat"
 msgstr "beam non terminato"
 
-#: performance.cc:45
+#: performance.cc:43
 #, fuzzy
 msgid "Track..."
 msgstr "traccia "
 
-#: performance.cc:74
+#: performance.cc:72
 msgid "MIDI channel wrapped around"
 msgstr ""
 
-#: performance.cc:75
+#: performance.cc:73
 msgid "remapping modulo 16"
 msgstr ""
 
-#: performance.cc:103
+#: performance.cc:101
 #, c-format
 msgid "MIDI output to `%s'..."
-msgstr "L'output MIDI è inviato a %s..."
+msgstr "L'output MIDI è inviato a %s..."
 
-#: phrasing-slur-engraver.cc:146
+#: phrasing-slur-engraver.cc:139
 #, fuzzy
 msgid "unterminated phrasing slur"
 msgstr "slur non terminato"
@@ -1501,7 +2006,7 @@ msgstr "non risco a trovare una ruling note a %s"
 msgid "cannot find start of piano pedal bracket: `%s'"
 msgstr "non risco a trovare una ruling note a %s"
 
-#: program-option.cc:205
+#: program-option-scheme.cc:215
 #, fuzzy, c-format
 msgid "no such internal option: %s"
 msgstr "% strumento:"
@@ -1520,68 +2025,77 @@ msgstr ""
 msgid "Setting %s to %s"
 msgstr "non trovo e non posso creare `%s'"
 
-#: relocate.cc:59
+#: relocate.cc:64
 #, fuzzy, c-format
 msgid "no such file: %s for %s"
 msgstr "% strumento:"
 
-#: relocate.cc:69 relocate.cc:87
+#: relocate.cc:74 relocate.cc:92
 #, fuzzy, c-format
 msgid "no such directory: %s for %s"
 msgstr "% strumento:"
 
-#: relocate.cc:79
+#: relocate.cc:84
 #, c-format
 msgid "%s=%s (prepend)\n"
 msgstr ""
 
-#: relocate.cc:99
+#: relocate.cc:114
+#, c-format
+msgid "not relocating, no %s/ or current/ found under %s"
+msgstr ""
+
+#: relocate.cc:125
 #, c-format
-msgid "Relocation: compile prefix=%s, new prefix=%s"
+msgid "Relocation: compile datadir=%s, new datadir=%s"
 msgstr ""
 
-#: relocate.cc:129
+#: relocate.cc:138
 #, c-format
 msgid "Relocation: framework_prefix=%s"
 msgstr ""
 
-#: relocate.cc:169
+#: relocate.cc:179
 #, c-format
 msgid "Relocation: is absolute: argv0=%s"
 msgstr ""
 
-#: relocate.cc:176
+#: relocate.cc:186
 #, c-format
 msgid "Relocation: from cwd: argv0=%s"
 msgstr ""
 
-#: relocate.cc:185
+#: relocate.cc:195
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
 "argv0=%s"
 msgstr ""
 
-#: relocate.cc:354
+#: relocate.cc:229
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr ""
+
+#: relocate.cc:356
 #, fuzzy, c-format
 msgid "Relocation file: %s"
 msgstr "non posso aprire il file: `%s'"
 
-#: relocate.cc:390
+#: relocate.cc:392
 #, c-format
 msgid "Unknown relocation command %s"
 msgstr ""
 
-#: rest-collision.cc:151
+#: rest-collision.cc:145
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr ""
 
-#: rest-collision.cc:165 rest-collision.cc:210
+#: rest-collision.cc:159 rest-collision.cc:204
 #, fuzzy
 msgid "too many colliding rests"
 msgstr "Troppi crescendi"
 
-#: rest.cc:144
+#: rest.cc:132
 #, c-format
 msgid "rest `%s' not found"
 msgstr ""
@@ -1598,22 +2112,22 @@ msgstr ""
 #: score-engraver.cc:71
 #, fuzzy, c-format
 msgid "Search path `%s'"
-msgstr "(Il path di caricamento è `%s'"
+msgstr "(Il path di caricamento è `%s'"
 
 #: score-engraver.cc:73
 msgid "Aborting"
 msgstr ""
 
-#: score.cc:225
+#: score.cc:167
 #, fuzzy
 msgid "already have music in score"
 msgstr "ho bisogno di musica nello spartito"
 
-#: score.cc:226
+#: score.cc:168
 msgid "this is the previous music"
 msgstr ""
 
-#: score.cc:231
+#: score.cc:173
 #, fuzzy
 msgid "errors found, ignoring music expression"
 msgstr "ho trovato un errore, /*non sto elaborando lo spartito*/"
@@ -1628,30 +2142,35 @@ msgstr ""
 msgid "scheme encoding: "
 msgstr "Opzioni: "
 
-#: simple-spacer.cc:375
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr ""
-
-#: slur-engraver.cc:83 tuplet-engraver.cc:75
+#: slur-engraver.cc:82
 #, c-format
 msgid "direction of %s invalid: %d"
 msgstr ""
 
-#: slur-engraver.cc:157
+#: slur-engraver.cc:151
 msgid "unterminated slur"
 msgstr "slur non terminato"
 
-#: slur-engraver.cc:166
+#: slur-engraver.cc:163
 #, fuzzy
 msgid "cannot end slur"
 msgstr "non posso maneggiare %s"
 
+#: slur.cc:353
+#, c-format
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr ""
+
 #: source-file.cc:74
 #, c-format
 msgid "expected to read %d characters, got %d"
 msgstr ""
 
+#: spaceable-grob.cc:83
+#, c-format
+msgid "No spring between column %d and next one"
+msgstr ""
+
 #: staff-symbol-engraver.cc:62
 msgid "staff-span event has no direction"
 msgstr ""
@@ -1675,42 +2194,42 @@ msgstr ""
 msgid "weird stem size, check for narrow beams"
 msgstr "dimensione del gambo poco ortodossa; check for narrow beams"
 
-#: stem.cc:641
+#: stem.cc:627
 #, c-format
 msgid "flag `%s' not found"
 msgstr ""
 
-#: stem.cc:652
+#: stem.cc:638
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr ""
 
-#: system.cc:180
+#: system.cc:179
 #, c-format
 msgid "Element count %d."
 msgstr ""
 
-#: system.cc:276
+#: system.cc:271
 #, c-format
 msgid "Grob count %d"
 msgstr ""
 
-#: text-spanner-engraver.cc:61
+#: text-spanner-engraver.cc:60
 #, fuzzy
 msgid "cannot find start of text spanner"
-msgstr "non trovo le estremità di %s"
+msgstr "non trovo le estremità di %s"
 
-#: text-spanner-engraver.cc:73
+#: text-spanner-engraver.cc:72
 #, fuzzy
 msgid "already have a text spanner"
 msgstr "crescendo non terminato"
 
-#: text-spanner-engraver.cc:133
+#: text-spanner-engraver.cc:118
 #, fuzzy
 msgid "unterminated text spanner"
 msgstr "extender non terminato"
 
-#: tie-engraver.cc:264
+#: tie-engraver.cc:262
 msgid "lonely tie"
 msgstr ""
 
@@ -1731,44 +2250,51 @@ msgstr ""
 msgid "time signature symbol `%s' not found; reverting to numbered style"
 msgstr ""
 
-#: translator-ctors.cc:52
+#: translator-ctors.cc:53
 #, fuzzy, c-format
 msgid "unknown translator: `%s'"
 msgstr "traduttore sconosciuto `%s'"
 
-#: translator-group.cc:151
+#: translator-group-ctors.cc:29
+#, c-format
+msgid "fatal error. Couldn't find type: %s"
+msgstr ""
+
+#: translator-group.cc:146
 #, fuzzy, c-format
 msgid "cannot find: `%s'"
 msgstr "non trovo `%s'"
 
-#: translator.cc:332
+#: translator.cc:347
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
 msgstr ""
 
-#: translator.cc:333
+#: translator.cc:348
 #, c-format
 msgid "Previous %s event here"
 msgstr ""
 
-#: trill-spanner-engraver.cc:68
+#: trill-spanner-engraver.cc:84
 #, fuzzy
 msgid "cannot find start of trill spanner"
-msgstr "non trovo le estremità di %s"
+msgstr "non trovo le estremità di %s"
 
-#: trill-spanner-engraver.cc:80
+#: trill-spanner-engraver.cc:96
 #, fuzzy
 msgid "already have a trill spanner"
 msgstr "crescendo non terminato"
 
-#: vaticana-ligature-engraver.cc:388
+#: tuplet-engraver.cc:96
+msgid "No tuplet to end"
+msgstr ""
+
+#: vaticana-ligature-engraver.cc:389
 #, c-format
-msgid ""
-"ignored prefix (es) `%s' of this head according to restrictions of the "
-"selected ligature style"
+msgid "ignored prefix (es) `%s' of this head according to restrictions of the selected ligature style"
 msgstr ""
 
-#: vaticana-ligature-engraver.cc:714
+#: vaticana-ligature-engraver.cc:718
 #, c-format
 msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
 msgstr ""
@@ -1786,160 +2312,160 @@ msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
 msgstr ""
 
 #. fixme: be more verbose.
-#: volta-engraver.cc:144
+#: volta-engraver.cc:100
 #, fuzzy
 msgid "cannot end volta spanner"
-msgstr "non trovo le estremità di %s"
+msgstr "non trovo le estremità di %s"
 
-#: volta-engraver.cc:154
+#: volta-engraver.cc:110
 msgid "already have a volta spanner, ending that one prematurely"
 msgstr ""
 
-#: volta-engraver.cc:158
+#: volta-engraver.cc:114
 #, fuzzy
 msgid "also already have an ended spanner"
 msgstr "crescendo non terminato"
 
-#: volta-engraver.cc:159
+#: volta-engraver.cc:115
 msgid "giving up"
 msgstr ""
 
-#: parser.yy:702
+#: parser.yy:728
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr ""
 
-#: parser.yy:726
+#: parser.yy:752
 msgid "need \\paper for paper block"
 msgstr ""
 
-#: parser.yy:1172
+#: parser.yy:1211
 msgid "Grob name should be alphanumeric"
 msgstr ""
 
-#: parser.yy:1475
+#: parser.yy:1509
 msgid "second argument must be pitch list"
 msgstr ""
 
-#: parser.yy:1502 parser.yy:1507 parser.yy:1972
+#: parser.yy:1536 parser.yy:1541 parser.yy:2006
 #, fuzzy
 msgid "have to be in Lyric mode for lyrics"
 msgstr "bisogna essere in Lyric mode per i testi"
 
-#: parser.yy:1604
+#: parser.yy:1638
 msgid "expecting string as script definition"
 msgstr ""
 
-#: parser.yy:1759 parser.yy:1809
+#: parser.yy:1793 parser.yy:1843
 #, c-format
 msgid "not a duration: %d"
-msgstr "non è una durata: %d"
+msgstr "non è una durata: %d"
 
-#: parser.yy:1926
+#: parser.yy:1960
 #, fuzzy
 msgid "have to be in Note mode for notes"
 msgstr "bisogna essere in Note mode per le note"
 
-#: parser.yy:1987
+#: parser.yy:2021
 #, fuzzy
 msgid "have to be in Chord mode for chords"
 msgstr "bisogna essere in Chord mode per gli accordi"
 
-#: lexer.ll:176
+#: lexer.ll:179
 msgid "stray UTF-8 BOM encountered"
 msgstr ""
 
-#: lexer.ll:180
+#: lexer.ll:183
 msgid "Skipping UTF-8 BOM"
 msgstr ""
 
-#: lexer.ll:235
+#: lexer.ll:238
 #, fuzzy, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Genero le voci..."
 
-#: lexer.ll:252
+#: lexer.ll:255
 msgid "quoted string expected after \\version"
 msgstr ""
 
-#: lexer.ll:256
+#: lexer.ll:259
 msgid "quoted string expected after \\sourcefilename"
 msgstr ""
 
-#: lexer.ll:260
+#: lexer.ll:263
 msgid "integer expected after \\sourcefileline"
 msgstr ""
 
-#: lexer.ll:273
+#: lexer.ll:276
 msgid "EOF found inside a comment"
 msgstr "ho trovato un EOF in un commento"
 
-#: lexer.ll:288
+#: lexer.ll:291
 msgid "\\maininput not allowed outside init files"
 msgstr ""
 
-#: lexer.ll:312
+#: lexer.ll:315
 #, fuzzy, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "indentificatore non definito: `%s'"
 
 #. backup rule
-#: lexer.ll:321
+#: lexer.ll:324
 msgid "end quote missing"
 msgstr ""
 
-#: lexer.ll:466
+#: lexer.ll:469
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr ""
 
-#: lexer.ll:559
+#: lexer.ll:582
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr ""
 
-#: lexer.ll:659
+#: lexer.ll:686
 #, fuzzy, c-format
 msgid "invalid character: `%c'"
 msgstr "carattere illegale: `%c'"
 
-#: lexer.ll:774 lexer.ll:775
+#: lexer.ll:801 lexer.ll:802
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "stringa di escape sconosciuta: `\\%s'"
 
-#: lexer.ll:880 lexer.ll:881
+#: lexer.ll:907 lexer.ll:908
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr ""
 
-#: lexer.ll:881 lexer.ll:882
+#: lexer.ll:908 lexer.ll:909
 msgid "consider updating the input with the convert-ly script"
 msgstr ""
 
-#: lexer.ll:887 lexer.ll:888
+#: lexer.ll:914 lexer.ll:915
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr ""
 
-#: backend-library.scm:19 lily.scm:599 ps-to-png.scm:82
+#: backend-library.scm:19 lily.scm:767 ps-to-png.scm:58
 #, fuzzy, scheme-format
 msgid "Invoking `~a'..."
 msgstr "Genero le voci..."
 
-#: backend-library.scm:24
+#: backend-library.scm:28
 #, scheme-format
 msgid "`~a' failed (~a)"
 msgstr ""
 
-#: backend-library.scm:95 framework-tex.scm:343 framework-tex.scm:368
+#: backend-library.scm:117 framework-tex.scm:344 framework-tex.scm:369
 #, fuzzy, scheme-format
 msgid "Converting to `~a'..."
 msgstr "Genero le voci..."
 
-#: backend-library.scm:108
+#: backend-library.scm:130
 #, fuzzy, scheme-format
 msgid "Converting to ~a..."
 msgstr "Genero le voci..."
 
-#: backend-library.scm:145
+#: backend-library.scm:168
 #, fuzzy, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "scrivo il file delle dipendenze: `%s'..."
@@ -1961,31 +2487,31 @@ msgstr ""
 msgid "translator listens to nonexisting event class ~A"
 msgstr ""
 
-#: define-markup-commands.scm:255
+#: define-markup-commands.scm:296
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr ""
 
-#: define-markup-commands.scm:1297
+#: define-markup-commands.scm:1310
 #, fuzzy, scheme-format
 msgid "not a valid duration string: ~a"
-msgstr "non è una durata: %d"
+msgstr "non è una durata: %d"
 
-#: define-music-types.scm:751
+#: define-music-types.scm:670
 #, fuzzy, scheme-format
 msgid "symbol expected: ~S"
 msgstr "aspettavo %s"
 
-#: define-music-types.scm:754
+#: define-music-types.scm:673
 #, fuzzy, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "non trovo `%s'"
 
-#: define-music-types.scm:774
+#: define-music-types.scm:692
 #, fuzzy, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "tipo di chiave sconosciuto"
 
-#: define-music-types.scm:775
+#: define-music-types.scm:693
 msgid "See music-types.scm for supported repeats"
 msgstr ""
 
@@ -2009,67 +2535,77 @@ msgstr "tipo di chiave sconosciuto"
 msgid "Processing ~S..."
 msgstr "Elaboro..."
 
-#: documentation-lib.scm:150
+#: documentation-lib.scm:154
 #, fuzzy, scheme-format
 msgid "Writing ~S..."
 msgstr "Genero le voci..."
 
-#: documentation-lib.scm:172
+#: documentation-lib.scm:176
 #, fuzzy, scheme-format
 msgid "cannot find description for property ~S (~S)"
 msgstr "non riesco a trovare il carattere `%s'"
 
-#: framework-eps.scm:91 framework-eps.scm:92
+#: framework-eps.scm:90
 #, fuzzy, scheme-format
 msgid "Writing ~a..."
 msgstr "Genero le voci..."
 
-#: framework-ps.scm:279
+#: framework-ps.scm:282
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr ""
 
-#: framework-ps.scm:332
+#: framework-ps.scm:335
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr ""
 
-#: framework-ps.scm:349
+#: framework-ps.scm:352
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr ""
 
-#: framework-ps.scm:380
+#: framework-ps.scm:383
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr ""
 
-#: framework-ps.scm:729
+#: framework-ps.scm:750
 #, scheme-format
 msgid "cannot convert <stdout> to ~S"
 msgstr ""
 
-#: framework-ps.scm:748 framework-ps.scm:751
+#: framework-ps.scm:769 framework-ps.scm:772
 #, scheme-format
 msgid "cannot generate ~S using the postscript back-end"
 msgstr ""
 
-#: framework-ps.scm:758
+#: framework-ps.scm:779
 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 -dbackend=eps FILE\n"
 "\n"
-"  lilypond -b eps <file>\n"
+"If have cut & pasted a lilypond fragment from a webpage, be sure\n"
+"to only remove anything before\n"
 "\n"
-"or remove the lilypond-book specific settings from the input.\n"
+"  %% ****************************************************************\n"
+"  %% Start cut-&-pastable-section\n"
+"  %% ****************************************************************\n"
 msgstr ""
 
-#: framework-tex.scm:360
+#: framework-tex.scm:361
 #, scheme-format
 msgid "TeX file name must not contain whitespace: `~a'"
 msgstr ""
 
+#: graphviz.scm:53
+#, fuzzy, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Genero le voci..."
+
 #: layout-beam.scm:29
 #, scheme-format
 msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
@@ -2080,153 +2616,179 @@ msgstr ""
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
 msgstr ""
 
-#: layout-page-layout.scm:357
+#: layout-page-layout.scm:124
+msgid "Can't fit systems on page -- ignoring between-system-padding"
+msgstr ""
+
+#: layout-page-layout.scm:458
 #, fuzzy
 msgid "Calculating page breaks..."
 msgstr "Calcolo delle posizioni della colonne..."
 
-#: lily-library.scm:593
+#: lily-library.scm:583
 #, fuzzy, scheme-format
 msgid "unknown unit: ~S"
 msgstr "traduttore sconosciuto `%s'"
 
-#: lily-library.scm:626
+#: lily-library.scm:617
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr ""
 
-#: lily-library.scm:633
+#: lily-library.scm:625
 msgid "old relative compatibility not used"
 msgstr ""
 
-#: lily.scm:144
+#: lily.scm:177
 #, fuzzy, scheme-format
 msgid "cannot find: ~A"
 msgstr "non trovo"
 
-#: lily.scm:209
+#: lily.scm:242
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr ""
 
-#: lily.scm:525 lily.scm:589
+#: lily.scm:634
+#, scheme-format
+msgid "job ~a terminated with signal: ~a"
+msgstr ""
+
+#: lily.scm:637
+#, scheme-format
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+
+#: lily.scm:664 lily.scm:757
 #, scheme-format
 msgid "failed files: ~S"
 msgstr ""
 
-#: lily.scm:579
+#: lily.scm:747
 #, fuzzy, scheme-format
 msgid "Redirecting output to ~a..."
-msgstr "L'output stampato è inviato a %s..."
+msgstr "L'output stampato è inviato a %s..."
 
 #: ly-syntax-constructors.scm:40
 msgid "Music head function must return Music object"
 msgstr ""
 
-#: ly-syntax-constructors.scm:136
+#: ly-syntax-constructors.scm:139
 #, scheme-format
 msgid "Invalid property operation ~a"
 msgstr ""
 
-#: markup.scm:123
+#: markup.scm:124
 #, scheme-format
 msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
 msgstr ""
 
-#: markup.scm:129
+#: markup.scm:130
 #, scheme-format
 msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
 msgstr ""
 
-#: music-functions.scm:213
+#: music-functions.scm:228
 msgid "More alternatives than repeats.  Junking excess alternatives"
 msgstr ""
 
-#: music-functions.scm:232
+#: music-functions.scm:240
+#, scheme-format
+msgid "invalid tremolo repeat count: ~a"
+msgstr ""
+
+#: music-functions.scm:248
 #, scheme-format
 msgid "expecting 2 elements for chord tremolo, found ~a"
 msgstr ""
 
-#: music-functions.scm:538
+#: music-functions.scm:564
 #, fuzzy, scheme-format
 msgid "music expected: ~S"
 msgstr "aspettavo %s"
 
 #. FIXME: uncomprehensable message
-#: music-functions.scm:589
+#: music-functions.scm:614
 #, scheme-format
 msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
 msgstr ""
 
-#: music-functions.scm:748
+#: music-functions.scm:764
 #, fuzzy, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "non trovo il file: `%s'"
 
-#: music-functions.scm:942
+#: music-functions.scm:961
 #, fuzzy, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "stringa di escape sconosciuta: `\\%s'"
 
-#: output-ps.scm:315
+#: output-ps.scm:276
 msgid "utf-8-string encountered in PS backend"
 msgstr ""
 
-#: output-svg.scm:42
+#: output-svg.scm:45
 #, scheme-format
 msgid "undefined: ~S"
 msgstr ""
 
-#: output-svg.scm:132
+#: output-svg.scm:135
 #, scheme-format
 msgid "cannot decypher Pango description: ~a"
 msgstr ""
 
-#: output-tex.scm:98
+#: output-tex.scm:96
 #, fuzzy, scheme-format
 msgid "cannot find ~a in ~a"
-msgstr "non trovo le estremità di %s"
+msgstr "non trovo le estremità di %s"
 
-#: paper.scm:69
+#: paper.scm:85
 #, fuzzy
-msgid "Not in toplevel scope"
-msgstr "non c'è un traduttore di livello massimo"
+msgid "set-global-staff-size: not in toplevel scope"
+msgstr "non c'è un traduttore di livello massimo"
 
-#: paper.scm:117
+#: paper.scm:133
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr ""
 
-#: paper.scm:129
+#: paper.scm:145
 #, fuzzy, scheme-format
 msgid "Unknown papersize: ~a"
 msgstr "variabile paper sconosciuta: `%s'"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:144
+#: paper.scm:160
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr ""
 
-#: parser-clef.scm:126
+#: parser-clef.scm:129
 #, fuzzy, scheme-format
 msgid "unknown clef type `~a'"
 msgstr "tipo di chiave sconosciuto"
 
-#: parser-clef.scm:127
-msgid "see scm/clef.scm for supported clefs"
+#: parser-clef.scm:130
+#, scheme-format
+msgid "supported clefs: ~a"
 msgstr ""
 
-#: ps-to-png.scm:88
+#: ps-to-png.scm:64
 #, scheme-format
 msgid "~a exited with status: ~S"
 msgstr ""
 
-#: to-xml.scm:190
+#: to-xml.scm:180
 #, scheme-format
 msgid "assertion failed: ~S"
 msgstr ""
 
+#, fuzzy
+#~ msgid "do not generate printed output"
+#~ msgstr "vincoli degenerati"
+
 #~ msgid "silly pitch"
 #~ msgstr "indicazione altezza priva di senso"
 
@@ -2260,7 +2822,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "junking event: `%s'"
-#~ msgstr "Cosa? Non è una richiesta: `%s'"
+#~ msgstr "Cosa? Non è una richiesta: `%s'"
 
 #, fuzzy
 #~ msgid "cannot find `%s' context"
@@ -2275,7 +2837,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "in quotation: junking event %s"
-#~ msgstr "Cosa? Non è una richiesta: `%s'"
+#~ msgstr "Cosa? Non è una richiesta: `%s'"
 
 #, fuzzy
 #~ msgid "cannot find ascii character: %d"
@@ -2343,7 +2905,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "suspect duration in beam: %s"
-#~ msgstr "non è una durata: %d"
+#~ msgstr "non è una durata: %d"
 
 #, fuzzy
 #~ msgid "syntax error: cannot back up"
@@ -2369,10 +2931,6 @@ msgstr ""
 #~ msgid "syntax error, unexpected %s, expecting %s or %s"
 #~ msgstr "Errore non fatale: "
 
-#, fuzzy
-#~ msgid "syntax error, unexpected %s, expecting %s or %s or %s"
-#~ msgstr "Errore non fatale: "
-
 #, fuzzy
 #~ msgid "syntax error; also memory exhausted"
 #~ msgstr "Errore non fatale: "
@@ -2449,10 +3007,6 @@ msgstr ""
 #~ msgid "kpathsea can not find TFM file: `%s'"
 #~ msgstr "non trovo il file: `%s'"
 
-#, fuzzy
-#~ msgid "Converting to `~a.ps'..."
-#~ msgstr "Genero le voci..."
-
 #, fuzzy
 #~ msgid "add DIR to LilyPond's search path"
 #~ msgstr "  -I, --include=DIR      aggiunge DIR ai path di ricerca\n"
@@ -2483,11 +3037,11 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "%s output to <stdout>..."
-#~ msgstr "L'output MIDI è inviato a %s..."
+#~ msgstr "L'output MIDI è inviato a %s..."
 
 #, fuzzy
 #~ msgid "%s output to %s..."
-#~ msgstr "L'output MIDI è inviato a %s..."
+#~ msgstr "L'output MIDI è inviato a %s..."
 
 #, fuzzy
 #~ msgid "cannot find file: `%s.%s'"
@@ -2499,9 +3053,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "write Makefile dependencies for every input file"
-#~ msgstr ""
-#~ "  -d, --dependencies     scrive le dependenze del Makefile per ogni file "
-#~ "di input\n"
+#~ msgstr "  -d, --dependencies     scrive le dependenze del Makefile per ogni file di input\n"
 
 #, fuzzy
 #~ msgid "invalid value: `%s'"
@@ -2517,7 +3069,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "Score contains errors; will not process it"
-#~ msgstr "lo spartito contiene errori; non lo elaborerò"
+#~ msgstr "lo spartito contiene errori; non lo elaborerò"
 
 #, fuzzy
 #~ msgid "Now processing: `%s'"
@@ -2525,9 +3077,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "inhibit file output naming and exporting"
-#~ msgstr ""
-#~ "  -s, --safe             inibisce la rinomina dei file di output e "
-#~ "l'esportazione di macro di TeX\n"
+#~ msgstr "  -s, --safe             inibisce la rinomina dei file di output e l'esportazione di macro di TeX\n"
 
 #, fuzzy
 #~ msgid "GNU LilyPond -- The music typesetter"
@@ -2538,7 +3088,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "paper output to `%s'..."
-#~ msgstr "L'output stampato è inviato a %s..."
+#~ msgstr "L'output stampato è inviato a %s..."
 
 #, fuzzy
 #~ msgid "Outputting Score, defined at: "
@@ -2549,7 +3099,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "cannot find start of phrasing slur"
-#~ msgstr "non trovo le estremità di %s"
+#~ msgstr "non trovo le estremità di %s"
 
 #, fuzzy
 #~ msgid "unterminated pedal bracket"
@@ -2561,7 +3111,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "cannot find start of slur"
-#~ msgstr "non trovo le estremità di %s"
+#~ msgstr "non trovo le estremità di %s"
 
 #, fuzzy
 #~ msgid "Error syncing file (disk full?)"
@@ -2602,18 +3152,14 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "This binary was compiled with the following options:"
-#~ msgstr "GNU LilyPond è stata compilata con le seguenti impostazioni:"
+#~ msgstr "GNU LilyPond è stata compilata con le seguenti impostazioni:"
 
 #~ msgid "EOF in a string"
 #~ msgstr "EOF in una corda"
 
-#, fuzzy
-#~ msgid "unknown spacing pair `%s', `%s'"
-#~ msgstr "traduttore sconosciuto `%s'"
-
 #, fuzzy
 #~ msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s"
-#~ msgstr "Tipo sbagliato per il valore di una proprietà"
+#~ msgstr "Tipo sbagliato per il valore di una proprietà"
 
 #~ msgid "#32 in quarter: %d"
 #~ msgstr "#32 in un quarto: %d"
@@ -2660,9 +3206,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "do not output tuplets, double dots or rests, smallest is 32"
-#~ msgstr ""
-#~ "  -n, --no-silly         assume che non ci siano gruppetti o doppi punti, "
-#~ "la figura più piccola è 32\n"
+#~ msgstr "  -n, --no-silly         assume che non ci siano gruppetti o doppi punti, la figura più piccola è 32\n"
 
 #, fuzzy
 #~ msgid "set FILE as default output"
@@ -2674,13 +3218,11 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "do not timestamp the output"
-#~ msgstr ""
-#~ "  -T, --no-timestamps    non inserisce marcatori temporali nell'output\n"
+#~ msgstr "  -T, --no-timestamps    non inserisce marcatori temporali nell'output\n"
 
 #, fuzzy
 #~ msgid "assume no double dotted notes"
-#~ msgstr ""
-#~ " -x, --no-double-dots   assume che non ci siano note con doppio punto\n"
+#~ msgstr " -x, --no-double-dots   assume che non ci siano note con doppio punto\n"
 
 #~ msgid "Usage: %s [OPTIONS]... [FILE]"
 #~ msgstr "Uso: %s [OPZIONE]... [FILE]"
@@ -2728,14 +3270,14 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "no Grace context available"
-#~ msgstr "non è una vera variabile"
+#~ msgstr "non è una vera variabile"
 
 #, fuzzy
 #~ msgid "Fetching `%'s..."
 #~ msgstr "Genero le voci..."
 
 #~ msgid "Wrong type for property value"
-#~ msgstr "Tipo sbagliato per il valore di una proprietà"
+#~ msgstr "Tipo sbagliato per il valore di una proprietà"
 
 #, fuzzy
 #~ msgid "not enough fields in Dstream init"
@@ -2766,9 +3308,7 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "show all changes in relative syntax"
-#~ msgstr ""
-#~ "  -Q, --find-old-relative mostra tutti i cambiamenti nella sintassi "
-#~ "relativa\n"
+#~ msgstr "  -Q, --find-old-relative mostra tutti i cambiamenti nella sintassi relativa\n"
 
 #, fuzzy
 #~ msgid "switch on experimental features"
@@ -2779,14 +3319,14 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "Wrong type for property"
-#~ msgstr "Tipo sbagliato per il valore di una proprietà"
+#~ msgstr "Tipo sbagliato per il valore di una proprietà"
 
 #, fuzzy
 #~ msgid "Huh?  Not a Request: `%s'"
-#~ msgstr "Cosa? Non è una richiesta: `%s'"
+#~ msgstr "Cosa? Non è una richiesta: `%s'"
 
 #~ msgid "cannot find both ends of %s"
-#~ msgstr "non trovo le estremità di %s"
+#~ msgstr "non trovo le estremità di %s"
 
 #, fuzzy
 #~ msgid "lost in time:"
@@ -2808,14 +3348,14 @@ msgstr ""
 #~ msgstr "versione di mudela errata: %s (%s, %s)"
 
 #~ msgid "not a real variable"
-#~ msgstr "non è una vera variabile"
+#~ msgstr "non è una vera variabile"
 
 #, fuzzy
 #~ msgid "Spanner `%s' has equal left and right spanpoints"
 #~ msgstr "I punti di span sinistro e destro dello spanner `%s' coincidono"
 
 #~ msgid "Debug output disabled.  Compiled with NPRINT."
-#~ msgstr "L'output di debug è disabilitato. Compilato con NPRINT."
+#~ msgstr "L'output di debug è disabilitato. Compilato con NPRINT."
 
 #~ msgid "0 lines"
 #~ msgstr "0 linee"
@@ -2829,16 +3369,12 @@ msgstr ""
 #~ msgid "score does not have any columns"
 #~ msgstr "lo spartito non contiene nessuna colonna"
 
-#, fuzzy
-#~ msgid "approximated %s"
-#~ msgstr "approssimato: %s:"
-
 #, fuzzy
 #~ msgid "calculated %s exactly"
 #~ msgstr "calcolato esattamente: %s"
 
 #~ msgid "Got a dynamic already.  Continuing dazed and confused"
-#~ msgstr "E' già presente una dinamica. Continuo, ma sono confusa"
+#~ msgstr "E' già presente una dinamica. Continuo, ma sono confusa"
 
 #~ msgid "Too many crescendi here"
 #~ msgstr "Troppi crescendi"
@@ -2847,15 +3383,13 @@ msgstr ""
 #~ msgstr "doppia dichiarazione di `\\%s'"
 
 #~ msgid "Cannot solve this casting problem exactly; revert to Word_wrap"
-#~ msgstr ""
-#~ "Non posso risolvere esattamente questo problema di conversione; ritorno "
-#~ "al Word_wrap"
+#~ msgstr "Non posso risolvere esattamente questo problema di conversione; ritorno al Word_wrap"
 
 #~ msgid "time: %.2f seconds"
 #~ msgstr "durata: %.2f secondi"
 
 #~ msgid "no minimum in measure at %s"
-#~ msgstr "non c'è minimo nella misura a %s"
+#~ msgstr "non c'è minimo nella misura a %s"
 
 #~ msgid "I'm too fat; call Oprah"
 #~ msgstr "Son troppo grassa; chiama Oprah"
@@ -2867,16 +3401,16 @@ msgstr ""
 #~ msgstr "misura parziale troppo grande"
 
 #~ msgid "Will ignore \\relative for transposed music"
-#~ msgstr "Ignorerò \\relative per la musica trasposta "
+#~ msgstr "Ignorerò \\relative per la musica trasposta "
 
 #~ msgid "ugh, this measure is too long"
-#~ msgstr "ops, questa misura è troppo lunga"
+#~ msgstr "ops, questa misura è troppo lunga"
 
 #~ msgid "I do not fit; put me on Montignac"
 #~ msgstr "Non ci sto; mettimi su Montignac"
 
 #~ msgid "More than one music block"
-#~ msgstr "Più di un blocco di musica"
+#~ msgstr "Più di un blocco di musica"
 
 #~ msgid "cannot abbreviate"
 #~ msgstr "non posso abbreviare"
@@ -2893,11 +3427,10 @@ msgstr ""
 
 #, fuzzy
 #~ msgid "do not timestamp the output "
-#~ msgstr ""
-#~ "  -T, --no-timestamps    non inserisce marcatori temporali nell'output\n"
+#~ msgstr "  -T, --no-timestamps    non inserisce marcatori temporali nell'output\n"
 
 #~ msgid "  -a, --about            about LilyPond\n"
-#~ msgstr "  -a, --about            cos'è LilyPond\n"
+#~ msgstr "  -a, --about            cos'è LilyPond\n"
 
 #~ msgid "  -h, --help             this help\n"
 #~ msgstr "  -h, --help             questo help\n"
@@ -2906,14 +3439,13 @@ msgstr ""
 #~ msgstr "  -f, --output-format=X  usa il formato dell'ouput X\n"
 
 #~ msgid "  -o, --output=FILE      set FILE as default output base\n"
-#~ msgstr ""
-#~ "  -o, --output=FILE      indica FILE come base di default per l'output\n"
+#~ msgstr "  -o, --output=FILE      indica FILE come base di default per l'output\n"
 
 #~ msgid "  -V, --ignore-version   ignore mudela version\n"
 #~ msgstr "  -V, --ignore-version   ignora la versione di mudela\n"
 
 #~ msgid "GNU LilyPond is Free software, see --warranty"
-#~ msgstr "GNU LilyPond è Free software, vedi --warranty"
+#~ msgstr "GNU LilyPond è Free software, vedi --warranty"
 
 #~ msgid "  -D, --debug            enable debugging output\n"
 #~ msgstr "  -D, --debug            abilita l'output di debugging\n"
@@ -2925,11 +3457,8 @@ msgstr ""
 #~ msgid "  -q, --quiet            be quiet\n"
 #~ msgstr "  -q, --quiet            sii silenzioso\n"
 
-#~ msgid ""
-#~ "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
-#~ msgstr ""
-#~ "  -s, --smallest=N       assume che non ci siano durate (reciproche) "
-#~ "inferiori a N\n"
+#~ msgid "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+#~ msgstr "  -s, --smallest=N       assume che non ci siano durate (reciproche) inferiori a N\n"
 
 #~ msgid "  -v, --verbose          be verbose\n"
 #~ msgstr "  -v, --verbose          sii loquace\n"
@@ -2948,10 +3477,10 @@ msgstr ""
 #~ msgstr "il gambo a $s non rientra nel beam"
 
 #~ msgid "No stem direction set. Ignoring column in clash."
-#~ msgstr "Nessuna direzione del gambo è selezionata. Ignoro la colonna."
+#~ msgstr "Nessuna direzione del gambo è selezionata. Ignoro la colonna."
 
 #~ msgid "\\relative mode changed here, old value: "
-#~ msgstr "\\il modo relativo è cambiato in questo punto, valore vecchio: "
+#~ msgstr "\\il modo relativo è cambiato in questo punto, valore vecchio: "
 
 #~ msgid "ignoring zero duration added to column at %s"
 #~ msgstr "ingnoro le durate nulle aggiunte alla colonna a %s"
@@ -2962,12 +3491,8 @@ msgstr ""
 #~ msgid "unconnected column: %d"
 #~ msgstr "colonna sconnessa: %d"
 
-#~ msgid ""
-#~ "Staff_side::get_position_f(): somebody forgot to set my direction, "
-#~ "returning -20"
-#~ msgstr ""
-#~ "taff_side::get_position_f(): qualcuno ha dimenticato di impostare lamia "
-#~ "direzione, quindi restituisco -20"
+#~ msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+#~ msgstr "taff_side::get_position_f(): qualcuno ha dimenticato di impostare lamia direzione, quindi restituisco -20"
 
 #~ msgid "have to be in Note mode for @chords"
 #~ msgstr "bisogna essere in Note mode per i @chords"
@@ -2980,13 +3505,12 @@ msgstr ""
 #~ "beams, slurs, triplets, named chords, transposing, formatting scores, \n"
 #~ "part extraction.  It includes a nice font of musical symbols.\n"
 #~ msgstr ""
-#~ "LilyPond è il programma di notazione musicale del progetto\n"
-#~ "GNU. Questo programma può generare delle ottime partiture musicali\n"
-#~ "a partire da un file contenente la descrizione della musica. Può\n"
+#~ "LilyPond è il programma di notazione musicale del progetto\n"
+#~ "GNU. Questo programma può generare delle ottime partiture musicali\n"
+#~ "a partire da un file contenente la descrizione della musica. Può\n"
 #~ "anche generare esecuzioni meccaniche della partitura in formato\n"
 #~ "MIDI. Le caratteristiche del programma includono un versatile\n"
 #~ "linguaggio di descrizione musicale, pentagrammi multipli, segni di\n"
 #~ "divisione, chiavi, tasti, parole, cadenze, legature, acciaccature,\n"
-#~ "terzine, segni di formattazione ed estrazione automatica delle parti. "
-#~ "Nella\n"
-#~ "distribuzione è compreso anche un font di simboli musicali.\n"
+#~ "terzine, segni di formattazione ed estrazione automatica delle parti. Nella\n"
+#~ "distribuzione è compreso anche un font di simboli musicali.\n"
index 7822ee346d426db60cf11963e52c85f84dc390aa..714391e0cb7d6df579100a90e9b692d9782a3f60 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,13 +1,13 @@
-# Japanese message for lilypond 1.2.17
+# Japanese message for lilypond 1.3.57
 # Copyright (C) 2000 Free Software Foundation, Inc.
 # Daisuke Yamashita <yamad@mb.infoweb.ne.jp>, 2000.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 1.2.17\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-12-24 10:40+0100\n"
-"PO-Revision-Date: 2006-12-23 16:15+0100\n"
+"Project-Id-Version: lilypond 1.3.57\n"
+"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
+"POT-Creation-Date: 2008-02-14 15:55+0100\n"
+"PO-Revision-Date: 2000-07-14 00:34+0900\n"
 "Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
 "Language-Team: Japanese <ja@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -28,23 +28,331 @@ msgstr ""
 msgid "%s has been replaced by %s"
 msgstr ""
 
-#: convertrules.py:2398
+#: convertrules.py:24 musicexp.py:16 convert-ly.py:47 lilypond-book.py:82
+#: warn.cc:48 input.cc:90
+#, fuzzy, c-format, python-format
+msgid "warning: %s"
+msgstr "·Ù¹ð: "
+
+#: convertrules.py:33 convertrules.py:103
+msgid "\\header { key = concat + with + operator }"
+msgstr ""
+
+#: convertrules.py:48
+#, fuzzy, python-format
+msgid "deprecated %s"
+msgstr "¤ª¤ª¤è¤½ %s"
+
+#: convertrules.py:61
+msgid "deprecated \\textstyle, new \\key syntax"
+msgstr ""
+
+#: convertrules.py:80 convertrules.py:2124 convertrules.py:2337
+#: convertrules.py:2512 convertrules.py:2889
+msgid "bump version for release"
+msgstr ""
+
+#: convertrules.py:99
+msgid "new \\header format"
+msgstr ""
+
+#: convertrules.py:133
+msgid "\\translator syntax"
+msgstr ""
+
+#: convertrules.py:211
+msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
+msgstr ""
+
+#: convertrules.py:254 convertrules.py:828 convertrules.py:1584
+#: convertrules.py:2685
+#, python-format
+msgid "deprecate %s"
+msgstr ""
+
+#: convertrules.py:361
+#, python-format
+msgid "deprecate %s "
+msgstr ""
+
+#: convertrules.py:384
+msgid "new \\notenames format"
+msgstr ""
+
+#: convertrules.py:404
+#, fuzzy
+msgid "new tremolo format"
+msgstr "ËöÈø¤Ø¤Î¥È¥ì¥â¥íµ­¹æ¤¬¤¢¤ê¤Þ¤»¤ó"
+
+#: convertrules.py:417
+msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
+msgstr ""
+
+#: convertrules.py:536
+msgid "change property definiton case (eg. onevoice -> oneVoice)"
+msgstr ""
+
+#: convertrules.py:544
+msgid "new \\textscript markup text"
+msgstr ""
+
+#: convertrules.py:638
+#, fuzzy, python-format
+msgid "identifier names: %s"
+msgstr "¼±ÊÌ»Ò̾¤Ï¥­¡¼¥ï¡¼¥É¤Ç¤¹: `%s'"
+
+#: convertrules.py:679
+msgid "point-and-click argument changed to procedure."
+msgstr ""
+
+#: convertrules.py:739
+msgid "semicolons removed"
+msgstr ""
+
+#. 40 ?
+#: convertrules.py:795
+#, python-format
+msgid "%s property names"
+msgstr ""
+
+#: convertrules.py:865
+msgid "automaticMelismata turned on by default"
+msgstr ""
+
+#: convertrules.py:1131 convertrules.py:1893 convertrules.py:2166
+#: convertrules.py:2472
+#, python-format
+msgid "remove %s"
+msgstr ""
+
+#: convertrules.py:1164 convertrules.py:1173
+msgid "cluster syntax"
+msgstr ""
+
+#: convertrules.py:1182
+msgid "new Pedal style syntax"
+msgstr ""
+
+#: convertrules.py:1451
+msgid ""
+"New relative mode,\n"
+"Postfix articulations, new text markup syntax, new chord syntax."
+msgstr ""
+
+#: convertrules.py:1475
+msgid "Remove - before articulation"
+msgstr ""
+
+#: convertrules.py:1515
+#, python-format
+msgid "%s misspelling"
+msgstr ""
+
+#: convertrules.py:1521
+msgid "attempting automatic \\figures conversion.  Check results!"
+msgstr ""
+
+#: convertrules.py:1550
+msgid "Swap < > and << >>"
+msgstr ""
+
+#: convertrules.py:1576
+msgid "Use Scheme code to construct arbitrary note events."
+msgstr ""
+
+#: convertrules.py:1609
+#, python-format
+msgid ""
+"\\outputproperty found,\n"
+"Please hand-edit, using\n"
+"\n"
+"  \\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)\n"
+"\n"
+"as a substitution text."
+msgstr ""
+
+#: convertrules.py:1623
+msgid ""
+"The alteration field of Scheme pitches was multiplied by 2\n"
+"to support quarter tone accidentals.  You must update the following constructs manually:\n"
+"\n"
+"* calls of ly:make-pitch and ly:pitch-alteration\n"
+"* keySignature settings made with \\property\n"
+msgstr ""
+
+#: convertrules.py:1633
+msgid ""
+"use symbolic constants for alterations,\n"
+"remove \\outputproperty, move ly:verbose into ly:get-option"
+msgstr ""
+
+#: convertrules.py:1692
+msgid "removal of automaticMelismata; use melismaBusyProperties instead."
+msgstr ""
+
+#: convertrules.py:1807
+msgid "\\partcombine syntax change to \\newpartcombine"
+msgstr ""
+
+#: convertrules.py:1824
+msgid "Drums found. Enclose drum notes in \\drummode"
+msgstr ""
+
+#: convertrules.py:1835 convertrules.py:1842 convertrules.py:1853
+#, python-format
+msgid ""
+"\n"
+"%s found. Check file manually!\n"
+msgstr ""
+
+#: convertrules.py:1835
+msgid "Drum notation"
+msgstr ""
+
+#: convertrules.py:1863
+msgid ""
+"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
+"Harmonic notes. Thread context removed. Lyrics context removed."
+msgstr ""
+
+#: convertrules.py:1924
+msgid "new syntax for property settings:"
+msgstr ""
+
+#: convertrules.py:1957
+msgid "Property setting syntax in \\translator{ }"
+msgstr ""
+
+#: convertrules.py:1978
+#, python-format
+msgid "use %s"
+msgstr ""
+
+#: convertrules.py:1995
+msgid "Scheme grob function renaming"
+msgstr ""
+
+#: convertrules.py:2008
+msgid "More Scheme function renaming"
+msgstr ""
+
+#: convertrules.py:2140
+msgid ""
+"Page layout has been changed, using paper size and margins.\n"
+"textheight is no longer used.\n"
+msgstr ""
+
+#: convertrules.py:2259
+msgid ""
+"\\foo -> \\foomode (for chords, notes, etc.)\n"
+"fold \\new FooContext \\foomode into \\foo."
+msgstr ""
+
+#: convertrules.py:2285
+msgid ""
+"staff size should be changed at top-level\n"
+"with\n"
+"\n"
+"  #(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)\n"
+"\n"
+msgstr ""
+
+#: convertrules.py:2320
+msgid "regularize other identifiers"
+msgstr ""
+
+#: convertrules.py:2411
 msgid "LilyPond source must be UTF-8"
 msgstr ""
 
-#: convertrules.py:2401
+#: convertrules.py:2414
 msgid "Try the texstrings backend"
 msgstr ""
 
-#: convertrules.py:2404
+#: convertrules.py:2417
 #, python-format
 msgid "Do something like: %s"
 msgstr ""
 
-#: convertrules.py:2407
+#: convertrules.py:2420
 msgid "Or save as UTF-8 in your editor"
 msgstr ""
 
+#: convertrules.py:2452
+msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
+msgstr ""
+
+#: convertrules.py:2485
+msgid "auto beam settings"
+msgstr ""
+
+#: convertrules.py:2487
+msgid ""
+"\n"
+"Auto beam settings must now specify each interesting moment in a measure\n"
+"explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n"
+msgstr ""
+
+#: convertrules.py:2498
+msgid "warn about auto beam settings"
+msgstr ""
+
+#: convertrules.py:2624
+msgid "verticalAlignmentChildCallback has been deprecated"
+msgstr ""
+
+#: convertrules.py:2652
+msgid "Remove callbacks property, deprecate XY-extent-callback."
+msgstr ""
+
+#: convertrules.py:2663
+msgid "Use grob closures iso. XY-offset-callbacks."
+msgstr ""
+
+#: convertrules.py:2770
+msgid "foobar -> foo-bar for \\paper, \\layout"
+msgstr ""
+
+#: convertrules.py:2877
+msgid "deprecate \\tempo in \\midi"
+msgstr ""
+
+#: convertrules.py:2912
+msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
+msgstr ""
+
+#: convertrules.py:2941
+msgid "Rename accidental glyphs, use glyph-name-alist."
+msgstr ""
+
+#: convertrules.py:2973
+msgid "edge-text settings for TextSpanner."
+msgstr ""
+
+#: convertrules.py:2974
+#, python-format
+msgid ""
+"Use\n"
+"\n"
+"%s"
+msgstr ""
+
+#: convertrules.py:3020
+msgid "all settings related to dashed lines.\n"
+msgstr ""
+
+#: convertrules.py:3021
+msgid "Use \\override ... #'style = #'line for solid lines and\n"
+msgstr ""
+
+#: convertrules.py:3022
+msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
+msgstr ""
+
+#: convertrules.py:3027
+msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
+msgstr ""
+
 #: fontextract.py:26
 #, fuzzy, python-format
 msgid "Scanning %s"
@@ -56,81 +364,116 @@ msgid "Extracted %s"
 msgstr ""
 
 #: fontextract.py:86
-#, fuzzy, python-format
+#, python-format
 msgid "Writing fonts to %s"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+msgstr ""
 
-#: lilylib.py:85 lilylib.py:136
+#: lilylib.py:102 lilylib.py:153
 #, fuzzy, python-format
 msgid "Invoking `%s'"
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+msgstr "¶Ê¤ò¼Î¤Æ¤Þ¤¹: `%s'"
 
-#: lilylib.py:87 lilylib.py:138
-#, fuzzy, python-format
+#: lilylib.py:104 lilylib.py:155
+#, python-format
 msgid "Running %s..."
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+msgstr ""
 
-#: lilylib.py:203
-#, fuzzy, python-format
+#: lilylib.py:220
+#, python-format
 msgid "Usage: %s"
-msgstr "·Ù¹ð: "
+msgstr ""
+
+#: musicexp.py:577
+#, python-format
+msgid "unable to set the music %(music)s for the repeat %(repeat)s"
+msgstr ""
+
+#: musicexp.py:586
+msgid "encountered repeat without body"
+msgstr ""
 
-#: abc2ly.py:1349 convert-ly.py:80 lilypond-book.py:125 midi2ly.py:869
+#: musicxml.py:13 convert-ly.py:50 lilypond-book.py:85 warn.cc:54 input.cc:96
+#: input.cc:104
+#, fuzzy, c-format, python-format
+msgid "error: %s"
+msgstr "¥¨¥é¡¼: "
+
+#: musicxml.py:272
+msgid "requested time signature, but time sig is unknown"
+msgstr ""
+
+#: musicxml.py:338
+#, python-format
+msgid "Encountered note at %s with %s duration (no <type> element):"
+msgstr ""
+
+#: musicxml.py:372
+#, python-format
+msgid "Unable to find find instrument for ID=%s\n"
+msgstr ""
+
+#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:109 midi2ly.py:849
 #, fuzzy, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]"
 
-#: abc2ly.py:1351
+#: abc2ly.py:1343
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
 "%s) to LilyPond input."
 msgstr ""
 
-#: abc2ly.py:1355 etf2ly.py:1200 midi2ly.py:885
+#: abc2ly.py:1350 convert-ly.py:78 etf2ly.py:1190 lilypond-book.py:175
+#: midi2ly.py:885 musicxml2ly.py:1824 main.cc:161
+#, fuzzy
+msgid "show version number and exit"
+msgstr "¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨"
+
+#: abc2ly.py:1354 convert-ly.py:82 etf2ly.py:1186 lilypond-book.py:125
+#: midi2ly.py:864 musicxml2ly.py:1808 main.cc:150
+msgid "show this help and exit"
+msgstr ""
+
+#: abc2ly.py:1356 etf2ly.py:1191 midi2ly.py:868
 #, fuzzy
 msgid "write output to FILE"
-msgstr "BASENAME[-x].³ÈÄ¥»Ò ¤Ø½ÐÎϤò½ñ¤­¹þ¤à"
+msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..."
 
-#: abc2ly.py:1357
+#: abc2ly.py:1358
 msgid "be strict about succes"
 msgstr ""
 
-#: abc2ly.py:1359
+#: abc2ly.py:1360
 msgid "preserve ABC's notion of beams"
 msgstr ""
 
-#: abc2ly.py:1361 convert-ly.py:112 etf2ly.py:1208 lilypond-book.py:168
-#: midi2ly.py:911 musicxml2ly.py:505
+#: abc2ly.py:1361 convert-ly.py:111 etf2ly.py:1198 lilypond-book.py:180
+#: midi2ly.py:897 musicxml2ly.py:1872
+msgid "Bugs"
+msgstr ""
+
+#: abc2ly.py:1362 convert-ly.py:112 etf2ly.py:1199 lilypond-book.py:181
+#: midi2ly.py:898 musicxml2ly.py:1873
 #, fuzzy
 msgid "Report bugs via"
-msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø."
+msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø"
 
-#: convert-ly.py:41
+#: 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 ""
 
-#: convert-ly.py:43 lilypond-book.py:73
+#: convert-ly.py:34 lilypond-book.py:59
 msgid "Examples:"
 msgstr ""
 
-#: convert-ly.py:56 lilypond-book.py:98 warn.cc:48 input.cc:90
-#, fuzzy, c-format, python-format
-msgid "warning: %s"
-msgstr "·Ù¹ð: "
-
-#: convert-ly.py:59 lilypond-book.py:101 warn.cc:54 input.cc:96 input.cc:104
-#, fuzzy, c-format, python-format
-msgid "error: %s"
-msgstr "¥¨¥é¡¼: "
-
-#: convert-ly.py:75 etf2ly.py:1190 lilypond-book.py:121 midi2ly.py:98
+#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:105 midi2ly.py:79
 msgid "Distributed under terms of the GNU General Public License."
 msgstr ""
 
-#: convert-ly.py:76 etf2ly.py:1191 lilypond-book.py:122 midi2ly.py:99
+#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:106 midi2ly.py:80
 msgid "It comes with NO WARRANTY."
 msgstr ""
 
@@ -175,313 +518,387 @@ msgstr ""
 msgid "Processing `%s'... "
 msgstr "½èÍýÃæ..."
 
-#: convert-ly.py:277 relocate.cc:360 source-file.cc:54
+#: convert-ly.py:277 relocate.cc:362 source-file.cc:54
 #, fuzzy, c-format, python-format
 msgid "cannot open file: `%s'"
 msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
 
 #: convert-ly.py:284
-#, fuzzy, python-format
+#, python-format
 msgid "cannot determine version for `%s'.  Skipping"
-msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
+msgstr ""
 
-#: etf2ly.py:1196
+#: etf2ly.py:1180
 #, fuzzy, python-format
 msgid "%s [OPTION]... ETF-FILE"
 msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]"
 
-#: etf2ly.py:1198
+#: etf2ly.py:1181
 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 ""
 
-#: etf2ly.py:1201 midi2ly.py:886 musicxml2ly.py:498 main.cc:172 main.cc:178
+#: etf2ly.py:1192 midi2ly.py:869 musicxml2ly.py:1866 main.cc:154 main.cc:159
 msgid "FILE"
 msgstr "FILE"
 
-#: etf2ly.py:1203 lilypond-book.py:165 midi2ly.py:899 main.cc:185
+#: etf2ly.py:1194 lilypond-book.py:178 midi2ly.py:886 main.cc:163
 msgid "show warranty and copyright"
 msgstr "ÊݾڤÈÃøºî¸¢¤Ë¤Ä¤¤¤Æɽ¼¨¤¹¤ë"
 
-#: lilypond-book.py:71
-msgid ""
-"Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
+#: lilypond-book.py:57
+msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
 msgstr ""
 
-#: lilypond-book.py:78
+#: lilypond-book.py:64
 msgid "BOOK"
 msgstr ""
 
-#: lilypond-book.py:87
-#, fuzzy, python-format
+#: lilypond-book.py:72
+#, python-format
 msgid "Exiting (%d)..."
-msgstr "¹Ô ..."
+msgstr ""
 
-#: lilypond-book.py:119
+#: lilypond-book.py:103
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s by"
 
-#: lilypond-book.py:129
+#: lilypond-book.py:113
 #, fuzzy
 msgid "FILTER"
 msgstr "FILE"
 
-#: lilypond-book.py:132
+#: lilypond-book.py:116
 msgid "pipe snippets through FILTER [convert-ly -n -]"
 msgstr ""
 
-#: lilypond-book.py:135
-#, fuzzy
-msgid ""
-"use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
-msgstr "½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È EXT ¤ò»È¤¦"
+#: lilypond-book.py:120
+msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
+msgstr ""
 
-#: lilypond-book.py:138
+#: lilypond-book.py:127
 #, fuzzy
 msgid "add DIR to include path"
 msgstr "DIR ¤ò¸¡º÷¥Ñ¥¹¤ËÄɲÃ"
 
-#: lilypond-book.py:139 lilypond-book.py:144 main.cc:171
+#: lilypond-book.py:128 lilypond-book.py:135 lilypond-book.py:147 main.cc:153
 msgid "DIR"
 msgstr "DIR"
 
-#: lilypond-book.py:143
+#: lilypond-book.py:133
+msgid "format Texinfo output so that Info will look for images of music in DIR"
+msgstr ""
+
+#: lilypond-book.py:140
+msgid "PAD"
+msgstr ""
+
+#: lilypond-book.py:142
+msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
+msgstr ""
+
+#: lilypond-book.py:146
 #, fuzzy
 msgid "write output to DIR"
-msgstr "BASENAME[-x].³ÈÄ¥»Ò ¤Ø½ÐÎϤò½ñ¤­¹þ¤à"
+msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..."
 
-#: lilypond-book.py:147
+#: lilypond-book.py:151
 msgid "COMMAND"
 msgstr ""
 
-#: lilypond-book.py:148
+#: lilypond-book.py:152
 msgid "process ly_files using COMMAND FILE..."
 msgstr ""
 
-#: lilypond-book.py:154
-msgid "Create PDF files for use with PDFTeX"
+#: lilypond-book.py:159
+msgid "create PDF files for use with PDFTeX"
 msgstr ""
 
-#: lilypond-book.py:157
+#: lilypond-book.py:163
 msgid ""
 "extract all PostScript fonts into INPUT.psfonts for LaTeX\n"
 "must use this with dvips -h INPUT.psfonts"
 msgstr ""
 
-#: lilypond-book.py:160 midi2ly.py:896 musicxml2ly.py:489 main.cc:184
-#, fuzzy
+#: lilypond-book.py:167 midi2ly.py:879 musicxml2ly.py:1829 main.cc:162
 msgid "be verbose"
 msgstr "¾ÜºÙ¤Ê¾ðÊó¤òɽ¼¨¤·¤Þ¤¹"
 
-#: lilypond-book.py:773
+#: lilypond-book.py:788
 #, python-format
 msgid "file not found: %s"
 msgstr ""
 
-#: lilypond-book.py:1004
+#: lilypond-book.py:1022
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr ""
 
-#: lilypond-book.py:1007
+#: lilypond-book.py:1025
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr ""
 
-#: lilypond-book.py:1011
+#: lilypond-book.py:1029
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr ""
 
-#: lilypond-book.py:1014
+#: lilypond-book.py:1032
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr ""
 
-#: lilypond-book.py:1033
+#: lilypond-book.py:1051
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr ""
 
-#: lilypond-book.py:1388
+#: lilypond-book.py:1422
 #, fuzzy, python-format
 msgid "Opening filter `%s'"
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
 
-#: lilypond-book.py:1405
+#: lilypond-book.py:1439
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr ""
 
-#: lilypond-book.py:1406
+#: lilypond-book.py:1440
 msgid "The error log is as follows:"
 msgstr ""
 
-#: lilypond-book.py:1476
+#: lilypond-book.py:1512
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr ""
 
-#: lilypond-book.py:1586
+#: lilypond-book.py:1623
 #, fuzzy
 msgid "Writing snippets..."
-msgstr "¹Ô ..."
+msgstr "²»À¼¤òºîÀ®Ãæ..."
 
-#: lilypond-book.py:1591
-#, fuzzy
+#: lilypond-book.py:1628
 msgid "Processing..."
 msgstr "½èÍýÃæ..."
 
-#: lilypond-book.py:1595
+#: lilypond-book.py:1632
 msgid "All snippets are up to date..."
 msgstr ""
 
-#: lilypond-book.py:1605
+#: lilypond-book.py:1642
 #, fuzzy, python-format
 msgid "cannot determine format for: %s"
 msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: lilypond-book.py:1616
+#: lilypond-book.py:1653
 #, python-format
 msgid "%s is up to date."
 msgstr ""
 
-#: lilypond-book.py:1622
+#: lilypond-book.py:1659
 #, fuzzy, python-format
 msgid "Writing `%s'..."
-msgstr "¹Ô ..."
+msgstr "°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß: `%s'..."
 
-#: lilypond-book.py:1677
+#: lilypond-book.py:1714
 msgid "Output would overwrite input file; use --output."
 msgstr ""
 
-#: lilypond-book.py:1681
+#: lilypond-book.py:1718
 #, fuzzy, python-format
 msgid "Reading %s..."
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+msgstr "²»À¼¤òºîÀ®Ãæ..."
 
-#: lilypond-book.py:1700
+#: lilypond-book.py:1737
 #, fuzzy
 msgid "Dissecting..."
-msgstr "¹Ô ..."
+msgstr "½èÍýÃæ..."
 
-#: lilypond-book.py:1716
-#, fuzzy, python-format
+#: lilypond-book.py:1753
+#, python-format
 msgid "Compiling %s..."
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+msgstr ""
 
-#: lilypond-book.py:1725
-#, fuzzy, python-format
+#: lilypond-book.py:1762
+#, python-format
 msgid "Processing include: %s"
-msgstr "½èÍýÃæ..."
+msgstr ""
 
-#: lilypond-book.py:1739
-#, fuzzy, python-format
+#: lilypond-book.py:1776
+#, python-format
 msgid "Removing `%s'"
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#: lilypond-book.py:1815
-#, fuzzy, python-format
-msgid "Writing fonts to %s..."
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+msgstr ""
 
-#: lilypond-book.py:1830
+#: lilypond-book.py:1809
 msgid "option --psfonts not used"
 msgstr ""
 
-#: lilypond-book.py:1831
+#: lilypond-book.py:1810
 msgid "processing with dvips will have no fonts"
 msgstr ""
 
-#: lilypond-book.py:1834
+#: lilypond-book.py:1813
 msgid "DVIPS usage:"
 msgstr ""
 
-#: midi2ly.py:106 lily-library.scm:624 lily-library.scm:632
+#: lilypond-book.py:1869
+#, fuzzy, python-format
+msgid "Writing fonts to %s..."
+msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..."
+
+#: midi2ly.py:87 lily-library.scm:615 lily-library.scm:624
 msgid "warning: "
 msgstr "·Ù¹ð: "
 
-#: midi2ly.py:109 midi2ly.py:924
+#: midi2ly.py:90 midi2ly.py:911
 msgid "error: "
 msgstr "¥¨¥é¡¼: "
 
-#: midi2ly.py:110
+#: midi2ly.py:91
 #, fuzzy
-msgid "Exiting ... "
+msgid "Exiting... "
 msgstr "¹Ô ..."
 
-#: midi2ly.py:857
+#: midi2ly.py:837
 #, fuzzy, python-format
 msgid "%s output to `%s'..."
 msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
 
-#: midi2ly.py:871 musicxml2ly.py:485
+#: midi2ly.py:850 musicxml2ly.py:1803
 #, python-format
 msgid "Convert %s to LilyPond input."
 msgstr ""
 
-#: midi2ly.py:875
+#: midi2ly.py:855
 msgid "print absolute pitches"
 msgstr ""
 
-#: midi2ly.py:877 midi2ly.py:889
+#: midi2ly.py:857 midi2ly.py:872
 msgid "DUR"
 msgstr "DUR"
 
-#: midi2ly.py:878
+#: midi2ly.py:858
 msgid "quantise note durations on DUR"
 msgstr ""
 
-#: midi2ly.py:881
+#: midi2ly.py:861
 msgid "print explicit durations"
 msgstr ""
 
-#: midi2ly.py:882
+#: midi2ly.py:865
 #, fuzzy
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
 msgstr "Ä´¤òÀßÄê: ACC +¥·¥ã¡¼¥×/-¥Õ¥é¥Ã¥È :1 Ã»Ä´"
 
-#: midi2ly.py:883
+#: midi2ly.py:866
 #, fuzzy
 msgid "ALT[:MINOR]"
 msgstr "ACC[:MINOR]"
 
-#: midi2ly.py:888
+#: midi2ly.py:871
 msgid "quantise note starts on DUR"
 msgstr ""
 
-#: midi2ly.py:891
+#: midi2ly.py:874
 msgid "DUR*NUM/DEN"
 msgstr ""
 
-#: midi2ly.py:894
+#: midi2ly.py:877
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr ""
 
-#: midi2ly.py:902
+#: midi2ly.py:889
 msgid "treat every text as a lyric"
 msgstr ""
 
-#: midi2ly.py:905
+#: midi2ly.py:892
 msgid "Examples"
 msgstr ""
 
-#: midi2ly.py:925
+#: midi2ly.py:912
 msgid "no files specified on command line."
 msgstr ""
 
-#: musicxml2ly.py:473
-msgid "musicxml2ly FILE.xml"
+#: musicxml2ly.py:193 musicxml2ly.py:195
+#, python-format
+msgid "Unprocessed PartGroupInfo %s encountered"
 msgstr ""
 
-#: musicxml2ly.py:476
-#, fuzzy, 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"
+#: musicxml2ly.py:426
+#, python-format
+msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
+msgstr ""
+
+#: musicxml2ly.py:609
+#, python-format
+msgid "unknown mode %s, expecting 'major' or 'minor'"
+msgstr ""
+
+#: musicxml2ly.py:647
+#, python-format
+msgid "Encountered unprocessed marker %s\n"
+msgstr ""
+
+#: musicxml2ly.py:741
+#, fuzzy, python-format
+msgid "unknown span event %s"
+msgstr "paper ÊÑ¿ô¤ÎÃͤ¬È½¤ê¤Þ¤»¤ó: `%s'"
+
+#: musicxml2ly.py:751
+#, fuzzy, python-format
+msgid "unknown span type %s for %s"
+msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'"
+
+#: musicxml2ly.py:1259
+#, python-format
+msgid "drum %s type unknown, please add to instrument_drumtype_dict"
+msgstr ""
+
+#: musicxml2ly.py:1263
+#, fuzzy
+msgid "cannot find suitable event"
+msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+
+#: musicxml2ly.py:1346
+#, python-format
+msgid "Negative skip %s"
+msgstr ""
+
+#: musicxml2ly.py:1480
+#, python-format
+msgid "Negative skip found: from %s to %s, difference is %s"
+msgstr ""
+
+#: musicxml2ly.py:1505
+#, python-format
+msgid "unexpected %s; expected %s or %s or %s"
+msgstr ""
+
+#: musicxml2ly.py:1583
+msgid "cannot have two simultaneous slurs"
+msgstr ""
+
+#: musicxml2ly.py:1711
+#, python-format
+msgid "cannot simultaneously have more than one mode: %s"
+msgstr ""
+
+#: musicxml2ly.py:1791
+msgid "Converting to LilyPond expressions..."
+msgstr ""
+
+#: musicxml2ly.py:1802
+msgid "musicxml2ly [options] FILE.xml"
+msgstr ""
+
+#: musicxml2ly.py:1812
+#, fuzzy, 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 ""
 "This is free software.  It is covered by the GNU General Public License,\n"
@@ -493,17 +910,65 @@ msgstr ""
 "¤³¤ì¤ò²þÊѤ·¤¿¤ê¡¢Ê£À½¤òÇÛÉÛ¤·¤¿¤ê¤¹¤ë»ö¤Ï´¿·Þ¤µ¤ì¤Þ¤¹¡£\n"
 "`--warranty' ¥ª¥×¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤¹¤ë¤È¡¢¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤¬ÆÀ¤é¤ì¤Þ¤¹¡£\n"
 
-#: musicxml2ly.py:495
-msgid "Use lxml.etree; uses less memory and cpu time."
+#: musicxml2ly.py:1835
+msgid "use lxml.etree; uses less memory and cpu time"
 msgstr ""
 
-#: musicxml2ly.py:503
-#, fuzzy
+#: musicxml2ly.py:1841
+msgid "input file is a zip-compressed MusicXML file"
+msgstr ""
+
+#: musicxml2ly.py:1847
+msgid "convert pitches in relative mode (default)"
+msgstr ""
+
+#: musicxml2ly.py:1852
+msgid "convert pitches in absolute mode"
+msgstr ""
+
+#: musicxml2ly.py:1855
+msgid "LANG"
+msgstr ""
+
+#: musicxml2ly.py:1857
+msgid "use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly"
+msgstr ""
+
+#: musicxml2ly.py:1863
+msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
+msgstr ""
+
+#: musicxml2ly.py:1871
 msgid "set output filename to FILE"
-msgstr "BASENAME[-x].³ÈÄ¥»Ò ¤Ø½ÐÎϤò½ñ¤­¹þ¤à"
+msgstr ""
+
+#: musicxml2ly.py:1929
+#, fuzzy, python-format
+msgid "unknown part in part-list: %s"
+msgstr "paper ÊÑ¿ô¤ÎÃͤ¬È½¤ê¤Þ¤»¤ó: `%s'"
+
+#: musicxml2ly.py:1985
+#, python-format
+msgid "Input file %s is compressed, extracting raw MusicXML data"
+msgstr ""
+
+#: musicxml2ly.py:2011
+#, python-format
+msgid "Reading MusicXML from %s ..."
+msgstr ""
+
+#: musicxml2ly.py:2039 musicxml2ly.py:2053
+#, fuzzy, python-format
+msgid "Output to `%s'"
+msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
+
+#: musicxml2ly.py:2096
+#, fuzzy, python-format
+msgid "Unable to find input file %s"
+msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
 #: getopt-long.cc:140
-#, fuzzy, c-format
+#, c-format
 msgid "option `%s' requires an argument"
 msgstr "¥ª¥×¥·¥ç¥ó `%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹"
 
@@ -522,46 +987,45 @@ msgstr "ǧ
 msgid "invalid argument `%s' to option `%s'"
 msgstr "¥ª¥×¥·¥ç¥ó `%2$s' ¤ËÂФ¹¤ë̵¸ú¤Ê°ú¿ô `%1$s'"
 
-#: warn.cc:68 grob.cc:559 input.cc:82
+#: warn.cc:68 grob.cc:566 input.cc:82
 #, fuzzy, c-format
 msgid "programming error: %s"
 msgstr "¥×¥í¥°¥é¥à¾å¤Î¥¨¥é¡¼: "
 
 #: warn.cc:69 input.cc:83
+#, fuzzy
 msgid "continuing, cross fingers"
-msgstr ""
+msgstr " (³¤±¤Þ¤¹ -- cross thumbs)"
 
-#: accidental-engraver.cc:240
+#: accidental-engraver.cc:250
 #, c-format
 msgid "accidental typesetting list must begin with context-name: %s"
 msgstr ""
 
-#: accidental-engraver.cc:268
-#, fuzzy, c-format
-msgid "ignoring unknown accidental: %s"
-msgstr "¥·¥ã¡¼¥×¤¬Â¿¤¹¤®¤Þ¤¹ (%s)"
+#: accidental-engraver.cc:277
+#, c-format
+msgid "ignoring unknown accidental rule: %s"
+msgstr ""
 
-#: accidental-engraver.cc:284
+#: accidental-engraver.cc:293
 #, c-format
 msgid "pair or context-name expected for accidental rule, found %s"
 msgstr ""
 
-#: accidental.cc:243 key-signature-interface.cc:133
+#: accidental.cc:187
 #, c-format
-msgid "accidental `%s' not found"
+msgid "Could not find glyph-name for alteration %s"
 msgstr ""
 
-#: align-interface.cc:222
-msgid ""
-"vertical alignment called before line-breaking.\n"
-"Only do cross-staff spanners with PianoStaff."
+#: accidental.cc:202
+msgid "natural alteration glyph not found"
 msgstr ""
 
-#: align-interface.cc:329
+#: align-interface.cc:325
 msgid "tried to get a translation for something that is no child of mine"
 msgstr ""
 
-#: all-font-metrics.cc:173
+#: all-font-metrics.cc:143
 #, fuzzy, c-format
 msgid "cannot find font: `%s'"
 msgstr "¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
@@ -571,9 +1035,9 @@ msgid "\\applycontext argument is not a procedure"
 msgstr ""
 
 #: auto-change-iterator.cc:63 change-iterator.cc:61
-#, fuzzy, c-format
+#, c-format
 msgid "cannot change, already in translator: %s"
-msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+msgstr ""
 
 #: axis-group-engraver.cc:78
 msgid "Axis_group_engraver: vertical group already has a parent"
@@ -587,66 +1051,53 @@ msgstr ""
 msgid "removing this vertical group"
 msgstr ""
 
-#: axis-group-interface.cc:96
-msgid "tried to calculate pure-height at a non-breakpoint"
-msgstr ""
-
-#: axis-group-interface.cc:370
+#: axis-group-interface.cc:524
 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 ""
-
 #: bar-check-iterator.cc:73
 #, c-format
 msgid "barcheck failed at: %s"
 msgstr "¾®Àá¥Á¥§¥Ã¥¯¤¬¼ºÇÔ: %s"
 
-#: beam-engraver.cc:128
-#, fuzzy
+#: beam-engraver.cc:126
 msgid "already have a beam"
 msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
 
-#: beam-engraver.cc:196
-#, fuzzy
+#: beam-engraver.cc:202
 msgid "unterminated beam"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
+msgstr "½ªÃ¼¤Î¤Ê¤¤³Ã"
 
-#: beam-engraver.cc:238 chord-tremolo-engraver.cc:134
-#, fuzzy
+#: beam-engraver.cc:244 chord-tremolo-engraver.cc:138
 msgid "stem must have Rhythmic structure"
 msgstr "ÉäÈø¤Ï¥ê¥º¥à¹½Â¤¤ò»ý¤¿¤Í¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#: beam-engraver.cc:246
+#: beam-engraver.cc:252
 #, fuzzy
 msgid "stem does not fit in beam"
 msgstr "ÉäÈø¤¬³Ã¤ÎÃæ¤Ë¤ª¤µ¤Þ¤ê¤Þ¤»¤ó"
 
-#: beam-engraver.cc:247
-#, fuzzy
+#: beam-engraver.cc:253
 msgid "beam was started here"
 msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿"
 
 #: beam-quanting.cc:307
+#, fuzzy
 msgid "no feasible beam position"
-msgstr ""
+msgstr "ÉÔŬÀڤʲþ¹Ô¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿"
 
-#: beam.cc:144
-#, fuzzy
+#: beam.cc:160
 msgid "removing beam with no stems"
-msgstr "³Ã¤¬Æó¤Ä̤Ëþ¤ÎÉäÈø¤È¤È¤â¤Ë»È¤ï¤ì¤Þ¤·¤¿"
+msgstr ""
 
-#: beam.cc:1007
+#: beam.cc:1069
 msgid "no viable initial configuration found: may not find good beam slope"
 msgstr ""
 
-#: break-alignment-interface.cc:208
-#, fuzzy, c-format
+#: break-alignment-interface.cc:195
+#, c-format
 msgid "No spacing entry from %s to `%s'"
-msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
+msgstr ""
 
 #: change-iterator.cc:23
 #, fuzzy, c-format
@@ -665,9 +1116,9 @@ msgstr "`%s' 
 #. last->translator_id_string () = get_change
 #. ()->change_to_id_string ();
 #: change-iterator.cc:91
-#, fuzzy, c-format
+#, c-format
 msgid "not changing to same context type: %s"
-msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
+msgstr ""
 
 #. FIXME: uncomprehensable message
 #: change-iterator.cc:95
@@ -680,11 +1131,10 @@ msgid "No tremolo to end"
 msgstr "ËöÈø¤Ø¤Î¥È¥ì¥â¥íµ­¹æ¤¬¤¢¤ê¤Þ¤»¤ó"
 
 #: chord-tremolo-engraver.cc:110
-#, fuzzy
 msgid "unterminated chord tremolo"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
+msgstr "½ªÃ¼¤Î¤Ê¤¤¥³¡¼¥É¥È¥ì¥â¥í"
 
-#: chord-tremolo-iterator.cc:33
+#: chord-tremolo-iterator.cc:35
 #, c-format
 msgid "expect 2 elements for chord tremolo, found %d"
 msgstr ""
@@ -699,7 +1149,7 @@ msgstr ""
 msgid "unknown cluster style `%s'"
 msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)"
 
-#: cluster.cc:135
+#: cluster.cc:147
 msgid "junking empty cluster"
 msgstr ""
 
@@ -709,7 +1159,7 @@ msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr ""
 
 #. 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
 #, fuzzy
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "¤½¤Î²ò·è¤ÏÀ©¸Â¤òËþ¤¿¤·¤Þ¤»¤ó"
@@ -719,26 +1169,26 @@ msgstr "
 msgid "program has no such type: `%s'"
 msgstr "¥×¥í¥°¥é¥à¤Ë¤Ï¤½¤ÎÍͤʥ¿¥¤¥×¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: context-property.cc:76
+#: context-property.cc:30
 msgid "need symbol arguments for \\override and \\revert"
 msgstr ""
 
-#: context.cc:151
+#: context.cc:144
 #, fuzzy, c-format
 msgid "cannot find or create new `%s'"
 msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
 
-#: context.cc:213
+#: context.cc:206
 #, fuzzy, c-format
 msgid "cannot find or create `%s' called `%s'"
 msgstr "`%2$s' ¤Ë¸Æ¤Ð¤ì¤¿ `%1$s' ¤¬¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó"
 
-#: context.cc:276
+#: context.cc:268
 #, c-format
 msgid "Invalid CreateContext event: Cannot create %s context"
 msgstr ""
 
-#: context.cc:388
+#: context.cc:380
 #, fuzzy, c-format
 msgid "cannot find or create: `%s'"
 msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
@@ -753,41 +1203,38 @@ msgid "Event class should be a symbol"
 msgstr ""
 
 #: dispatcher.cc:78
-#, fuzzy, c-format
+#, c-format
 msgid "Unknown event class %s"
-msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)"
+msgstr ""
 
-#: dots.cc:38
+#: dots.cc:37
 #, c-format
 msgid "dot `%s' not found"
 msgstr ""
 
-#: dynamic-engraver.cc:186 span-dynamic-performer.cc:87
+#: dynamic-engraver.cc:192
 #, fuzzy
 msgid "cannot find start of (de)crescendo"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+msgstr "(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: dynamic-engraver.cc:195
-#, fuzzy
+#: dynamic-engraver.cc:201
 msgid "already have a decrescendo"
-msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
+msgstr "¥Ç¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬´û¤Ë¤¢¤ê¤Þ¤¹"
 
-#: dynamic-engraver.cc:197
-#, fuzzy
+#: dynamic-engraver.cc:203
 msgid "already have a crescendo"
-msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
+msgstr "¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬´û¤Ë¤¢¤ê¤Þ¤¹"
 
-#: dynamic-engraver.cc:200
+#: dynamic-engraver.cc:206
 #, fuzzy
 msgid "cresc starts here"
 msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿"
 
-#: dynamic-engraver.cc:323
-#, fuzzy
+#: dynamic-engraver.cc:335
 msgid "unterminated (de)crescendo"
-msgstr "½ªÎ»¤·¤Æ¤¤¤Ê¤¤¥¯¥ì¥Ã¥·¥§¥ó¥É"
+msgstr "½ªÃ¼¤Î¤Ê¤¤(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É"
 
-#: extender-engraver.cc:131 extender-engraver.cc:140
+#: extender-engraver.cc:142 extender-engraver.cc:151
 msgid "unterminated extender"
 msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À"
 
@@ -800,40 +1247,44 @@ msgstr ""
 msgid "Rebuilding FontConfig cache %s, this may take a while..."
 msgstr ""
 
-#: font-config.cc:55
-#, fuzzy, c-format
+#: font-config.cc:57
+#, c-format
 msgid "failed adding font directory: %s"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+msgstr ""
 
-#: font-config.cc:57
-#, fuzzy, c-format
+#: font-config.cc:59
+#, c-format
 msgid "adding font directory: %s"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+msgstr ""
 
-#: general-scheme.cc:160
+#: general-scheme.cc:201
 msgid "infinity or NaN encountered while converting Real number"
 msgstr ""
 
-#: general-scheme.cc:161
+#: general-scheme.cc:202
 msgid "setting to zero"
 msgstr ""
 
-#: glissando-engraver.cc:92
+#: general-scheme.cc:421 output-ps.scm:61
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr ""
+
+#: glissando-engraver.cc:94
 #, fuzzy
 msgid "unterminated glissando"
-msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼"
+msgstr "½ªÃ¼¤Î¤Ê¤¤³Ã"
 
-#: global-context-scheme.cc:91 global-context-scheme.cc:107
+#: global-context-scheme.cc:85 global-context-scheme.cc:103
 #, fuzzy
 msgid "no music found in score"
 msgstr "³ÚÉè¤Ë¤Ï³Ú¶Ê¤¬É¬ÍפǤ¹"
 
-#: global-context-scheme.cc:97
+#: global-context-scheme.cc:93
 #, fuzzy
 msgid "Interpreting music... "
 msgstr "³Ú¶Ê¤Î²ò¼áÃæ..."
 
-#: global-context-scheme.cc:120
+#: global-context-scheme.cc:116
 #, c-format
 msgid "elapsed time: %.2f seconds"
 msgstr "·Ð²á»þ´Ö: %.2f ÉÃ"
@@ -850,9 +1301,8 @@ msgstr ""
 
 #. ligature may not start with 2nd head of pes or flexa
 #: gregorian-ligature-engraver.cc:212
-#, fuzzy
 msgid "cannot apply `\\~' on first head of ligature"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+msgstr ""
 
 #. (pitch == prev_pitch)
 #: gregorian-ligature-engraver.cc:224
@@ -862,20 +1312,31 @@ msgstr ""
 #: grob-interface.cc:57
 #, fuzzy, c-format
 msgid "Unknown interface `%s'"
-msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)"
+msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
 
 #: grob-interface.cc:68
 #, c-format
 msgid "Grob `%s' has no interface for property `%s'"
 msgstr ""
 
-#: grob.cc:253
+#: grob-property.cc:34
+#, c-format
+msgid "%d: %s"
+msgstr ""
+
+#: grob-property.cc:173
+#, c-format
+msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
+msgstr ""
+
+#: grob.cc:251
 msgid "Infinity or NaN encountered"
 msgstr ""
 
-#: hairpin.cc:183
+#: hairpin.cc:187
+#, fuzzy
 msgid "decrescendo too small"
-msgstr ""
+msgstr "¥¯¥ì¥Ã¥·¥§¥ó¥É"
 
 #: horizontal-bracket-engraver.cc:59
 #, fuzzy
@@ -897,16 +1358,12 @@ msgstr "
 msgid "unterminated hyphen; removing"
 msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
 
-#: includable-lexer.cc:53
-msgid "include files are not allowed in safe mode"
-msgstr ""
-
-#: 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
 #, fuzzy, c-format
 msgid "cannot find file: `%s'"
 msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: 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 "(¸¡º÷¥Ñ¥¹: `%s')"
@@ -915,20 +1372,29 @@ msgstr "(
 msgid "position unknown"
 msgstr "°ÌÃÖ¤¬È½¤ê¤Þ¤»¤ó"
 
-#: ligature-engraver.cc:93
-#, fuzzy
-msgid "cannot find start of ligature"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+#: key-signature-interface.cc:74
+#, c-format
+msgid "No glyph found for alteration: %s"
+msgstr ""
 
-#: ligature-engraver.cc:98
-msgid "no right bound"
+#: key-signature-interface.cc:84
+msgid "alteration not found"
 msgstr ""
 
-#: ligature-engraver.cc:120
+#: ligature-bracket-engraver.cc:62 ligature-engraver.cc:93
+#, fuzzy
+msgid "cannot find start of ligature"
+msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+
+#: ligature-bracket-engraver.cc:75 ligature-engraver.cc:120
 #, fuzzy
 msgid "already have a ligature"
 msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
 
+#: ligature-engraver.cc:98
+msgid "no right bound"
+msgstr ""
+
 #: ligature-engraver.cc:129
 msgid "no left bound"
 msgstr ""
@@ -947,55 +1413,59 @@ msgstr ""
 msgid "ligature was started here"
 msgstr "³Ã¤Ï¤³¤³¤«¤é³«»Ï¤µ¤ì¤Þ¤·¤¿"
 
-#: lily-guile.cc:92
+#: lily-guile.cc:78
 #, c-format
 msgid "(load path: `%s')"
 msgstr "(Æɹþ¥Ñ¥¹: `%s')"
 
-#: lily-guile.cc:518
+#: lily-guile.cc:438
 #, c-format
 msgid "cannot find property type-check for `%s' (%s)."
 msgstr ""
 
-#: lily-guile.cc:521
+#: lily-guile.cc:441
 msgid "perhaps a typing error?"
 msgstr ""
 
-#: lily-guile.cc:527
+#: lily-guile.cc:448
 msgid "doing assignment anyway"
 msgstr ""
 
-#: lily-guile.cc:539
+#: lily-guile.cc:460
 #, c-format
 msgid "type check for `%s' failed; value `%s' must be of type `%s'"
 msgstr ""
 
-#: lily-lexer.cc:254
+#: lily-lexer.cc:251
+msgid "include files are not allowed in safe mode"
+msgstr ""
+
+#: lily-lexer.cc:270
 #, fuzzy, c-format
 msgid "identifier name is a keyword: `%s'"
 msgstr "¼±ÊÌ»Ò̾¤Ï¥­¡¼¥ï¡¼¥É¤Ç¤¹: `%s'"
 
-#: lily-lexer.cc:269
+#: lily-lexer.cc:285
 #, c-format
 msgid "error at EOF: %s"
 msgstr "EOF ¤Î¤È¤³¤í¤Ç¥¨¥é¡¼: %s"
 
-#: lily-parser-scheme.cc:29
+#: lily-parser-scheme.cc:30
 #, fuzzy, c-format
 msgid "deprecated function called: %s"
 msgstr "¸Æ¤Ó½Ð¤µ¤ì¤¿Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: lily-parser-scheme.cc:88
-#, fuzzy, c-format
+#: lily-parser-scheme.cc:89
+#, c-format
 msgid "Changing working directory to: `%s'"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+msgstr ""
 
-#: lily-parser-scheme.cc:106
+#: lily-parser-scheme.cc:107
 #, fuzzy, c-format
 msgid "cannot find init file: `%s'"
 msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: lily-parser-scheme.cc:125
+#: lily-parser-scheme.cc:126
 #, fuzzy, c-format
 msgid "Processing `%s'"
 msgstr "½èÍýÃæ..."
@@ -1009,12 +1479,16 @@ msgstr "
 msgid "braces do not match"
 msgstr "¥Ö¥ì¡¼¥¹¤¬°ìÃפ·¤Þ¤»¤ó"
 
-#: lyric-combine-music-iterator.cc:291
+#: lyric-combine-music-iterator.cc:327
 #, fuzzy, c-format
 msgid "cannot find Voice `%s'"
 msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: main.cc:116
+#: lyric-engraver.cc:158
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr ""
+
+#: main.cc:100
 #, fuzzy, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -1031,7 +1505,7 @@ msgstr ""
 "¤³¤ì¤ò²þÊѤ·¤¿¤ê¡¢Ê£À½¤òÇÛÉÛ¤·¤¿¤ê¤¹¤ë»ö¤Ï´¿·Þ¤µ¤ì¤Þ¤¹¡£\n"
 "`--warranty' ¥ª¥×¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤¹¤ë¤È¡¢¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤¬ÆÀ¤é¤ì¤Þ¤¹¡£\n"
 
-#: main.cc:122
+#: main.cc:106
 #, fuzzy
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
@@ -1063,148 +1537,106 @@ msgstr ""
 "USA.\n"
 "\n"
 "-- »²¹ÍÌõ\n"
-" ¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¤¢¤Ê¤¿¤Ï Free Software "
-"Foundation\n"
-"¤¬¸øɽ¤·¤¿ GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¾ò¹à¤Ë´ð¤Å¤¤¤Æ¡¢¤³¤Î¥×¥í¥°"
-"¥é\n"
+" ¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¤¢¤Ê¤¿¤Ï Free Software Foundation\n"
+"¤¬¸øɽ¤·¤¿ GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¾ò¹à¤Ë´ð¤Å¤¤¤Æ¡¢¤³¤Î¥×¥í¥°¥é\n"
 "¥à¤òºÆÈÒÉÛ¤Þ¤¿¤ÏÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£\n"
 "\n"
-"¤³¤Î¥×¥í¥°¥é¥à¤ÏÍ­ÍѤȤϻפ¤¤Þ¤¹¤¬¡¢ÈÒÉÛ¤ËÅö¤¿¤Ã¤Æ¤Ï¡¢»Ô¾ìÀ­µÚ¤ÓÆÃÄêÌÜŪŬ"
-"¹ç\n"
-"À­¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤâ´Þ¤á¤Æ¡¢¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ"
-"¤Ï¡¢\n"
+"¤³¤Î¥×¥í¥°¥é¥à¤ÏÍ­ÍѤȤϻפ¤¤Þ¤¹¤¬¡¢ÈÒÉÛ¤ËÅö¤¿¤Ã¤Æ¤Ï¡¢»Ô¾ìÀ­µÚ¤ÓÆÃÄêÌÜŪŬ¹ç\n"
+"À­¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤâ´Þ¤á¤Æ¡¢¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢\n"
 "GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤ò¤ªÆɤ߲¼¤µ¤¤¡£\n"
 "\n"
 "¤¢¤Ê¤¿¤Ï¡¢¤³¤Î¥×¥í¥°¥é¥à¤È°ì½ï¤Ë GNU °ìÈ̸øÍ­»ÈÍѵöÂú½ñ¤ò¼õ¤±¼è¤Ã¤Æ¤¤¤ë¤Ï¤º\n"
 "¤Ç¤¹(COPYING ¥Õ¥¡¥¤¥ë¤ò»²¾È)¡£¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢Free Software Foundation,\n"
 "Inc., 675 Mass Ave, Cambridge, MA 02139, USA ¤Ë¼ê»æ¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£\n"
 
-#: main.cc:153
-msgid "BACK"
-msgstr ""
-
-#: main.cc:153
-msgid ""
-"use backend BACK (eps, gnome, ps [default],\n"
-"scm, svg, tex, texstr)"
-msgstr ""
-
-#: main.cc:155
+#: main.cc:137
 msgid "SYM[=VAL]"
 msgstr ""
 
-#: main.cc:156
+#: 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 ""
 
-#: main.cc:159
+#: main.cc:141
 msgid "EXPR"
 msgstr ""
 
-#: main.cc:159
+#: main.cc:141
 #, fuzzy
 msgid "evaluate scheme code"
 msgstr "°ÂÁ´¥â¡¼¥É¤Ç¤Ï Scheme ¤Îɾ²Á¤ò¤Ç¤­¤Þ¤»¤ó"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:162
+#: main.cc:144
 msgid "FORMATs"
 msgstr ""
 
-#: main.cc:162
+#: main.cc:144
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr ""
 
-#: main.cc:163
-#, fuzzy
+#: main.cc:145
 msgid "generate DVI (tex backend only)"
-msgstr "À©¸Â¤ò´ËÏÂ"
+msgstr ""
 
-#: main.cc:164
-#, fuzzy
+#: main.cc:146
 msgid "generate PDF (default)"
-msgstr "À©¸Â¤ò´ËÏÂ"
+msgstr ""
 
-#: main.cc:165
-#, fuzzy
+#: main.cc:147
 msgid "generate PNG"
-msgstr "À©¸Â¤ò´ËÏÂ"
+msgstr ""
 
-#: main.cc:166
+#: main.cc:148
 #, fuzzy
 msgid "generate PostScript"
 msgstr "À©¸Â¤ò´ËÏÂ"
 
-#: main.cc:167
+#: main.cc:149
 msgid "generate TeX (tex backend only)"
 msgstr ""
 
-#: main.cc:168
-msgid "show this help and exit"
-msgstr ""
-
-#: main.cc:169
+#: main.cc:151
 #, fuzzy
 msgid "FIELD"
 msgstr "FILE"
 
-#: main.cc:169
+#: main.cc:151
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
 msgstr ""
 
-#: main.cc:171
+#: main.cc:153
 msgid "add DIR to search path"
 msgstr "DIR ¤ò¸¡º÷¥Ñ¥¹¤ËÄɲÃ"
 
-#: main.cc:172
+#: main.cc:154
 msgid "use FILE as init file"
 msgstr "FILE ¤ò½é´ü²½¥Õ¥¡¥¤¥ë¤È¤·¤Æ»ÈÍÑ"
 
-#: main.cc:174
-msgid "USER,GROUP,JAIL,DIR"
+#: main.cc:156
+msgid "USER, GROUP, JAIL, DIR"
 msgstr ""
 
-#: main.cc:174
+#: main.cc:156
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
 msgstr ""
 
-#: main.cc:177
-#, fuzzy
-msgid "do not generate printed output"
-msgstr "À©¸Â¤ò´ËÏÂ"
-
-#: main.cc:178
-#, fuzzy
+#: main.cc:159
 msgid "write output to FILE (suffix will be added)"
-msgstr "BASENAME[-x].³ÈÄ¥»Ò ¤Ø½ÐÎϤò½ñ¤­¹þ¤à"
-
-#: main.cc:179
-msgid "generate a preview of the first system"
 msgstr ""
 
-#: main.cc:180
+#: main.cc:160
 msgid "relocate using directory of lilypond program"
 msgstr ""
 
-#: main.cc:181
-msgid ""
-"disallow unsafe Scheme and PostScript\n"
-"operations"
-msgstr ""
-
-#: main.cc:183
-#, fuzzy
-msgid "show version number and exit"
-msgstr "¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨"
-
-#: main.cc:224
+#: main.cc:203
 #, fuzzy, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -1212,97 +1644,92 @@ msgid ""
 msgstr "Copyright (c) %s by"
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:251
+#: main.cc:230
 #, fuzzy, c-format
 msgid "Usage: %s [OPTION]... FILE..."
 msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]..."
 
-#: main.cc:253
+#: main.cc:232
 #, fuzzy, c-format
 msgid "Typeset music and/or produce MIDI from FILE."
-msgstr "¥Õ¥¡¥¤¥ë¤Î³Ú¶Ê¤òÁÈÈǤ·¤¿¤ê¡¢MIDI ±éÁÕ¤·¤¿¤ê¤¹¤ë."
+msgstr "¥Õ¥¡¥¤¥ë¤Î³Ú¶Ê¤òÁÈÈǤ·¤¿¤ê¡¢MIDI ±éÁÕ¤·¤¿¤ê¤¹¤ë"
 
-#: main.cc:255
+#: main.cc:234
 #, c-format
 msgid "LilyPond produces beautiful music notation."
 msgstr ""
 
-#: main.cc:257
+#: main.cc:236
 #, c-format
 msgid "For more information, see %s"
 msgstr ""
 
-#: main.cc:259
+#: main.cc:238
 #, c-format
 msgid "Options:"
 msgstr "¥ª¥×¥·¥ç¥ó:"
 
-#: main.cc:263
+#: main.cc:242
 #, fuzzy, c-format
 msgid "Report bugs via %s"
-msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø."
+msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø"
 
-#: main.cc:309
+#: main.cc:288
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr ""
 
-#: main.cc:323
+#: main.cc:302
 #, fuzzy, c-format
 msgid "no such user: %s"
 msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
 
-#: main.cc:325
+#: main.cc:304
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
 msgstr ""
 
-#: main.cc:340
+#: main.cc:319
 #, fuzzy, c-format
 msgid "no such group: %s"
 msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
 
-#: main.cc:342
-#, fuzzy, c-format
+#: main.cc:321
+#, c-format
 msgid "cannot get group id from group name: %s: %s"
-msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+msgstr ""
 
-#: main.cc:350
-#, fuzzy, c-format
+#: main.cc:329
+#, c-format
 msgid "cannot chroot to: %s: %s"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+msgstr ""
 
-#: main.cc:357
+#: main.cc:336
 #, fuzzy, c-format
 msgid "cannot change group id to: %d: %s"
 msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
 
-#: main.cc:363
+#: main.cc:342
 #, fuzzy, c-format
 msgid "cannot change user id to: %d: %s"
 msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
 
-#: main.cc:369
-#, fuzzy, c-format
-msgid "cannot change working directory to: %s: %s"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
-
-#: main.cc:415
+#: main.cc:348
 #, c-format
-msgid "Evaluating %s"
+msgid "cannot change working directory to: %s: %s"
 msgstr ""
 
-#: main.cc:645
+#: main.cc:594
 #, c-format
 msgid "exception caught: %s"
 msgstr ""
 
 #. FIXME: constant error message.
-#: mark-engraver.cc:154
+#: mark-engraver.cc:129
 msgid "rehearsalMark must have integer value"
 msgstr ""
 
-#: mark-engraver.cc:160
+#: mark-engraver.cc:135
 msgid "mark label must be a markup object"
 msgstr ""
 
@@ -1356,16 +1783,11 @@ msgstr ""
 msgid "Mensural_ligature: (join_right == 0)"
 msgstr ""
 
-#: midi-item.cc:152
+#: midi-item.cc:81
 #, fuzzy, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
 
-#: midi-item.cc:285
-#, c-format
-msgid "experimental: temporarily fine tuning (of %d cents) a channel."
-msgstr ""
-
 #: midi-stream.cc:28
 #, fuzzy, c-format
 msgid "cannot open for write: %s: %s"
@@ -1376,16 +1798,20 @@ msgstr "
 msgid "cannot write to file: `%s'"
 msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
 
+#: minimal-page-breaking.cc:42
+msgid "Computing page breaks..."
+msgstr ""
+
 #: music-iterator.cc:171
 msgid "Sending non-event to context"
 msgstr ""
 
-#: music.cc:141
+#: music.cc:140
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
 msgstr ""
 
-#: music.cc:207
+#: music.cc:203
 #, fuzzy, c-format
 msgid "transposition by %s makes alteration larger than double"
 msgstr "%s ¤ÎÊÑÄ´¤Ë¤è¤Ã¤Æ¡¢Æó¤Ä¤òĶ¤¨¤ëÇÉÀ¸²»¤¬ºî¤é¤ì¤Þ¤·¤¿"
@@ -1402,7 +1828,7 @@ msgstr ""
 msgid "placing below"
 msgstr ""
 
-#: note-collision.cc:457
+#: note-collision.cc:463
 #, fuzzy
 msgid "ignoring too many clashing note columns"
 msgstr "Äà¤ê¹ç¤ï¤Ê¤¤²»É䤬¿¤¹¤®¤Þ¤¹¡£¤½¤ì¤é¤ò̵»ë¤·¤Þ¤¹¡£"
@@ -1416,71 +1842,133 @@ msgstr ""
 msgid "none of note heads `%s' or `%s' found"
 msgstr ""
 
-#: note-heads-engraver.cc:61
+#: note-heads-engraver.cc:64
 msgid "NoteEvent without pitch"
 msgstr ""
 
 #: open-type-font.cc:33
-#, fuzzy, c-format
+#, c-format
 msgid "cannot allocate %lu bytes"
-msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
+msgstr ""
 
 #: open-type-font.cc:37
 #, fuzzy, c-format
 msgid "cannot load font table: %s"
 msgstr "¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: open-type-font.cc:98
+#: open-type-font.cc:42
 #, c-format
-msgid "unsupported font format: %s"
+msgid "Free type error: %s"
 msgstr ""
 
 #: open-type-font.cc:100
 #, c-format
-msgid "unknown error: %d reading font file: %s"
+msgid "unsupported font format: %s"
 msgstr ""
 
-#: open-type-font.cc:173 open-type-font.cc:297
+#: open-type-font.cc:102
 #, c-format
-msgid "FT_Get_Glyph_Name() returned error: %u"
+msgid "error reading font file %s: %s"
 msgstr ""
 
-#: 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."
+#: open-type-font.cc:177
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
 msgstr ""
 
-#: page-turn-page-breaking.cc:218
+#: open-type-font.cc:302 pango-font.cc:167
 #, c-format
-msgid "Calculating page and line breaks (%d possible page breaks)..."
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr ""
+
+#. find out the ideal number of pages
+#: optimal-page-breaking.cc:56
+msgid "Finding the ideal number of pages..."
+msgstr ""
+
+#: optimal-page-breaking.cc:71
+msgid "Fitting music on 1 page..."
+msgstr ""
+
+#: optimal-page-breaking.cc:73
+#, c-format
+msgid "Fitting music on %d pages..."
+msgstr ""
+
+#: optimal-page-breaking.cc:75
+#, c-format
+msgid "Fitting music on %d or %d pages..."
 msgstr ""
 
-#: page-turn-page-breaking.cc:236 paper-score.cc:154
+#: optimal-page-breaking.cc:152 page-turn-page-breaking.cc:226
+#: paper-score.cc:146
 #, fuzzy
 msgid "Drawing systems..."
 msgstr "²»À¼¤òºîÀ®Ãæ..."
 
-#: pango-font.cc:181
+#: page-turn-page-breaking.cc:146
 #, c-format
-msgid ""
-"Glyph has no name, but font supports glyph naming.\n"
-"Skipping glyph U+%0X, file %s"
+msgid "page-turn-page-breaking: breaking from %d to %d"
 msgstr ""
 
-#: pango-font.cc:224
-#, fuzzy, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
+#: 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 ""
 
-#: pango-font.cc:272
-msgid "FreeType face has no PostScript font name"
+#: page-turn-page-breaking.cc:208
+#, c-format
+msgid "Calculating page and line breaks (%d possible page breaks)..."
 msgstr ""
 
-#: paper-outputter-scheme.cc:33
-#, fuzzy, c-format
-msgid "Layout output to `%s'..."
-msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
+#: page-turn-page-breaking.cc:275
+#, c-format
+msgid "break starting at page %d"
+msgstr ""
+
+#: page-turn-page-breaking.cc:276
+#, c-format
+msgid "\tdemerits: %f"
+msgstr ""
+
+#: page-turn-page-breaking.cc:277
+#, fuzzy, c-format
+msgid "\tsystem count: %d"
+msgstr "Í×ÁÇ¿ô %d."
+
+#: page-turn-page-breaking.cc:278
+#, fuzzy, c-format
+msgid "\tpage count: %d"
+msgstr "Í×ÁÇ¿ô %d."
+
+#: page-turn-page-breaking.cc:279
+#, c-format
+msgid "\tprevious break: %d"
+msgstr ""
+
+#: pango-font.cc:184
+#, c-format
+msgid ""
+"Glyph has no name, but font supports glyph naming.\n"
+"Skipping glyph U+%0X, file %s"
+msgstr ""
+
+#: pango-font.cc:229
+#, c-format
+msgid "no PostScript font name for font `%s'"
+msgstr ""
+
+#: pango-font.cc:277
+msgid "FreeType face has no PostScript font name"
+msgstr ""
+
+#: paper-column-engraver.cc:221
+msgid "forced break was overridden by some other event, should you be using bar checks?"
+msgstr ""
+
+#: paper-outputter-scheme.cc:30
+#, fuzzy, c-format
+msgid "Layout output to `%s'..."
+msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..."
 
 #: paper-score.cc:105
 #, fuzzy
@@ -1488,64 +1976,64 @@ msgid "Calculating line breaks..."
 msgstr "¥«¥é¥à°ÌÃÖ¤ò·×»»Ãæ..."
 
 #: paper-score.cc:118
-#, c-format
+#, fuzzy, c-format
 msgid "Element count %d (spanners %d) "
-msgstr ""
+msgstr "Í×ÁÇ¿ô %d "
 
 #: paper-score.cc:122
 #, fuzzy
 msgid "Preprocessing graphical objects..."
 msgstr "Í×ÁǤòÁ°½èÍýÃæ..."
 
-#: parse-scm.cc:83
+#: parse-scm.cc:87
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr ""
 
 #: percent-repeat-engraver.cc:200
 #, fuzzy
 msgid "unterminated percent repeat"
-msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
+msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À"
 
-#: performance.cc:45
+#: performance.cc:43
 #, fuzzy
 msgid "Track..."
 msgstr "¥È¥é¥Ã¥¯ ..."
 
-#: performance.cc:74
+#: performance.cc:72
 msgid "MIDI channel wrapped around"
 msgstr ""
 
-#: performance.cc:75
+#: performance.cc:73
 msgid "remapping modulo 16"
 msgstr ""
 
-#: performance.cc:103
-#, c-format
+#: performance.cc:101
+#, fuzzy, c-format
 msgid "MIDI output to `%s'..."
 msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
 
-#: phrasing-slur-engraver.cc:146
+#: phrasing-slur-engraver.cc:139
 #, fuzzy
 msgid "unterminated phrasing slur"
 msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼"
 
 #: piano-pedal-engraver.cc:286
-#, c-format
+#, fuzzy, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
-msgstr ""
+msgstr "¥Ô¥¢¥Î¥Ú¥À¥ë¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
 #: piano-pedal-engraver.cc:301 piano-pedal-engraver.cc:312
 #: piano-pedal-performer.cc:93
 #, fuzzy, c-format
 msgid "cannot find start of piano pedal: `%s'"
-msgstr "¸Æ¤Ó½Ð¤µ¤ì¤¿Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
+msgstr "¥Ô¥¢¥Î¥Ú¥À¥ë¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
 #: piano-pedal-engraver.cc:347
 #, fuzzy, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
-msgstr "¸Æ¤Ó½Ð¤µ¤ì¤¿Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
+msgstr "¥Ô¥¢¥Î¥Ú¥À¥ë¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: program-option.cc:205
+#: program-option-scheme.cc:215
 #, fuzzy, c-format
 msgid "no such internal option: %s"
 msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
@@ -1562,69 +2050,78 @@ msgstr ""
 #: relocate.cc:44
 #, fuzzy, c-format
 msgid "Setting %s to %s"
-msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø"
 
-#: relocate.cc:59
-#, fuzzy, c-format
+#: relocate.cc:64
+#, c-format
 msgid "no such file: %s for %s"
-msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
+msgstr ""
 
-#: relocate.cc:69 relocate.cc:87
+#: relocate.cc:74 relocate.cc:92
 #, fuzzy, c-format
 msgid "no such directory: %s for %s"
 msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
 
-#: relocate.cc:79
+#: relocate.cc:84
 #, c-format
 msgid "%s=%s (prepend)\n"
 msgstr ""
 
-#: relocate.cc:99
+#: relocate.cc:114
 #, c-format
-msgid "Relocation: compile prefix=%s, new prefix=%s"
+msgid "not relocating, no %s/ or current/ found under %s"
 msgstr ""
 
-#: relocate.cc:129
+#: relocate.cc:125
+#, c-format
+msgid "Relocation: compile datadir=%s, new datadir=%s"
+msgstr ""
+
+#: relocate.cc:138
 #, c-format
 msgid "Relocation: framework_prefix=%s"
 msgstr ""
 
-#: relocate.cc:169
+#: relocate.cc:179
 #, c-format
 msgid "Relocation: is absolute: argv0=%s"
 msgstr ""
 
-#: relocate.cc:176
+#: relocate.cc:186
 #, c-format
 msgid "Relocation: from cwd: argv0=%s"
 msgstr ""
 
-#: relocate.cc:185
+#: relocate.cc:195
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
 "argv0=%s"
 msgstr ""
 
-#: relocate.cc:354
+#: relocate.cc:229
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr ""
+
+#: relocate.cc:356
 #, fuzzy, c-format
 msgid "Relocation file: %s"
 msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
 
-#: relocate.cc:390
+#: relocate.cc:392
 #, c-format
 msgid "Unknown relocation command %s"
 msgstr ""
 
-#: rest-collision.cc:151
+#: rest-collision.cc:145
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr ""
 
-#: rest-collision.cc:165 rest-collision.cc:210
+#: rest-collision.cc:159 rest-collision.cc:204
 msgid "too many colliding rests"
 msgstr "µÙÉä¤Î¾×Æͤ¬Â¿¤¹¤®¤Þ¤¹"
 
-#: rest.cc:144
+#: rest.cc:132
 #, c-format
 msgid "rest `%s' not found"
 msgstr ""
@@ -1647,16 +2144,16 @@ msgstr "(
 msgid "Aborting"
 msgstr "½ªÎ»¤·¤Þ¤¹"
 
-#: score.cc:225
+#: score.cc:167
 #, fuzzy
 msgid "already have music in score"
 msgstr "³ÚÉè¤Ë¤Ï³Ú¶Ê¤¬É¬ÍפǤ¹"
 
-#: score.cc:226
+#: score.cc:168
 msgid "this is the previous music"
 msgstr ""
 
-#: score.cc:231
+#: score.cc:173
 #, fuzzy
 msgid "errors found, ignoring music expression"
 msgstr "¥¨¥é¡¼¤òȯ¸«/*, ³ÚÉè¤ò½èÍý¤·¤Þ¤»¤ó*/"
@@ -1668,34 +2165,38 @@ msgid "do not know how to interpret articulation: "
 msgstr "²»Àá `%s' ¤Î²ò¼áÊýË¡¤¬È½¤ê¤Þ¤»¤ó"
 
 #: script-engraver.cc:103
-#, fuzzy
 msgid "scheme encoding: "
-msgstr "¥ª¥×¥·¥ç¥ó:"
-
-#: simple-spacer.cc:375
-#, c-format
-msgid "No spring between column %d and next one"
 msgstr ""
 
-#: slur-engraver.cc:83 tuplet-engraver.cc:75
+#: slur-engraver.cc:82
 #, c-format
 msgid "direction of %s invalid: %d"
 msgstr ""
 
-#: slur-engraver.cc:157
+#: slur-engraver.cc:151
 msgid "unterminated slur"
 msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼"
 
-#: slur-engraver.cc:166
+#: slur-engraver.cc:163
 #, fuzzy
 msgid "cannot end slur"
-msgstr "¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
+msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥¹¥é¡¼"
+
+#: slur.cc:353
+#, c-format
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr ""
 
 #: source-file.cc:74
 #, c-format
 msgid "expected to read %d characters, got %d"
 msgstr ""
 
+#: spaceable-grob.cc:83
+#, c-format
+msgid "No spring between column %d and next one"
+msgstr ""
+
 #: staff-symbol-engraver.cc:62
 msgid "staff-span event has no direction"
 msgstr ""
@@ -1719,42 +2220,42 @@ msgstr ""
 msgid "weird stem size, check for narrow beams"
 msgstr "ÊѤÊÉäÈø¤Î¥µ¥¤¥º -- ºÙ¤¤³Ã¤Î¥Á¥§¥Ã¥¯¤ò¤·¤Æ²¼¤µ¤¤"
 
-#: stem.cc:641
+#: stem.cc:627
 #, c-format
 msgid "flag `%s' not found"
 msgstr ""
 
-#: stem.cc:652
+#: stem.cc:638
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr ""
 
-#: system.cc:180
+#: system.cc:179
 #, c-format
 msgid "Element count %d."
-msgstr ""
+msgstr "Í×ÁÇ¿ô %d."
 
-#: system.cc:276
-#, c-format
+#: system.cc:271
+#, fuzzy, c-format
 msgid "Grob count %d"
-msgstr ""
+msgstr "Í×ÁÇ¿ô %d."
 
-#: text-spanner-engraver.cc:61
+#: text-spanner-engraver.cc:60
 #, fuzzy
 msgid "cannot find start of text spanner"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: text-spanner-engraver.cc:73
+#: text-spanner-engraver.cc:72
 #, fuzzy
 msgid "already have a text spanner"
 msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
 
-#: text-spanner-engraver.cc:133
+#: text-spanner-engraver.cc:118
 #, fuzzy
 msgid "unterminated text spanner"
 msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À"
 
-#: tie-engraver.cc:264
+#: tie-engraver.cc:262
 msgid "lonely tie"
 msgstr "°ì¤Ä¤À¤±¤Î¥¿¥¤"
 
@@ -1775,44 +2276,52 @@ msgstr ""
 msgid "time signature symbol `%s' not found; reverting to numbered style"
 msgstr ""
 
-#: translator-ctors.cc:52
+#: translator-ctors.cc:53
 #, c-format
 msgid "unknown translator: `%s'"
 msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
 
-#: translator-group.cc:151
+#: translator-group-ctors.cc:29
+#, c-format
+msgid "fatal error. Couldn't find type: %s"
+msgstr ""
+
+#: translator-group.cc:146
 #, fuzzy, c-format
 msgid "cannot find: `%s'"
 msgstr "¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: translator.cc:332
+#: translator.cc:347
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
 msgstr ""
 
-#: translator.cc:333
+#: translator.cc:348
 #, c-format
 msgid "Previous %s event here"
 msgstr ""
 
-#: trill-spanner-engraver.cc:68
+#: trill-spanner-engraver.cc:84
 #, fuzzy
 msgid "cannot find start of trill spanner"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: trill-spanner-engraver.cc:80
+#: trill-spanner-engraver.cc:96
 #, fuzzy
 msgid "already have a trill spanner"
-msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
+msgstr "¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬´û¤Ë¤¢¤ê¤Þ¤¹"
+
+#: tuplet-engraver.cc:96
+#, fuzzy
+msgid "No tuplet to end"
+msgstr "ËöÈø¤Ø¤Î³Ã¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: vaticana-ligature-engraver.cc:388
+#: vaticana-ligature-engraver.cc:389
 #, c-format
-msgid ""
-"ignored prefix (es) `%s' of this head according to restrictions of the "
-"selected ligature style"
+msgid "ignored prefix (es) `%s' of this head according to restrictions of the selected ligature style"
 msgstr ""
 
-#: vaticana-ligature-engraver.cc:714
+#: vaticana-ligature-engraver.cc:718
 #, c-format
 msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
 msgstr ""
@@ -1830,162 +2339,162 @@ msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
 msgstr ""
 
 #. fixme: be more verbose.
-#: volta-engraver.cc:144
-#, fuzzy
+#: volta-engraver.cc:100
 msgid "cannot end volta spanner"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+msgstr ""
 
-#: volta-engraver.cc:154
+#: volta-engraver.cc:110
 msgid "already have a volta spanner, ending that one prematurely"
 msgstr ""
 
-#: volta-engraver.cc:158
+#: volta-engraver.cc:114
 #, fuzzy
 msgid "also already have an ended spanner"
 msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
 
-#: volta-engraver.cc:159
+#: volta-engraver.cc:115
 #, fuzzy
 msgid "giving up"
 msgstr "Äü¤á¤Þ¤·¤¿"
 
-#: parser.yy:702
+#: parser.yy:728
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr ""
 
-#: parser.yy:726
+#: parser.yy:752
 msgid "need \\paper for paper block"
 msgstr ""
 
-#: parser.yy:1172
+#: parser.yy:1211
 msgid "Grob name should be alphanumeric"
 msgstr ""
 
-#: parser.yy:1475
+#: parser.yy:1509
+#, fuzzy
 msgid "second argument must be pitch list"
-msgstr ""
+msgstr "ÂèÆó°ú¿ô¤Ï¥·¥ó¥Ü¥ë¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#: parser.yy:1502 parser.yy:1507 parser.yy:1972
+#: parser.yy:1536 parser.yy:1541 parser.yy:2006
 #, fuzzy
 msgid "have to be in Lyric mode for lyrics"
 msgstr "²Î»ì¤Ï Lyric ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
 
-#: parser.yy:1604
+#: parser.yy:1638
 msgid "expecting string as script definition"
 msgstr ""
 
-#: parser.yy:1759 parser.yy:1809
+#: parser.yy:1793 parser.yy:1843
 #, c-format
 msgid "not a duration: %d"
 msgstr "²»Ä¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %d"
 
-#: parser.yy:1926
+#: parser.yy:1960
 #, fuzzy
 msgid "have to be in Note mode for notes"
 msgstr "²»Éä¤Ï Note ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
 
-#: parser.yy:1987
+#: parser.yy:2021
 #, fuzzy
 msgid "have to be in Chord mode for chords"
 msgstr "¥³¡¼¥É¤Ï Chord ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
 
-#: lexer.ll:176
+#: lexer.ll:179
 msgid "stray UTF-8 BOM encountered"
 msgstr ""
 
-#: lexer.ll:180
+#: lexer.ll:183
 msgid "Skipping UTF-8 BOM"
 msgstr ""
 
-#: lexer.ll:235
-#, fuzzy, c-format
+#: lexer.ll:238
+#, c-format
 msgid "Renaming input to: `%s'"
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+msgstr ""
 
-#: lexer.ll:252
+#: lexer.ll:255
 msgid "quoted string expected after \\version"
 msgstr ""
 
-#: lexer.ll:256
+#: lexer.ll:259
 msgid "quoted string expected after \\sourcefilename"
 msgstr ""
 
-#: lexer.ll:260
+#: lexer.ll:263
 msgid "integer expected after \\sourcefileline"
 msgstr ""
 
-#: lexer.ll:273
+#: lexer.ll:276
 msgid "EOF found inside a comment"
 msgstr "¥³¥á¥ó¥ÈÆâ¤Ë EOF ¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿"
 
-#: lexer.ll:288
+#: lexer.ll:291
 #, fuzzy
 msgid "\\maininput not allowed outside init files"
 msgstr "½é´ü²½¥Õ¥¡¥¤¥ë¤Î³°¤Ç¤Ï \\maininput ¤òµ­½Ò¤Ç¤­¤Þ¤»¤ó"
 
-#: lexer.ll:312
+#: lexer.ll:315
 #, fuzzy, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "̤ÄêµÁ¤Î¼±ÊÌ»Ò: `%s'"
 
 #. backup rule
-#: lexer.ll:321
+#: lexer.ll:324
 msgid "end quote missing"
 msgstr ""
 
-#: lexer.ll:466
+#: lexer.ll:469
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr ""
 
-#: lexer.ll:559
+#: lexer.ll:582
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr ""
 
-#: lexer.ll:659
+#: lexer.ll:686
 #, c-format
 msgid "invalid character: `%c'"
 msgstr "̵¸ú¤Êʸ»ú: `%c'"
 
-#: lexer.ll:774 lexer.ll:775
+#: lexer.ll:801 lexer.ll:802
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'"
 
-#: lexer.ll:880 lexer.ll:881
+#: lexer.ll:907 lexer.ll:908
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr ""
 
-#: lexer.ll:881 lexer.ll:882
+#: lexer.ll:908 lexer.ll:909
 msgid "consider updating the input with the convert-ly script"
 msgstr ""
 
-#: lexer.ll:887 lexer.ll:888
+#: lexer.ll:914 lexer.ll:915
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr ""
 
-#: backend-library.scm:19 lily.scm:599 ps-to-png.scm:82
-#, fuzzy, scheme-format
+#: backend-library.scm:19 lily.scm:767 ps-to-png.scm:58
+#, scheme-format
 msgid "Invoking `~a'..."
-msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+msgstr ""
 
-#: backend-library.scm:24
+#: backend-library.scm:28
 #, scheme-format
 msgid "`~a' failed (~a)"
 msgstr ""
 
-#: backend-library.scm:95 framework-tex.scm:343 framework-tex.scm:368
-#, fuzzy, scheme-format
+#: backend-library.scm:117 framework-tex.scm:344 framework-tex.scm:369
+#, scheme-format
 msgid "Converting to `~a'..."
-msgstr "¹Ô ..."
+msgstr ""
 
-#: backend-library.scm:108
-#, fuzzy, scheme-format
+#: backend-library.scm:130
+#, scheme-format
 msgid "Converting to ~a..."
-msgstr "¹Ô ..."
+msgstr ""
 
-#: backend-library.scm:145
+#: backend-library.scm:168
 #, fuzzy, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß: `%s'..."
@@ -2007,31 +2516,31 @@ msgstr ""
 msgid "translator listens to nonexisting event class ~A"
 msgstr ""
 
-#: define-markup-commands.scm:255
+#: define-markup-commands.scm:296
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr ""
 
-#: define-markup-commands.scm:1297
+#: define-markup-commands.scm:1310
 #, fuzzy, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "²»Ä¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %d"
 
-#: define-music-types.scm:751
+#: define-music-types.scm:670
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr ""
 
-#: define-music-types.scm:754
-#, fuzzy, scheme-format
+#: define-music-types.scm:673
+#, scheme-format
 msgid "cannot find music object: ~S"
-msgstr "`%s' ¥³¥ó¥Æ¥­¥¹¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+msgstr ""
 
-#: define-music-types.scm:774
+#: define-music-types.scm:692
 #, fuzzy, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)"
 
-#: define-music-types.scm:775
+#: define-music-types.scm:693
 msgid "See music-types.scm for supported repeats"
 msgstr ""
 
@@ -2041,80 +2550,90 @@ msgid "pair expected in doc ~s"
 msgstr ""
 
 #: document-backend.scm:135
-#, fuzzy, scheme-format
+#, scheme-format
 msgid "cannot find interface for property: ~S"
-msgstr "ʸ»úÈֹ椬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %d"
+msgstr ""
 
 #: document-backend.scm:145
-#, fuzzy, scheme-format
+#, scheme-format
 msgid "unknown Grob interface: ~S"
-msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)"
+msgstr ""
 
 #: documentation-lib.scm:45
 #, fuzzy, scheme-format
 msgid "Processing ~S..."
 msgstr "½èÍýÃæ..."
 
-#: documentation-lib.scm:150
+#: documentation-lib.scm:154
 #, fuzzy, scheme-format
 msgid "Writing ~S..."
-msgstr "¹Ô ..."
+msgstr "¹½Ê¸²òÀÏÃæ..."
 
-#: documentation-lib.scm:172
-#, fuzzy, scheme-format
+#: documentation-lib.scm:176
+#, scheme-format
 msgid "cannot find description for property ~S (~S)"
-msgstr "ʸ»úÈֹ椬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %d"
+msgstr ""
 
-#: framework-eps.scm:91 framework-eps.scm:92
+#: framework-eps.scm:90
 #, fuzzy, scheme-format
 msgid "Writing ~a..."
-msgstr "¹Ô ..."
+msgstr "¹½Ê¸²òÀÏÃæ..."
 
-#: framework-ps.scm:279
+#: framework-ps.scm:282
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr ""
 
-#: framework-ps.scm:332
+#: framework-ps.scm:335
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr ""
 
-#: framework-ps.scm:349
+#: framework-ps.scm:352
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr ""
 
-#: framework-ps.scm:380
-#, fuzzy, scheme-format
+#: framework-ps.scm:383
+#, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
-msgstr "²»Àá `%s' ¤Î²ò¼áÊýË¡¤¬È½¤ê¤Þ¤»¤ó"
+msgstr ""
 
-#: framework-ps.scm:729
+#: framework-ps.scm:750
 #, scheme-format
 msgid "cannot convert <stdout> to ~S"
 msgstr ""
 
-#: framework-ps.scm:748 framework-ps.scm:751
+#: framework-ps.scm:769 framework-ps.scm:772
 #, scheme-format
 msgid "cannot generate ~S using the postscript back-end"
 msgstr ""
 
-#: framework-ps.scm:758
+#: framework-ps.scm:779
 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"
+"  lilypond -dbackend=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"
 msgstr ""
 
-#: framework-tex.scm:360
-#, fuzzy, scheme-format
+#: framework-tex.scm:361
+#, scheme-format
 msgid "TeX file name must not contain whitespace: `~a'"
-msgstr "´û¤Ë´Þ¤ó¤Ç¤¤¤Þ¤¹: `%s'"
+msgstr ""
+
+#: graphviz.scm:53
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr ""
 
 #: layout-beam.scm:29
 #, scheme-format
@@ -2126,41 +2645,56 @@ msgstr ""
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
 msgstr ""
 
-#: layout-page-layout.scm:357
-#, fuzzy
+#: layout-page-layout.scm:124
+msgid "Can't fit systems on page -- ignoring between-system-padding"
+msgstr ""
+
+#: layout-page-layout.scm:458
 msgid "Calculating page breaks..."
-msgstr "¥«¥é¥à°ÌÃÖ¤ò·×»»Ãæ..."
+msgstr ""
 
-#: lily-library.scm:593
+#: lily-library.scm:583
 #, fuzzy, scheme-format
 msgid "unknown unit: ~S"
 msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
 
-#: lily-library.scm:626
+#: lily-library.scm:617
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr ""
 
-#: lily-library.scm:633
+#: lily-library.scm:625
 msgid "old relative compatibility not used"
 msgstr ""
 
-#: lily.scm:144
+#: lily.scm:177
 #, fuzzy, scheme-format
 msgid "cannot find: ~A"
 msgstr "¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: lily.scm:209
+#: lily.scm:242
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr ""
 
-#: lily.scm:525 lily.scm:589
+#: lily.scm:634
+#, scheme-format
+msgid "job ~a terminated with signal: ~a"
+msgstr ""
+
+#: lily.scm:637
+#, scheme-format
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+
+#: lily.scm:664 lily.scm:757
 #, scheme-format
 msgid "failed files: ~S"
 msgstr ""
 
-#: lily.scm:579
+#: lily.scm:747
 #, fuzzy, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr "%s ¤Ø paper ½ÐÎÏ..."
@@ -2169,678 +2703,420 @@ msgstr "%s 
 msgid "Music head function must return Music object"
 msgstr ""
 
-#: ly-syntax-constructors.scm:136
+#: ly-syntax-constructors.scm:139
 #, scheme-format
 msgid "Invalid property operation ~a"
 msgstr ""
 
-#: markup.scm:123
+#: markup.scm:124
 #, scheme-format
 msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
 msgstr ""
 
-#: markup.scm:129
+#: markup.scm:130
 #, scheme-format
 msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
 msgstr ""
 
-#: music-functions.scm:213
+#: music-functions.scm:228
 #, fuzzy
 msgid "More alternatives than repeats.  Junking excess alternatives"
 msgstr "·«¤êÊÖ¤·¤è¤ê¤âÁªÂò»è¤¬Â¿¤¤¡£Ä¶²áʬ¤ò¼Î¤Æ¤Þ¤¹¡£"
 
-#: music-functions.scm:232
+#: music-functions.scm:240
+#, scheme-format
+msgid "invalid tremolo repeat count: ~a"
+msgstr ""
+
+#: music-functions.scm:248
 #, scheme-format
 msgid "expecting 2 elements for chord tremolo, found ~a"
 msgstr ""
 
-#: music-functions.scm:538
+#: music-functions.scm:564
 #, fuzzy, scheme-format
 msgid "music expected: ~S"
 msgstr "¶õÇò¤¬É¬ÍפǤ¹"
 
 #. FIXME: uncomprehensable message
-#: music-functions.scm:589
+#: music-functions.scm:614
 #, scheme-format
 msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
 msgstr ""
 
-#: music-functions.scm:748
+#: music-functions.scm:764
 #, fuzzy, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
 
-#: music-functions.scm:942
+#: music-functions.scm:961
 #, fuzzy, scheme-format
 msgid "unknown accidental style: ~S"
-msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'"
+msgstr "¥Õ¥é¥Ã¥È¤¬Â¿¤¹¤®¤Þ¤¹ (%s)"
 
-#: output-ps.scm:315
+#: output-ps.scm:276
 msgid "utf-8-string encountered in PS backend"
 msgstr ""
 
-#: output-svg.scm:42
+#: output-svg.scm:45
 #, scheme-format
 msgid "undefined: ~S"
 msgstr ""
 
-#: output-svg.scm:132
+#: output-svg.scm:135
 #, scheme-format
 msgid "cannot decypher Pango description: ~a"
 msgstr ""
 
-#: output-tex.scm:98
+#: output-tex.scm:96
 #, fuzzy, scheme-format
 msgid "cannot find ~a in ~a"
-msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+msgstr "³Ã¤Î»ÏÅÀ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: paper.scm:69
-#, fuzzy
-msgid "Not in toplevel scope"
-msgstr "ºÇ¾å°Ì¤Î¥È¥é¥ó¥¹¥ì¡¼¥¿¤¬¤¢¤ê¤Þ¤»¤ó"
+#: paper.scm:85
+msgid "set-global-staff-size: not in toplevel scope"
+msgstr ""
 
-#: paper.scm:117
+#: paper.scm:133
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr ""
 
-#: paper.scm:129
+#: paper.scm:145
 #, fuzzy, scheme-format
 msgid "Unknown papersize: ~a"
 msgstr "paper ÊÑ¿ô¤ÎÃͤ¬È½¤ê¤Þ¤»¤ó: `%s'"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:144
+#: paper.scm:160
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr ""
 
-#: parser-clef.scm:126
+#: parser-clef.scm:129
 #, fuzzy, scheme-format
 msgid "unknown clef type `~a'"
 msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)"
 
-#: parser-clef.scm:127
-msgid "see scm/clef.scm for supported clefs"
+#: parser-clef.scm:130
+#, scheme-format
+msgid "supported clefs: ~a"
 msgstr ""
 
-#: ps-to-png.scm:88
+#: ps-to-png.scm:64
 #, scheme-format
 msgid "~a exited with status: ~S"
 msgstr ""
 
-#: to-xml.scm:190
+#: to-xml.scm:180
 #, scheme-format
 msgid "assertion failed: ~S"
 msgstr ""
 
-#, fuzzy
-#~ msgid "show warranty"
-#~ msgstr "ÊݾڤÈÃøºî¸¢¤Ë¤Ä¤¤¤Æɽ¼¨¤¹¤ë"
+#~ msgid "EOF in a string"
+#~ msgstr "ʸ»úÎóÃæ¤Ë EOF ¤¬¤¢¤ê¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "loading default font"
-#~ msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤ò¥í¡¼¥É¤·¤Þ¤¹"
+#~ msgid "not enough fields in Dstream init"
+#~ msgstr "Dstream ½é´ü²½»þ¤Î¥Õ¥£¡¼¥ë¥É¤¬ÉÔ½½Ê¬"
 
-#, fuzzy
-#~ msgid "cannot find default font: `%s'"
-#~ msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
+#~ msgid "non fatal error: "
+#~ msgstr "Ã×̿Ū¤Ç¤Ï¤Ê¤¤¥¨¥é¡¼: "
 
-#, fuzzy
-#~ msgid "couldnnot find line breaking that satisfies constraints"
-#~ msgstr "¤½¤Î²ò·è¤ÏÀ©¸Â¤òËþ¤¿¤·¤Þ¤»¤ó"
+#~ msgid "can't map file"
+#~ msgstr "¥Õ¥¡¥¤¥ë¤ò¥Þ¥Ã¥×¤Ç¤­¤Þ¤»¤ó"
 
-#, fuzzy
-#~ msgid "crescendo too small"
-#~ msgstr "¥¯¥ì¥Ã¥·¥§¥ó¥É"
+#~ msgid "Huh?  Got %d, expected %d characters"
+#~ msgstr "¤Ø¤Ã¡© %2$d Ê¸»ú¤¢¤ë¤Ï¤º¤Ê¤Î¤Ë %1$d Ê¸»ú¤·¤«¤Ê¤¤"
 
-#~ msgid "print this help"
-#~ msgstr "¤³¤Î¥Ø¥ë¥×"
+#~ msgid "<stdin>"
+#~ msgstr "<stdin>"
 
-#~ msgid "silly pitch"
-#~ msgstr "Çϼ¯¤²¤¿¥Ô¥Ã¥Á"
+#~ msgid "can't find character number: %d"
+#~ msgstr "ʸ»úÈֹ椬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %d"
 
-#, fuzzy
-#~ msgid "cannot open file %s"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
+#~ msgid "Error parsing AFM file"
+#~ msgstr "AFM ¥Õ¥¡¥¤¥ë¤ò²òÀÏÃæ¤Ë¥¨¥é¡¼"
 
-#, fuzzy
-#~ msgid "Incorrect lilypond version: %s (%s, %s)"
-#~ msgstr "´Ö°ã¤Ã¤¿ mudela ¥Ð¡¼¥¸¥ç¥ó: %s (%s, %s)"
+#~ msgid "Loading default font"
+#~ msgstr "¥Ç¥Õ¥©¥ë¥È¥Õ¥©¥ó¥È¤ò¥í¡¼¥É¤·¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "no one to print a tremolos"
-#~ msgstr "È¿Éüµ­¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
+#~ msgid "Can't switch translators, I'm there already"
+#~ msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤òÀÚ¤êÂؤ¨¤é¤ì¤Þ¤»¤ó¡£´û¤Ë¤½¤¦¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "junking event: `%s'"
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+#~ msgid "beam has less than two stems"
+#~ msgstr "³Ã¤¬Æó¤Ä̤Ëþ¤ÎÉäÈø¤È¤È¤â¤Ë»È¤ï¤ì¤Þ¤·¤¿"
 
-#~ msgid "no one to print a repeat brace"
-#~ msgstr "È¿Éüµ­¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
+#~ msgid "weird beam vertical offset"
+#~ msgstr "¿âľÊý¸þ¤Î°ÌÃ֤Ȥ·¤Æ¤ª¤«¤·¤Ê³Ã"
 
-#, fuzzy
-#~ msgid "cannot find `%s' context"
-#~ msgstr "`%s' ¥³¥ó¥Æ¥­¥¹¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+#~ msgid "I'm one myself"
+#~ msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤½¤Î¤â¤Î¤Ç¤¹"
 
-#, fuzzy
-#~ msgid "no one to print a percent"
-#~ msgstr "È¿Éüµ­¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
+#~ msgid "no one to print a tremolos"
+#~ msgstr "¥È¥ì¥â¥í¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¤¤Þ¤»¤ó"
 
-#~ msgid "Creator: "
-#~ msgstr "ºî¶Ê¼Ô: "
+#~ msgid "invalid subtraction: not part of chord: %s"
+#~ msgstr "̵¸ú¤Ê°ú¤­»»: ¥³¡¼¥É¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %s"
 
-#, fuzzy
-#~ msgid "at "
-#~ msgstr ", at "
+#~ msgid "invalid inversion pitch: not part of chord: %s"
+#~ msgstr "̵¸ú¤Êž²ó¥Ô¥Ã¥Á: ¥³¡¼¥É¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %s"
 
-#, fuzzy
-#~ msgid "in quotation: junking event %s"
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+#~ msgid "too small"
+#~ msgstr "¾®¤µ¤¹¤®¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "TFM header of `%s' has only %u word (s)"
-#~ msgstr "`%s' ¤Î TFM ¥Ø¥Ã¥À¤Ë %u ¸ì¤·¤«¤¢¤ê¤Þ¤»¤ó"
+#~ msgid "minVerticalAlign != maxVerticalAlign: cross staff spanners may be broken"
+#~ msgstr "minVerticalAlign != maxVerticalAlign: ¸òº¹¤·¤¿¥¹¥Ñ¥Ê¤¬²õ¤ì¤¿¤«¤â"
 
-#~ msgid ""
-#~ "%s: TFM file has %u parameters, which is more than the %u I can handle"
-#~ msgstr "%s: TFM ¥Õ¥¡¥¤¥ë¤Ï %u ¸Ä¤Î¥Ñ¥é¥á¥¿¤¬¤¢¤ê¤Þ¤¹¤¬¡¢%u °Ê¾å¤Ï°·¤¨¤Þ¤»¤ó"
+#~ msgid "floating point exception"
+#~ msgstr "ÉâÆ°¾®¿ôÅÀÎã³°"
 
-#, fuzzy
-#~ msgid "cannot find ascii character: %d"
-#~ msgstr "ascii Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%d'"
+#~ msgid "can't set mem-checking!"
+#~ msgstr "¥á¥â¥ê¥Á¥§¥Ã¥¯¤òÀßÄê¤Ç¤­¤Þ¤»¤ó!"
 
-#~ msgid "no one to print a tuplet start bracket"
-#~ msgstr "¥¿¥×¥ì¥Ã¥È³«»Ï¥Ö¥é¥±¥Ã¥È¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
+#~ msgid "NaN"
+#~ msgstr "NaN"
 
-#, fuzzy
-#~ msgid "unterminated trill spanner"
-#~ msgstr "½ªÃ¼¤Î¤Ê¤¤¥¨¥¯¥¹¥Æ¥ó¥À"
+#~ msgid "Nothing to connect extender to on the left.  Ignoring extender request."
+#~ msgstr "¥¨¥¯¥¹¥Æ¥ó¥À¤¬º¸Â¦¤Ë¤Ä¤Ê¤¬¤ê¤Þ¤»¤ó¡£¥¨¥¯¥¹¥Æ¥ó¥ÀÍ×µá¤ò̵»ë¤·¤Þ¤¹¡£"
 
-#, fuzzy
-#~ msgid "more alternatives than repeats"
-#~ msgstr "·«¤êÊÖ¤·¤è¤ê¤âÁªÂò»è¤¬Â¿¤¤¡£Ä¶²áʬ¤ò¼Î¤Æ¤Þ¤¹¡£"
+#~ msgid "no one to print a repeat brace"
+#~ msgstr "È¿Éüµ­¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#, fuzzy
-#~ msgid "cannot find signature for music function"
-#~ msgstr "`%s' ¥³¥ó¥Æ¥­¥¹¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+#~ msgid "no Grace context available"
+#~ msgstr "Áõ¾þ¥³¥ó¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#, fuzzy
-#~ msgid "Opening pipe `%s'"
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+#~ msgid "Unattached grace notes.  Attaching to last musical column."
+#~ msgstr "Áõ¾þ²»É䤬¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£Ä¾Á°¤Î¥«¥é¥à¤Ë¤Ä¤±¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "Cleaning %s..."
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+#~ msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen request."
+#~ msgstr "º¸Â¦¤Ë·Ò¤²¤ë¥Ï¥¤¥Õ¥ó¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ï¥¤¥Õ¥ó¤ÎÍ×µá¤ò̵»ë¤·¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "Usage: %s [OPTION]... [FILE]..."
-#~ msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]..."
+#~ msgid "wrong identifier type, expected: `%s'"
+#~ msgstr "´Ö°ã¤Ã¤¿¼±Ê̻ҷ¿¡¢¤³¤³¤ËÍè¤ë¤Ù¤­¤â¤Î¤Ï: `%s'"
 
-#, fuzzy
-#~ msgid "%s: skipping: `%s'"
-#~ msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
+#~ msgid "No key name, assuming `C'"
+#~ msgstr "¥­¡¼Ì¾¤¬¤¢¤ê¤Þ¤»¤ó¡¢`C' ¤ò»î¤ß¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "print version information"
-#~ msgstr "¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨"
+#~ msgid "Don't know how handle empty keys"
+#~ msgstr "¶õ¤Î¥­¡¼¤Î°·¤¤Êý¤¬È½¤ê¤Þ¤»¤ó"
 
-#, fuzzy
-#~ msgid "no such context: %s"
-#~ msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'"
+#~ msgid "FIXME: key change merge"
+#~ msgstr "FIXME: ¥­¡¼Êѹ¹¤Î¥Þ¡¼¥¸"
 
-#, fuzzy
-#~ msgid "Processing `%s'..."
-#~ msgstr "½èÍýÃæ..."
+#~ msgid "overdone accidentals (%s)"
+#~ msgstr "¥·¥ã¡¼¥×¤¬Â¿¤¹¤®¤Þ¤¹ (%s)"
 
-#, fuzzy
-#~ msgid "Wrote `%s'"
-#~ msgstr "¹Ô ..."
+#~ msgid "out of tune:"
+#~ msgstr "Èϰϳ°¤ÎÄ´:"
 
-#, fuzzy
-#~ msgid "cannot dlopen: %s: %s"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'"
+#~ msgid "Non-matching braces in text `%s', adding braces"
+#~ msgstr "¥Æ¥­¥¹¥È `%s' Ãæ¤Ë°ìÃפ¹¤ë¥Ö¥ì¡¼¥¹¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ö¥ì¡¼¥¹¤òÄɲä·¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "install package: %s or %s"
-#~ msgstr "`%s' ¤«¤é `%s' ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+#~ msgid "enable debugging output"
+#~ msgstr "¥Ç¥Ð¥Ã¥°½ÐÎϤòÍ­¸ú"
 
-#, fuzzy
-#~ msgid "aborting"
-#~ msgstr "½ªÎ»¤·¤Þ¤¹"
+#~ msgid "EXT"
+#~ msgstr "EXT"
 
 #, fuzzy
-#~ msgid "parsing AFM file: `%s'"
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+#~ msgid "use output format EXT (scm, ps, tex or as)"
+#~ msgstr "½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È EXT (scm, ps, tex) ¤ò»È¤¦"
 
-#, fuzzy
-#~ msgid "beam has less than two visible stems"
-#~ msgstr "³Ã¤¬Æó¤Ä̤Ëþ¤ÎÉäÈø¤È¤È¤â¤Ë»È¤ï¤ì¤Þ¤·¤¿"
+#~ msgid "this help"
+#~ msgstr "¤³¤Î¥Ø¥ë¥×"
 
-#, fuzzy
-#~ msgid "adding lilypond directory: %s"
-#~ msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+#~ msgid "write Makefile dependencies for every input file"
+#~ msgstr "Á´¤Æ¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤Î Makefile °Í¸´Ø·¸¤ò½ñ¤­¹þ¤à"
 
-#, fuzzy
-#~ msgid "cannot handle a percent repeat of length: %s"
-#~ msgstr "¶õ¤Î¥­¡¼¤Î°·¤¤Êý¤¬È½¤ê¤Þ¤»¤ó"
+#~ msgid "produce MIDI output only"
+#~ msgstr "MIDI ½ÐÎϤÎÀ¸À®¤Î¤ß"
 
-#, fuzzy
-#~ msgid "Separation_item:  I've been drinking too much"
-#~ msgstr "Single_malt_grouping_item:  °û¤ß¤¹¤®¤Á¤ã¤Ã¤¿"
-
-#, fuzzy
-#~ msgid "suspect duration in beam: %s"
-#~ msgstr "²»Ä¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %d"
-
-#, fuzzy
-#~ msgid "syntax error: cannot back up"
-#~ msgstr "³¹Ô²Äǽ¤Ê¥¨¥é¡¼: "
-
-#, fuzzy
-#~ msgid "Stack now"
-#~ msgstr "¥È¥é¥Ã¥¯ "
-
-#, fuzzy
-#~ msgid "Reading a token: "
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#, fuzzy
-#~ msgid "syntax error, unexpected %s"
-#~ msgstr "³¹Ô²Äǽ¤Ê¥¨¥é¡¼: "
-
-#, fuzzy
-#~ msgid "syntax error, unexpected %s, expecting %s"
-#~ msgstr "³¹Ô²Äǽ¤Ê¥¨¥é¡¼: "
-
-#, fuzzy
-#~ msgid "syntax error, unexpected %s, expecting %s or %s"
-#~ msgstr "³¹Ô²Äǽ¤Ê¥¨¥é¡¼: "
-
-#, fuzzy
-#~ msgid "syntax error, unexpected %s, expecting %s or %s or %s"
-#~ msgstr "³¹Ô²Äǽ¤Ê¥¨¥é¡¼: "
-
-#, fuzzy
-#~ msgid "syntax error; also memory exhausted"
-#~ msgstr "³¹Ô²Äǽ¤Ê¥¨¥é¡¼: "
-
-#, fuzzy
-#~ msgid "syntax error"
-#~ msgstr "³¹Ô²Äǽ¤Ê¥¨¥é¡¼: "
-
-#, fuzzy
-#~ msgid "cannot find CFF/PFA/PFB font ~S=~S"
-#~ msgstr "¥Õ¥©¥ó¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "unknown bar glyph: `~S'"
-#~ msgstr "ÉÔÌÀ¤Ê²»Éôµ­¹æ(Clef)"
-
-#, fuzzy
-#~ msgid "Extracting fonts to %s..."
-#~ msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "Writing %s..."
-#~ msgstr "¹Ô ..."
-
-#~ msgid "Have to be in Lyric mode for lyrics"
-#~ msgstr "²Î»ì¤Ï Lyric ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
-
-#~ msgid "Have to be in Note mode for notes"
-#~ msgstr "²»Éä¤Ï Note ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
-
-#~ msgid "Have to be in Chord mode for chords"
-#~ msgstr "¥³¡¼¥É¤Ï Chord ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤"
-
-#, fuzzy
-#~ msgid "programming error: "
-#~ msgstr "¥×¥í¥°¥é¥à¾å¤Î¥¨¥é¡¼: "
-
-#, fuzzy
-#~ msgid "Programming error: "
-#~ msgstr "¥×¥í¥°¥é¥à¾å¤Î¥¨¥é¡¼: "
-
-#~ msgid "Cannot switch translators, I'm there already"
-#~ msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤òÀÚ¤êÂؤ¨¤é¤ì¤Þ¤»¤ó¡£´û¤Ë¤½¤¦¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
-
-#, fuzzy
-#~ msgid "Aborting."
-#~ msgstr "½ªÎ»¤·¤Þ¤¹"
-
-#~ msgid "I'm one myself"
-#~ msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤½¤Î¤â¤Î¤Ç¤¹"
-
-#, fuzzy
-#~ msgid "No slur to end"
-#~ msgstr "ËöÈø¤Ø¤Î³Ã¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "Huh?  Got %d, expected %d characters"
-#~ msgstr "¤Ï¡© %2$d Ê¸»ú¤¢¤ë¤Ï¤º¤Ê¤Î¤Ë %1$d Ê¸»ú¤·¤«¤Ê¤¤"
-
-#~ msgid "Missing end quote"
-#~ msgstr "½ªÎ»¥¯¥ª¡¼¥È¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "EXT"
-#~ msgstr "EXT"
-
-#~ msgid "FIXME: key change merge"
-#~ msgstr "FIXME: ¥­¡¼Êѹ¹¤Î¥Þ¡¼¥¸"
-
-#, fuzzy
-#~ msgid "kpathsea cannot find %s file: `%s'"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "kpathsea cannot find file: `%s'"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "EXTs"
-#~ msgstr "EXT"
-
-#, fuzzy
-#~ msgid "generate DVI"
-#~ msgstr "À©¸Â¤ò´ËÏÂ"
-
-#, fuzzy
-#~ msgid "generate TeX"
-#~ msgstr "À©¸Â¤ò´ËÏÂ"
-
-#, fuzzy
-#~ msgid "kpathsea can not find %s file: `%s'"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "kpathsea can not find AFM file `%s'"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "kpathsea can not find TFM file: `%s'"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "Converting to `~a.ps'..."
-#~ msgstr "¹Ô ..."
-
-#, fuzzy
-#~ msgid "add DIR to LilyPond's search path"
-#~ msgstr "DIR ¤ò¸¡º÷¥Ñ¥¹¤ËÄɲÃ"
-
-#~ msgid "produce MIDI output only"
-#~ msgstr "MIDI ½ÐÎϤÎÀ¸À®¤Î¤ß"
-
-#, fuzzy
-#~ msgid "generate PDF output"
-#~ msgstr "À©¸Â¤ò´ËÏÂ"
-
-#, fuzzy
-#~ msgid "generate PS.GZ"
-#~ msgstr "À©¸Â¤ò´ËÏÂ"
-
-#, fuzzy
-#~ msgid "Continuing..."
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#, fuzzy
-#~ msgid "Analyzing %s..."
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#, fuzzy
-#~ msgid "no LilyPond output found for `%s'"
-#~ msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..."
-
-#, fuzzy
-#~ msgid "%s output to <stdout>..."
-#~ msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
-
-#, fuzzy
-#~ msgid "%s output to %s..."
-#~ msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
-
-#, fuzzy
-#~ msgid "cannot find file: `%s.%s'"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'"
-
-#, fuzzy
-#~ msgid "DIM"
-#~ msgstr "DIR"
-
-#, fuzzy
-#~ msgid "write dependencies"
-#~ msgstr "¶õÇò¤¬É¬ÍפǤ¹"
-
-#~ msgid "write Makefile dependencies for every input file"
-#~ msgstr "Á´¤Æ¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤Î Makefile °Í¸´Ø·¸¤ò½ñ¤­¹þ¤à"
-
-#, fuzzy
-#~ msgid "invalid value: `%s'"
-#~ msgstr "̵¸ú¤Êʸ»ú: `%c'"
-
-#, fuzzy
-#~ msgid "Writing HTML menu `%s'"
-#~ msgstr "¹Ô ..."
-
-#, fuzzy
-#~ msgid "programming error: %s (Continuing; cross thumbs)\n"
-#~ msgstr " (³¤±¤Þ¤¹ -- cross thumbs)"
-
-#, fuzzy
-#~ msgid "Beam has less than two stems. Removing beam."
-#~ msgstr "³Ã¤¬Æó¤Ä̤Ëþ¤ÎÉäÈø¤È¤È¤â¤Ë»È¤ï¤ì¤Þ¤·¤¿"
+#~ msgid "BASENAME"
+#~ msgstr "BASENAME"
 
-#~ msgid "NaN"
-#~ msgstr "NaN"
+#~ msgid "write output to BASENAME[-x].extension"
+#~ msgstr "BASENAME[-x].³ÈÄ¥»Ò ¤Ø½ÐÎϤò½ñ¤­¹þ¤à"
 
-#, fuzzy
-#~ msgid ""
-#~ "Nothing to connect extender to on the left.  Ignoring extender event."
-#~ msgstr "¥¨¥¯¥¹¥Æ¥ó¥À¤¬º¸Â¦¤Ë¤Ä¤Ê¤¬¤ê¤Þ¤»¤ó¡£¥¨¥¯¥¹¥Æ¥ó¥ÀÍ×µá¤ò̵»ë¤·¤Þ¤¹¡£"
+#~ msgid "show all changes in relative syntax"
+#~ msgstr "´ØÏ¢¤¹¤ëʸˡ¤«¤éÁ´¤Æ¤ÎÊѹ¹¤òɽ¼¨"
 
-#, fuzzy
-#~ msgid "Nothing to connect hyphen to on the left.  Ignoring hyphen event."
-#~ msgstr "º¸Â¦¤Ë·Ò¤²¤ë¥Ï¥¤¥Õ¥ó¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ï¥¤¥Õ¥ó¤ÎÍ×µá¤ò̵»ë¤·¤Þ¤¹"
+#~ msgid "inhibit file output naming and exporting"
+#~ msgstr "̾Á°ÉÕ¤±¤È¥¨¥¯¥¹¥Ý¡¼¥È¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤òÍÞÀ©¤¹¤ë"
 
-#~ msgid "Score contains errors; will not process it"
-#~ msgstr "³ÚÉè¤Ë¥¨¥é¡¼¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹ -- ½èÍý¤·¤Þ¤»¤ó"
+#~ msgid "don't timestamp the output"
+#~ msgstr "½ÐÎϤ˥¿¥¤¥à¥¹¥¿¥ó¥×¤ò¤Ä¤±¤Ê¤¤"
 
-#, fuzzy
-#~ msgid "Now processing: `%s'"
-#~ msgstr "̤ÃΤΥ¨¥¹¥±¡¼¥×ʸ»úÎó: `\\%s'"
+#~ msgid "switch on experimental features"
+#~ msgstr "¼Â¸³Åª¤Êµ¡Ç½¤òÍ­¸ú¤Ë¤¹¤ë"
 
-#~ msgid "inhibit file output naming and exporting"
-#~ msgstr "̾Á°ÉÕ¤±¤È¥¨¥¯¥¹¥Ý¡¼¥È¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤òÍÞÀ©¤¹¤ë"
+#~ msgid "ignore mudela version"
+#~ msgstr "mudela ¤Î¥Ð¡¼¥¸¥ç¥ó¤ò̵»ë¤¹¤ë"
 
 #~ msgid ""
 #~ "LilyPond is a music typesetter.  It produces beautiful sheet music\n"
 #~ "using a high level description file as input.  LilyPond is part of \n"
 #~ "the GNU Project.\n"
 #~ msgstr ""
-#~ "LilyPond ¤Ï³Ú¶ÊÁÈÈÇ¥½¥Õ¥È¤Ç¤¹¡£ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ë¤Ï¥Ï¥¤¥ì¥Ù¥ë¤Êµ­½Ò¤ò»ÈÍѤÇ"
-#~ "¤­¡¢\n"
-#~ "Èþ¤·¤¤ÉèÌ̤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£LilyPond ¤Ï GNU ¥×¥í¥¸¥§¥¯¥È¤Î°ìÉô¤Ç"
-#~ "¤¹¡£\n"
+#~ "LilyPond ¤Ï³Ú¶ÊÁÈÈÇ¥½¥Õ¥È¤Ç¤¹¡£ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ë¤Ï¥Ï¥¤¥ì¥Ù¥ë¤Êµ­½Ò¤ò»ÈÍѤǤ­¡¢\n"
+#~ "Èþ¤·¤¤ÉèÌ̤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£LilyPond ¤Ï GNU ¥×¥í¥¸¥§¥¯¥È¤Î°ìÉô¤Ç¤¹¡£\n"
 
-#, fuzzy
-#~ msgid "GNU LilyPond -- The music typesetter"
+#~ msgid "This binary was compiled with the following options:"
+#~ msgstr "¤³¤Î¥Ð¥¤¥Ê¥ê¤Ï°Ê²¼¤Î¥ª¥×¥·¥ç¥óÉÕ¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿"
+
+#~ msgid "GNU LilyPond -- The GNU Project music typesetter"
 #~ msgstr "GNU LilyPond -- The GNU Project music typesetter"
 
+#~ msgid "unconventional key: flats: %d, sharps: %d"
+#~ msgstr "´·½¬¤Ë¹ç¤ï¤Ê¤¤¥­¡¼¤Ç¤¹: ¥Õ¥é¥Ã¥È: %d ¸Ä, ¥·¥ã¡¼¥× %d ¸Ä"
+
 #~ msgid "silly duration"
 #~ msgstr "Çϼ¯¤²¤¿²»Ä¹"
 
-#~ msgid "paper output to `%s'..."
-#~ msgstr "%s ¤Ø paper ½ÐÎÏ..."
+#~ msgid "silly pitch"
+#~ msgstr "Çϼ¯¤²¤¿¥Ô¥Ã¥Á"
+
+#~ msgid "Error syncing file (disk full?)"
+#~ msgstr "¥Õ¥¡¥¤¥ë¤ÎƱĴ¥¨¥é¡¼ (¥Ç¥£¥¹¥¯¤¬°ìÇÕ?)"
+
+#~ msgid "Interpretation context with empty type"
+#~ msgstr "¶õ¥¿¥¤¥×¤Î²ò¼á¥³¥ó¥Æ¥­¥¹¥È"
+
+#~ msgid "not a real variable"
+#~ msgstr "Ãͤ¬¼Â¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#~ msgid ", at "
+#~ msgstr ", at "
 
 #~ msgid "Outputting Score, defined at: "
 #~ msgstr "ÉèÌ̤ò½ÐÎϤ·¤Þ¤¹¡£¤³¤³¤ÇÄêµÁ: "
 
-#, fuzzy
-#~ msgid "I'm one myself: `%s'"
-#~ msgstr "¥È¥é¥ó¥¹¥ì¡¼¥¿¤½¤Î¤â¤Î¤Ç¤¹"
+#~ msgid "Creator: "
+#~ msgstr "ºî¶Ê¼Ô: "
 
-#, fuzzy
-#~ msgid "none of these in my family: `%s'"
-#~ msgstr "¥Õ¥¡¥ß¥ê¤ÎÃæ¤Ë¤¢¤ê¤Þ¤»¤ó"
+#~ msgid "Automatically generated"
+#~ msgstr "¼«Æ°À¸À®¤µ¤ì¤¿"
 
 #~ msgid "from musical definition: %s"
 #~ msgstr "²»³ÚŪÄêµÁ¤è¤ê: %s"
 
-#, fuzzy
-#~ msgid "cannot find start of phrasing slur"
-#~ msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#, fuzzy
-#~ msgid "unterminated pedal bracket"
-#~ msgstr "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
-
-#~ msgid "unbound spanner `%s'"
-#~ msgstr "ÊĤ¸¤Æ¤¤¤Ê¤¤¥¹¥Ñ¥Ê `%s'"
+#~ msgid "Wrong type for property"
+#~ msgstr "°À­ÃͤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
 
-#~ msgid "Error syncing file (disk full?)"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤ÎƱĴ¥¨¥é¡¼ (¥Ç¥£¥¹¥¯¤¬°ìÇÕ?)"
+#~ msgid "No bar engraver found.  Ignoring repeats."
+#~ msgstr "¾®À᤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£È¿Éü¤ò̵»ë¤·¤Þ¤¹¡£"
 
-#~ msgid "No ties were created!"
-#~ msgstr "ºî¤é¤ì¤¿¥¿¥¤¤¬¤¢¤ê¤Þ¤»¤ó!"
+#~ msgid "Junking request: `%s'"
+#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
 
-#~ msgid "Already contains: `%s'"
-#~ msgstr "´û¤Ë´Þ¤ó¤Ç¤¤¤Þ¤¹: `%s'"
+#~ msgid "Huh?  Not a Request: `%s'"
+#~ msgstr "¤Ï? Í×µá¤Ç¤Ï¤Ê¤¤: `%s'"
 
-#, fuzzy
-#~ msgid "Not adding translator: `%s'"
-#~ msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
+#~ msgid "too many notes for rest collision"
+#~ msgstr "µÙÉä¤Î¾×ÆͤËÂФ·¤Æ²»É䤬¿¤¹¤®¤Þ¤¹"
 
-#, fuzzy
-#~ msgid "Must have duration object"
-#~ msgstr "²»Ä¹¤òºÇ¾®¤ËÀßÄꤷ¤Þ¤¹"
+#~ msgid "unbound spanner `%s'"
+#~ msgstr "ÊĤ¸¤Æ¤¤¤Ê¤¤¥¹¥Ñ¥Ê `%s'"
 
-#, fuzzy
-#~ msgid "%r: release directory"
-#~ msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'"
+#~ msgid "no toplevel translator"
+#~ msgstr "ºÇ¾å°Ì¤Î¥È¥é¥ó¥¹¥ì¡¼¥¿¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#, fuzzy
-#~ msgid "Fetching `%s'..."
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+#~ msgid "Score contains errors; will not process it"
+#~ msgstr "³ÚÉè¤Ë¥¨¥é¡¼¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹ -- ½èÍý¤·¤Þ¤»¤ó"
 
-#, fuzzy
-#~ msgid "Building `%s'..."
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
+#~ msgid "Must stop before this music ends"
+#~ msgstr "¤³¤Î³Ú¶Ê¤Î½ª¤ï¤ê¤Þ¤Ç¤Ë»ß¤á¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#~ msgid "invalid subtraction: not part of chord: %s"
-#~ msgstr "̵¸ú¤Ê°ú¤­»»: ¥³¡¼¥É¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %s"
+#~ msgid "Single_malt_grouping_item:  I've been drinking too much"
+#~ msgstr "Single_malt_grouping_item:  °û¤ß¤¹¤®¤Á¤ã¤Ã¤¿"
 
-#~ msgid "invalid inversion pitch: not part of chord: %s"
-#~ msgstr "̵¸ú¤Êž²ó¥Ô¥Ã¥Á: ¥³¡¼¥É¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %s"
+#~ msgid "can't find both ends of %s"
+#~ msgstr "%s ¤Îξü¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#~ msgid ", at "
-#~ msgstr ", at "
+#~ msgid "slur"
+#~ msgstr "¥¹¥é¡¼"
 
-#, fuzzy
-#~ msgid "Putting slur over rest."
+#~ msgid "Putting slur over rest.  Ignoring."
 #~ msgstr "µÙÉä¤ò¤Þ¤¿¤¤¤À¥¹¥é¡¼¤¬¤¢¤ê¤Þ¤¹¡£Ìµ»ë¤·¤Þ¤¹¡£"
 
 #~ msgid "Slur over rest?"
 #~ msgstr "¥¹¥é¡¼¤¬µÙÉä¤ò¤Þ¤¿¤¤¤Ç¤¤¤ë?"
 
-#~ msgid "Cannot specify direction for this request"
-#~ msgstr "¤³¤ÎÍ×µá¤ËÂФ¹¤ëÊý¸þ¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+#~ msgid "Spanner `%s' has equal left and right spanpoints"
+#~ msgstr "ÈÏ°Ï»ØÄê»Ò `%s' ¤Îº¸±¦¤ÎÅÀ¤¬Æ±¤¸¤Ç¤¹"
 
-#, fuzzy
-#~ msgid "cannot map file"
-#~ msgstr "¥Õ¥¡¥¤¥ë¤ò¥Þ¥Ã¥×¤Ç¤­¤Þ¤»¤ó"
+#~ msgid "TFM header of `%s' has only %u word(s)"
+#~ msgstr "`%s' ¤Î TFM ¥Ø¥Ã¥À¤Ë %u ¸ì¤·¤«¤¢¤ê¤Þ¤»¤ó"
 
-#~ msgid "This binary was compiled with the following options:"
-#~ msgstr "¤³¤Î¥Ð¥¤¥Ê¥ê¤Ï°Ê²¼¤Î¥ª¥×¥·¥ç¥óÉÕ¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿"
+#~ msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
+#~ msgstr "%s: TFM ¥Õ¥¡¥¤¥ë¤Ï %u ¸Ä¤Î¥Ñ¥é¥á¥¿¤¬¤¢¤ê¤Þ¤¹¤¬¡¢%u °Ê¾å¤Ï°·¤¨¤Þ¤»¤ó"
 
-#~ msgid "EOF in a string"
-#~ msgstr "ʸ»úÎóÃæ¤Ë EOF ¤¬¤¢¤ê¤Þ¤¹"
+#~ msgid "can't find ascii character: `%d'"
+#~ msgstr "ascii Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%d'"
 
-#~ msgid "<stdin>"
-#~ msgstr "<stdin>"
+#~ msgid "No ties were created!"
+#~ msgstr "ºî¤é¤ì¤¿¥¿¥¤¤¬¤¢¤ê¤Þ¤»¤ó!"
 
-#~ msgid "weird beam vertical offset"
-#~ msgstr "¿âľÊý¸þ¤Î°ÌÃ֤Ȥ·¤Æ¤ª¤«¤·¤Ê³Ã"
+#~ msgid "no one to print a tuplet start bracket"
+#~ msgstr "Ï¢É䳫»Ï¥Ö¥é¥±¥Ã¥È¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#, fuzzy
-#~ msgid "unknown spacing pair `%s', `%s'"
-#~ msgstr "Ƚ¤é¤Ê¤¤¥È¥é¥ó¥¹¥ì¡¼¥¿: `%s'"
+#~ msgid "lost in time:"
+#~ msgstr "Çï»Ò¤Ë̤¤¤Þ¤·¤¿:"
 
-#, fuzzy
-#~ msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s"
-#~ msgstr "°À­ÃͤؤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+#~ msgid "This is the other timing request"
+#~ msgstr "¤³¤ì¤ÏÊ̤ÎÇï»ÒÍ×µá¤Ç¤¹"
 
-#~ msgid "too many notes for rest collision"
-#~ msgstr "µÙÉä¤Î¾×ÆͤËÂФ·¤Æ²»É䤬¿¤¹¤®¤Þ¤¹"
+#~ msgid "Already contains: `%s'"
+#~ msgstr "´û¤Ë´Þ¤ó¤Ç¤¤¤Þ¤¹: `%s'"
+
+#~ msgid "no one to print a volta bracket"
+#~ msgstr "volta ¥Ö¥é¥±¥Ã¥È¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
 
 #~ msgid "Oldest supported input version: %s"
 #~ msgstr "°ìÈָŤ¤ÆþÎϲÄǽ¥Ð¡¼¥¸¥ç¥ó: %s"
 
-#~ msgid "#32 in quarter: %d"
-#~ msgstr "»Íʬ¤ÎÃæ¤Ë #32: %d"
-
-#~ msgid "track %d:"
-#~ msgstr "¥È¥é¥Ã¥¯ %d:"
-
-#~ msgid "NOT Filtering tempo..."
-#~ msgstr "¥Æ¥ó¥Ý¤Î¥Õ¥£¥ë¥¿¤ò¤·¤Þ¤»¤ó..."
-
-#~ msgid "NOT Quantifying columns..."
-#~ msgstr "¥«¥é¥à¤ÎŤµ¤òÎ̤ê¤Þ¤»¤ó..."
-
-#~ msgid "Quantifying columns..."
-#~ msgstr "¥«¥é¥à¤ÎŤµ¤òÎ̤ê¤Þ¤¹..."
+#~ msgid "Need a translator group for a context"
+#~ msgstr "¥³¥ó¥Æ¥­¥¹¥È¤Ë¤Ï¥È¥é¥ó¥¹¥ì¡¼¥¿¥°¥ë¡¼¥×¤¬É¬ÍפǤ¹"
 
-#~ msgid "Settling columns..."
-#~ msgstr "¥«¥é¥à¤ò·èÄꤷ¤Þ¤¹..."
+#~ msgid "Wrong type for property value"
+#~ msgstr "°À­ÃͤؤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
 
-#~ msgid "% MIDI copyright:"
-#~ msgstr "% MIDI copyright:"
+#~ msgid "First argument must be a procedure taking 1 argument"
+#~ msgstr "Âè°ì°ú¿ô¤Ï°ú¿ô¤ò°ì¤Ä¤È¤ë¼ê³¤­¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#~ msgid "% MIDI instrument:"
-#~ msgstr "% MIDI instrument:"
-
-#~ msgid "lily indent level: %d"
-#~ msgstr "lily indent level: %d"
+#~ msgid "Can't specify direction for this request"
+#~ msgstr "¤³¤ÎÍ×µá¤ËÂФ¹¤ëÊý¸þ¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
 
-#~ msgid "% Creator: "
-#~ msgstr "%s Creator: "
+#~ msgid "Expecting %d arguments"
+#~ msgstr "%d ¸Ä¤Î°ú¿ô¤¬¤¢¤ë¤Ï¤º"
 
-#~ msgid "% Automatically generated"
-#~ msgstr "% Automatically generated"
+#~ msgid "Missing end quote"
+#~ msgstr "½ªÎ»¥¯¥ª¡¼¥È¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#~ msgid "% from input file: "
-#~ msgstr "% from input file: "
+#~ msgid "incorrect mudela version: %s (%s, %s)"
+#~ msgstr "´Ö°ã¤Ã¤¿ mudela ¥Ð¡¼¥¸¥ç¥ó: %s (%s, %s)"
 
 #~ msgid "write exact durations, e.g.: a4*385/384"
 #~ msgstr "Àµ³Î¤Ê²»Ä¹¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£Îã: a4*385/384"
 
-#~ msgid "enable debugging output"
-#~ msgstr "¥Ç¥Ð¥Ã¥°½ÐÎϤòÍ­¸ú"
-
-#, fuzzy
-#~ msgid "do not output tuplets, double dots or rests, smallest is 32"
-#~ msgstr "ÉäÅÀ¤äÊ£ÉäÅÀ¤ò¤Ê¤¯¤¹¤è¤¦»î¤ß¤Þ¤¹¡¢ºÇ¾®¤Ï 32"
+#~ msgid "don't output tuplets or double dots, smallest is 32"
+#~ msgstr "Ï¢Éä¤äÊ£ÉäÅÀ¤ò½ÐÎϤ·¤Ê¤¤¡¢ºÇ¾®¤Ï 32"
 
 #~ msgid "set FILE as default output"
 #~ msgstr "¥Ç¥Õ¥©¥ë¥È½ÐÎϤȤ·¤Æ FILE ¤òÀßÄꤹ¤ë"
 
+#~ msgid "don't output tuplets"
+#~ msgstr "Ï¢Éä¤ò½ÐÎϤ·¤Þ¤»¤ó"
+
 #~ msgid "be quiet"
 #~ msgstr "ÀŤ«¤Ë¤·¤Þ¤¹"
 
 #~ msgid "set smallest duration"
 #~ msgstr "²»Ä¹¤òºÇ¾®¤ËÀßÄꤷ¤Þ¤¹"
 
-#~ msgid "do not timestamp the output"
-#~ msgstr "½ÐÎϤ˥¿¥¤¥à¥¹¥¿¥ó¥×¤ò¤Ä¤±¤Ê¤¤"
-
 #~ msgid "assume no double dotted notes"
 #~ msgstr "Ê£ÉäÅÀ²»Éä¤ò̵¤¯¤¹¤è¤¦»î¤ß¤Þ¤¹"
 
-#~ msgid "Usage: %s [OPTIONS]... [FILE]"
-#~ msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]"
-
-#, fuzzy
-#~ msgid "Translate MIDI-file to lilypond"
+#~ msgid "Translate MIDI-file to mudela"
 #~ msgstr "MIDI ¥Õ¥¡¥¤¥ë¤ò mudela ¤ËÊÑ´¹¤·¤Þ¤¹"
 
 #~ msgid "zero length string encountered"
@@ -2858,8 +3134,7 @@ msgstr ""
 #~ msgid "invalid number of tracks"
 #~ msgstr "̵¸ú¤Ê¥È¥é¥Ã¥¯¿ô"
 
-#, fuzzy
-#~ msgid "cannot handle non-metrical time"
+#~ msgid "can't handle non-metrical time"
 #~ msgstr "±¤Î§¤Ë¤Ê¤é¤Ê¤¤Çï»Ò¤Ï°·¤¨¤Þ¤»¤ó"
 
 #~ msgid "Junking note-end event: channel = %d, pitch = %d"
@@ -2880,107 +3155,47 @@ msgstr ""
 #~ msgid "invalid track length"
 #~ msgstr "̵¸ú¤Ê¥È¥é¥Ã¥¯Ä¹¤Ç¤¹"
 
-#~ msgid "no Grace context available"
-#~ msgstr "Áõ¾þ¥³¥ó¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#~ msgid "Unattached grace notes.  Attaching to last musical column."
-#~ msgstr "Áõ¾þ²»É䤬¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£Ä¾Á°¤Î¥«¥é¥à¤Ë¤Ä¤±¤Þ¤¹"
-
-#, fuzzy
-#~ msgid "Fetching `%'s..."
-#~ msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'"
-
-#~ msgid "Wrong type for property value"
-#~ msgstr "°À­ÃͤؤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
-
-#, fuzzy
-#~ msgid "NAME"
-#~ msgstr "BASENAME"
-
-#~ msgid "not enough fields in Dstream init"
-#~ msgstr "Dstream ½é´ü²½»þ¤Î¥Õ¥£¡¼¥ë¥É¤¬ÉÔ½½Ê¬"
-
-#~ msgid "floating point exception"
-#~ msgstr "ÉâÆ°¾®¿ôÅÀÎã³°"
-
-#, fuzzy
-#~ msgid "cannot set mem-checking!"
-#~ msgstr "¥á¥â¥ê¥Á¥§¥Ã¥¯¤òÀßÄê¤Ç¤­¤Þ¤»¤ó"
-
-#, fuzzy
-#~ msgid "Dependency file left in `%s'"
-#~ msgstr "°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß: `%s'..."
-
-#, fuzzy
-#~ msgid "Report bugs to bug-gnu-music@gnu.org"
-#~ msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø"
-
-#, fuzzy
-#~ msgid "Usage: lilypond [OPTIONS]... FILE\n"
-#~ msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]"
-
-#~ msgid "unconventional key: flats: %d, sharps: %d"
-#~ msgstr "´·½¬¤Ë¹ç¤ï¤Ê¤¤¥­¡¼¤Ç¤¹: ¥Õ¥é¥Ã¥È: %d ¸Ä, ¥·¥ã¡¼¥× %d ¸Ä"
-
-#, fuzzy
-#~ msgid "not a forced distance; cross-staff spanners may be broken"
-#~ msgstr ""
-#~ "minVerticalAlign != maxVerticalAlign: ÆâÉôŪ¤Ê beams/slurs ¤¬²õ¤ì¤Þ¤·¤¿"
-
-#~ msgid "wrong identifier type, expected: `%s'"
-#~ msgstr "´Ö°ã¤Ã¤¿¼±Ê̻ҷ¿¡¢¤³¤³¤ËÍè¤ë¤Ù¤­¤â¤Î¤Ï: `%s'"
-
-#~ msgid "show all changes in relative syntax"
-#~ msgstr "´ØÏ¢¤¹¤ëʸˡ¤«¤éÁ´¤Æ¤ÎÊѹ¹¤òɽ¼¨"
-
-#~ msgid "switch on experimental features"
-#~ msgstr "¼Â¸³Åª¤Êµ¡Ç½¤òÍ­¸ú¤Ë¤¹¤ë"
-
-#~ msgid "Automatically generated"
-#~ msgstr "¼«Æ°À¸À®¤µ¤ì¤¿"
+#~ msgid "#32 in quarter: %d"
+#~ msgstr "»Íʬ¤ÎÃæ¤Ë #32: %d"
 
-#, fuzzy
-#~ msgid "Wrong type for property"
-#~ msgstr "°À­ÃͤؤΥ¿¥¤¥×¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+#~ msgid "track %d:"
+#~ msgstr "¥È¥é¥Ã¥¯ %d:"
 
-#~ msgid "too small"
-#~ msgstr "¾®¤µ¤¹¤®¤Þ¤¹"
+#~ msgid "track "
+#~ msgstr "¥È¥é¥Ã¥¯ "
 
-#~ msgid "Non-matching braces in text `%s', adding braces"
-#~ msgstr ""
-#~ "¥Æ¥­¥¹¥È `%s' Ãæ¤Ë°ìÃפ¹¤ë¥Ö¥ì¡¼¥¹¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ö¥ì¡¼¥¹¤òÄɲä·¤Þ¤¹"
+#~ msgid "NOT Filtering tempo..."
+#~ msgstr "¥Æ¥ó¥Ý¤Î¥Õ¥£¥ë¥¿¤ò¤·¤Þ¤»¤ó..."
 
-#~ msgid "Huh?  Not a Request: `%s'"
-#~ msgstr "¤Ï? Í×µá¤Ç¤Ï¤Ê¤¤: `%s'"
+#~ msgid "NOT Quantifying columns..."
+#~ msgstr "¥«¥é¥à¤ÎŤµ¤òÎ̤ê¤Þ¤»¤ó..."
 
-#~ msgid "Must stop before this music ends"
-#~ msgstr "¤³¤Î³Ú¶Ê¤Î½ª¤ï¤ê¤Þ¤Ç¤Ë»ß¤á¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+#~ msgid "Quantifying columns..."
+#~ msgstr "¥«¥é¥à¤ÎŤµ¤òÎ̤ê¤Þ¤¹..."
 
-#~ msgid "no one to print a volta bracket"
-#~ msgstr "volta ¥Ö¥é¥±¥Ã¥È¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
+#~ msgid "Settling columns..."
+#~ msgstr "¥«¥é¥à¤ò·èÄꤷ¤Þ¤¹..."
 
-#~ msgid "Interpretation context with empty type"
-#~ msgstr "¶õ¥¿¥¤¥×¤Î²ò¼á¥³¥ó¥Æ¥­¥¹¥È"
+#~ msgid "% MIDI copyright:"
+#~ msgstr "% MIDI copyright:"
 
-#~ msgid "No bar engraver found.  Ignoring repeats."
-#~ msgstr "¾®À᤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£È¿Éü¤ò̵»ë¤·¤Þ¤¹¡£"
+#~ msgid "% MIDI instrument:"
+#~ msgstr "% MIDI instrument:"
 
-#, fuzzy
-#~ msgid "cannot find both ends of %s"
-#~ msgstr "%s ¤Îξü¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+#~ msgid "lily indent level: %d"
+#~ msgstr "lily indent level: %d"
 
-#~ msgid "slur"
-#~ msgstr "¥¹¥é¡¼"
+#~ msgid "% Creator: "
+#~ msgstr "%s Creator: "
 
-#~ msgid "lost in time:"
-#~ msgstr "Çï»Ò¤Ë̤¤¤Þ¤·¤¿:"
+#~ msgid "% Automatically generated"
+#~ msgstr "% Automatically generated"
 
-#~ msgid "Need a translator group for a context"
-#~ msgstr "¥³¥ó¥Æ¥­¥¹¥È¤Ë¤Ï¥È¥é¥ó¥¹¥ì¡¼¥¿¥°¥ë¡¼¥×¤¬É¬ÍפǤ¹"
+#~ msgid "% from input file: "
+#~ msgstr "% from input file: "
 
 #~ msgid "Debug output disabled.  Compiled with NPRINT."
-#~ msgstr ""
-#~ "¥Ç¥Ð¥Ã¥°½ÐÎϤ¬Ìµ¸ú¤Ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£NPRINT ¤Ä¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿¡£"
+#~ msgstr "¥Ç¥Ð¥Ã¥°½ÐÎϤ¬Ìµ¸ú¤Ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£NPRINT ¤Ä¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿¡£"
 
 #~ msgid "programming warning: "
 #~ msgstr "¥×¥í¥°¥é¥à¾å¤Î·Ù¹ð: "
@@ -3003,9 +3218,6 @@ msgstr ""
 #~ msgid "Score does not have any columns"
 #~ msgstr "ÉèÌ̤˥«¥é¥à¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#~ msgid "approximated %s"
-#~ msgstr "¤ª¤ª¤è¤½ %s"
-
 #~ msgid "calculated %s exactly"
 #~ msgstr "Àµ³Î¤Ë·×»»¤µ¤ì¤¿ %s"
 
@@ -3027,40 +3239,25 @@ msgstr ""
 #~ msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
 #~ msgstr "Ineq_constrained_qp::solve (): À©¸Â¤ò %f ¤Ç²ò½ü"
 
-#~ msgid "Didnnot converge!"
+#~ msgid "Didn't converge!"
 #~ msgstr "¼ý«¤·¤Þ¤»¤ó¤Ç¤·¤¿!"
 
 #~ msgid "too much degeneracy"
 #~ msgstr "¾®¤µ¤¹¤®¤Þ¤¹"
 
-#~ msgid "No key name, assuming `C'"
-#~ msgstr "¥­¡¼Ì¾¤¬¤¢¤ê¤Þ¤»¤ó¡¢`C' ¤ò»î¤ß¤Þ¤¹"
-
-#~ msgid "underdone accidentals (%s)"
-#~ msgstr "¥Õ¥é¥Ã¥È¤¬Â¿¤¹¤®¤Þ¤¹ (%s)"
-
 #~ msgid "Huh?  Empty Line_of_score?"
 #~ msgstr "¤Ï? ÉèÌ̤ιԤ¬¶õ?"
 
-#~ msgid "out of tune:"
-#~ msgstr "Èϰϳ°¤ÎÄ´:"
-
-#~ msgid "ignore mudela version"
-#~ msgstr "mudela ¤Î¥Ð¡¼¥¸¥ç¥ó¤ò̵»ë¤¹¤ë"
-
 #~ msgid "redeclaration of `\\%s'"
 #~ msgstr "`\\%s' ¤ÎºÆÀë¸À"
 
 #~ msgid "Must set spring between differing columns"
 #~ msgstr "°Û¤Ê¤ë¥«¥é¥à¤Î´Ö¤Ë spring ¤ò¥»¥Ã¥È¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#~ msgid "not a real variable"
-#~ msgstr "Ãͤ¬¼Â¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
 #~ msgid "improbable offset for object type: `%s'"
 #~ msgstr "¥ª¥Ö¥¸¥§¥¯¥È·¿¤Ë¤È¤Ã¤Æ¤¢¤ê¤½¤¦¤Ë¤Ê¤¤¥ª¥Õ¥»¥Ã¥È: `%s'"
 
-#~ msgid "Cannot solve this casting problem exactly; reverting to Word_wrap"
+#~ msgid "Can't solve this casting problem exactly; reverting to Word_wrap"
 #~ msgstr "Àµ³Î¤Ë¥­¥ã¥¹¥È¤ò²ò·è¤Ç¤­¤Þ¤»¤ó -- Word_wrap ¤ËÉüµ¢¤·¤Þ¤¹"
 
 #~ msgid "%s elements"
@@ -3069,9 +3266,6 @@ msgstr ""
 #~ msgid "Left spanpoint is right spanpoint"
 #~ msgstr "ÈϰϤκ¸Â¦¤¬¡¢±¦Â¦¤Ë¤¢¤ê¤Þ¤¹"
 
-#~ msgid "Spanner `%s' has equal left and right spanpoints"
-#~ msgstr "ÈÏ°Ï»ØÄê»Ò `%s' ¤Îº¸±¦¤ÎÅÀ¤¬Æ±¤¸¤Ç¤¹"
-
 #~ msgid "spanner with negative length"
 #~ msgstr "ÈÏ°Ï»ØÄê»Ò¤¬Éé¤ÎŤµ¤Ç¤¹"
 
@@ -3111,7 +3305,7 @@ msgstr ""
 #~ msgid "Generating stupido solution"
 #~ msgstr "Çϼ¯¤²¤¿²ò·è¤òÀ¸À®Ãæ"
 
-#~ msgid "I do not fit; put me on Montignac"
+#~ msgid "I don't fit; put me on Montignac"
 #~ msgstr "¾å¼ê¤¯¤Ï¤Þ¤ê¤Þ¤»¤ó -- Montignac ¤Î¤È¤³¤í¤ËÃÖ¤¤¤Æ¤¯¤À¤µ¤¤"
 
 #~ msgid "More than one music block"
@@ -3120,10 +3314,10 @@ msgstr ""
 #~ msgid "Need even number of args for shape array"
 #~ msgstr "shape ÇÛÎó¤Ø¤Î°ú¿ô¤Ï¶ö¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#~ msgid "Cannot abbreviate"
+#~ msgid "Can't abbreviate"
 #~ msgstr "¾Êά¤Ç¤­¤Þ¤»¤ó"
 
-#~ msgid "Cannot abbreviate tuplet"
+#~ msgid "Can't abbreviate tuplet"
 #~ msgstr "¥¿¥×¥ì¥Ã¥È¤ò¾Êά¤Ç¤­¤Þ¤»¤ó"
 
 #~ msgid "assume no tuplets"
index add8a1dd6198fef08f760735f355ed957c7503f6..85b41ceb59e5c05f7d99bd37b9dac9b41ed25f1e 100644 (file)
@@ -4,9 +4,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.11.38\n"
+"Project-Id-Version: lilypond 2.11.39\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2008-01-30 10:02+0100\n"
+"POT-Creation-Date: 2008-02-14 15:55+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -28,56 +28,309 @@ msgstr ""
 msgid "%s has been replaced by %s"
 msgstr ""
 
-#: convertrules.py:96
+#: convertrules.py:24 musicexp.py:16 convert-ly.py:47 lilypond-book.py:82
+#: warn.cc:48 input.cc:90
+#, c-format, python-format
+msgid "warning: %s"
+msgstr ""
+
+#: convertrules.py:33 convertrules.py:103
+msgid "\\header { key = concat + with + operator }"
+msgstr ""
+
+#: convertrules.py:48
+#, python-format
+msgid "deprecated %s"
+msgstr ""
+
+#: convertrules.py:61
+msgid "deprecated \\textstyle, new \\key syntax"
+msgstr ""
+
+#: convertrules.py:80 convertrules.py:2124 convertrules.py:2337
+#: convertrules.py:2512 convertrules.py:2889
+msgid "bump version for release"
+msgstr ""
+
+#: convertrules.py:99
 msgid "new \\header format"
 msgstr ""
 
-#: convertrules.py:130
+#: convertrules.py:133
 msgid "\\translator syntax"
 msgstr ""
 
-#: convertrules.py:381
+#: convertrules.py:211
+msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
+msgstr ""
+
+#: convertrules.py:254 convertrules.py:828 convertrules.py:1584
+#: convertrules.py:2685
+#, python-format
+msgid "deprecate %s"
+msgstr ""
+
+#: convertrules.py:361
+#, python-format
+msgid "deprecate %s "
+msgstr ""
+
+#: convertrules.py:384
 msgid "new \\notenames format"
 msgstr ""
 
-#: convertrules.py:401 convertrules.py:428
+#: convertrules.py:404
 msgid "new tremolo format"
 msgstr ""
 
-#: convertrules.py:541
+#: convertrules.py:417
+msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
+msgstr ""
+
+#: convertrules.py:536
+msgid "change property definiton case (eg. onevoice -> oneVoice)"
+msgstr ""
+
+#: convertrules.py:544
 msgid "new \\textscript markup text"
 msgstr ""
 
-#: convertrules.py:1161
+#: convertrules.py:638
+#, python-format
+msgid "identifier names: %s"
+msgstr ""
+
+#: convertrules.py:679
+msgid "point-and-click argument changed to procedure."
+msgstr ""
+
+#: convertrules.py:739
+msgid "semicolons removed"
+msgstr ""
+
+#. 40 ?
+#: convertrules.py:795
+#, python-format
+msgid "%s property names"
+msgstr ""
+
+#: convertrules.py:865
+msgid "automaticMelismata turned on by default"
+msgstr ""
+
+#: convertrules.py:1131 convertrules.py:1893 convertrules.py:2166
+#: convertrules.py:2472
+#, python-format
+msgid "remove %s"
+msgstr ""
+
+#: convertrules.py:1164 convertrules.py:1173
 msgid "cluster syntax"
 msgstr ""
 
-#: convertrules.py:2408
-msgid "LilyPond source must be UTF-8"
+#: convertrules.py:1182
+msgid "new Pedal style syntax"
+msgstr ""
+
+#: convertrules.py:1451
+msgid ""
+"New relative mode,\n"
+"Postfix articulations, new text markup syntax, new chord syntax."
+msgstr ""
+
+#: convertrules.py:1475
+msgid "Remove - before articulation"
+msgstr ""
+
+#: convertrules.py:1515
+#, python-format
+msgid "%s misspelling"
+msgstr ""
+
+#: convertrules.py:1521
+msgid "attempting automatic \\figures conversion.  Check results!"
+msgstr ""
+
+#: convertrules.py:1550
+msgid "Swap < > and << >>"
+msgstr ""
+
+#: convertrules.py:1576
+msgid "Use Scheme code to construct arbitrary note events."
+msgstr ""
+
+#: convertrules.py:1609
+#, python-format
+msgid ""
+"\\outputproperty found,\n"
+"Please hand-edit, using\n"
+"\n"
+"  \\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY "
+"VALUE>)\n"
+"\n"
+"as a substitution text."
+msgstr ""
+
+#: convertrules.py:1623
+msgid ""
+"The alteration field of Scheme pitches was multiplied by 2\n"
+"to support quarter tone accidentals.  You must update the following "
+"constructs manually:\n"
+"\n"
+"* calls of ly:make-pitch and ly:pitch-alteration\n"
+"* keySignature settings made with \\property\n"
+msgstr ""
+
+#: convertrules.py:1633
+msgid ""
+"use symbolic constants for alterations,\n"
+"remove \\outputproperty, move ly:verbose into ly:get-option"
+msgstr ""
+
+#: convertrules.py:1692
+msgid "removal of automaticMelismata; use melismaBusyProperties instead."
+msgstr ""
+
+#: convertrules.py:1807
+msgid "\\partcombine syntax change to \\newpartcombine"
+msgstr ""
+
+#: convertrules.py:1824
+msgid "Drums found. Enclose drum notes in \\drummode"
+msgstr ""
+
+#: convertrules.py:1835 convertrules.py:1842 convertrules.py:1853
+#, python-format
+msgid ""
+"\n"
+"%s found. Check file manually!\n"
+msgstr ""
+
+#: convertrules.py:1835
+msgid "Drum notation"
+msgstr ""
+
+#: convertrules.py:1863
+msgid ""
+"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
+"Harmonic notes. Thread context removed. Lyrics context removed."
+msgstr ""
+
+#: convertrules.py:1924
+msgid "new syntax for property settings:"
+msgstr ""
+
+#: convertrules.py:1957
+msgid "Property setting syntax in \\translator{ }"
+msgstr ""
+
+#: convertrules.py:1978
+#, python-format
+msgid "use %s"
+msgstr ""
+
+#: convertrules.py:1995
+msgid "Scheme grob function renaming"
+msgstr ""
+
+#: convertrules.py:2008
+msgid "More Scheme function renaming"
+msgstr ""
+
+#: convertrules.py:2140
+msgid ""
+"Page layout has been changed, using paper size and margins.\n"
+"textheight is no longer used.\n"
+msgstr ""
+
+#: convertrules.py:2259
+msgid ""
+"\\foo -> \\foomode (for chords, notes, etc.)\n"
+"fold \\new FooContext \\foomode into \\foo."
+msgstr ""
+
+#: convertrules.py:2285
+msgid ""
+"staff size should be changed at top-level\n"
+"with\n"
+"\n"
+"  #(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)\n"
+"\n"
+msgstr ""
+
+#: convertrules.py:2320
+msgid "regularize other identifiers"
 msgstr ""
 
 #: convertrules.py:2411
-msgid "Try the texstrings backend"
+msgid "LilyPond source must be UTF-8"
 msgstr ""
 
 #: convertrules.py:2414
+msgid "Try the texstrings backend"
+msgstr ""
+
+#: convertrules.py:2417
 #, python-format
 msgid "Do something like: %s"
 msgstr ""
 
-#: convertrules.py:2417
+#: convertrules.py:2420
 msgid "Or save as UTF-8 in your editor"
 msgstr ""
 
-#: convertrules.py:2482
+#: convertrules.py:2452
+msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
+msgstr ""
+
+#: convertrules.py:2485
 msgid "auto beam settings"
 msgstr ""
 
-#: convertrules.py:2974
+#: convertrules.py:2487
+msgid ""
+"\n"
+"Auto beam settings must now specify each interesting moment in a measure\n"
+"explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n"
+msgstr ""
+
+#: convertrules.py:2498
+msgid "warn about auto beam settings"
+msgstr ""
+
+#: convertrules.py:2624
+msgid "verticalAlignmentChildCallback has been deprecated"
+msgstr ""
+
+#: convertrules.py:2652
+msgid "Remove callbacks property, deprecate XY-extent-callback."
+msgstr ""
+
+#: convertrules.py:2663
+msgid "Use grob closures iso. XY-offset-callbacks."
+msgstr ""
+
+#: convertrules.py:2770
+msgid "foobar -> foo-bar for \\paper, \\layout"
+msgstr ""
+
+#: convertrules.py:2877
+msgid "deprecate \\tempo in \\midi"
+msgstr ""
+
+#: convertrules.py:2912
+msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
+msgstr ""
+
+#: convertrules.py:2941
+msgid "Rename accidental glyphs, use glyph-name-alist."
+msgstr ""
+
+#: convertrules.py:2973
 msgid "edge-text settings for TextSpanner."
 msgstr ""
 
-#: convertrules.py:2975
+#: convertrules.py:2974
 #, python-format
 msgid ""
 "Use\n"
@@ -85,18 +338,22 @@ msgid ""
 "%s"
 msgstr ""
 
-#: convertrules.py:3021
+#: convertrules.py:3020
 msgid "all settings related to dashed lines.\n"
 msgstr ""
 
-#: convertrules.py:3022
+#: convertrules.py:3021
 msgid "Use \\override ... #'style = #'line for solid lines and\n"
 msgstr ""
 
-#: convertrules.py:3023
+#: convertrules.py:3022
 msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
 msgstr ""
 
+#: convertrules.py:3027
+msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
+msgstr ""
+
 #: fontextract.py:26
 #, python-format
 msgid "Scanning %s"
@@ -112,47 +369,91 @@ msgstr ""
 msgid "Writing fonts to %s"
 msgstr ""
 
-#: lilylib.py:85 lilylib.py:136
+#: lilylib.py:102 lilylib.py:153
 #, python-format
 msgid "Invoking `%s'"
 msgstr ""
 
-#: lilylib.py:87 lilylib.py:138
+#: lilylib.py:104 lilylib.py:155
 #, python-format
 msgid "Running %s..."
 msgstr ""
 
-#: lilylib.py:203
+#: lilylib.py:220
 #, python-format
 msgid "Usage: %s"
 msgstr ""
 
-#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:110 midi2ly.py:858
+#: musicexp.py:577
+#, python-format
+msgid "unable to set the music %(music)s for the repeat %(repeat)s"
+msgstr ""
+
+#: musicexp.py:586
+msgid "encountered repeat without body"
+msgstr ""
+
+#: musicxml.py:13 convert-ly.py:50 lilypond-book.py:85 warn.cc:54 input.cc:96
+#: input.cc:104
+#, c-format, python-format
+msgid "error: %s"
+msgstr ""
+
+#: musicxml.py:272
+msgid "requested time signature, but time sig is unknown"
+msgstr ""
+
+#: musicxml.py:338
+#, python-format
+msgid "Encountered note at %s with %s duration (no <type> element):"
+msgstr ""
+
+#: musicxml.py:372
+#, python-format
+msgid "Unable to find find instrument for ID=%s\n"
+msgstr ""
+
+#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:109 midi2ly.py:849
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr ""
 
-#: abc2ly.py:1344
+#: abc2ly.py:1343
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
 "%s) to LilyPond input."
 msgstr ""
 
-#: abc2ly.py:1348 etf2ly.py:1184 midi2ly.py:874
+#: abc2ly.py:1350 convert-ly.py:78 etf2ly.py:1190 lilypond-book.py:175
+#: midi2ly.py:885 musicxml2ly.py:1824 main.cc:161
+msgid "show version number and exit"
+msgstr ""
+
+#: abc2ly.py:1354 convert-ly.py:82 etf2ly.py:1186 lilypond-book.py:125
+#: midi2ly.py:864 musicxml2ly.py:1808 main.cc:150
+msgid "show this help and exit"
+msgstr ""
+
+#: abc2ly.py:1356 etf2ly.py:1191 midi2ly.py:868
 msgid "write output to FILE"
 msgstr ""
 
-#: abc2ly.py:1350
+#: abc2ly.py:1358
 msgid "be strict about succes"
 msgstr ""
 
-#: abc2ly.py:1352
+#: abc2ly.py:1360
 msgid "preserve ABC's notion of beams"
 msgstr ""
 
-#: abc2ly.py:1354 convert-ly.py:103 etf2ly.py:1192 lilypond-book.py:161
-#: midi2ly.py:900 musicxml2ly.py:1682
+#: abc2ly.py:1361 convert-ly.py:111 etf2ly.py:1198 lilypond-book.py:180
+#: midi2ly.py:897 musicxml2ly.py:1872
+msgid "Bugs"
+msgstr ""
+
+#: abc2ly.py:1362 convert-ly.py:112 etf2ly.py:1199 lilypond-book.py:181
+#: midi2ly.py:898 musicxml2ly.py:1873
 msgid "Report bugs via"
 msgstr ""
 
@@ -166,71 +467,61 @@ msgstr ""
 msgid "Examples:"
 msgstr ""
 
-#: convert-ly.py:47 lilypond-book.py:83 warn.cc:48 input.cc:90
-#, c-format, python-format
-msgid "warning: %s"
-msgstr ""
-
-#: 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 ""
-
-#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:106 midi2ly.py:87
+#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:105 midi2ly.py:79
 msgid "Distributed under terms of the GNU General Public License."
 msgstr ""
 
-#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:107 midi2ly.py:88
+#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:106 midi2ly.py:80
 msgid "It comes with NO WARRANTY."
 msgstr ""
 
-#: convert-ly.py:77 convert-ly.py:97
+#: convert-ly.py:86 convert-ly.py:106
 msgid "VERSION"
 msgstr ""
 
-#: convert-ly.py:79
+#: convert-ly.py:88
 msgid "start from VERSION [default: \\version found in file]"
 msgstr ""
 
-#: convert-ly.py:82
+#: convert-ly.py:91
 msgid "edit in place"
 msgstr ""
 
-#: convert-ly.py:85
+#: convert-ly.py:94
 msgid "do not add \\version command if missing"
 msgstr ""
 
-#: convert-ly.py:91
+#: convert-ly.py:100
 msgid "show rules [default: --from=0, --to=@TOPLEVEL_VERSION@]"
 msgstr ""
 
-#: convert-ly.py:96
+#: convert-ly.py:105
 msgid "convert to VERSION [default: @TOPLEVEL_VERSION@]"
 msgstr ""
 
-#: convert-ly.py:144
+#: convert-ly.py:153
 msgid "Applying conversion: "
 msgstr ""
 
-#: convert-ly.py:157
+#: convert-ly.py:166
 msgid "Error while converting"
 msgstr ""
 
-#: convert-ly.py:159
+#: convert-ly.py:168
 msgid "Stopping at last succesful rule"
 msgstr ""
 
-#: convert-ly.py:181
+#: convert-ly.py:190
 #, python-format
 msgid "Processing `%s'... "
 msgstr ""
 
-#: convert-ly.py:268 relocate.cc:362 source-file.cc:54
+#: convert-ly.py:277 relocate.cc:362 source-file.cc:54
 #, c-format, python-format
 msgid "cannot open file: `%s'"
 msgstr ""
 
-#: convert-ly.py:275
+#: convert-ly.py:284
 #, python-format
 msgid "cannot determine version for `%s'.  Skipping"
 msgstr ""
@@ -240,18 +531,18 @@ msgstr ""
 msgid "%s [OPTION]... ETF-FILE"
 msgstr ""
 
-#: etf2ly.py:1182
+#: etf2ly.py:1181
 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."
 msgstr ""
 
-#: etf2ly.py:1185 midi2ly.py:875 musicxml2ly.py:1675 main.cc:154 main.cc:159
+#: etf2ly.py:1192 midi2ly.py:869 musicxml2ly.py:1866 main.cc:154 main.cc:159
 msgid "FILE"
 msgstr ""
 
-#: etf2ly.py:1187 lilypond-book.py:158 midi2ly.py:888 main.cc:163
+#: etf2ly.py:1194 lilypond-book.py:178 midi2ly.py:886 main.cc:163
 msgid "show warranty and copyright"
 msgstr ""
 
@@ -269,16 +560,16 @@ msgstr ""
 msgid "Exiting (%d)..."
 msgstr ""
 
-#: lilypond-book.py:104
+#: lilypond-book.py:103
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr ""
 
-#: lilypond-book.py:114
+#: lilypond-book.py:113
 msgid "FILTER"
 msgstr ""
 
-#: lilypond-book.py:117
+#: lilypond-book.py:116
 msgid "pipe snippets through FILTER [convert-ly -n -]"
 msgstr ""
 
@@ -287,239 +578,317 @@ msgid ""
 "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
 msgstr ""
 
-#: lilypond-book.py:123
+#: lilypond-book.py:127
 msgid "add DIR to include path"
 msgstr ""
 
-#: lilypond-book.py:124 lilypond-book.py:136 main.cc:153
+#: lilypond-book.py:128 lilypond-book.py:135 lilypond-book.py:147 main.cc:153
 msgid "DIR"
 msgstr ""
 
-#: lilypond-book.py:129
+#: lilypond-book.py:133
+msgid "format Texinfo output so that Info will look for images of music in DIR"
+msgstr ""
+
+#: lilypond-book.py:140
 msgid "PAD"
 msgstr ""
 
-#: lilypond-book.py:135
+#: lilypond-book.py:142
+msgid ""
+"pad left side of music to align music inspite of uneven bar numbers (in mm)"
+msgstr ""
+
+#: lilypond-book.py:146
 msgid "write output to DIR"
 msgstr ""
 
-#: lilypond-book.py:140
+#: lilypond-book.py:151
 msgid "COMMAND"
 msgstr ""
 
-#: lilypond-book.py:141
+#: lilypond-book.py:152
 msgid "process ly_files using COMMAND FILE..."
 msgstr ""
 
-#: lilypond-book.py:147
-msgid "Create PDF files for use with PDFTeX"
+#: lilypond-book.py:159
+msgid "create PDF files for use with PDFTeX"
 msgstr ""
 
-#: lilypond-book.py:150
+#: lilypond-book.py:163
 msgid ""
 "extract all PostScript fonts into INPUT.psfonts for LaTeX\n"
 "must use this with dvips -h INPUT.psfonts"
 msgstr ""
 
-#: lilypond-book.py:153 midi2ly.py:885 musicxml2ly.py:1645 main.cc:162
+#: lilypond-book.py:167 midi2ly.py:879 musicxml2ly.py:1829 main.cc:162
 msgid "be verbose"
 msgstr ""
 
-#: lilypond-book.py:768
+#: lilypond-book.py:788
 #, python-format
 msgid "file not found: %s"
 msgstr ""
 
-#: lilypond-book.py:1002
+#: lilypond-book.py:1022
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr ""
 
-#: lilypond-book.py:1005
+#: lilypond-book.py:1025
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr ""
 
-#: lilypond-book.py:1009
+#: lilypond-book.py:1029
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr ""
 
-#: lilypond-book.py:1012
+#: lilypond-book.py:1032
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr ""
 
-#: lilypond-book.py:1031
+#: lilypond-book.py:1051
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr ""
 
-#: lilypond-book.py:1401
+#: lilypond-book.py:1422
 #, python-format
 msgid "Opening filter `%s'"
 msgstr ""
 
-#: lilypond-book.py:1418
+#: lilypond-book.py:1439
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr ""
 
-#: lilypond-book.py:1419
+#: lilypond-book.py:1440
 msgid "The error log is as follows:"
 msgstr ""
 
-#: lilypond-book.py:1491
+#: lilypond-book.py:1512
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr ""
 
-#: lilypond-book.py:1602
+#: lilypond-book.py:1623
 msgid "Writing snippets..."
 msgstr ""
 
-#: lilypond-book.py:1607
+#: lilypond-book.py:1628
 msgid "Processing..."
 msgstr ""
 
-#: lilypond-book.py:1611
+#: lilypond-book.py:1632
 msgid "All snippets are up to date..."
 msgstr ""
 
-#: lilypond-book.py:1621
+#: lilypond-book.py:1642
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr ""
 
-#: lilypond-book.py:1632
+#: lilypond-book.py:1653
 #, python-format
 msgid "%s is up to date."
 msgstr ""
 
-#: lilypond-book.py:1638
+#: lilypond-book.py:1659
 #, python-format
 msgid "Writing `%s'..."
 msgstr ""
 
-#: lilypond-book.py:1693
+#: lilypond-book.py:1714
 msgid "Output would overwrite input file; use --output."
 msgstr ""
 
-#: lilypond-book.py:1697
+#: lilypond-book.py:1718
 #, python-format
 msgid "Reading %s..."
 msgstr ""
 
-#: lilypond-book.py:1716
+#: lilypond-book.py:1737
 msgid "Dissecting..."
 msgstr ""
 
-#: lilypond-book.py:1732
+#: lilypond-book.py:1753
 #, python-format
 msgid "Compiling %s..."
 msgstr ""
 
-#: lilypond-book.py:1741
+#: lilypond-book.py:1762
 #, python-format
 msgid "Processing include: %s"
 msgstr ""
 
-#: lilypond-book.py:1755
+#: lilypond-book.py:1776
 #, python-format
 msgid "Removing `%s'"
 msgstr ""
 
-#: lilypond-book.py:1788
+#: lilypond-book.py:1809
 msgid "option --psfonts not used"
 msgstr ""
 
-#: lilypond-book.py:1789
+#: lilypond-book.py:1810
 msgid "processing with dvips will have no fonts"
 msgstr ""
 
-#: lilypond-book.py:1792
+#: lilypond-book.py:1813
 msgid "DVIPS usage:"
 msgstr ""
 
-#: lilypond-book.py:1848
+#: lilypond-book.py:1869
 #, python-format
 msgid "Writing fonts to %s..."
 msgstr ""
 
-#: midi2ly.py:95 lily-library.scm:615 lily-library.scm:624
+#: midi2ly.py:87 lily-library.scm:615 lily-library.scm:624
 msgid "warning: "
 msgstr ""
 
-#: midi2ly.py:98 midi2ly.py:913
+#: midi2ly.py:90 midi2ly.py:911
 msgid "error: "
 msgstr ""
 
-#: midi2ly.py:99
-msgid "Exiting ... "
+#: midi2ly.py:91
+msgid "Exiting... "
 msgstr ""
 
-#: midi2ly.py:846
+#: midi2ly.py:837
 #, python-format
 msgid "%s output to `%s'..."
 msgstr ""
 
-#: midi2ly.py:860 musicxml2ly.py:1641
+#: midi2ly.py:850 musicxml2ly.py:1803
 #, python-format
 msgid "Convert %s to LilyPond input."
 msgstr ""
 
-#: midi2ly.py:864
+#: midi2ly.py:855
 msgid "print absolute pitches"
 msgstr ""
 
-#: midi2ly.py:866 midi2ly.py:878
+#: midi2ly.py:857 midi2ly.py:872
 msgid "DUR"
 msgstr ""
 
-#: midi2ly.py:867
+#: midi2ly.py:858
 msgid "quantise note durations on DUR"
 msgstr ""
 
-#: midi2ly.py:870
+#: midi2ly.py:861
 msgid "print explicit durations"
 msgstr ""
 
-#: midi2ly.py:871
+#: midi2ly.py:865
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
 msgstr ""
 
-#: midi2ly.py:872
+#: midi2ly.py:866
 msgid "ALT[:MINOR]"
 msgstr ""
 
-#: midi2ly.py:877
+#: midi2ly.py:871
 msgid "quantise note starts on DUR"
 msgstr ""
 
-#: midi2ly.py:880
+#: midi2ly.py:874
 msgid "DUR*NUM/DEN"
 msgstr ""
 
-#: midi2ly.py:883
+#: midi2ly.py:877
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr ""
 
-#: midi2ly.py:891
+#: midi2ly.py:889
 msgid "treat every text as a lyric"
 msgstr ""
 
-#: midi2ly.py:894
+#: midi2ly.py:892
 msgid "Examples"
 msgstr ""
 
-#: midi2ly.py:914
+#: midi2ly.py:912
 msgid "no files specified on command line."
 msgstr ""
 
-#: musicxml2ly.py:1628
+#: musicxml2ly.py:193 musicxml2ly.py:195
+#, python-format
+msgid "Unprocessed PartGroupInfo %s encountered"
+msgstr ""
+
+#: musicxml2ly.py:426
+#, python-format
+msgid ""
+"Encountered rational duration with denominator %s, unable to convert to "
+"lilypond duration"
+msgstr ""
+
+#: musicxml2ly.py:609
+#, python-format
+msgid "unknown mode %s, expecting 'major' or 'minor'"
+msgstr ""
+
+#: musicxml2ly.py:647
+#, python-format
+msgid "Encountered unprocessed marker %s\n"
+msgstr ""
+
+#: musicxml2ly.py:741
+#, python-format
+msgid "unknown span event %s"
+msgstr ""
+
+#: musicxml2ly.py:751
+#, python-format
+msgid "unknown span type %s for %s"
+msgstr ""
+
+#: musicxml2ly.py:1259
+#, python-format
+msgid "drum %s type unknown, please add to instrument_drumtype_dict"
+msgstr ""
+
+#: musicxml2ly.py:1263
+msgid "cannot find suitable event"
+msgstr ""
+
+#: musicxml2ly.py:1346
+#, python-format
+msgid "Negative skip %s"
+msgstr ""
+
+#: musicxml2ly.py:1480
+#, python-format
+msgid "Negative skip found: from %s to %s, difference is %s"
+msgstr ""
+
+#: musicxml2ly.py:1505
+#, python-format
+msgid "unexpected %s; expected %s or %s or %s"
+msgstr ""
+
+#: musicxml2ly.py:1583
+msgid "cannot have two simultaneous slurs"
+msgstr ""
+
+#: musicxml2ly.py:1711
+#, python-format
+msgid "cannot simultaneously have more than one mode: %s"
+msgstr ""
+
+#: musicxml2ly.py:1791
+msgid "Converting to LilyPond expressions..."
+msgstr ""
+
+#: musicxml2ly.py:1802
 msgid "musicxml2ly [options] FILE.xml"
 msgstr ""
 
-#: musicxml2ly.py:1631
+#: musicxml2ly.py:1812
 #, python-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -528,30 +897,65 @@ msgid ""
 "information."
 msgstr ""
 
-#: musicxml2ly.py:1651
-msgid "Use lxml.etree; uses less memory and cpu time."
+#: musicxml2ly.py:1835
+msgid "use lxml.etree; uses less memory and cpu time"
 msgstr ""
 
-#: musicxml2ly.py:1657
-msgid "Input file is a zip-compressed MusicXML file."
+#: musicxml2ly.py:1841
+msgid "input file is a zip-compressed MusicXML file"
 msgstr ""
 
-#: musicxml2ly.py:1662
-msgid "Convert pitches in relative mode."
+#: musicxml2ly.py:1847
+msgid "convert pitches in relative mode (default)"
 msgstr ""
 
-#: musicxml2ly.py:1666
-msgid "Use a different language file, e.g. 'deutsch' for deutsch.ly."
+#: musicxml2ly.py:1852
+msgid "convert pitches in absolute mode"
 msgstr ""
 
-#: musicxml2ly.py:1672
-msgid "Do not convert directions (^, _ or -) for articulations."
+#: musicxml2ly.py:1855
+msgid "LANG"
 msgstr ""
 
-#: musicxml2ly.py:1680
+#: musicxml2ly.py:1857
+msgid ""
+"use a different language file 'LANG.ly' and corresponding pitch names, e.g. "
+"'deutsch' for deutsch.ly"
+msgstr ""
+
+#: musicxml2ly.py:1863
+msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
+msgstr ""
+
+#: musicxml2ly.py:1871
 msgid "set output filename to FILE"
 msgstr ""
 
+#: musicxml2ly.py:1929
+#, python-format
+msgid "unknown part in part-list: %s"
+msgstr ""
+
+#: musicxml2ly.py:1985
+#, python-format
+msgid "Input file %s is compressed, extracting raw MusicXML data"
+msgstr ""
+
+#: musicxml2ly.py:2011
+#, python-format
+msgid "Reading MusicXML from %s ..."
+msgstr ""
+
+#: musicxml2ly.py:2039 musicxml2ly.py:2053
+#, python-format
+msgid "Output to `%s'"
+msgstr ""
+
+#: musicxml2ly.py:2096
+#, python-format
+msgid "Unable to find input file %s"
+msgstr ""
+
 #: getopt-long.cc:140
 #, c-format
 msgid "option `%s' requires an argument"
@@ -950,16 +1354,16 @@ msgstr ""
 msgid "alteration not found"
 msgstr ""
 
-#: ligature-engraver.cc:93
+#: ligature-bracket-engraver.cc:62 ligature-engraver.cc:93
 msgid "cannot find start of ligature"
 msgstr ""
 
-#: ligature-engraver.cc:98
-msgid "no right bound"
+#: ligature-bracket-engraver.cc:75 ligature-engraver.cc:120
+msgid "already have a ligature"
 msgstr ""
 
-#: ligature-engraver.cc:120
-msgid "already have a ligature"
+#: ligature-engraver.cc:98
+msgid "no right bound"
 msgstr ""
 
 #: ligature-engraver.cc:129
@@ -1126,10 +1530,6 @@ msgstr ""
 msgid "generate TeX (tex backend only)"
 msgstr ""
 
-#: main.cc:150
-msgid "show this help and exit"
-msgstr ""
-
 #: main.cc:151
 msgid "FIELD"
 msgstr ""
@@ -1166,10 +1566,6 @@ msgstr ""
 msgid "relocate using directory of lilypond program"
 msgstr ""
 
-#: main.cc:161
-msgid "show version number and exit"
-msgstr ""
-
 #: main.cc:203
 #, c-format
 msgid ""
@@ -1746,12 +2142,12 @@ msgstr ""
 msgid "weird stem size, check for narrow beams"
 msgstr ""
 
-#: stem.cc:623
+#: stem.cc:627
 #, c-format
 msgid "flag `%s' not found"
 msgstr ""
 
-#: stem.cc:634
+#: stem.cc:638
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr ""
index 79da79f6dbf75a14c9d8b744f223d8b066cf415a..7673a989f6c91ae21ba4cdde8901d7c68d3da3dc 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,20 +1,21 @@
 # Vietnamese translation for Lilypond.
-# Copyright © 2007 Free Software Foundation, Inc.
-# Clytie Siddall <clytie@riverland.net.au>, 2007
+# Copyright © 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the lilypond-2.11.39 package.
+# Clytie Siddall <clytie@riverland.net.au>, 2007-2008.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.11.34\n"
+"Project-Id-Version: lilypond 2.11.39\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2007-10-04 17:07+0200\n"
-"PO-Revision-Date: 2007-10-06 22:34+0930\n"
+"POT-Creation-Date: 2008-02-14 15:55+0100\n"
+"PO-Revision-Date: 2008-02-15 20:55+1030\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: LocFactoryEditor 1.7b1\n"
+"X-Generator: LocFactoryEditor 1.7b3\n"
 
 #: convertrules.py:12
 #, python-format
@@ -30,22 +31,368 @@ msgstr "Xem sổ tay để tìm chi tiết, và tự cập nhật."
 msgid "%s has been replaced by %s"
 msgstr "%s đã bị thay thế bằng %s"
 
-#: convertrules.py:2408
+#: convertrules.py:24 musicexp.py:16 convert-ly.py:47 lilypond-book.py:82
+#: warn.cc:48 input.cc:90
+#, c-format, python-format
+msgid "warning: %s"
+msgstr "cảnh báo : %s"
+
+#: convertrules.py:33 convertrules.py:103
+msgid "\\header { key = concat + with + operator }"
+msgstr "\\header (phần đầu) { khoá = nối_chuỗi + với + toán tử }"
+
+#: convertrules.py:48
+#, python-format
+msgid "deprecated %s"
+msgstr "bị phản đối %s"
+
+#: convertrules.py:61
+msgid "deprecated \\textstyle, new \\key syntax"
+msgstr "\\textstyle (kiểu dáng văn bản) bị phản đối, cú pháp \\key (khoá) mới"
+
+#: convertrules.py:80 convertrules.py:2124 convertrules.py:2337
+#: convertrules.py:2512 convertrules.py:2889
+msgid "bump version for release"
+msgstr "đụng mạnh phiên bản để phát hành"
+
+#: convertrules.py:99
+msgid "new \\header format"
+msgstr "định dạng \\header (phần đầu) mới"
+
+#: convertrules.py:133
+msgid "\\translator syntax"
+msgstr "cú pháp \\translator (dịch giả)"
+
+#: convertrules.py:211
+msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
+msgstr "\\repeat (lặp lại) SỐ âm nhạc xen kẽ -> \\repeat FOLDSTR âm nhạc xen kẽ"
+
+#: convertrules.py:254 convertrules.py:828 convertrules.py:1584
+#: convertrules.py:2685
+#, python-format
+msgid "deprecate %s"
+msgstr "phản đối %s"
+
+#: convertrules.py:361
+#, python-format
+msgid "deprecate %s "
+msgstr "phản đối %s "
+
+#: convertrules.py:384
+msgid "new \\notenames format"
+msgstr "định dạng \\notenames (tên ghi chú) mới"
+
+#: convertrules.py:404
+msgid "new tremolo format"
+msgstr "định dạng tiếng vê mới"
+
+#: convertrules.py:417
+msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
+msgstr "Staff_margin_engraver bị phản đối nên dùng Instrument_name_engraver"
+
+#: convertrules.py:536
+msgid "change property definiton case (eg. onevoice -> oneVoice)"
+msgstr "chuyển đổi chữ hoa/thường của lời xác định thuộc tính (v.d. onevoice -> oneVoice)"
+
+#: convertrules.py:544
+msgid "new \\textscript markup text"
+msgstr "văn bản đánh dấu \\textscript (văn lệnh văn bản) mới"
+
+#: convertrules.py:638
+#, python-format
+msgid "identifier names: %s"
+msgstr "tên bộ nhận diện: %s"
+
+#: convertrules.py:679
+msgid "point-and-click argument changed to procedure."
+msgstr "đối số trỏ-và-nhấn-chuột đã thay đổi thành thủ tục."
+
+#: convertrules.py:739
+msgid "semicolons removed"
+msgstr "các dấu chấm phẩy bị gỡ bỏ"
+
+#. 40 ?
+#: convertrules.py:795
+#, python-format
+msgid "%s property names"
+msgstr "các tên thuộc tính %s"
+
+#: convertrules.py:865
+msgid "automaticMelismata turned on by default"
+msgstr "automaticMelismata được bật theo mặc định"
+
+#: convertrules.py:1131 convertrules.py:1893 convertrules.py:2166
+#: convertrules.py:2472
+#, python-format
+msgid "remove %s"
+msgstr "gỡ bỏ %s"
+
+#: convertrules.py:1164 convertrules.py:1173
+msgid "cluster syntax"
+msgstr "cú pháp chùm"
+
+#: convertrules.py:1182
+msgid "new Pedal style syntax"
+msgstr "cú pháp kiểu dáng bàn đạp mới"
+
+#: convertrules.py:1451
+msgid ""
+"New relative mode,\n"
+"Postfix articulations, new text markup syntax, new chord syntax."
+msgstr ""
+"Chế độ tương đối mới.\n"
+"Sự nối bằng khớp Postfix, cú pháp đánh dấu văn bản mới, cú pháp hợp âm mới."
+
+#: convertrules.py:1475
+msgid "Remove - before articulation"
+msgstr "Gỡ bỏ dấu trừ phía trước sự nối bằng khớp"
+
+#: convertrules.py:1515
+#, python-format
+msgid "%s misspelling"
+msgstr "Sai chính tả %s"
+
+#: convertrules.py:1521
+msgid "attempting automatic \\figures conversion.  Check results!"
+msgstr "đang thử tự động chuyển đổi các \\figures (hình). Hãy kiểm tra kết quả."
+
+#: convertrules.py:1550
+msgid "Swap < > and << >>"
+msgstr "Trao đổi < > với << >>"
+
+#: convertrules.py:1576
+msgid "Use Scheme code to construct arbitrary note events."
+msgstr "Dùng mã Scheme để cấu táo các dữ kiện ghi chú tùy ý."
+
+#: convertrules.py:1609
+#, python-format
+msgid ""
+"\\outputproperty found,\n"
+"Please hand-edit, using\n"
+"\n"
+"  \\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)\n"
+"\n"
+"as a substitution text."
+msgstr ""
+"\\outputproperty (thuộc tính ra) đã tìm thấy,\n"
+"Bạn hãy tự chỉnh sửa, dùng\n"
+"\n"
+"  \\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)\n"
+"\n"
+"như là chuỗi thay thế."
+
+#: convertrules.py:1623
+msgid ""
+"The alteration field of Scheme pitches was multiplied by 2\n"
+"to support quarter tone accidentals.  You must update the following constructs manually:\n"
+"\n"
+"* calls of ly:make-pitch and ly:pitch-alteration\n"
+"* keySignature settings made with \\property\n"
+msgstr ""
+"Trường sửa đổi của các độ cao giọng Scheme đã được nhân lên 2\n"
+"để hỗ trợ các dấu thăng giáng âm phần tư.\n"
+"Bạn cần phải tự cập nhật những bộ tạo dựng này:\n"
+"* lời gọi kiểu ly:make-pitch và ly:pitch-alteration\n"
+"* thiết lập keySignature (chìa khoá) được làm với \\property (thuộc tính)\n"
+
+#: convertrules.py:1633
+msgid ""
+"use symbolic constants for alterations,\n"
+"remove \\outputproperty, move ly:verbose into ly:get-option"
+msgstr ""
+"dùng các hằng số tượng trưng để sửa đổi,\n"
+"gỡ bỏ \\outputproperty (thuộc tính ra),\n"
+"chuyển ly:verbose vào ly:get-option"
+
+#: convertrules.py:1692
+msgid "removal of automaticMelismata; use melismaBusyProperties instead."
+msgstr "gỡ bỏ automaticMelismata; thay thế bằng melismaBusyProperties."
+
+#: convertrules.py:1807
+msgid "\\partcombine syntax change to \\newpartcombine"
+msgstr "cú pháp \\partcombine (kết hợp các phần) thay đổi thành \\newpartcombine"
+
+#: convertrules.py:1824
+msgid "Drums found. Enclose drum notes in \\drummode"
+msgstr "Tìm thấy cái trống. Bao bọc các nốt tiếng trống trong \\drummode (chế độ cái trống)"
+
+#: convertrules.py:1835 convertrules.py:1842 convertrules.py:1853
+#, python-format
+msgid ""
+"\n"
+"%s found. Check file manually!\n"
+msgstr ""
+"\n"
+"%s tìm thấy. Bạn hãy tự kiểm tra tập tin.\n"
+
+#: convertrules.py:1835
+msgid "Drum notation"
+msgstr "Kiểu ghi cái trống"
+
+#: convertrules.py:1863
+msgid ""
+"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
+"Harmonic notes. Thread context removed. Lyrics context removed."
+msgstr ""
+"Kiểu ghi cái trống cứ thay đổi. Đang gỡ bỏ các:\n"
+" • \\chordmodifiers (bộ sửa đổi hợp âm)\n"
+" • \\notenames (tên nốt)\n"
+" • nốt hoà âm\n"
+" • ngữ cảnh nhánh\n"
+" • ngữ cảnh lời nhạc."
+
+#: convertrules.py:1924
+msgid "new syntax for property settings:"
+msgstr "cú pháp mới cho thiết lập thuộc tính:"
+
+#: convertrules.py:1957
+msgid "Property setting syntax in \\translator{ }"
+msgstr "Cú pháp thiết lập thuộc tính trong \\translator{ }"
+
+#: convertrules.py:1978
+#, python-format
+msgid "use %s"
+msgstr "sử dụng %s"
+
+#: convertrules.py:1995
+msgid "Scheme grob function renaming"
+msgstr "Thay tên hàm grob Scheme"
+
+#: convertrules.py:2008
+msgid "More Scheme function renaming"
+msgstr "Thay thêm tên hàm Scheme"
+
+#: convertrules.py:2140
+msgid ""
+"Page layout has been changed, using paper size and margins.\n"
+"textheight is no longer used.\n"
+msgstr ""
+"Bố trí trang đã thay đổi, dùng kích cỡ tờ giấy và các lề trang.\n"
+"textheight không còn được dùng lại.\n"
+
+#: convertrules.py:2259
+msgid ""
+"\\foo -> \\foomode (for chords, notes, etc.)\n"
+"fold \\new FooContext \\foomode into \\foo."
+msgstr ""
+"\\foo -> \\foomode (đối với các hợp âm, nốt v.v.)\n"
+"fold \\new FooContext \\foomode vào \\foo."
+
+#: convertrules.py:2285
+msgid ""
+"staff size should be changed at top-level\n"
+"with\n"
+"\n"
+"  #(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)\n"
+"\n"
+msgstr ""
+"kích cỡ khuông nhạc nên được thay đổi ở cấp đầu, dùngl\n"
+"\n"
+"  #(set-global-staff-size <CHIỀU_CAO_KHUÔNG_NHẠC_THEO_ĐIỂM>)\n"
+"\n"
+
+#: convertrules.py:2320
+msgid "regularize other identifiers"
+msgstr "chính quy hoá các bộ nhận diện khác"
+
+#: convertrules.py:2411
 msgid "LilyPond source must be UTF-8"
 msgstr "Lilypond phải có mã nguồn UTF-8"
 
-#: convertrules.py:2411
+#: convertrules.py:2414
 msgid "Try the texstrings backend"
 msgstr "Hãy thử hậu phương texstrings"
 
-#: convertrules.py:2414
+#: convertrules.py:2417
 #, python-format
 msgid "Do something like: %s"
 msgstr "Làm gì như : %s"
 
-#: convertrules.py:2417
+#: convertrules.py:2420
 msgid "Or save as UTF-8 in your editor"
-msgstr "Hoặc lưu dạng UTF-8 trong bộ biên soạn"
+msgstr "Hoặc lưu dạng UTF-8 trong trình biên soạn"
+
+#: convertrules.py:2452
+msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
+msgstr "\\encoding: mã hoá lại khéo « latin1..utf-8 ». Gỡ bỏ « ly:point-and-click »"
+
+#: convertrules.py:2485
+msgid "auto beam settings"
+msgstr "thiết lập tự động vẽ nét ngang"
+
+#: convertrules.py:2487
+msgid ""
+"\n"
+"Auto beam settings must now specify each interesting moment in a measure\n"
+"explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n"
+msgstr ""
+"\n"
+"Thiết lập tự động vẽ nét ngang lúc này phải ghi rõ mỗi lát quan tâm\n"
+"theo một ô nhịp một cách dứt khoát: 1/4 không còn được nhân lên lại\n"
+"để cũng bao quát 1/2 và 3/4.\n"
+
+#: convertrules.py:2498
+msgid "warn about auto beam settings"
+msgstr "cảnh báo về thiết lập tự động vẽ nét ngang"
+
+#: convertrules.py:2624
+msgid "verticalAlignmentChildCallback has been deprecated"
+msgstr "verticalAlignmentChildCallback đã bị phản đối"
+
+#: convertrules.py:2652
+msgid "Remove callbacks property, deprecate XY-extent-callback."
+msgstr "Gỡ bỏ thuộc tính gọi ngược, phản đối XY-extent-callback."
+
+#: convertrules.py:2663
+msgid "Use grob closures iso. XY-offset-callbacks."
+msgstr "Dùng grob closures iso. XY-offset-callbacks."
+
+#: convertrules.py:2770
+msgid "foobar -> foo-bar for \\paper, \\layout"
+msgstr "foobar -> foo-bar đối với \\paper, \\layout"
+
+#: convertrules.py:2877
+msgid "deprecate \\tempo in \\midi"
+msgstr "phản đối \\tempo trong \\midi"
+
+#: convertrules.py:2912
+msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
+msgstr "phản đối cautionary-style (kiểu dáng cẩn thận). Hãy dùng các thuộc tính AccidentalCautionary"
+
+#: convertrules.py:2941
+msgid "Rename accidental glyphs, use glyph-name-alist."
+msgstr "Thay tên các hình tượng dấu thăng giáng, dùng glyph-name-alist."
+
+#: convertrules.py:2973
+msgid "edge-text settings for TextSpanner."
+msgstr "Thiết lập edge-text (cạnh văn bản) đối với TextSpanner."
+
+#: convertrules.py:2974
+#, python-format
+msgid ""
+"Use\n"
+"\n"
+"%s"
+msgstr ""
+"Sử dụng\n"
+"\n"
+"%s"
+
+#: convertrules.py:3020
+msgid "all settings related to dashed lines.\n"
+msgstr "mọi thiết lập đều liên quan đến đường gạch gạch.\n"
+
+#: convertrules.py:3021
+msgid "Use \\override ... #'style = #'line for solid lines and\n"
+msgstr "Hãy dùng « \\override ... #'style = #'line » cho các đường đặc, và\n"
+
+#: convertrules.py:3022
+msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
+msgstr "\t« \\override ... #'style = #'dashed-line » cho các đường gạch gạch."
+
+#: convertrules.py:3027
+msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
+msgstr "Dùng « #'style not #'dash-fraction » để chọn các đường đặc/gạch-gạch."
 
 #: fontextract.py:26
 #, python-format
@@ -62,27 +409,56 @@ msgstr "Đã giải nén %s"
 msgid "Writing fonts to %s"
 msgstr "Đang ghi các phông vào %s"
 
-#: lilylib.py:85 lilylib.py:136
+#: lilylib.py:102 lilylib.py:153
 #, python-format
 msgid "Invoking `%s'"
 msgstr "Đang gọi « %s »"
 
-#: lilylib.py:87 lilylib.py:138
+#: lilylib.py:104 lilylib.py:155
 #, python-format
 msgid "Running %s..."
 msgstr "Đang chạy %s..."
 
-#: lilylib.py:203
+#: lilylib.py:220
 #, python-format
 msgid "Usage: %s"
 msgstr "Cách sử dụng: %s"
 
-#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:110 midi2ly.py:858
+#: musicexp.py:577
+#, python-format
+msgid "unable to set the music %(music)s for the repeat %(repeat)s"
+msgstr "không thể đặt âm nhạc %(music)s cho lần lặp lại %(repeat)s"
+
+#: musicexp.py:586
+msgid "encountered repeat without body"
+msgstr "gặp lần lặp lại không có thân"
+
+#: musicxml.py:13 convert-ly.py:50 lilypond-book.py:85 warn.cc:54 input.cc:96
+#: input.cc:104
+#, c-format, python-format
+msgid "error: %s"
+msgstr "lỗi: %s"
+
+#: musicxml.py:272
+msgid "requested time signature, but time sig is unknown"
+msgstr "đã yêu cầu ký hiệu nhịp điệu, nhưng không rõ loại nhịp"
+
+#: musicxml.py:338
+#, python-format
+msgid "Encountered note at %s with %s duration (no <type> element):"
+msgstr "Gặp nốt ở %s với thời lượng %s (không có phần tử <type>):"
+
+#: musicxml.py:372
+#, python-format
+msgid "Unable to find find instrument for ID=%s\n"
+msgstr "Không tìm thấy phối nhạc cho ID=%s\n"
+
+#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:109 midi2ly.py:849
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [TÙY_CHỌN]... TẬP_TIN"
 
-#: abc2ly.py:1344
+#: abc2ly.py:1343
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
@@ -91,22 +467,37 @@ msgstr ""
 "abc2ly chuyển đổi tập tin âm nhạc kiểu ABC\n"
 "xem %s) sang kết nhập LilyPond."
 
-#: abc2ly.py:1348 etf2ly.py:1184 midi2ly.py:874
+#: abc2ly.py:1350 convert-ly.py:78 etf2ly.py:1190 lilypond-book.py:175
+#: midi2ly.py:885 musicxml2ly.py:1824 main.cc:161
+msgid "show version number and exit"
+msgstr "hiển thị số phiên bản rồi thoát"
+
+#: abc2ly.py:1354 convert-ly.py:82 etf2ly.py:1186 lilypond-book.py:125
+#: midi2ly.py:864 musicxml2ly.py:1808 main.cc:150
+msgid "show this help and exit"
+msgstr "hiển thị trợ giúp này rồi thoát"
+
+#: abc2ly.py:1356 etf2ly.py:1191 midi2ly.py:868
 msgid "write output to FILE"
 msgstr "xuất ra TẬP_TIN"
 
-#: abc2ly.py:1350
+#: abc2ly.py:1358
 msgid "be strict about succes"
 msgstr "chặt chẽ với thành công"
 
-#: abc2ly.py:1352
+#: abc2ly.py:1360
 msgid "preserve ABC's notion of beams"
 msgstr "bảo tồn ý kiến ABC về tia"
 
-#: abc2ly.py:1354 convert-ly.py:103 etf2ly.py:1192 lilypond-book.py:161
-#: midi2ly.py:900 musicxml2ly.py:975
+#: abc2ly.py:1361 convert-ly.py:111 etf2ly.py:1198 lilypond-book.py:180
+#: midi2ly.py:897 musicxml2ly.py:1872
+msgid "Bugs"
+msgstr "Lỗi"
+
+#: abc2ly.py:1362 convert-ly.py:112 etf2ly.py:1199 lilypond-book.py:181
+#: midi2ly.py:898 musicxml2ly.py:1873
 msgid "Report bugs via"
-msgstr "Thông báo lỗi cho"
+msgstr "Thông báo lỗi thông qua"
 
 #: convert-ly.py:32
 msgid ""
@@ -118,71 +509,61 @@ msgstr "Cập nhật kết nhập Lilypond lên phiên bản mới hơn. Mặc 
 msgid "Examples:"
 msgstr "Thí dụ :"
 
-#: convert-ly.py:47 lilypond-book.py:83 warn.cc:48 input.cc:90
-#, c-format, python-format
-msgid "warning: %s"
-msgstr "cảnh báo : %s"
-
-#: 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 "lỗi: %s"
-
-#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:106 midi2ly.py:87
+#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:105 midi2ly.py:79
 msgid "Distributed under terms of the GNU General Public License."
 msgstr "Được phát hành với điều kiện của Giấy phép Công cộng GNU (GPL)"
 
-#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:107 midi2ly.py:88
+#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:106 midi2ly.py:80
 msgid "It comes with NO WARRANTY."
 msgstr "Nó KHÔNG BẢO HÀNH GÌ CẢ."
 
-#: convert-ly.py:77 convert-ly.py:97
+#: convert-ly.py:86 convert-ly.py:106
 msgid "VERSION"
 msgstr "PHIÊN BẢN"
 
-#: convert-ly.py:79
+#: convert-ly.py:88
 msgid "start from VERSION [default: \\version found in file]"
 msgstr "bắt đầu từ PHIÊN BẢN [mặc định: \\version được tìm trong tập tin]"
 
-#: convert-ly.py:82
+#: convert-ly.py:91
 msgid "edit in place"
 msgstr "sửa tại chỗ"
 
-#: convert-ly.py:85
+#: convert-ly.py:94
 msgid "do not add \\version command if missing"
 msgstr "không thêm lệnh \\version nếu còn thiếu"
 
-#: convert-ly.py:91
+#: convert-ly.py:100
 msgid "show rules [default: --from=0, --to=@TOPLEVEL_VERSION@]"
 msgstr "hiện quy tắc [mặc định: --from=0, --to=@TOPLEVEL_VERSION@]"
 
-#: convert-ly.py:96
+#: convert-ly.py:105
 msgid "convert to VERSION [default: @TOPLEVEL_VERSION@]"
 msgstr "chuyển đổi sang PHIÊN BẢN [mặc định: @TOPLEVEL_VERSION@]"
 
-#: convert-ly.py:144
+#: convert-ly.py:153
 msgid "Applying conversion: "
 msgstr "Đang áp dụng sự chuyển đổi: "
 
-#: convert-ly.py:157
+#: convert-ly.py:166
 msgid "Error while converting"
 msgstr "Gặp lỗi trong khi chuyển đổi"
 
-#: convert-ly.py:159
+#: convert-ly.py:168
 msgid "Stopping at last succesful rule"
 msgstr "Đang dừng ở quy tắc thành công cuối cùng"
 
-#: convert-ly.py:181
+#: convert-ly.py:190
 #, python-format
 msgid "Processing `%s'... "
 msgstr "Đang xử lý « %s »... "
 
-#: convert-ly.py:268 relocate.cc:362 source-file.cc:54
+#: convert-ly.py:277 relocate.cc:362 source-file.cc:54
 #, c-format, python-format
 msgid "cannot open file: `%s'"
 msgstr "không thể mở tập tin « %s »"
 
-#: convert-ly.py:275
+#: convert-ly.py:284
 #, python-format
 msgid "cannot determine version for `%s'.  Skipping"
 msgstr "không thể quyết định phiên bản cho « %s » nên bỏ qua"
@@ -192,7 +573,7 @@ msgstr "không thể quyết định phiên bản cho « %s » nên bỏ qua"
 msgid "%s [OPTION]... ETF-FILE"
 msgstr "%s [TÙY_CHỌN]... TẬP_TIN_ETF"
 
-#: etf2ly.py:1182
+#: etf2ly.py:1181
 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."
@@ -201,11 +582,11 @@ msgstr ""
 "Finale của Coda Music Technology. etf2ly chuyển đổi một tập hợp con\n"
 "ETF sang một tập tin Lilypond sẵn sàng dùng."
 
-#: etf2ly.py:1185 midi2ly.py:875 musicxml2ly.py:968 main.cc:154 main.cc:159
+#: etf2ly.py:1192 midi2ly.py:869 musicxml2ly.py:1866 main.cc:154 main.cc:159
 msgid "FILE"
 msgstr "TẬP TIN"
 
-#: etf2ly.py:1187 lilypond-book.py:158 midi2ly.py:888 main.cc:163
+#: etf2ly.py:1194 lilypond-book.py:178 midi2ly.py:886 main.cc:163
 msgid "show warranty and copyright"
 msgstr "hiện bảo hành và tác quyền"
 
@@ -222,16 +603,16 @@ msgstr "SỔ"
 msgid "Exiting (%d)..."
 msgstr "Đang thoát (%d)..."
 
-#: lilypond-book.py:104
+#: lilypond-book.py:103
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Tác quyền © năm %s của"
 
-#: lilypond-book.py:114
+#: lilypond-book.py:113
 msgid "FILTER"
 msgstr "LỌC"
 
-#: lilypond-book.py:117
+#: lilypond-book.py:116
 msgid "pipe snippets through FILTER [convert-ly -n -]"
 msgstr "gửi các đoạn qua ống dẫn cho bộ LỌC [convert-ly -n -]"
 
@@ -239,35 +620,43 @@ msgstr "gửi các đoạn qua ống dẫn cho bộ LỌC [convert-ly -n -]"
 msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
 msgstr "dùng định dạng xuất ĐỊNH DẠNG (texi [mặc định], texi-html, latex, html, docbook)"
 
-#: lilypond-book.py:123
+#: lilypond-book.py:127
 msgid "add DIR to include path"
 msgstr "thêm THƯ_MỤC vào đường dẫn bao gồm"
 
-#: lilypond-book.py:124 lilypond-book.py:136 main.cc:153
+#: lilypond-book.py:128 lilypond-book.py:135 lilypond-book.py:147 main.cc:153
 msgid "DIR"
 msgstr "THƯ_MỤC"
 
-#: lilypond-book.py:129
+#: lilypond-book.py:133
+msgid "format Texinfo output so that Info will look for images of music in DIR"
+msgstr "định dạng kết xuất Texinfo để mà Info sẽ tìm ảnh nhạc trong THƯ_MỤC"
+
+#: lilypond-book.py:140
 msgid "PAD"
-msgstr "PAD"
+msgstr "ĐỆM"
 
-#: lilypond-book.py:135
+#: lilypond-book.py:142
+msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
+msgstr "đệm bên trái của bản nhạc để sắp hàng nhạc, bất chấp các số thứ tự gạch nhịp (theo mili-mét)"
+
+#: lilypond-book.py:146
 msgid "write output to DIR"
 msgstr "xuất ra THƯ_MỤC"
 
-#: lilypond-book.py:140
+#: lilypond-book.py:151
 msgid "COMMAND"
 msgstr "LỆNH"
 
-#: lilypond-book.py:141
+#: lilypond-book.py:152
 msgid "process ly_files using COMMAND FILE..."
 msgstr "xử lý các tập tin ly_file dùng LỆNH TẬP TIN..."
 
-#: lilypond-book.py:147
-msgid "Create PDF files for use with PDFTeX"
-msgstr "Tạo tập tin PDF để sử dụng với PDFTeX"
+#: lilypond-book.py:159
+msgid "create PDF files for use with PDFTeX"
+msgstr "tạo tập tin PDF để sử dụng với PDFTeX"
 
-#: lilypond-book.py:150
+#: lilypond-book.py:163
 msgid ""
 "extract all PostScript fonts into INPUT.psfonts for LaTeX\n"
 "must use this with dvips -h INPUT.psfonts"
@@ -275,205 +664,272 @@ msgstr ""
 "giải nén các phông PostScript vào « INPUT.psfonts » cho LaTeX\n"
 "phải dùng nó với « dvips -h INPUT.psfonts »."
 
-#: lilypond-book.py:153 midi2ly.py:885 musicxml2ly.py:959 main.cc:162
+#: lilypond-book.py:167 midi2ly.py:879 musicxml2ly.py:1829 main.cc:162
 msgid "be verbose"
 msgstr "xuất chi tiết"
 
-#: lilypond-book.py:765
+#: lilypond-book.py:788
 #, python-format
 msgid "file not found: %s"
 msgstr "không tìm thấy tập tin: %s"
 
-#: lilypond-book.py:996
+#: lilypond-book.py:1022
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "dùng tùy chọn ly-option bị phản đối: %s=%s"
 
-#: lilypond-book.py:999
+#: lilypond-book.py:1025
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "dịch chế độ khả năng tương thích: %s=%s"
 
-#: lilypond-book.py:1003
+#: lilypond-book.py:1029
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "dùng tùy chọn ly-option bị phản đối: %s"
 
-#: lilypond-book.py:1006
+#: lilypond-book.py:1032
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "dịch chế độ khả năng tương thích: %s"
 
-#: lilypond-book.py:1025
+#: lilypond-book.py:1051
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "đang bỏ qua tùy chọn ly lạ: %s"
 
-#: lilypond-book.py:1379
+#: lilypond-book.py:1422
 #, python-format
 msgid "Opening filter `%s'"
 msgstr "Đang mở bộ lọc « %s »"
 
-#: lilypond-book.py:1396
+#: lilypond-book.py:1439
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "« %s » bị lỗi (%d)"
 
-#: lilypond-book.py:1397
+#: lilypond-book.py:1440
 msgid "The error log is as follows:"
 msgstr "Bản ghi lỗi bên dưới:"
 
-#: lilypond-book.py:1469
+#: lilypond-book.py:1512
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr "không tìm thấy tài liệu bắt đầu « \\begin{document} » trong tài liệu LaTeX"
 
-#: lilypond-book.py:1580
+#: lilypond-book.py:1623
 msgid "Writing snippets..."
 msgstr "Đang ghi các đoạn..."
 
-#: lilypond-book.py:1585
+#: lilypond-book.py:1628
 msgid "Processing..."
 msgstr "Đang xử lý..."
 
-#: lilypond-book.py:1589
+#: lilypond-book.py:1632
 msgid "All snippets are up to date..."
 msgstr "Mọi đoạn là hiện thời..."
 
-#: lilypond-book.py:1599
+#: lilypond-book.py:1642
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr "không thể xác định định dạng cho : %s"
 
-#: lilypond-book.py:1610
+#: lilypond-book.py:1653
 #, python-format
 msgid "%s is up to date."
 msgstr "%s là hiện thời."
 
-#: lilypond-book.py:1616
+#: lilypond-book.py:1659
 #, python-format
 msgid "Writing `%s'..."
 msgstr "Đang ghi « %s »..."
 
-#: lilypond-book.py:1671
+#: lilypond-book.py:1714
 msgid "Output would overwrite input file; use --output."
 msgstr "Kết xuất sẽ ghi đè lên tập tin nhập vào : dùng tùy chọn « --output »."
 
-#: lilypond-book.py:1675
+#: lilypond-book.py:1718
 #, python-format
 msgid "Reading %s..."
 msgstr "Đang đọc %s..."
 
-#: lilypond-book.py:1694
+#: lilypond-book.py:1737
 msgid "Dissecting..."
 msgstr "Đang phân chia..."
 
-#: lilypond-book.py:1710
+#: lilypond-book.py:1753
 #, python-format
 msgid "Compiling %s..."
 msgstr "Đang biên dịch %s..."
 
-#: lilypond-book.py:1719
+#: lilypond-book.py:1762
 #, python-format
 msgid "Processing include: %s"
 msgstr "Đang xử lý đồ bao gồm: %s"
 
-#: lilypond-book.py:1733
+#: lilypond-book.py:1776
 #, python-format
 msgid "Removing `%s'"
 msgstr "Đang gỡ bỏ « %s »"
 
-#: lilypond-book.py:1766
+#: lilypond-book.py:1809
 msgid "option --psfonts not used"
 msgstr "tùy chọn « --psfonts » không được dùng"
 
-#: lilypond-book.py:1767
+#: lilypond-book.py:1810
 msgid "processing with dvips will have no fonts"
 msgstr "xử lý với dvips thì không có phông"
 
-#: lilypond-book.py:1770
+#: lilypond-book.py:1813
 msgid "DVIPS usage:"
 msgstr "Cách sử dụng DVIPS:"
 
-#: lilypond-book.py:1826
+#: lilypond-book.py:1869
 #, python-format
 msgid "Writing fonts to %s..."
 msgstr "Đang ghi các phông vào %s..."
 
-#: midi2ly.py:95 lily-library.scm:615 lily-library.scm:624
+#: midi2ly.py:87 lily-library.scm:615 lily-library.scm:624
 msgid "warning: "
 msgstr "cảnh báo : "
 
-#: midi2ly.py:98 midi2ly.py:913
+#: midi2ly.py:90 midi2ly.py:911
 msgid "error: "
 msgstr "lỗi: "
 
-#: midi2ly.py:99
-msgid "Exiting ... "
+#: midi2ly.py:91
+msgid "Exiting... "
 msgstr "Đang thoát... "
 
-#: midi2ly.py:846
+#: midi2ly.py:837
 #, python-format
 msgid "%s output to `%s'..."
 msgstr "kết xuất %s vào « %s »..."
 
-#: midi2ly.py:860 musicxml2ly.py:955
+#: midi2ly.py:850 musicxml2ly.py:1803
 #, python-format
 msgid "Convert %s to LilyPond input."
 msgstr "Chuyển đổi %s sang kết nhập Lilypond."
 
-#: midi2ly.py:864
+#: midi2ly.py:855
 msgid "print absolute pitches"
 msgstr "in ra độ cao thấp tuyệt đối"
 
-#: midi2ly.py:866 midi2ly.py:878
+#: midi2ly.py:857 midi2ly.py:872
 msgid "DUR"
-msgstr "THỜI_GIAN"
+msgstr "THỜI_LƯỢNG"
 
-#: midi2ly.py:867
+#: midi2ly.py:858
 msgid "quantise note durations on DUR"
-msgstr "lượng tử hoá các thời gian nốt trong THỜI_GIAN"
+msgstr "lượng tử hoá các thời gian nốt trong THỜI_LƯỢNG"
 
-#: midi2ly.py:870
+#: midi2ly.py:861
 msgid "print explicit durations"
-msgstr "in ra các thời gian dứt khoát"
+msgstr "in ra các thời lượng dứt khoát"
 
-#: midi2ly.py:871
+#: midi2ly.py:865
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
 msgstr "đặt khoá: ALT=+thăng|-giáng; THỨ=1"
 
-#: midi2ly.py:872
+#: midi2ly.py:866
 msgid "ALT[:MINOR]"
 msgstr "ALT[:THỨ]"
 
-#: midi2ly.py:877
+#: midi2ly.py:871
 msgid "quantise note starts on DUR"
-msgstr "lượng tử hoá sự bắt đầu nốt trong THỜI_GIAN"
+msgstr "lượng tử hoá sự bắt đầu nốt trong THỜI_LƯỢNG"
 
-#: midi2ly.py:880
+#: midi2ly.py:874
 msgid "DUR*NUM/DEN"
-msgstr "THỜI_GIAN*SỐ/MẬT_ĐỘ"
+msgstr "THỜI_LƯỢNG*SỐ/MẬT_ĐỘ"
 
-#: midi2ly.py:883
+#: midi2ly.py:877
 msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "cho phép thời gian nhiều nốt THỜI_GIAN*SỐ/MẬT_ĐỘ"
+msgstr "cho phép thời gian nhiều nốt THỜI_LƯỢNG*SỐ/MẬT_ĐỘ"
 
-#: midi2ly.py:891
+#: midi2ly.py:889
 msgid "treat every text as a lyric"
 msgstr "xử lý mọi văn bản là lời nhạc"
 
-#: midi2ly.py:894
+#: midi2ly.py:892
 msgid "Examples"
 msgstr "Ví dụ"
 
-#: midi2ly.py:914
+#: midi2ly.py:912
 msgid "no files specified on command line."
 msgstr "chưa xác định tập tin trên dòng lệnh."
 
-#: musicxml2ly.py:943
-msgid "musicxml2ly FILE.xml"
-msgstr "musicxml2ly TẬP_TIN.xml"
+#: musicxml2ly.py:193 musicxml2ly.py:195
+#, python-format
+msgid "Unprocessed PartGroupInfo %s encountered"
+msgstr "Gặp PartGroupInfo %s chưa được xử lý"
+
+#: musicxml2ly.py:426
+#, python-format
+msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
+msgstr "Gặp thời lượng hợp lý hữu tỷ với mẫu số %s, không thể chuyển đổi sang thời lượng kiểu Lilypond"
+
+#: musicxml2ly.py:609
+#, python-format
+msgid "unknown mode %s, expecting 'major' or 'minor'"
+msgstr "không rõ chế độ %s, đợi « trưởng » hoặc « thứ »"
+
+#: musicxml2ly.py:647
+#, python-format
+msgid "Encountered unprocessed marker %s\n"
+msgstr "Gặp dấu vết chưa được xử lý %s\n"
+
+#: musicxml2ly.py:741
+#, python-format
+msgid "unknown span event %s"
+msgstr "không rõ dữ kiện nhịp cầu %s"
+
+#: musicxml2ly.py:751
+#, python-format
+msgid "unknown span type %s for %s"
+msgstr "không rõ kiểu nhịp cầu %s cho %s"
+
+#: musicxml2ly.py:1259
+#, python-format
+msgid "drum %s type unknown, please add to instrument_drumtype_dict"
+msgstr "không rõ kiểu cái trống %s, hãy thêm vào instrument_drumtype_dict"
+
+#: musicxml2ly.py:1263
+msgid "cannot find suitable event"
+msgstr "không tìm thấy dữ kiện thích hợp"
+
+#: musicxml2ly.py:1346
+#, python-format
+msgid "Negative skip %s"
+msgstr "Nhảy âm %s"
+
+#: musicxml2ly.py:1480
+#, python-format
+msgid "Negative skip found: from %s to %s, difference is %s"
+msgstr "Gặp nơi nhảy âm: từ %s đến %s, hiệu là %s"
+
+#: musicxml2ly.py:1505
+#, python-format
+msgid "unexpected %s; expected %s or %s or %s"
+msgstr "gặp %s bất thường; đợi %s hoặc %s hoặc %s"
+
+#: musicxml2ly.py:1583
+msgid "cannot have two simultaneous slurs"
+msgstr "không thể có hai dấu luyến âm đồng thời"
+
+#: musicxml2ly.py:1711
+#, python-format
+msgid "cannot simultaneously have more than one mode: %s"
+msgstr "không thể có nhiều chế độ đồng thời: %s"
+
+#: musicxml2ly.py:1791
+msgid "Converting to LilyPond expressions..."
+msgstr "Đang chuyển đổi sang biểu thức Lilypond..."
+
+#: musicxml2ly.py:1802
+msgid "musicxml2ly [options] FILE.xml"
+msgstr "musicxml2ly [tùy_chọn] TẬP_TIN.xml"
 
-#: musicxml2ly.py:946
+#: musicxml2ly.py:1812
 #, python-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -481,18 +937,68 @@ msgid ""
 "under certain conditions.  Invoke as `%s --warranty' for more\n"
 "information."
 msgstr ""
-"Chương trình này là phần mềm tự do; bạn có thể phát hành lại nó và/hoặc sửa đổi nó với điều kiện của Giấy Phép Công Cộng GNU như được xuất bản bởi Tổ Chức Phần Mềm Tự Do; hoặc phiên bản 2 của Giấy Phép này, hoặc (tùy chọn) bất kỳ phiên bản sau nào.\n"
-"\n"
+"Chương trình này là phần mềm tự do. Nó được bao quát bởi\n"
+"Giấy Phép Công Cộng GNU thì cấp bạn có quyền sửa đổi nó\n"
+"và/hoặc phát hành bản sao của nó với các điều kiện được ghi rõ.\n"
 "Gọi lệnh « %s --warranty » để xem thêm thông tin."
 
-#: musicxml2ly.py:965
-msgid "Use lxml.etree; uses less memory and cpu time."
-msgstr "Hãy dùng « lxml.etree »; nó chiếm ít bộ nhớ và thời gian CPU hơn."
+#: musicxml2ly.py:1835
+msgid "use lxml.etree; uses less memory and cpu time"
+msgstr "dùng « lxml.etree »; nó chiếm ít bộ nhớ và thời gian CPU hơn"
+
+#: musicxml2ly.py:1841
+msgid "input file is a zip-compressed MusicXML file"
+msgstr "tập tin nhập vào là một tập tin MusicXML đã nén ZIP"
+
+#: musicxml2ly.py:1847
+msgid "convert pitches in relative mode (default)"
+msgstr "chuyển đổi các độ cao giọng ở chế độ tương đối (mặc định)"
+
+#: musicxml2ly.py:1852
+msgid "convert pitches in absolute mode"
+msgstr "chuyển đổi các độ cao giọng ở chế độ tuyệt đối"
+
+#: musicxml2ly.py:1855
+msgid "LANG"
+msgstr "VIỆT"
+
+#: musicxml2ly.py:1857
+msgid "use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly"
+msgstr "dùng một tập tin ngôn ngữ khác « VIỆT/ly » và các tên độ cao giọng tương ứng, v.d. « việt » ngụ ý tiếng Việt cho « việt.ly »."
 
-#: musicxml2ly.py:973
+#: musicxml2ly.py:1863
+msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
+msgstr "đừng chuyển đổi ký hiệu hướng dẫn (dấu mũ, dấu gạch dưới hoặc dấu gạch nối) cho các cách phát âm và biến cường."
+
+#: musicxml2ly.py:1871
 msgid "set output filename to FILE"
 msgstr "đặt tên tập tin xuất thành TẬP_TIN"
 
+#: musicxml2ly.py:1929
+#, python-format
+msgid "unknown part in part-list: %s"
+msgstr "không rõ phần trong part-list: %s"
+
+#: musicxml2ly.py:1985
+#, python-format
+msgid "Input file %s is compressed, extracting raw MusicXML data"
+msgstr "Tập tin nhập liệu %s đã được nén nên giải nén dữ liệu MusicXML thô"
+
+#: musicxml2ly.py:2011
+#, python-format
+msgid "Reading MusicXML from %s ..."
+msgstr "Đang đọc MusicXML từ %s..."
+
+#: musicxml2ly.py:2039 musicxml2ly.py:2053
+#, python-format
+msgid "Output to `%s'"
+msgstr "Xuất vào « %s »"
+
+#: musicxml2ly.py:2096
+#, python-format
+msgid "Unable to find input file %s"
+msgstr "Không tìm thấy tập tin nhập vào %s"
+
 #: getopt-long.cc:140
 #, c-format
 msgid "option `%s' requires an argument"
@@ -513,7 +1019,7 @@ msgstr "không nhận ra tùy chọn « %s »"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "đối số « %s » không hợp lệ đối với tùy chọn « %s »"
 
-#: warn.cc:68 grob.cc:565 input.cc:82
+#: warn.cc:68 grob.cc:566 input.cc:82
 #, c-format
 msgid "programming error: %s"
 msgstr "lỗi lập trình: %s"
@@ -576,7 +1082,7 @@ msgstr "có hai Axis_group_engravers không?"
 msgid "removing this vertical group"
 msgstr "đang gỡ bỏ nhóm dọc này"
 
-#: axis-group-interface.cc:531
+#: axis-group-interface.cc:524
 msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr "đối tượng « outside-staff » nên có hướng nên dùng giá trị Lên"
 
@@ -605,7 +1111,7 @@ msgstr "cọng không vừa trong tia"
 msgid "beam was started here"
 msgstr "tia đã bắt đầu ở đây"
 
-#: beam-quanting.cc:309
+#: beam-quanting.cc:307
 msgid "no feasible beam position"
 msgstr "không có vị trí tia có ích"
 
@@ -613,7 +1119,7 @@ msgstr "không có vị trí tia có ích"
 msgid "removing beam with no stems"
 msgstr "đang gỡ bỏ tia không có cọng"
 
-#: beam.cc:1039
+#: beam.cc:1069
 msgid "no viable initial configuration found: may not find good beam slope"
 msgstr "không tìm thấy cấu hình đầu tiên có ích: có lẽ không tìm thấy dốc tia tốt"
 
@@ -670,7 +1176,7 @@ msgstr "không tìm thấy khoá « %s »"
 msgid "unknown cluster style `%s'"
 msgstr "kiểu dáng chùm lạ « %s »"
 
-#: cluster.cc:135
+#: cluster.cc:147
 msgid "junking empty cluster"
 msgstr "đang xoá chùm rỗng"
 
@@ -732,23 +1238,23 @@ msgstr "Hạng dữ kiện lạ %s"
 msgid "dot `%s' not found"
 msgstr "Không tìm thấy chấm « %s »"
 
-#: dynamic-engraver.cc:193
+#: dynamic-engraver.cc:192
 msgid "cannot find start of (de)crescendo"
 msgstr "không tìm thấy đầu của sự mạnh/nhẹ dần"
 
-#: dynamic-engraver.cc:202
+#: dynamic-engraver.cc:201
 msgid "already have a decrescendo"
 msgstr "đã có sự nhẹ dần"
 
-#: dynamic-engraver.cc:204
+#: dynamic-engraver.cc:203
 msgid "already have a crescendo"
 msgstr "đã có sự mạnh dần"
 
-#: dynamic-engraver.cc:207
+#: dynamic-engraver.cc:206
 msgid "cresc starts here"
 msgstr "sự mạnh dần bắt đầu ở đây"
 
-#: dynamic-engraver.cc:336
+#: dynamic-engraver.cc:335
 msgid "unterminated (de)crescendo"
 msgstr "sự mạnh/nhẹ dần chưa chấm dứt"
 
@@ -765,12 +1271,12 @@ msgstr "Đang sở khởi phần mềm cấu hình phông FontConfig..."
 msgid "Rebuilding FontConfig cache %s, this may take a while..."
 msgstr "Đang xây dựng lại bộ nhớ tạm FontConfig %s. Có thể hơi lâu..."
 
-#: font-config.cc:55
+#: font-config.cc:57
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "lỗi thêm thư mục phông: %s"
 
-#: font-config.cc:57
+#: font-config.cc:59
 #, c-format
 msgid "adding font directory: %s"
 msgstr "đang thêm thư mục phông: %s"
@@ -892,18 +1398,18 @@ msgstr "Không tìm thấy hình tượng cho sự sửa đổi: %s"
 msgid "alteration not found"
 msgstr "Không tìm thấy sự sửa đổi"
 
-#: ligature-engraver.cc:93
+#: ligature-bracket-engraver.cc:62 ligature-engraver.cc:93
 msgid "cannot find start of ligature"
 msgstr "không tìm thấy đầu của chữ ghép"
 
+#: ligature-bracket-engraver.cc:75 ligature-engraver.cc:120
+msgid "already have a ligature"
+msgstr "đã có chữ ghép"
+
 #: ligature-engraver.cc:98
 msgid "no right bound"
 msgstr "không có mép bên phải"
 
-#: ligature-engraver.cc:120
-msgid "already have a ligature"
-msgstr "đã có chữ ghép"
-
 #: ligature-engraver.cc:129
 msgid "no left bound"
 msgstr "không có mép bên trái"
@@ -1081,10 +1587,6 @@ msgstr "tạo ra PostScript"
 msgid "generate TeX (tex backend only)"
 msgstr "tạo ra TeX (chỉ hậu phương tex)"
 
-#: main.cc:150
-msgid "show this help and exit"
-msgstr "hiển thị trợ giúp này rồi thoát"
-
 #: main.cc:151
 msgid "FIELD"
 msgstr "TRƯỜNG"
@@ -1125,10 +1627,6 @@ msgstr "xuất ra TẬP TIN (hậu tố cũng được thêm)"
 msgid "relocate using directory of lilypond program"
 msgstr "định vị lại dùng thư mục của chương trình lilypond"
 
-#: main.cc:161
-msgid "show version number and exit"
-msgstr "hiển thị số phiên bản rồi thoát"
-
 #: main.cc:203
 #, c-format
 msgid ""
@@ -1220,11 +1718,11 @@ msgid "exception caught: %s"
 msgstr "bắt ngoài lệ: %s"
 
 #. FIXME: constant error message.
-#: mark-engraver.cc:154
+#: mark-engraver.cc:129
 msgid "rehearsalMark must have integer value"
 msgstr "rehearsalMark (dấu sự diễn tập) phải có giá trị số nguyên"
 
-#: mark-engraver.cc:160
+#: mark-engraver.cc:135
 msgid "mark label must be a markup object"
 msgstr "nhãn dấu phải là đối tượng mã định dạng"
 
@@ -1382,18 +1880,28 @@ msgid "FT_Get_Glyph_Name () error: %s"
 msgstr "Lỗi FT_Get_Glyph_Name (): %s"
 
 #. find out the ideal number of pages
-#: optimal-page-breaking.cc:44
+#: optimal-page-breaking.cc:56
 msgid "Finding the ideal number of pages..."
 msgstr "Đang tìm tổng số trang thích hợp..."
 
-#: optimal-page-breaking.cc:59
+#: optimal-page-breaking.cc:71
 msgid "Fitting music on 1 page..."
 msgstr "Đang vừa âm nhạc khít 1 trang..."
 
-#: optimal-page-breaking.cc:61
+#: optimal-page-breaking.cc:73
+#, c-format
+msgid "Fitting music on %d pages..."
+msgstr "Đang vừa âm nhạc khít %d trang..."
+
+#: optimal-page-breaking.cc:75
 #, c-format
 msgid "Fitting music on %d or %d pages..."
-msgstr "Đang vừa âm nhạc khít %d hay %d trang..."
+msgstr "Đang vừa âm nhạc khít %d hoặc %d trang..."
+
+#: optimal-page-breaking.cc:152 page-turn-page-breaking.cc:226
+#: paper-score.cc:146
+msgid "Drawing systems..."
+msgstr "Hệ thống vẽ..."
 
 #: page-turn-page-breaking.cc:146
 #, c-format
@@ -1409,10 +1917,6 @@ msgstr "không thể vừa sự quay trang đầu trong một trang riêng lẻ.
 msgid "Calculating page and line breaks (%d possible page breaks)..."
 msgstr "Đang tính các chỗ cần ngắt trang và dòng (%d chỗ ngắt trang có thể)..."
 
-#: page-turn-page-breaking.cc:226 paper-score.cc:146
-msgid "Drawing systems..."
-msgstr "Hệ thống vẽ..."
-
 #: page-turn-page-breaking.cc:275
 #, c-format
 msgid "break starting at page %d"
@@ -1503,7 +2007,7 @@ msgstr "đang ánh xạ lại mô-đun 16"
 msgid "MIDI output to `%s'..."
 msgstr "xuất MIDI ra « %s »..."
 
-#: phrasing-slur-engraver.cc:131
+#: phrasing-slur-engraver.cc:139
 msgid "unterminated phrasing slur"
 msgstr "dấu luyến âm phân nhịp chưa chấm dứt"
 
@@ -1670,7 +2174,7 @@ msgstr "dấu luyến âm chưa chấm dứt"
 msgid "cannot end slur"
 msgstr "không thể kết thúc dấu luyến âm"
 
-#: slur.cc:359
+#: slur.cc:353
 #, c-format
 msgid "Ignoring grob for slur: %s. avoid-slur not set?"
 msgstr "Đang bỏ qua grob cho dấu luyến âm: %s. Chưa đặt « avoid-slur » ?"
@@ -1707,12 +2211,12 @@ msgstr "có lẽ kết nhập vào nên xác định các giọng nói đối â
 msgid "weird stem size, check for narrow beams"
 msgstr "kích cỡ cọng lạ, hãy kiểm tra có tia hẹp không"
 
-#: stem.cc:623
+#: stem.cc:627
 #, c-format
 msgid "flag `%s' not found"
 msgstr "không tìm thấy cờ « %s »"
 
-#: stem.cc:634
+#: stem.cc:638
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr "không tìm thấy nét cờ « %s »"
@@ -1873,77 +2377,77 @@ msgstr "ghi nốt thì phải trong chế độ Nốt"
 msgid "have to be in Chord mode for chords"
 msgstr "ghi hợp âm thì phải trong chế độ Hợp âm"
 
-#: lexer.ll:177
+#: lexer.ll:179
 msgid "stray UTF-8 BOM encountered"
 msgstr "gặp UTF-8 BOM rải rác"
 
-#: lexer.ll:181
+#: lexer.ll:183
 msgid "Skipping UTF-8 BOM"
 msgstr "Bỏ qua UTF-8 BOM"
 
-#: lexer.ll:236
+#: lexer.ll:238
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Đang thay đổi tên kết nhập thành: « %s »"
 
-#: lexer.ll:253
+#: lexer.ll:255
 msgid "quoted string expected after \\version"
 msgstr "mong đợi chuỗi đã trích dẫn sau « \\version »"
 
-#: lexer.ll:257
+#: lexer.ll:259
 msgid "quoted string expected after \\sourcefilename"
 msgstr "mong đợi chuỗi đã trích dẫn sau « \\sourcefilename »"
 
-#: lexer.ll:261
+#: lexer.ll:263
 msgid "integer expected after \\sourcefileline"
 msgstr "mong đợi số nguyên sau « \\sourcefilename »"
 
-#: lexer.ll:274
+#: lexer.ll:276
 msgid "EOF found inside a comment"
 msgstr "Gặp kết thúc tập tin trong ghi chú"
 
-#: lexer.ll:289
+#: lexer.ll:291
 msgid "\\maininput not allowed outside init files"
 msgstr "không cho phép « \\maininput » bên ngoài tập tin sở khởi"
 
-#: lexer.ll:313
+#: lexer.ll:315
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "bộ nhận diện sai hau không được xác định: « %s »"
 
 #. backup rule
-#: lexer.ll:322
+#: lexer.ll:324
 msgid "end quote missing"
 msgstr "thiếu dấu trích dẫn kết thúc"
 
-#: lexer.ll:467
+#: lexer.ll:469
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr "Gặp dấu ngoặc móc ở kết thúc lời nhạc. Bạn đã quên nhập vào dấu cách không?"
 
-#: lexer.ll:580
+#: lexer.ll:582
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr "Gặp dấu ngoặc móc ở kết thúc mã định dạng. Bạn đã quên nhập vào dấu cách không?"
 
-#: lexer.ll:684
+#: lexer.ll:686
 #, c-format
 msgid "invalid character: `%c'"
 msgstr "ký tự không hợp lệ: « %c »"
 
-#: lexer.ll:799
+#: lexer.ll:801 lexer.ll:802
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "chuỗi đã thoát lạ: « \\%s »"
 
-#: lexer.ll:905
+#: lexer.ll:907 lexer.ll:908
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "tập tin quá cũ : %s (cũ nhất được hỗ trợ : %s)"
 
-#: lexer.ll:906
+#: lexer.ll:908 lexer.ll:909
 msgid "consider updating the input with the convert-ly script"
 msgstr "đề nghị bạn cập nhật kết nhập bằng văn lệnh « convert-ly »"
 
-#: lexer.ll:912
+#: lexer.ll:914 lexer.ll:915
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "chương trình quá cũ : %s (tập tin cần thiết: %s)"
@@ -1990,11 +2494,11 @@ msgstr "hạng dữ kiện ~A có vẻ là không dùng"
 msgid "translator listens to nonexisting event class ~A"
 msgstr "bộ dịch lắng nghe hạng dữ kiện không tồn tại ~A"
 
-#: define-markup-commands.scm:280
+#: define-markup-commands.scm:296
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr "không tìm thấy hệ thống trong mã định dạng « \\score », nó có khối « \\layout » không?"
 
-#: define-markup-commands.scm:1294
+#: define-markup-commands.scm:1310
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "không phải chuỗi thời gian hợp lệ: ~a"
@@ -2152,12 +2656,12 @@ msgstr "không tìm thấy câu lệnh « \\version », hãy thêm ~a để tư
 msgid "old relative compatibility not used"
 msgstr "không dùng khả năng tương thích tương đối cũ"
 
-#: lily.scm:185
+#: lily.scm:177
 #, scheme-format
 msgid "cannot find: ~A"
 msgstr "không tìm thấy: ~A"
 
-#: lily.scm:250
+#: lily.scm:242
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr "sai kiểu cho đối số ~a. Mong đợi ~a, còn tìm ~s"
@@ -2219,23 +2723,23 @@ msgstr "Số đếm lại tiếng vẽ không hợp lệ: ~a"
 msgid "expecting 2 elements for chord tremolo, found ~a"
 msgstr "mong đợi 2 yếu tố cho sự vê hợp âm, còn tìm ~a"
 
-#: music-functions.scm:571
+#: music-functions.scm:564
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "mong đợi âm nhạc: ~S"
 
 #. FIXME: uncomprehensable message
-#: music-functions.scm:621
+#: music-functions.scm:614
 #, scheme-format
 msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
 msgstr "Lỗi kiểm tra gạch nhịp. Mong đợi ở ~a, còn ở ~a"
 
-#: music-functions.scm:771
+#: music-functions.scm:764
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "không tìm thấy âm nhạc đã trích dẫn: « ~S »"
 
-#: music-functions.scm:968
+#: music-functions.scm:961
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "kiểu dáng dấu thăng giáng bất thường lạ: ~S"
@@ -2279,12 +2783,12 @@ msgstr "Kích cỡ giấy lạ: ~a"
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "Phải dùng #(set-paper-size .. ) bên trong \\paper { ... }"
 
-#: parser-clef.scm:127
+#: parser-clef.scm:129
 #, scheme-format
 msgid "unknown clef type `~a'"
 msgstr "kiểu khoá lạ « ~a »"
 
-#: parser-clef.scm:128
+#: parser-clef.scm:130
 #, scheme-format
 msgid "supported clefs: ~a"
 msgstr "các khoá đã hỗ trợ : ~a"
@@ -2298,9 +2802,3 @@ msgstr "~a đã thoát với trạng thái: ~S"
 #, scheme-format
 msgid "assertion failed: ~S"
 msgstr "lỗi khẳng định: ~S"
-
-#~ msgid "tried to calculate pure-height at a non-breakpoint"
-#~ msgstr "đã thử tính độ cao thuần ở chỗ không phải điểm ngắt"
-
-#~ msgid "crescendo too small"
-#~ msgstr "sự mạnh dần quá nhỏ"
index 88ae549d0bc8bcce3158c77573d291fb8f529ba9..8c29dc99cfc928de5dc8cc1052e8ecaef7ddb244 100644 (file)
@@ -18,31 +18,34 @@ class FatalConversionError:
     pass
 
 conversions = []
-error_file = sys.stderr 
+stderr_write = lilylib.stderr_write
+
+def warning (str):
+    stderr_write (_ ("warning: %s") % str)
 
 def conv(str):
     if re.search ('\\\\multi', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "\\multi")
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "\\multi")
+       stderr_write ('\n')
     return str
 
-conversions.append (((0,1,9), conv, '\\header { key = concat + with + operator }'))
+conversions.append (((0,1,9), conv, _ ('\\header { key = concat + with + operator }')))
 
 
 def conv (str):
     if re.search ('\\\\octave', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "\\octave")
-       error_file.write ('\n')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "\\octave")
+       stderr_write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
     #  raise FatalConversionError ()
 
     return str
 
 conversions.append ((
-       ((0,1,19), conv, 'deprecated \\octave; cannot convert automatically')))
+       ((0,1,19), conv, _ ('deprecated %s') % '\\octave')))
 
 
 
@@ -55,7 +58,7 @@ def conv (str):
     return str
 
 conversions.append ((
-       ((0,1,20), conv, 'deprecated \\textstyle, new \\key syntax')))
+       ((0,1,20), conv, _ ('deprecated \\textstyle, new \\key syntax'))))
 
 
 
@@ -74,7 +77,7 @@ def conv (str):
     return str
 
 conversions.append ((
-       ((1,0,0), conv, '0.1.21 -> 1.0.0 ')))
+       ((1,0,0), conv, _ ("bump version for release"))))
 
 
 
@@ -92,12 +95,12 @@ conversions.append ((
 
 def conv(str):
     if re.search ('\\\\header', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % _ ("new \\header format"))
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % _ ("new \\header format"))
+       stderr_write ('\n')
     return str
 
-conversions.append (((1,0,2), conv, '\\header { key = concat + with + operator }'))
+conversions.append (((1,0,2), conv, _ ('\\header { key = concat + with + operator }')))
 
 
 def conv(str):
@@ -126,9 +129,9 @@ conversions.append (((1,0,5), conv, 'ChoireStaff -> ChoirStaff'))
 
 def conv(str):
     if re.search ('[a-zA-Z]+ = *\\translator',str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % _ ("\\translator syntax"))
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % _ ("\\translator syntax"))
+       stderr_write ('\n')
     #  raise FatalConversionError ()
     return str
 
@@ -198,14 +201,14 @@ conversions.append (((1,0,16), conv, '\\type -> \\context, textstyle -> textStyl
 
 def conv(str):
     if re.search ('\\\\repeat',str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "\\repeat")
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "\\repeat")
+       stderr_write ('\n')
     #  raise FatalConversionError ()
     return str
 
 conversions.append (((1,0,18), conv,
-                    '\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative'))
+                    _ ('\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative')))
 
 
 def conv(str):
@@ -248,7 +251,7 @@ def conv(str):
     return str
 
 conversions.append (((1,1,52), conv,
-       'deprecate \\grouping'))
+       _ ('deprecate %s') % '\\grouping'))
 
 
 
@@ -348,14 +351,14 @@ conversions.append (((1,3,18), conv, 'staffLineLeading -> staffSpace'))
 
 def conv(str):
     if re.search ('\\\\repetitions',str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "\\repetitions")
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "\\repetitions")
+       stderr_write ('\n')
     #  raise FatalConversionError ()
     return str
 
 conversions.append (((1,3,23), conv,
-       '\\\\repetitions feature dropped'))
+       _ ('deprecate %s ') % '\\repetitions'))
 
 
 
@@ -377,9 +380,9 @@ def conv (str):
     str = re.sub ("\\\\musicalpitch *{([0-9 -]+)}",
                  "\\\\musicalpitch #'(\\1)", str)
     if re.search ('\\\\notenames',str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % _ ("new \\notenames format"))
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % _ ("new \\notenames format"))
+       stderr_write ('\n')
     return str
 
 conversions.append (((1,3,38), conv, '\musicalpitch { a b c } -> #\'(a b c)'))
@@ -397,9 +400,9 @@ conversions.append (((1,3,39), conv, '\\key A ;  ->\\key a;'))
 
 def conv (str):
     if re.search ('\\[:',str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % _ ("new tremolo format"))
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % _ ("new tremolo format"))
+       stderr_write ('\n')
     return str
 
 conversions.append (((1,3,41), conv,
@@ -411,7 +414,7 @@ def conv (str):
     return str
 
 conversions.append (((1,3,42), conv,
-       'Staff_margin_engraver deprecated, use Instrument_name_engraver'))
+       _ ('Staff_margin_engraver deprecated, use Instrument_name_engraver')))
 
 
 def conv (str):
@@ -424,9 +427,9 @@ conversions.append (((1,3,49), conv,
 
 def conv (str):
     if re.search ('\\\\keysignature', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % _ ("new tremolo format"))
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % '\\keysignature')
+       stderr_write ('\n')
     return str
 
 
@@ -530,16 +533,16 @@ def conv (str):
     return str
 
 conversions.append (((1,3,93), conv,
-       'property definiton case (eg. onevoice -> oneVoice)'))
+       _ ('change property definiton case (eg. onevoice -> oneVoice)')))
 
 
 
 def conv (str):
     str = re.sub ('ChordNames*', 'ChordNames', str)
     if re.search ('\\\\textscript "[^"]* *"[^"]*"', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % _ ("new \\textscript markup text"))
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % _ ("new \\textscript markup text"))
+       stderr_write ('\n')
 
     str = re.sub ('\\textscript +("[^"]*")', '\\textscript #\\1', str)
 
@@ -632,7 +635,7 @@ def conv (str):
     str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str)
     return str
 
-conversions.append (((1,3,117), conv, 'identifier names: $!foo_bar_123 -> xfooBarABC'))
+conversions.append (((1,3,117), conv, _ ('identifier names: %s') % '$!foo_bar_123 -> xfooBarABC'))
 
 
 
@@ -673,7 +676,7 @@ def conv (str):
     str = re.sub ('point-and-click +#t', 'point-and-click line-column-location', str)
     return str
 
-conversions.append (((1,3,138), conv, 'point-and-click argument changed to procedure.'))
+conversions.append (((1,3,138), conv, _ ('point-and-click argument changed to procedure.')))
 
 
 def conv (str):
@@ -733,7 +736,7 @@ def conv (str):
     str = re.sub ("([^ \t;#]);", "\\1", str)
 
     return str
-conversions.append (((1,3,146), conv, 'semicolons removed'))
+conversions.append (((1,3,146), conv, _('semicolons removed')))
 
 
 def conv (str):
@@ -789,7 +792,7 @@ def conv (str):
     return str
 
 # 40 ?
-conversions.append (((1,5,40), conv, 'breakAlignOrder property names'))
+conversions.append (((1,5,40), conv, _ ('%s property names') % 'breakAlignOrder'))
 
 
 
@@ -822,7 +825,7 @@ def conv (str):
     str = re.sub ('textNonEmpty *= *##f', "TextScript \\set #'no-spacing-rods = ##t", str)
     return str
 
-conversions.append (((1,5,58), conv, 'deprecate textNonEmpty'))
+conversions.append (((1,5,58), conv, _ ('deprecate %s') % 'textNonEmpty'))
 
 
 
@@ -852,14 +855,14 @@ conversions.append (((1,5,62), conv,
 def conv (str):
     if re.search (r'\addlyrics',str) \
           and re.search ('automaticMelismata', str)  == None:
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "automaticMelismata; turned on by default since 1.5.67.")
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "automaticMelismata; turned on by default since 1.5.67.")
+       stderr_write ('\n')
        raise FatalConversionError ()
     return str
 
 conversions.append (((1,5,67), conv,
-                    'automaticMelismata turned on by default'))
+                    _ ('automaticMelismata turned on by default')))
 
 
 def conv (str):
@@ -1113,19 +1116,19 @@ conversions.append (((1,7,18), conv,
 
 def conv(str):
     if re.search( r'\\GraceContext', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "GraceContext")
-       error_file.write (FROM_TO \
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "GraceContext")
+       stderr_write (FROM_TO \
                          % ("GraceContext", "#(add-to-grace-init .. )"))
-       error_file.write ('\n')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
        raise FatalConversionError ()
 
     str = re.sub ('HaraKiriStaffContext', 'RemoveEmptyStaffContext', str)
     return str
 
-conversions.append (((1,7,19), conv,"remove GraceContext"))
+conversions.append (((1,7,19), conv, _ ("remove %s") % "GraceContext"))
 
 
 
@@ -1157,17 +1160,17 @@ conversions.append (((1,7,23), conv,"barNonAuto -> automaticBars"))
 
 def conv(str):
     if re.search( r'-(start|stop)Cluster', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % _ ("cluster syntax"))
-       error_file.write ('\n')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % _ ("cluster syntax"))
+       stderr_write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
 
        raise FatalConversionError ()
 
     return str
 
-conversions.append (((1,7,24), conv,"cluster syntax"))
+conversions.append (((1,7,24), conv, _ ("cluster syntax")))
 
 
 def conv(str):
@@ -1176,7 +1179,7 @@ def conv(str):
     str = re.sub (r"\\property *Staff\.(Sustain|Sostenuto|UnaCorda)Pedal *\\revert *#'pedal-type", '', str)
     return str
 
-conversions.append (((1,7,28), conv,"new Pedal style syntax"))
+conversions.append (((1,7,28), conv, _ ("new Pedal style syntax")))
 
 
 
@@ -1445,17 +1448,17 @@ def conv (str):
 
     return str
 
-conversions.append (((1,9,0), conv, """New relative mode,
-Postfix articulations, new text markup syntax, new chord syntax."""))
+conversions.append (((1,9,0), conv, _ ("""New relative mode,
+Postfix articulations, new text markup syntax, new chord syntax.""")))
 
 
 def conv (str):
     if re.search ("font-style",str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "font-style")
-       error_file.write ('\n')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "font-style")
+       stderr_write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
 
        raise FatalConversionError ()
 
@@ -1469,7 +1472,7 @@ def conv (str):
     str = re.sub (r'@\\markup', r'-\\markup', str)
     return str
 
-conversions.append (((1,9,1), conv, """Remove - before articulation"""))
+conversions.append (((1,9,1), conv, _ ("""Remove - before articulation""")))
 
 def conv (str):
     str = re.sub ('ly:set-context-property',
@@ -1493,11 +1496,11 @@ def conv (str):
                  'acciaccatura', str)
 
     if re.search ("context-spec-music", str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "context-spec-music")
-       error_file.write ('\n')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "context-spec-music")
+       stderr_write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
 
        raise FatalConversionError ()
 
@@ -1509,12 +1512,13 @@ def conv (str):
     return str
 
 conversions.append (((1,9,3), conv,
-                    """\\acciaccatura misspelling, fingerHorizontalDirection -> fingeringOrientations"""))
+                    (_ ("%s misspelling") % "\\acciaccatura") + \
+                         ", fingerHorizontalDirection -> fingeringOrientations"))
 
 
 def conv (str):
     if re.search ('\\figures', str):
-       error_file.write ("Warning: attempting automatic \\figures conversion.  Check results!");
+       warning (_ ("attempting automatic \\figures conversion.  Check results!"));
 
 
     def figures_replace (m):
@@ -1543,7 +1547,7 @@ def conv (str):
 
     return str
 
-conversions.append (((1,9,4), conv, 'Swap < > and << >>'))
+conversions.append (((1,9,4), conv, _ ('Swap < > and << >>')))
 
 
 def conv (str):
@@ -1555,29 +1559,29 @@ conversions.append (((1,9,5), conv, 'HaraKiriVerticalGroup -> RemoveEmptyVertica
 
 def conv (str):
     if re.search ("ly:get-font", str) :
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "(ly:-get-font")
-       error_file.write ('\n')
-       error_file.write (FROM_TO \
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "(ly:-get-font")
+       stderr_write ('\n')
+       stderr_write (FROM_TO \
                          % ("(ly:paper-get-font (ly:grob-get-paper foo) .. )",
                             "(ly:paper-get-font (ly:grob-get-paper foo) .. )"))
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
        raise FatalConversionError ()
 
     if re.search ("\\pitch *#", str) :
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "\\pitch")
-       error_file.write ('\n')
-       error_file.write ("Use Scheme code to construct arbitrary note events.")
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "\\pitch")
+       stderr_write ('\n')
+       stderr_write (_ ("Use Scheme code to construct arbitrary note events."))
+       stderr_write ('\n')
 
        raise FatalConversionError ()
 
     return str
 
 
-conversions.append (((1,9,6), conv, 'ly:get-font deprecated.'))
+conversions.append (((1,9,6), conv, _ ('deprecate %s') % 'ly:get-font'))
 
 def conv (str):
     def sub_alteration (m):
@@ -1601,44 +1605,44 @@ def conv (str):
 
     m= re.search ("\\\\outputproperty #([^#]+)[\t\n ]*#'([^ ]+)", str)
     if m:
-       error_file.write (\
+       stderr_write (_ (\
                r"""\outputproperty found,
 Please hand-edit, using
 
   \applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)
 
-as a substitution text.""" % (m.group (1), m.group (2)) )
+as a substitution text.""") % (m.group (1), m.group (2)) )
        raise FatalConversionError ()
 
     if re.search ("ly:(make-pitch|pitch-alteration)", str) \
           or re.search ("keySignature", str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "pitches")
-       error_file.write ('\n')
-       error_file.write (
-           """The alteration field of Scheme pitches was multiplied by 2
-to support quarter tone accidentals.  You must update the following constructs by manually:
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "pitches")
+       stderr_write ('\n')
+       stderr_write (
+           _ ("""The alteration field of Scheme pitches was multiplied by 2
+to support quarter tone accidentals.  You must update the following constructs manually:
 
 * calls of ly:make-pitch and ly:pitch-alteration
 * keySignature settings made with \property
-""")
+"""))
        raise FatalConversionError ()
 
     return str
 conversions.append (((1,9,7), conv,
-                    '''use symbolic constants for alterations,
-remove \\outputproperty, move ly:verbose into ly:get-option'''))
+                    _ ('''use symbolic constants for alterations,
+remove \\outputproperty, move ly:verbose into ly:get-option''')))
 
 
 def conv (str):
     if re.search ("dash-length",str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "dash-length")
-       error_file.write ('\n')
-       error_file.write (FROM_TO % ("dash-length", "dash-fraction"))
-       error_file.write ('\n')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "dash-length")
+       stderr_write ('\n')
+       stderr_write (FROM_TO % ("dash-length", "dash-fraction"))
+       stderr_write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
        raise FatalConversionError ()
     return str
 
@@ -1685,7 +1689,7 @@ def conv (str):
     str = re.sub (r"\\property ([a-zA-Z]+)\s*\.\s*automaticMelismata\s*=\s*##([ft])", func, str)
     return str
 
-conversions.append (((2,1,4), conv, """removal of automaticMelismata; use melismaBusyProperties instead."""))
+conversions.append (((2,1,4), conv, _ ("""removal of automaticMelismata; use melismaBusyProperties instead.""")))
 
 
 
@@ -1784,11 +1788,11 @@ conversions.append (((2,1,16), conv, """\\musicglyph #"accidentals-NUM" -> \\sha
 def conv (str):
 
     if re.search (r'\\partcombine', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "\\partcombine")
-       error_file.write ('\n')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "\\partcombine")
+       stderr_write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
        raise FatalConversionError ()
 
     # this rule doesn't really work,
@@ -1800,7 +1804,7 @@ def conv (str):
 
     return str
 
-conversions.append (((2,1,17), conv, """\\partcombine syntax change to \\newpartcombine"""))
+conversions.append (((2,1,17), conv, _ ("\\partcombine syntax change to \\newpartcombine")))
 
 
 def conv (str):
@@ -1817,7 +1821,7 @@ conversions.append (((2,1,18), conv, """\\newpartcombine -> \\partcombine,
 
 def conv (str):
     if re.search ('include "drumpitch', str):
-       error_file.write ("Drums found. Enclose drum notes in \\drummode")
+       stderr_write (_ ("Drums found. Enclose drum notes in \\drummode"))
 
     str = re.sub (r'\\include "drumpitch-init.ly"','', str)
 
@@ -1828,14 +1832,14 @@ def conv (str):
 
 
     if re.search ('drums->paper', str):
-       error_file.write ("\nDrum notation found. Check file manually!")
+       stderr_write (_ ("\n%s found. Check file manually!\n") % _("Drum notation"))
 
     str = re.sub (r"""\\apply\s+#\(drums->paper\s+'([a-z]+)\)""",
                  r"""\property DrumStaff.drumStyleTable = #\1-style""",
                  str)
 
     if re.search ('Thread', str):
-       error_file.write ("\nThread found. Check file manually!\n");
+       stderr_write (_ ("\n%s found. Check file manually!\n") % "Thread");
 
     str = re.sub (r"""(\\once\s*)?\\property\s+Thread\s*\.\s*NoteHead\s*"""
                  + r"""\\(set|override)\s*#'style\s*=\s*#'harmonic"""
@@ -1846,7 +1850,7 @@ def conv (str):
     str = re.sub (r"""Thread""", """Voice""", str)
 
     if re.search ('\bLyrics\b', str):
-       error_file.write ("\nLyrics found. Check file manually!\n");
+       stderr_write (_ ("\n%s found. Check file manually!\n") % "Lyrics");
 
     str = re.sub (r"""LyricsVoice""", r"""L@ricsVoice""", str)
     str = re.sub (r"""\bLyrics\b""", r"""LyricsVoice""", str)
@@ -1856,8 +1860,8 @@ def conv (str):
 
     return str
 
-conversions.append (((2,1,19), conv, """Drum notation changes, Removing \\chordmodifiers, \\notenames.
-Harmonic notes. Thread context removed. Lyrics context removed."""))
+conversions.append (((2,1,19), conv, _ ("""Drum notation changes, Removing \\chordmodifiers, \\notenames.
+Harmonic notes. Thread context removed. Lyrics context removed.""")))
 
 def conv (str):
     str = re.sub (r'nonevent-skip', 'skip-music', str)
@@ -1885,8 +1889,8 @@ brew_molecule -> print
 brew-new-markup-molecule -> Text_item::print
 LyricsVoice -> Lyrics
 tupletInvisible -> TupletBracket \set #'transparent
-Grob::preset_extent removed.
-""" ))
+%s.
+""" % (_ ("remove %s") % "Grob::preset_extent")))
 
 
 def conv (str):
@@ -1913,11 +1917,11 @@ def conv (str):
     str = re.sub ('Molecule', 'Stencil', str)
     return str
 
-conversions.append (((2,1,22), conv, """new syntax for property settings:
+conversions.append (((2,1,22), conv, """%s
        \\set A.B = #C , \\unset A.B
        \\override A.B #C = #D, \\revert A.B #C
 
-"""))
+""" % _ ("new syntax for property settings:")))
 
 def conv (str):
     def subst_in_trans (match):
@@ -1950,7 +1954,8 @@ def conv (str):
 
     return str
 
-conversions.append (((2,1,23), conv, """Property setting syntax in \\translator{ }"""))
+conversions.append (((2,1,23), conv, _ ("Property setting syntax in \\translator{ }")))
+
 def conv (str):
     str = re.sub (r'music-list\?', 'ly:music-list?', str)
     str = re.sub (r'\|\s*~', '~ |', str)
@@ -1967,11 +1972,11 @@ def conv (str):
     str = re.sub (r'ly:get-broken-into', 'ly:spanner-broken-into', str)
     str = re.sub (r'Melisma_engraver', 'Melisma_translator', str)
     if re.search ("ly:get-paper-variable", str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "ly:paper-get-variable")
-       error_file.write ('\n')
-       error_file.write ('use (ly:paper-lookup (ly:grob-paper ))')
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "ly:paper-get-variable")
+       stderr_write ('\n')
+       stderr_write (_ ('use %s') % '(ly:paper-lookup (ly:grob-paper ))')
+       stderr_write ('\n')
        raise FatalConversionError ()
 
     str = re.sub (r'\\defaultAccidentals', "#(set-accidental-style 'default)", str)
@@ -1987,7 +1992,7 @@ def conv (str):
 
     return str
 
-conversions.append (((2,1,25), conv, """Scheme grob function renaming"""))
+conversions.append (((2,1,25), conv, _ ("Scheme grob function renaming")))
 
 
 def conv (str):
@@ -2000,11 +2005,11 @@ def conv (str):
 
     return str
 
-conversions.append (((2,1,26), conv, """More Scheme function renaming"""))
+conversions.append (((2,1,26), conv, _ ("More Scheme function renaming")))
 
 def conv (str):
     def subst (m):
-       g = string.atoi (m.group (2))
+       g = int (m.group (2))
        o = g / 12
        g -= o * 12
        if g <  0:
@@ -2116,7 +2121,7 @@ def conv (str):
     return str
 
 conversions.append (((2, 2, 0), conv,
-                    '''clean up version. '''))
+                    _ ("bump version for release")))
 
 def conv (str):
     return re.sub (r'\\apply\b', r'\\applymusic', str)
@@ -2126,15 +2131,15 @@ conversions.append (((2, 3, 1), conv,
 
 def conv (str):
     if re.search ('textheight', str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "textheight")
-       error_file.write ('\n')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
-       error_file.write (
-"""Page layout has been changed, using paper size and margins.
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "textheight")
+       stderr_write ('\n')
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
+       stderr_write (
+_ ("""Page layout has been changed, using paper size and margins.
 textheight is no longer used.
-""")
+"""))
     str = re.sub (r'\\OrchestralScoreContext', '\\Score', str)
     def func(m):
        if m.group(1) not in ['RemoveEmptyStaff',
@@ -2158,7 +2163,7 @@ def conv (str):
     return str
 
 conversions.append (((2, 3, 4), conv,
-                    '''remove \\notes'''))
+                    _ ('remove %s') % '\\notes'))
 
 
 
@@ -2194,7 +2199,7 @@ def conv (str):
     str = re.sub (r'\\addlyrics', r'\\oldaddlyrics', str)
     str = re.sub (r'\\newlyrics', r'\\addlyrics', str)
     if re.search (r"\\override\s*TextSpanner", str):
-       error_file.write ("\nWarning: TextSpanner has been split into DynamicTextSpanner and TextSpanner\n")
+       stderr_write ("\nWarning: TextSpanner has been split into DynamicTextSpanner and TextSpanner\n")
     return str
 
 conversions.append (((2, 3, 10), conv,
@@ -2251,8 +2256,8 @@ def conv (str):
     return str
 
 conversions.append (((2, 3, 16), conv,
-                    '''\\foo -> \\foomode (for chords, notes, etc.)
-fold \\new FooContext \\foomode into \\foo.'''))
+                    _ ('''\\foo -> \\foomode (for chords, notes, etc.)
+fold \\new FooContext \\foomode into \\foo.''')))
 
 def conv (str):
     str = re.sub (r'(slur|stem|phrasingSlur|tie|dynamic|dots|tuplet|arpeggio|)Both', r'\1Neutral', str)
@@ -2261,8 +2266,8 @@ def conv (str):
     return str
 
 conversions.append (((2, 3, 17), conv,
-                    '''\\foo -> \\foomode (for chords, notes, etc.)
-fold \\new FooContext \\foomode into \\foo.'''))
+                    '''slurBoth -> slurNeutral, stemBoth -> stemNeutral, etc.
+\\applymusic #(remove-tag 'foo) -> \\removeWithTag 'foo'''))
 
 
 def conv (str):
@@ -2277,12 +2282,12 @@ def conv (str):
     str = re.sub (r'\\paper', r'\\layout', str)
     str = re.sub (r'\\bookpaper', r'\\paper', str)
     if re.search ('paper-set-staff-size', str):
-       error_file.write ('''\nWarning: staff size should be changed at top-level
+       warning (_ ('''staff size should be changed at top-level
 with
 
   #(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)
 
-''')
+'''))
 
 
     str = re.sub (r'#\(paper-set-staff-size', '%Use set-global-staff-size at toplevel\n% #(layout-set-staff-size', str)
@@ -2290,8 +2295,7 @@ with
     
 conversions.append (((2, 3, 22),
                     conv,
-                    '''paper -> layout
- bookpaper -> paper''' ))
+                    '''paper -> layout, bookpaper -> paper''' ))
 
 
 def conv (str):
@@ -2313,7 +2317,7 @@ def conv (str):
 
 conversions.append (((2, 3, 24),
                     conv,
-                    '''regularize other identifiers.'''))
+                    _ ('''regularize other identifiers''')))
 
 def conv (str):
     str = re.sub ('petrucci_c1', 'petrucci-c1', str)
@@ -2330,19 +2334,18 @@ def conv (str):
 
 conversions.append (((2, 4, 0),
                     conv,
-                    ''))
+                    _ ("bump version for release")))
 
 
 def conv (str):
     str = re.sub (r'\\quote\s+"?([a-zA-Z0-9]+)"?\s+([0-9.*/]+)',
                  r'\\quoteDuring #"\1" { \skip \2 }',
-                 str
-                 )
+                 str)
     return str
 
 conversions.append (((2, 5, 0),
                     conv,
-                    ''))
+                    '\\quote -> \\quoteDuring'))
 
 
 def conv (str):
@@ -2402,20 +2405,20 @@ def conv (str):
        if encoding == 'latin1':
            return match.group (2)
 
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % ("\\encoding: %s" % encoding))
-       error_file.write ('\n')
-       error_file.write (_ ("LilyPond source must be UTF-8"))
-       error_file.write ('\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % ("\\encoding: %s" % encoding))
+       stderr_write ('\n')
+       stderr_write (_ ("LilyPond source must be UTF-8"))
+       stderr_write ('\n')
        if encoding == 'TeX':
-           error_file.write (_ ("Try the texstrings backend"))
-           error_file.write ('\n')
+           stderr_write (_ ("Try the texstrings backend"))
+           stderr_write ('\n')
        else:
-           error_file.write ( _("Do something like: %s") % \
+           stderr_write ( _("Do something like: %s") % \
                               ("recode %s..utf-8 FILE" % encoding))
-           error_file.write ('\n')
-       error_file.write (_ ("Or save as UTF-8 in your editor"))
-       error_file.write ('\n')
+           stderr_write ('\n')
+       stderr_write (_ ("Or save as UTF-8 in your editor"))
+       stderr_write ('\n')
        raise FatalConversionError ()
 
        return match.group (0)
@@ -2446,27 +2449,27 @@ def conv (str):
 
 conversions.append (((2, 5, 13),
                     conv,
-                    '\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click'))
+                    _ ('\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click')))
 
 
 def conv (str):
     if re.search ("ly:stencil-set-extent!", str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "ly:stencil-set-extent!")
-       error_file.write ('\n')
-       error_file.write ('use (set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "ly:stencil-set-extent!")
+       stderr_write ('\n')
+       stderr_write ('use (set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))\n')
        raise FatalConversionError ()
     if re.search ("ly:stencil-align-to!", str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % "ly:stencil-align-to!")
-       error_file.write ('\n')
-       error_file.write ('use (set! VAR (ly:stencil-aligned-to VAR AXIS DIR))\n')
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % "ly:stencil-align-to!")
+       stderr_write ('\n')
+       stderr_write ('use (set! VAR (ly:stencil-aligned-to VAR AXIS DIR))\n')
        raise FatalConversionError ()
     return str
 
 conversions.append (((2, 5, 17),
                     conv,
-                    'ly:stencil-set-extent! removed'))
+                    _ ('remove %s') % 'ly:stencil-set-extent!'))
 
 def conv (str):
     str = re.sub (r"ly:warn\b", 'ly:warning', str)
@@ -2478,21 +2481,21 @@ conversions.append (((2, 5, 18),
 def conv (str):
     if re.search ("(override-|revert-)auto-beam-setting", str)\
        or re.search ("autoBeamSettings", str):
-       error_file.write ('\n')
-       error_file.write (NOT_SMART % _ ("auto beam settings"))
-       error_file.write ('\n')
-       error_file.write ('''
+       stderr_write ('\n')
+       stderr_write (NOT_SMART % _ ("auto beam settings"))
+       stderr_write ('\n')
+       stderr_write (_ ('''
 Auto beam settings must now specify each interesting moment in a measure
 explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.
-''')
-       error_file.write (UPDATE_MANUALLY)
-       error_file.write ('\n')
+'''))
+       stderr_write (UPDATE_MANUALLY)
+       stderr_write ('\n')
        raise FatalConversionError ()
     return str
 
 conversions.append (((2, 5, 21),
                     conv,
-                    'warn about auto beam settings'))
+                    _ ('warn about auto beam settings')))
 
 def conv (str):
     str = re.sub (r"unfoldrepeats", 'unfoldRepeats', str)
@@ -2500,16 +2503,13 @@ def conv (str):
     return str
 
 conversions.append (((2, 5, 25), conv,
-
-                    'unfoldrepeats -> unfoldRepeats,'
-                    + 'compressmusic -> compressMusic'))
+            'unfoldrepeats -> unfoldRepeats, compressmusic -> compressMusic'))
 
 def conv (str):
     return str
 
 conversions.append (((2, 6, 0), conv,
-
-                    'dummy rule for 2.6')) 
+                    _ ("bump version for release")))
 
 
 
@@ -2547,7 +2547,7 @@ def conv (str):
     return str
 
 conversions.append (((2, 7, 4), conv,
-                    '''keyAccidentalOrder->keyAlterationOrder'''))
+                    '''keyAccidentalOrder -> keyAlterationOrder'''))
 
 
 
@@ -2563,7 +2563,7 @@ def conv (str):
     return str
 
 conversions.append (((2, 7, 6), conv,
-                    '''Performer_group_performer -> Performer_group, Engraver_group_engraver -> Engraver_group
+                    '''Performer_group_performer -> Performer_group, Engraver_group_engraver -> Engraver_group,
 inside-slur -> avoid-slur'''))
 
 
@@ -2617,15 +2617,15 @@ def conv (str):
                subber, str)
 
     if re.search ('bar-size-procedure', str):
-       error_file.write (NOT_SMART % "bar-size-procedure")
+       stderr_write (NOT_SMART % "bar-size-procedure")
     if re.search ('space-function', str):
-       error_file.write (NOT_SMART % "space-function")
+       stderr_write (NOT_SMART % "space-function")
     if re.search ('verticalAlignmentChildCallback', str):
-       error_file.write ('verticalAlignmentChildCallback has been deprecated') 
+       stderr_write (_ ('verticalAlignmentChildCallback has been deprecated'))
     return str
 
 conversions.append (((2, 7, 13), conv,
-                    '''layout engine refactoring. [FIXME] '''))
+                    '''layout engine refactoring [FIXME]'''))
 
 
 
@@ -2649,18 +2649,18 @@ def conv (str):
     return str
 
 conversions.append (((2, 7, 14), conv,
-                    '''Remove callbacks property, deprecate XY-extent-callback. '''))
+                    _ ('Remove callbacks property, deprecate XY-extent-callback.')))
 
 
 def conv (str):
     if re.search ('[XY]-offset-callbacks', str):
-       error_file.write (NOT_SMART % "[XY]-offset-callbacks")
+       stderr_write (NOT_SMART % "[XY]-offset-callbacks")
     if re.search ('position-callbacks', str):
-       error_file.write (NOT_SMART % "position-callbacks")
+       stderr_write (NOT_SMART % "position-callbacks")
     return str
 
 conversions.append (((2, 7, 15), conv,
-                    '''Use grob closures iso. XY-offset-callbacks.'''))
+                    _ ('Use grob closures iso. XY-offset-callbacks.')))
 
 
 def conv (str):
@@ -2682,7 +2682,7 @@ def conv (str):
     return str
 
 conversions.append (((2, 7, 24), conv,
-                    """deprecate number-visibility""")) 
+                    _ ('deprecate %s') % 'number-visibility')) 
 
 def conv (str):
     str = re.sub (r"ly:spanner-get-bound", "ly:spanner-bound", str)
@@ -2767,7 +2767,7 @@ def conv (str):
     return str
 
 conversions.append (((2, 7, 32), conv,
-                    """foobar -> foo-bar for \paper, \layout"""))
+                    _ ("foobar -> foo-bar for \paper, \layout")))
 
 def conv (str):
     str = re.sub ('debug-beam-quanting', 'debug-beam-scoring', str)
@@ -2828,9 +2828,9 @@ def conv (str):
                   r"""\\override \g<context>TupletNumber #'text = #tuplet-number::calc-fraction-text""", str)
 
     if re.search ('tupletNumberFormatFunction', str):
-        error_file.write ("\n")
-       error_file.write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
-        error_file.write ("\n")
+        stderr_write ("\n")
+       stderr_write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
+        stderr_write ("\n")
         
     return str
 
@@ -2874,7 +2874,7 @@ def conv (str):
     str = re.sub (r'\\midi\s*{\s*\\tempo ([0-9]+)\s*([.]*)\s*=\s*([0-9]+)\s*}', sub_tempo, str)
     return str
 
-conversions.append (((2, 9, 16), conv, """deprecate \\tempo in \\midi"""))
+conversions.append (((2, 9, 16), conv, _ ("deprecate \\tempo in \\midi")))
 
 def conv (str):
     str = re.sub ('printfirst-page-number', 'print-first-page-number', str)
@@ -2886,7 +2886,7 @@ conversions.append (((2, 9, 19), conv, """printfirst-page-number -> print-first-
 def conv (str):
     return str
 
-conversions.append (((2, 10, 0), conv, """bump version for release"""))
+conversions.append (((2, 10, 0), conv, _ ("bump version for release")))
 
 
 def conv (str):
@@ -2909,7 +2909,7 @@ def conv (str):
     
     return str
 
-conversions.append (((2, 11, 5), conv, """deprecate cautionary-style. Use AccidentalCautionary properties"""))
+conversions.append (((2, 11, 5), conv, _ ("deprecate cautionary-style. Use AccidentalCautionary properties")))
 
                     
 
@@ -2938,7 +2938,7 @@ def conv (str):
                        'standard-alteration-glyph-name-alist')
     return str
 
-conversions.append (((2, 11, 6), conv, """Rename accidental glyphs, use glyph-name-alist."""))
+conversions.append (((2, 11, 6), conv, _ ("Rename accidental glyphs, use glyph-name-alist.")))
 
 
 def conv (str):
@@ -2948,13 +2948,12 @@ def conv (str):
                   r"\override Beam #'breakable", str)
     str = re.sub (r'addquote' , 'addQuote', str)
     if re.search ("Span_dynamic_performer", str):
-        error_file.write ("Span_dynamic_performer has been merged into Dynamic_performer")
+        stderr_write ("Span_dynamic_performer has been merged into Dynamic_performer")
 
     return str
 
 conversions.append (((2, 11, 10), conv, """allowBeamBreak -> Beam #'breakable = ##t
 addquote -> addQuote
-
 """))
 
 def conv (str):
@@ -2971,8 +2970,8 @@ def conv (str):
                   str)
 
     if re.search ('edge-text', str):
-       error_file.write (NOT_SMART % _ ("edge-text settings for TextSpanner."))
-       error_file.write (_ ("Use\n\n%s") %
+       stderr_write (NOT_SMART % _ ("edge-text settings for TextSpanner."))
+       stderr_write (_ ("Use\n\n%s") %
                           "\t\\override TextSpanner #'bound-details #'right #'text = <right-text>\n"
                           "\t\\override TextSpanner #'bound-details #'left #'text = <left-text>\n")
 
@@ -3018,13 +3017,14 @@ def conv (str):
                   r"scripts.caesura.curved", str)
 
     if re.search ('dash-fraction', str):
-       error_file.write (NOT_SMART % _ ("all settings related to dashed lines.\n"))
-       error_file.write (_ ("Use \\override ... #'style = #'line for solid lines and\n"))
-       error_file.write (_ ("\t\\override ... #'style = #'dashed-line for dashed lines."))
+       stderr_write (NOT_SMART % _ ("all settings related to dashed lines.\n"))
+       stderr_write (_ ("Use \\override ... #'style = #'line for solid lines and\n"))
+       stderr_write (_ ("\t\\override ... #'style = #'dashed-line for dashed lines."))
 
     return str
 
-conversions.append (((2, 11, 35), conv, """scripts.caesura -> scripts.caesura.curved. Use #'style not #'dash-fraction to select solid/dashed lines."""))
+conversions.append (((2, 11, 35), conv, """scripts.caesura -> scripts.caesura.curved.
+""" + _ ("Use #'style not #'dash-fraction to select solid/dashed lines.")))
 
 def conv (str):
     str = re.sub (r"setEasyHeads", r"easyHeadsOn", str)
index ec38d70d73471defa16afdb0b2cc1a6b2b4e47b8..cfa5e67d0a7b0de58428f76b3ea96efac1cecdc1 100644 (file)
@@ -59,6 +59,11 @@ underscore = _
 def encoded_write(f, s):
     f.write (s.encode (f.encoding or 'utf_8'))
 
+# ugh, Python 2.5 optparse requires Unicode strings in some argument
+# functions, and refuse them in some other places
+def display_encode (s):
+    return s.encode (sys.stderr.encoding or 'utf_8')
+
 def stderr_write (s):
     encoded_write (sys.stderr, s)
 
index 07e4f5d7928f42f476ea17dfc3c0ad48238eb2e6..b266830d0726bd32e43b884e5ae1e6e2f795836a 100644 (file)
@@ -2,6 +2,9 @@ import inspect
 import sys
 import string
 import re
+import lilylib
+
+_ = lilylib._
 
 from rational import Rational
 
@@ -9,6 +12,10 @@ from rational import Rational
 previous_pitch = None
 relative_pitches = False
 
+def warning (str):
+    ly.stderr_write ((_ ("warning: %s") % str) + "\n")
+
+
 def escape_instrument_string (input_string):
     retstring = string.replace (input_string, "\"", "\\\"")
     if re.match ('.*[\r\n]+.*', retstring):
@@ -567,7 +574,8 @@ class RepeatedMusic:
             self.music = SequentialMusic ()
             self.music.elements = music
         else:
-            sys.stderr.write ("WARNING: Unable to set the music %s for the repeat %s" % (music, self))
+            warning (_ ("unable to set the music %(music)s for the repeat %(repeat)s" % \
+                            {'music':music, 'repeat':self}))
     def add_ending (self, music):
         self.endings.append (music)
     def print_ly (self, printer):
@@ -575,7 +583,7 @@ class RepeatedMusic:
         if self.music:
             self.music.print_ly (printer)
         else:
-            sys.stderr.write ("WARNING: Encountered repeat without body\n")
+            warning (_ ("encountered repeat without body"))
             printer.dump ('{}')
         if self.endings:
             printer.dump ('\\alternative {')
@@ -697,6 +705,10 @@ class ChordEvent (NestedMusic):
                 printer ('\\grace')
             # don't print newlines after the { and } braces
             self.grace_elements.print_ly (printer, False)
+        # Print all overrides and other settings needed by the 
+        # articulations/ornaments before the note
+        for e in other_events:
+            e.print_before_note (printer)
 
         if rest_events:
             rest_events[0].print_ly (printer)
@@ -719,6 +731,9 @@ class ChordEvent (NestedMusic):
         for e in other_events:
             e.print_ly (printer)
 
+        for e in other_events:
+            e.print_after_note (printer)
+
         self.print_comment (printer)
             
 class Partial (Music):
@@ -755,6 +770,19 @@ class BarLine (Music):
         return " | "
 
 class Event(Music):
+    def __init__ (self):
+        # strings to print before the note to which an event is attached.
+        # Ignored for notes etc.
+        self.before_note = None
+        self.after_note = None
+   # print something before the note to which an event is attached, e.g. overrides
+    def print_before_note (self, printer):
+        if self.before_note:
+            printer.dump (self.before_note)
+   # print something after the note to which an event is attached, e.g. resetting
+    def print_after_note (self, printer):
+        if self.after_note:
+            printer.dump (self.after_note)
     pass
 
 class SpanEvent (Event):
@@ -772,34 +800,45 @@ class SpanEvent (Event):
         self.span_type = type
 
 class SlurEvent (SpanEvent):
+    def print_before_note (self, printer):
+        command = {'dotted': '\\slurDotted', 
+                  'dashed' : '\\slurDashed'}.get (self.line_type, '')
+        if command and self.span_direction == -1:
+            printer.dump (command)
+    def print_after_note (self, printer):
+        # reset non-solid slur types!
+        command = {'dotted': '\\slurSolid', 
+                  'dashed' : '\\slurSolid'}.get (self.line_type, '')
+        if command and self.span_direction == -1:
+            printer.dump (command)
     def ly_expression (self):
-        before = ''
-        after = ''
-        # TODO: setting dashed/dotted line style does not work, because that
-        #       command needs to be written before the note, not when the
-        #       event is observed after the note!
-        #before = {'dotted': '\\slurDotted', 
-        #          'dashed' : '\\slurDashed'}.get (self.line_type, '')
-        #if before:
-            #after = '\\slurSolid'
-
-        return {-1: before + '(' + after,
-            1:')'}.get (self.span_direction, '')
+        return {-1: '(', 1:')'}.get (self.span_direction, '')
 
 class BeamEvent (SpanEvent):
     def ly_expression (self):
-        return {-1: '[',
-            1:']'}.get (self.span_direction, '')
+        return {-1: '[', 1:']'}.get (self.span_direction, '')
 
 class PedalEvent (SpanEvent):
     def ly_expression (self):
         return {-1: '\\sustainDown',
+            0:'\\sustainUp\\sustainDown',
             1:'\\sustainUp'}.get (self.span_direction, '')
 
+class TextSpannerEvent (SpanEvent):
+    def ly_expression (self):
+        return {-1: '\\startTextSpan',
+            1:'\\stopTextSpan'}.get (self.span_direction, '')
+
+class BracketSpannerEvent (SpanEvent):
+    def ly_expression (self):
+        return {-1: '\\startGroup',
+            1:'\\stopGroup'}.get (self.span_direction, '')
+
+
 # type==-1 means octave up, type==-2 means octave down
 class OctaveShiftEvent (SpanEvent):
     def wait_for_note (self):
-        return False;
+        return False
     def set_span_type (self, type):
         self.span_type = {'up': 1, 'down': -1}.get (type, 0)
     def ly_octave_shift_indicator (self):
@@ -824,24 +863,37 @@ class TrillSpanEvent (SpanEvent):
             1:'\\stopTrillSpan'}.get (self.span_direction, '')
 
 class GlissandoEvent (SpanEvent):
+    def print_before_note (self, printer):
+        if self.span_direction == -1:
+            style= {
+                "dashed" : "dashed-line",
+                "dotted" : "dotted-line",
+                "wavy"   : "zigzag" 
+            }. get (self.line_type, None)
+            if style:
+                printer.dump ("\once \override Glissando #'style = #'%s" % style)
     def ly_expression (self):
-        style = ''
-        # TODO: wavy-line glissandos don't work, becasue the style has to be
-        #       set before the note, at the \glissando it's already too late!
-        #if self.line_type == 'wavy':
-            #style = "\once\override Glissando #'style = #'zigzag"
-        # In lilypond, glissando is NOT a spanner, unlike MusicXML.
-        return {-1: style + '\\glissando',
+        return {-1: '\\glissando',
             1:''}.get (self.span_direction, '')
 
 class ArpeggioEvent(Event):
     def __init__ (self):
         Event.__init__ (self)
         self.direction = 0
+        self.non_arpeggiate = False
     def wait_for_note (self):
-        return True;
+        return True
+    def print_before_note (self, printer):
+        if self.non_arpeggiate:
+            printer.dump ("\\arpeggioBracket")
+        else:
+          dir = { -1: "\\arpeggioDown", 1: "\\arpeggioUp" }.get (self.direction, '')
+          if dir:
+              printer.dump (dir)
+    def print_after_note (self, printer):
+        if self.non_arpeggiate or self.direction:
+            printer.dump ("\\arpeggioNeutral")
     def ly_expression (self):
-        # TODO: Use self.direction for up/down arpeggios
         return ('\\arpeggio')
 
 
@@ -871,22 +923,45 @@ class HairpinEvent (SpanEvent):
 
 class DynamicsEvent (Event):
     def __init__ (self):
+        Event.__init__ (self)
         self.type = None
     def wait_for_note (self):
-        return True;
+        return True
     def ly_expression (self):
         if self.type:
             return '\%s' % self.type
         else:
-            return;
+            return
 
     def print_ly (self, printer):
         if self.type:
             printer.dump ("\\%s" % self.type)
 
+class MarkEvent (Event):
+    def __init__ (self, text="\\default"):
+        Event.__init__ (self)
+        self.mark = text
+    def wait_for_note (self):
+        return False
+    def ly_contents (self):
+        if self.mark:
+            return '%s' % self.mark
+        else:
+            return "\"ERROR\""
+    def ly_expression (self):
+        return '\\mark %s' % self.ly_contents ()
+
+class MusicGlyphMarkEvent (MarkEvent):
+    def ly_contents (self):
+        if self.mark:
+            return '\\markup { \\musicglyph #"scripts.%s" }' % self.mark
+        else:
+            return ''
+
 
 class TextEvent (Event):
     def __init__ (self):
+        Event.__init__ (self)
         self.Text = None
         self.force_direction = None
         self.markup = ''
@@ -904,10 +979,11 @@ class TextEvent (Event):
 
 class ArticulationEvent (Event):
     def __init__ (self):
+        Event.__init__ (self)
         self.type = None
         self.force_direction = None
     def wait_for_note (self):
-        return True;
+        return True
 
     def direction_mod (self):
         return { 1: '^', -1: '_', 0: '-' }.get (self.force_direction, '')
index 3074ee5b4174c9e27311d95b4b90334c22c8624d..9d6fa054dbddd136b8184021dc0fbfe97ccdb46a 100644 (file)
@@ -5,6 +5,13 @@ from rational import *
 import re
 import sys
 import copy
+import lilylib
+
+_ = lilylib._
+
+def error (str):
+    ly.stderr_write ((_ ("error: %s") % str) + "\n")
+
 
 def escape_ly_output_string (input_string):
     return_string = input_string
@@ -44,7 +51,7 @@ class Xml_node:
        return ''.join ([c.get_text () for c in self._children])
 
     def message (self, msg):
-        sys.stderr.write (msg+'\n')
+        lilylib.stderr_write (msg+'\n')
 
         p = self
         while p:
@@ -262,7 +269,7 @@ class Attributes (Measure_element):
             else:
                 return (4, 4)
         except KeyError:
-            sys.stderr.write ('error: requested time signature, but time sig unknown\n')
+            error (_ ("requested time signature, but time sig is unknown"))
             return (4, 4)
 
     # returns clef information in the form ("cleftype", position, octave-shift)
@@ -328,7 +335,7 @@ class Note (Measure_element):
            # FIXME: is it ok to default to eight note for grace notes?
            return 3
         else:
-            self.message ("Encountered note at %s with %s duration (no <type> element):" % (self.start, self.duration) )
+            self.message (_ ("Encountered note at %s with %s duration (no <type> element):") % (self.start, self.duration) )
             return 0
 
     def get_factor (self):
@@ -362,7 +369,7 @@ class Part_list (Music_xml_node):
         if instrument_name:
             return instrument_name
         else:
-            sys.stderr.write ("Opps, couldn't find instrument for ID=%s\n" % id)
+            lilylib.stderr_write (_ ("Unable to find find instrument for ID=%s\n") % id)
             return "Grand Piano"
 
 class Part_group (Music_xml_node):
@@ -751,6 +758,12 @@ class Wedge (Music_xml_spanner):
 class Tuplet (Music_xml_spanner):
     pass
 
+class Bracket (Music_xml_spanner):
+    pass
+
+class Dashes (Music_xml_spanner):
+    pass
+
 class Slur (Music_xml_spanner):
     def get_type (self):
        return self.type
@@ -770,6 +783,9 @@ class Pedal (Music_xml_spanner):
 class Glissando (Music_xml_spanner):
     pass
 
+class Slide (Music_xml_spanner):
+    pass
+
 class Octave_shift (Music_xml_spanner):
     # default is 8 for the octave-shift!
     def get_size (self):
@@ -867,7 +883,9 @@ class_dict = {
         'bar-style': BarStyle,
        'beam' : Beam,
         'bend' : Bend,
+        'bracket' : Bracket,
        'chord': Chord,
+        'dashes' : Dashes,
        'dot': Dot,
        'direction': Direction,
         'direction-type': DirType,
@@ -890,6 +908,7 @@ class_dict = {
        'pitch': Pitch,
        'rest': Rest,
     'score-part': Score_part,
+        'slide': Slide,
        'slur': Slur,
        'staff': Staff,
         'syllabic': Syllabic,
index 187218c6173dc545f627806720a91efee63ede76..2ef83b3d30853237beb3c7e29a7d1b4e504e253f 100644 (file)
        (X-offset . ,ly:side-position-interface::x-aligned-side)
        (direction . ,LEFT)
        (self-alignment-Y . ,CENTER)
+       (self-alignment-X . ,CENTER)
        (meta . ((class . Spanner)
                 (interfaces . (system-start-text-interface
                                side-position-interface
      . (
        (axes . (,Y))
        (Y-extent . ,ly:axis-group-interface::height)
+       (X-extent . ,ly:axis-group-interface::width)
        (Y-offset . ,ly:side-position-interface::y-aligned-side)
+       (outside-staff-priority . 1000)
        (side-axis . ,Y)
        (staff-padding . 1.0)
        (padding . 1.2)
      . (
        (axes . (,Y))
        (Y-extent . ,ly:axis-group-interface::height)
+       (X-extent . ,ly:axis-group-interface::width)
        (Y-offset . ,ly:side-position-interface::y-aligned-side)
+       (outside-staff-priority . 1000)
        (side-axis . ,Y)
        (padding . 1.2)
        (staff-padding . 1.2)
      . (
        (axes . (,Y))
        (Y-extent . ,ly:axis-group-interface::height)
+       (X-extent . ,ly:axis-group-interface::width)
        (Y-offset . ,ly:side-position-interface::y-aligned-side)
+       (outside-staff-priority . 1000)
        (side-axis . ,Y)
        (padding . 1.2)
        (staff-padding . 1.2)
index c47cb4a6c3685206678ef8ad9fd54111a8c28b9e..5daba8d9321a38166355d78a457b91a8b1965313 100644 (file)
@@ -189,24 +189,26 @@ Use `markup*' in a \\notemode context."
   (cond ((and (pair? expr)
               (keyword? (car expr)))
          ;; expr === (#:COMMAND arg1 ...)
-         (let* ((command (symbol->string (keyword->symbol (car expr))))
-                (sig (markup-command-signature
-                     (car (lookup-markup-command command))))
-                (sig-len (length sig)))
-           (do ((i 0 (1+ i))
-                (args '() args)
-                (rest (cdr expr) rest))
-               ((>= i sig-len)
-                (values (cons (keyword->make-markup (car expr)) (reverse args)) rest))
-             (cond ((eqv? (list-ref sig i) markup-list?)
-                    ;; (car rest) is a markup list
-                    (set! args (cons `(list ,@(compile-all-markup-expressions (car rest))) args))
-                    (set! rest (cdr rest)))
-                   (else
-                    ;; pick up one arg in `rest'
-                    (receive (a r) (compile-markup-arg rest)
-                             (set! args (cons a args))
-                             (set! rest r)))))))
+         (let ((command (symbol->string (keyword->symbol (car expr)))))
+            (if (not (pair? (lookup-markup-command command)))
+                (ly:error (_ "Not a markup command: ~A") command))
+            (let* ((sig (markup-command-signature
+                         (car (lookup-markup-command command))))
+                   (sig-len (length sig)))
+              (do ((i 0 (1+ i))
+                   (args '() args)
+                   (rest (cdr expr) rest))
+                  ((>= i sig-len)
+                   (values (cons (keyword->make-markup (car expr)) (reverse args)) rest))
+                (cond ((eqv? (list-ref sig i) markup-list?)
+                       ;; (car rest) is a markup list
+                       (set! args (cons `(list ,@(compile-all-markup-expressions (car rest))) args))
+                       (set! rest (cdr rest)))
+                      (else
+                       ;; pick up one arg in `rest'
+                       (receive (a r) (compile-markup-arg rest)
+                         (set! args (cons a args))
+                         (set! rest r))))))))
         ((and (pair? expr)
               (pair? (car expr))
               (keyword? (caar expr)))
index be15759f7a87abefe4f89a27a48198778a3b72ee..8c2b5dc71025a7e18fe5deef9dd5c866e8ff560a 100644 (file)
@@ -9,7 +9,7 @@
                  '(pt mm cm in staff-height staff-space
                       page-top-space
                       between-system-space between-system-padding
-                      line-width indent paper-width paper-height horizontal-shift
+                      line-width indent short-indent paper-width paper-height horizontal-shift
                       staff-space line-thickness ledgerline-thickness
                       blot-diameter left-margin right-margin)))
 
@@ -115,6 +115,7 @@ size. SZ is in points"
                                     (ly:modules-lookup (list m) 'right-margin (* 10 mm))))
 
     (module-define! m 'indent (/ w 14))
+    (module-define! m 'short-indent (* 5 mm))
 
     ;; page layout - what to do with (printer specific!) margin settings?
 
index 2693817e92c0722d1ffe42a4a5cc5ee802826181..a1fbf38a710e51eebb5de849a7921b1729c0856c 100644 (file)
@@ -1340,17 +1340,25 @@ def print_version ():
 
 def get_option_parser ():
     p = ly.get_option_parser (usage=_ ("%s [OPTION]... FILE") % 'abc2ly',
-                 version="abc2ly (LilyPond) @TOPLEVEL_VERSION@",
                  description=_ ('''abc2ly converts ABC music files (see
-%s) to LilyPond input.''') % 'http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt')
+%s) to LilyPond input.''') % 'http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt',
+                 add_help_option=False)
 
+    p.version = "abc2ly (LilyPond) @TOPLEVEL_VERSION@"
+    p.add_option("--version",
+                 action="version",
+                 help=_ ("show version number and exit"))
+
+    p.add_option("-h", "--help",
+                 action="help",
+                 help=_ ("show this help and exit"))
     p.add_option ('-o', '--output', metavar='FILE',
                   help=_ ("write output to FILE"),
                   action='store')
     p.add_option ('-s', '--strict', help=_ ("be strict about succes"),
                   action='store_true')
     p.add_option ('-b', '--beams', help=_ ("preserve ABC's notion of beams"))
-    p.add_option_group ('bugs',
+    p.add_option_group (ly.display_encode (_ ('Bugs')),
                         description=(_ ('Report bugs via')
                                      + ''' http://post.gmane.org/post.php'''
                                      '''?group=gmane.comp.gnu.lilypond.bugs\n'''))
index 6d7eda4a41dd712884a96e137947ce2c7d91025c..d4e4ceecc284c4a335dbd999ab58b399d2fbdb1e 100644 (file)
@@ -69,8 +69,17 @@ Copyright (c) %s by
 
 def get_option_parser ():
     p = ly.get_option_parser (usage=_ ("%s [OPTION]... FILE") % 'convert-ly',
-                  version="@TOPLEVEL_VERSION@",
-                  description=help_summary)
+                  description=help_summary,
+                  add_help_option=False)
+
+    p.version="@TOPLEVEL_VERSION@"
+    p.add_option("--version",
+                 action="version",
+                 help=_ ("show version number and exit"))
+
+    p.add_option("-h", "--help",
+                 action="help",
+                 help=_ ("show this help and exit"))
 
     p.add_option ('-f', '--from', 
               action="store",
@@ -99,7 +108,7 @@ def get_option_parser ():
               dest="to_version",
               default='')
 
-    p.add_option_group ('bugs',
+    p.add_option_group (ly.display_encode (_ ('Bugs')),
                         description=(_ ("Report bugs via")
                                      + ''' http://post.gmane.org/post.php'''
                                      '''?group=gmane.comp.gnu.lilypond.bugs\n'''))
index dd431d699a22d0991b83fd893cec73a99e5d3f9f..4e2fcc7a11fb4606a03fe24cc41333c82706135b 100644 (file)
@@ -1178,9 +1178,16 @@ Copyright (c) %s by
 
 def get_option_parser ():
     p = ly.get_option_parser (usage=_ ("%s [OPTION]... ETF-FILE") % 'etf2ly',
-                 version="etf2ly (LilyPond) @TOPLEVEL_VERSION@",
                  description=_ ("""Enigma Transport Format is a format used by Coda Music Technology's
-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."""),
+                 add_help_option=False)
+    p.add_option("-h", "--help",
+                 action="help",
+                 help=_ ("show this help and exit"))
+    p.version = "etf2ly (LilyPond) @TOPLEVEL_VERSION@"
+    p.add_option("--version",
+                 action="version",
+                 help=_ ("show version number and exit"))
     p.add_option ('-o', '--output', help=_ ("write output to FILE"),
            metavar=_("FILE"),
            action='store')
@@ -1188,7 +1195,7 @@ Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond file
            action='store_true',
            ),
 
-    p.add_option_group ('bugs',
+    p.add_option_group (ly.display_encode (_ ('Bugs')),
                         description=(_ ('Report bugs via')
                                      + ''' http://post.gmane.org/post.php'''
                                      '''?group=gmane.comp.gnu.lilypond.bugs\n'''))
index dd8e00d1929e692f81214c0f5d6104dbd4c6ef9e..23db86898596e024d27ebf73901e40ae26725240 100644 (file)
@@ -29,13 +29,13 @@ TODO:
 '''
 
 import stat
-import string
 import tempfile
 import commands
 import os
 import sys
 import re
 import md5
+import operator
 
 """
 @relocate-preamble@
@@ -69,7 +69,7 @@ authors = ('Jan Nieuwenhuizen <janneke@gnu.org>',
 ################################################################
 def exit (i):
     if global_options.verbose:
-        raise _ ('Exiting (%d)...') % i
+        raise Exception (_ ('Exiting (%d)...') % i)
     else:
         sys.exit (i)
 
@@ -88,7 +88,7 @@ def ps_page_count (ps_name):
     header = open (ps_name).read (1024)
     m = re.search ('\n%%Pages: ([0-9]+)', header)
     if m:
-        return string.atoi (m.group (1))
+        return int (m.group (1))
     return 0
 
 def warranty ():
@@ -107,27 +107,39 @@ def warranty ():
 
 def get_option_parser ():
     p = ly.get_option_parser (usage=_ ("%s [OPTION]... FILE") % 'lilypond-book',
-                              version="@TOPLEVEL_VERSION@",
-                              description=help_summary)
+                              description=help_summary,
+                              add_help_option=False)
 
     p.add_option ('-F', '--filter', metavar=_ ("FILTER"),
                   action="store",
                   dest="filter_cmd",
                   help=_ ("pipe snippets through FILTER [convert-ly -n -]"),
                   default=None)
+
     p.add_option ('-f', '--format',
                   help=_ ("use output format FORMAT (texi [default], texi-html, latex, html, docbook)"),
                   action='store')
-    
+
+    p.add_option("-h", "--help",
+                 action="help",
+                 help=_ ("show this help and exit"))
+
     p.add_option ("-I", '--include', help=_ ("add DIR to include path"),
                   metavar=_ ("DIR"),
                   action='append', dest='include_path',
                   default=[os.path.abspath (os.getcwd ())])
 
+    p.add_option ('--info-images-dir',
+                  help=_ ("format Texinfo output so that Info will "
+                          "look for images of music in DIR"),
+                  metavar=_ ("DIR"),
+                  action='store', dest='info_images_dir',
+                  default='')
+
     p.add_option ('--left-padding', 
-                  metavar=_("PAD"),
+                  metavar=_ ("PAD"),
                   dest="padding_mm",
-                  help="Pad left side of music to align music inspite of uneven bar numbers. (in mm)",
+                  help=_ ("pad left side of music to align music inspite of uneven bar numbers (in mm)"),
                   type="float",
                   default=3.0)
     
@@ -140,23 +152,32 @@ def get_option_parser ():
                   help = _ ("process ly_files using COMMAND FILE..."),
                   action='store', 
                   dest='process_cmd', default='lilypond -dbackend=eps')
+
     p.add_option ('--pdf',
                   action="store_true",
                   dest="create_pdf",
-                  help=_ ("Create PDF files for use with PDFTeX"),
+                  help=_ ("create PDF files for use with PDFTeX"),
                   default=False)
+
     p.add_option ('', '--psfonts', action="store_true", dest="psfonts",
                   help=_ ('''extract all PostScript fonts into INPUT.psfonts for LaTeX
 must use this with dvips -h INPUT.psfonts'''),
                   default=None)
+
     p.add_option ('-V', '--verbose', help=_ ("be verbose"),
                   action="store_true",
                   default=False,
                   dest="verbose")
+
+    p.version = "@TOPLEVEL_VERSION@"
+    p.add_option("--version",
+                 action="version",
+                 help=_ ("show version number and exit"))
+
     p.add_option ('-w', '--warranty',
                   help=_ ("show warranty and copyright"),
                   action='store_true')
-    p.add_option_group ('bugs',
+    p.add_option_group (ly.display_encode (_ ('Bugs')),
                         description=(_ ("Report bugs via")
                                      + ''' http://post.gmane.org/post.php'''
                                      '''?group=gmane.comp.gnu.lilypond.bugs\n'''))
@@ -627,7 +648,7 @@ output = {
 
         OUTPUTIMAGE: r'''@noindent
 @ifinfo
-@image{%(base)s,,,%(alt)s,%(ext)s}
+@image{%(info_image_path)s,,,%(alt)s,%(ext)s}
 @end ifinfo
 @html
 <p>
@@ -758,14 +779,15 @@ def classic_lilypond_book_compatibility (key, value):
 
     return (None, None)
 
-def find_file (name):
+def find_file (name, raise_error=True):
     for i in global_options.include_path:
         full = os.path.join (i, name)
         if os.path.exists (full):
             return full
         
-    error (_ ("file not found: %s") % name + '\n')
-    exit (1)
+    if raise_error:
+        error (_ ("file not found: %s") % name + '\n')
+        exit (1)
     return ''
 
 def verbatim_html (s):
@@ -985,7 +1007,7 @@ class Lilypond_snippet (Snippet):
                 option_list.append (key)
             else:
                 option_list.append (key + '=' + value)
-        option_string = string.join (option_list, ',')
+        option_string = ','.join (option_list)
 
         compose_dict = {}
         compose_types = [NOTES, PREAMBLE, LAYOUT, PAPER]
@@ -1041,14 +1063,10 @@ class Lilypond_snippet (Snippet):
         elif relative > 0:
             relative_quotes += "'" * relative
 
-        paper_string = string.join (compose_dict[PAPER],
-                      '\n  ') % override
-        layout_string = string.join (compose_dict[LAYOUT],
-                      '\n  ') % override
-        notes_string = string.join (compose_dict[NOTES],
-                      '\n  ') % vars ()
-        preamble_string = string.join (compose_dict[PREAMBLE],
-                       '\n  ') % override
+        paper_string = '\n  '.join (compose_dict[PAPER]) % override
+        layout_string = '\n  '.join (compose_dict[LAYOUT]) % override
+        notes_string = '\n  '.join (compose_dict[NOTES]) % vars ()
+        preamble_string = '\n  '.join (compose_dict[PREAMBLE]) % override
         padding_mm = global_options.padding_mm
         font_dump_setting = ''
         if FONTLOAD in self.option_dict:
@@ -1084,10 +1102,9 @@ class Lilypond_snippet (Snippet):
              
     def ly_is_outdated (self):
         base = self.basename ()
-        ly_file = base + '.ly'
-        tex_file = base + '.tex'
-        eps_file = base + '.eps'
-        systems_file = base + '-systems.tex'
+        ly_file = find_file (base + '.ly', raise_error=False)
+        tex_file = find_file (base + '.tex', raise_error=False)
+        systems_file = find_file (base + '-systems.tex', raise_error=False)
 
         if (os.path.exists (ly_file)
             and os.path.exists (systems_file)
@@ -1102,33 +1119,26 @@ class Lilypond_snippet (Snippet):
 
     def png_is_outdated (self):
         base = self.basename ()
-        # FIXME: refactor stupid OK stuff
-        ok = not self.ly_is_outdated ()
-        if global_options.format in (HTML, TEXINFO):
-            ok = ok and os.path.exists (base + '.eps')
-
-            page_count = 0
-            if ok:
-                page_count = ps_page_count (base + '.eps')
-
-            if page_count <= 1:
-                ok = ok and os.path.exists (base + '.png')
-             
-            elif page_count > 1:
-                for a in range (1, page_count + 1):
-                        ok = ok and os.path.exists (base + '-page%d.png' % a)
-                
-        return not ok
+        eps_file = find_file (base + '.eps', raise_error=False)
+        png_file = find_file (base + '.png', raise_error=False)
+        if not self.ly_is_outdated () and global_options.format in (HTML, TEXINFO):
+            if os.path.exists (eps_file):
+                page_count = ps_page_count (eps_file)
+                if page_count <= 1:
+                    return not os.path.exists (png_file)
+                else:
+                    return not reduce (operator.or_,
+                                       [find_file (base + '-page%d.png' % a, raise_error=False)
+                                        for a in range (1, page_count + 1)])
+        return True
     
     def texstr_is_outdated (self):
         if backend == 'ps':
             return 0
 
-        # FIXME: refactor stupid OK stuff
         base = self.basename ()
-        ok = self.ly_is_outdated ()
-        ok = ok and (os.path.exists (base + '.texstr'))
-        return not ok
+        return not (self.ly_is_outdated ()
+                    and find_file (base + '.texstr', raise_error=False))
 
     def filter_text (self):
         code = self.substring ('code')
@@ -1203,6 +1213,7 @@ class Lilypond_snippet (Snippet):
             # Specifying no extension is most robust.
             ext = ''
             alt = self.option_dict[ALT]
+            info_image_path = os.path.join (global_options.info_images_dir, base)
             str += output[TEXINFO][OUTPUTIMAGE] % vars ()
 
         base = self.basename ()
@@ -1461,16 +1472,16 @@ def process_snippets (cmd, ly_snippets, texstr_snippets, png_snippets):
     # the --process=CMD switch is a bad idea
     # it is too generic for lilypond-book.
     if texstr_names:
-        my_system (string.join ([cmd, '--backend texstr',
-                                 'snippet-map.ly'] + texstr_names))
+        my_system (' '.join ([cmd, '--backend texstr',
+                              'snippet-map.ly'] + texstr_names))
         for l in texstr_names:
             my_system ('latex %s.texstr' % l)
 
     if ly_names:
         open ('snippet-names', 'wb').write ('\n'.join (['snippet-map.ly']
-                                                      + ly_names))
+                                                       + ly_names))
         
-        my_system (string.join ([cmd, 'snippet-names']))
+        my_system (' '.join ([cmd, 'snippet-names']))
 
 
 LATEX_INSPECTION_DOCUMENT = r'''
@@ -1626,7 +1637,7 @@ def write_if_updated (file_name, lines):
     try:
         f = open (file_name)
         oldstr = f.read ()
-        new_str = string.join (lines, '')
+        new_str = ''.join (lines)
         if oldstr == new_str:
             progress (_ ("%s is up to date.") % file_name)
             progress ('\n')
@@ -1815,7 +1826,7 @@ def main ():
                                       + ' --formats=%s --backend eps ' % formats)
 
     if global_options.process_cmd:
-        global_options.process_cmd += string.join ([(' -I %s' % ly.mkarg (p))
+        global_options.process_cmd += ' '.join ([(' -I %s' % ly.mkarg (p))
                               for p in global_options.include_path])
 
     if global_options.format in (TEXINFO, LATEX):
index eaf7f5d616e55fb0227260bda2ce6a965f3b8749..810b9108c6ef6102cae9b75b09a43e8aa561043d 100644 (file)
@@ -847,8 +847,8 @@ def convert_midi (in_file, out_file):
 
 def get_option_parser ():
     p = ly.get_option_parser (usage=_ ("%s [OPTION]... FILE") % 'midi2ly',
-                 version="midi2ly (LilyPond) @TOPLEVEL_VERSION@",
-                 description=_ ("Convert %s to LilyPond input.") % 'MIDI')
+                 description=_ ("Convert %s to LilyPond input.") % 'MIDI',
+                 add_help_option=False)
 
     p.add_option ('-a', '--absolute-pitches',
            action='store_true',
@@ -859,6 +859,9 @@ def get_option_parser ():
     p.add_option ('-e', '--explicit-durations',
            action='store_true',
            help=_ ("print explicit durations"))
+    p.add_option("-h", "--help",
+                 action="help",
+                 help=_ ("show this help and exit"))
     p.add_option('-k', '--key', help=_ ("set key: ALT=+sharps|-flats; MINOR=1"),
           metavar=_ ("ALT[:MINOR]"),
           default='0'),
@@ -876,19 +879,22 @@ def get_option_parser ():
     p.add_option ('-V', '--verbose', help=_ ("be verbose"),
            action='store_true'
            ),
+    p.version = "midi2ly (LilyPond) @TOPLEVEL_VERSION@"
+    p.add_option("--version",
+                 action="version",
+                 help=_ ("show version number and exit"))
     p.add_option ('-w', '--warranty', help=_ ("show warranty and copyright"),
            action='store_true',
            ),
     p.add_option ('-x', '--text-lyrics', help=_ ("treat every text as a lyric"),
            action='store_true')
 
-# urg, Python 2.5 optparse is broken, it doesn't accept Unicode strings
-    p.add_option_group (_ ("Examples").encode (sys.stdout.encoding),
+    p.add_option_group (ly.display_encode (_ ("Examples")),
               description = r'''
   midi2ly --key=-2:1 --duration-quant=32 \
     --allow-tuplet=4*2/3 --allow-tuplet=2*4/3 foo.midi
 ''')
-    p.add_option_group (_ ('Bugs').encode (sys.stdout.encoding),
+    p.add_option_group (ly.display_encode (_ ('Bugs')),
                         description=(_ ('Report bugs via')
                                      + ''' http://post.gmane.org/post.php'''
                                      '''?group=gmane.comp.gnu.lilypond.bugs\n'''))
index cf0318434af1cc8168f3145090bf428fcfd18941..2e22f8e76cab500203df528807d619599e349126 100644 (file)
@@ -8,13 +8,13 @@ import string
 import codecs
 import zipfile
 import StringIO
-from gettext import gettext as _
 
 """
 @relocate-preamble@
 """
 
 import lilylib as ly
+_ = ly._
 
 import musicxml
 import musicexp
@@ -190,9 +190,9 @@ class PartGroupInfo:
     def add_end (self, g):
         self.end[getattr (g, 'number', "1")] = g
     def print_ly (self, printer):
-        error_message ("Unprocessed PartGroupInfo %s encountered" % self)
+        error_message (_ ("Unprocessed PartGroupInfo %s encountered") % self)
     def ly_expression (self):
-        error_message ("Unprocessed PartGroupInfo %s encountered" % self)
+        error_message (_ ("Unprocessed PartGroupInfo %s encountered") % self)
         return ''
 
 def staff_attributes_to_string_tunings (mxl_attr):
@@ -423,8 +423,8 @@ def rational_to_lily_duration (rational_len):
     d.duration_log = {1: 0, 2: 1, 4:2, 8:3, 16:4, 32:5, 64:6, 128:7, 256:8, 512:9}.get (rational_len.denominator (), -1)
     d.factor = Rational (rational_len.numerator ())
     if d.duration_log < 0:
-        error_message ("Encountered rational duration with denominator %s, "
-                       "unable to convert to lilypond duration" %
+        error_message (_ ("Encountered rational duration with denominator %s, "
+                       "unable to convert to lilypond duration") %
                        rational_len.denominator ())
         # TODO: Test the above error message
         return None
@@ -606,7 +606,7 @@ def musicxml_key_to_lily (attributes):
         start_pitch.step = n
         start_pitch.alteration = a
     except  KeyError:
-        error_message ('unknown mode %s' % mode)
+        error_message (_ ("unknown mode %s, expecting 'major' or 'minor'") % mode)
 
     fifth = musicexp.Pitch()
     fifth.step = 4
@@ -644,7 +644,7 @@ class Marker (musicexp.Music):
         self.direction = 0
         self.event = None
     def print_ly (self, printer):
-        sys.stderr.write ("Encountered unprocessed marker %s\n" % self)
+        ly.stderr_write (_ ("Encountered unprocessed marker %s\n") % self)
         pass
     def ly_expression (self):
         return ""
@@ -705,12 +705,15 @@ def musicxml_barline_to_lily (barline):
     return retval.values ()
 
 spanner_event_dict = {
-    'slur' : musicexp.SlurEvent,
     'beam' : musicexp.BeamEvent,
+    'dashes' : musicexp.TextSpannerEvent,
+    'bracket' : musicexp.BracketSpannerEvent,
     'glissando' : musicexp.GlissandoEvent,
+    'octave-shift' : musicexp.OctaveShiftEvent,
     'pedal' : musicexp.PedalEvent,
+    'slide' : musicexp.GlissandoEvent,
+    'slur' : musicexp.SlurEvent,
     'wavy-line' : musicexp.TrillSpanEvent,
-    'octave-shift' : musicexp.OctaveShiftEvent,
     'wedge' : musicexp.HairpinEvent
 }
 spanner_type_dict = {
@@ -720,6 +723,7 @@ spanner_type_dict = {
     'decreschendo': -1,
     'diminuendo': -1,
     'continue': 0,
+    'change': 0,
     'up': -1,
     'down': -1,
     'stop': 1,
@@ -734,7 +738,7 @@ def musicxml_spanner_to_lily_event (mxl_event):
     if func:
         ev = func()
     else:
-        error_message ('unknown span event %s' % mxl_event)
+        error_message (_ ('unknown span event %s') % mxl_event)
 
 
     type = mxl_event.get_type ()
@@ -744,7 +748,7 @@ def musicxml_spanner_to_lily_event (mxl_event):
     if span_direction != None:
         ev.span_direction = span_direction
     else:
-        error_message ('unknown span type %s for %s' % (type, name))
+        error_message (_ ('unknown span type %s for %s') % (type, name))
 
     ev.set_span_type (type)
     ev.line_type = getattr (mxl_event, 'line-type', 'solid')
@@ -755,7 +759,7 @@ def musicxml_spanner_to_lily_event (mxl_event):
     return ev
 
 def musicxml_direction_to_indicator (direction):
-    return { "above": 1, "upright": 1, "up":1, "below": -1, "downright": -1, "down": -1, "inverted": -1 }.get (direction, 0)
+    return { "above": 1, "upright": 1, "up": 1, "below": -1, "downright": -1, "down": -1, "inverted": -1 }.get (direction, 0)
 
 def musicxml_fermata_to_lily_event (mxl_event):
     ev = musicexp.ArticulationEvent ()
@@ -773,6 +777,12 @@ def musicxml_arpeggiate_to_lily_event (mxl_event):
     ev.direction = musicxml_direction_to_indicator (getattr (mxl_event, 'direction', None))
     return ev
 
+def musicxml_nonarpeggiate_to_lily_event (mxl_event):
+    ev = musicexp.ArpeggioEvent ()
+    ev.non_arpeggiate = True
+    ev.direction = musicxml_direction_to_indicator (getattr (mxl_event, 'direction', None))
+    return ev
+
 def musicxml_tremolo_to_lily_event (mxl_event):
     ev = musicexp.TremoloEvent ()
     txt = mxl_event.get_text ()
@@ -943,7 +953,7 @@ def musicxml_dynamics_to_lily_event (dynentry):
         dynamicstext = dynamicsname
         dynamicsname = string.replace (dynamicsname, "-", "")
         additional_definitions[dynamicsname] = dynamicsname + \
-              "=#(make-dynamic-script \"" + dynamicstext + "\")"
+              " = #(make-dynamic-script \"" + dynamicstext + "\")"
         needed_additional_definitions.append (dynamicsname)
     event = musicexp.DynamicsEvent ()
     event.type = dynamicsname
@@ -1023,16 +1033,140 @@ def musicxml_words_to_lily_event (words):
     return event
 
 
-direction_spanners = [ 'octave-shift', 'pedal', 'wedge' ]
+# convert accordion-registration to lilypond.
+# Since lilypond does not have any built-in commands, we need to create
+# the markup commands manually and define our own variables.
+# Idea was taken from: http://lsr.dsi.unimi.it/LSR/Item?id=194
+def musicxml_accordion_to_markup (mxl_event):
+    commandname = "accReg"
+    command = ""
+
+    high = mxl_event.get_maybe_exist_named_child ('accordion-high')
+    if high:
+        commandname += "H"
+        command += """\\combine
+          \\raise #2.5 \\musicglyph #\"accordion.accDot\"
+          """
+    middle = mxl_event.get_maybe_exist_named_child ('accordion-middle')
+    if middle:
+        # By default, use one dot (when no or invalid content is given). The 
+        # MusicXML spec is quiet about this case...
+        txt = 1
+        try:
+          txt = string.atoi (middle.get_text ())
+        except ValueError:
+            pass
+        if txt == 3:
+            commandname += "MMM"
+            command += """\\combine
+          \\raise #1.5 \\musicglyph #\"accordion.accDot\"
+          \\combine
+          \\raise #1.5 \\translate #(cons 1 0) \\musicglyph #\"accordion.accDot\"
+          \\combine
+          \\raise #1.5 \\translate #(cons -1 0) \\musicglyph #\"accordion.accDot\"
+          """
+        elif txt == 2:
+            commandname += "MM"
+            command += """\\combine
+          \\raise #1.5 \\translate #(cons 0.5 0) \\musicglyph #\"accordion.accDot\"
+          \\combine
+          \\raise #1.5 \\translate #(cons -0.5 0) \\musicglyph #\"accordion.accDot\"
+          """
+        elif not txt <= 0:
+            commandname += "M"
+            command += """\\combine
+          \\raise #1.5 \\musicglyph #\"accordion.accDot\"
+          """
+    low = mxl_event.get_maybe_exist_named_child ('accordion-low')
+    if low:
+        commandname += "L"
+        command += """\\combine
+          \\raise #0.5 \musicglyph #\"accordion.accDot\"
+          """
+
+    command += "\musicglyph #\"accordion.accDiscant\""
+    command = "\\markup { \\normalsize %s }" % command
+    # Define the newly built command \accReg[H][MMM][L]
+    additional_definitions[commandname] = "%s = %s" % (commandname, command)
+    needed_additional_definitions.append (commandname)
+    return "\\%s" % commandname
+
+def musicxml_accordion_to_ly (mxl_event):
+    txt = musicxml_accordion_to_markup (mxl_event)
+    if txt:
+        ev = musicexp.MarkEvent (txt)
+        return ev
+    return
+
+
+def musicxml_rehearsal_to_ly_mark (mxl_event):
+    text = mxl_event.get_text ()
+    if not text:
+        return
+    # default is boxed rehearsal marks!
+    encl = "box"
+    if hasattr (mxl_event, 'enclosure'):
+        encl = {"none": None, "square": "box", "circle": "circle" }.get (mxl_event.enclosure, None)
+    if encl:
+        text = "\\%s { %s }" % (encl, text)
+    ev = musicexp.MarkEvent ("\\markup { %s }" % text)
+    return ev
+
+# translate directions into Events, possible values:
+#   -) string  (MarkEvent with that command)
+#   -) function (function(mxl_event) needs to return a full Event-derived object
+#   -) (class, name)  (like string, only that a different class than MarkEvent is used)
+directions_dict = {
+    'accordion-registration' : musicxml_accordion_to_ly,
+    'coda' : (musicexp.MusicGlyphMarkEvent, "coda"),
+#     'damp' : ???
+#     'damp-all' : ???
+#     'eyeglasses': ??????
+#     'harp-pedals' : 
+#     'image' : 
+#     'metronome' : 
+    'rehearsal' : musicxml_rehearsal_to_ly_mark,
+#     'scordatura' : 
+    'segno' : (musicexp.MusicGlyphMarkEvent, "segno"),
+    'words' : musicxml_words_to_lily_event,
+}
+directions_spanners = [ 'octave-shift', 'pedal', 'wedge', 'dashes', 'bracket' ]
 
 def musicxml_direction_to_lily (n):
     # TODO: Handle the <staff> element!
     res = []
+    # placement applies to all children!
+    dir = None
+    if hasattr (n, 'placement') and options.convert_directions:
+        dir = musicxml_direction_to_indicator (n.placement)
     dirtype_children = []
+    # TODO: The direction-type is used for grouping (e.g. dynamics with text), 
+    #       so we can't simply flatten them out!
     for dt in n.get_typed_children (musicxml.DirType):
         dirtype_children += dt.get_all_children ()
 
     for entry in dirtype_children:
+        # backets, dashes, octave shifts. pedal marks, hairpins etc. are spanners:
+        if entry.get_name() in directions_spanners:
+            event = musicxml_spanner_to_lily_event (entry)
+            if event:
+                res.append (event)
+            continue
+
+        # now treat all the "simple" ones, that can be translated using the dict
+        ev = None
+        tmp_tp = directions_dict.get (entry.get_name (), None)
+        if isinstance (tmp_tp, str): # string means MarkEvent
+            ev = musicexp.MarkEvent (tmp_tp)
+        elif isinstance (tmp_tp, tuple): # tuple means (EventClass, "text")
+            ev = tmp_tp[0] (tmp_tp[1])
+        elif tmp_tp:
+            ev = tmp_tp (entry)
+        if ev:
+            # TODO: set the correct direction! Unfortunately, \mark in ly does
+            #       not seem to support directions!
+            res.append (ev)
+            continue
 
         if entry.get_name () == "dynamics":
             for dynentry in entry.get_all_children ():
@@ -1040,18 +1174,6 @@ def musicxml_direction_to_lily (n):
                 if ev:
                     res.append (ev)
 
-        if entry.get_name () == "words":
-            ev = musicxml_words_to_lily_event (entry)
-            if ev:
-                res.append (ev)
-
-        # octave shifts. pedal marks, hairpins etc. are spanners:
-        if entry.get_name() in direction_spanners:
-            event = musicxml_spanner_to_lily_event (entry)
-            if event:
-                res.append (event)
-
-
     return res
 
 def musicxml_frame_to_lily_event (frame):
@@ -1134,11 +1256,11 @@ def musicxml_note_to_lily_main_event (n):
         if drum_type:
             event.drum_type = drum_type
         else:
-            n.message ("drum %s type unknown, please add to instrument_drumtype_dict" % n.instrument_name)
+            n.message (_ ("drum %s type unknown, please add to instrument_drumtype_dict") % n.instrument_name)
             event.drum_type = 'acousticsnare'
 
     else:
-        n.message ("cannot find suitable event")
+        n.message (_ ("cannot find suitable event"))
 
     if event:
        event.duration = musicxml_duration_to_lily (n)
@@ -1221,7 +1343,7 @@ class LilyPondVoiceBuilder:
         diff = moment - current_end
         
         if diff < Rational (0):
-            error_message ('Negative skip %s' % diff)
+            error_message (_ ('Negative skip %s') % diff)
             diff = Rational (0)
 
         if diff > Rational (0) and not (self.ignore_skips and moment == 0):
@@ -1355,7 +1477,7 @@ def musicxml_voice_to_lily_voice (voice):
                 voice_builder.jumpto (n._when)
             except NegativeSkip, neg:
                 voice_builder.correct_negative_skip (n._when)
-                n.message ("Negative skip? from %s to %s, diff %s" % (neg.here, neg.dest, neg.dest - neg.here))
+                n.message (_ ("Negative skip found: from %s to %s, difference is %s") % (neg.here, neg.dest, neg.dest - neg.here))
             
         if isinstance (n, musicxml.Attributes):
             if n.is_first () and n._measure_position == Rational (0):
@@ -1380,7 +1502,7 @@ def musicxml_voice_to_lily_voice (voice):
             continue
 
         if not n.__class__.__name__ == 'Note':
-            error_message ('not a Note or Attributes? %s' % n)
+            error_message (_ ('unexpected %s; expected %s or %s or %s') % (n, 'Note', 'Attributes', 'Barline'))
             continue
 
         rest = n.get_maybe_exist_typed_child (musicxml.Rest)
@@ -1458,7 +1580,7 @@ def musicxml_voice_to_lily_voice (voice):
                 if s.get_type () in ('start','stop')]
             if slurs:
                 if len (slurs) > 1:
-                    error_message ('more than 1 slur?')
+                    error_message (_ ('cannot have two simultaneous slurs'))
                 # record the slur status for the next note in the loop
                 if not grace:
                     if slurs[0].get_type () == 'start':
@@ -1488,7 +1610,14 @@ def musicxml_voice_to_lily_voice (voice):
                 if ev:
                     ev_chord.append (ev)
 
+            arpeggiate = notations.get_named_children ('non-arpeggiate')
+            for a in arpeggiate:
+                ev = musicxml_nonarpeggiate_to_lily_event (a)
+                if ev:
+                    ev_chord.append (ev)
+
             glissandos = notations.get_named_children ('glissando')
+            glissandos += notations.get_named_children ('slide')
             for a in glissandos:
                 ev = musicxml_spanner_to_lily_event (a)
                 if ev:
@@ -1579,7 +1708,7 @@ def musicxml_voice_to_lily_voice (voice):
     
     
     if len (modes_found) > 1:
-       error_message ('Too many modes found %s' % modes_found.keys ())
+       error_message (_ ('cannot simultaneously have more than one mode: %s') % modes_found.keys ())
        
     if options.relative:
         v = musicexp.RelativeMusic ()
@@ -1659,7 +1788,7 @@ def get_all_voices (parts):
 
         part_ly_voices = {}
         for n, v in name_voice.items ():
-            progress ("Converting to LilyPond expressions...")
+            progress (_ ("Converting to LilyPond expressions..."))
             # musicxml_voice_to_lily_voice returns (lily_voice, {nr->lyrics, nr->lyrics})
             part_ly_voices[n] = musicxml_voice_to_lily_voice (v)
 
@@ -1670,61 +1799,78 @@ def get_all_voices (parts):
 
 
 def option_parser ():
-    p = ly.get_option_parser(usage=_ ("musicxml2ly [options] FILE.xml"),
-                             version=('''%prog (LilyPond) @TOPLEVEL_VERSION@\n\n'''
+    p = ly.get_option_parser (usage = _ ("musicxml2ly [options] FILE.xml"),
+                             description = _ ("Convert %s to LilyPond input.") % 'MusicXML' + "\n",
+                             add_help_option=False)
+
+    p.add_option("-h", "--help",
+                 action="help",
+                 help=_ ("show this help and exit"))
+
+    p.version = ('''%prog (LilyPond) @TOPLEVEL_VERSION@\n\n'''
                                       +
 _ ("""This program is free software.  It is covered by the GNU General Public
 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--2007 by
+Copyright (c) 2005--2008 by
     Han-Wen Nienhuys <hanwen@xs4all.nl>,
     Jan Nieuwenhuizen <janneke@gnu.org> and
     Reinhold Kainhofer <reinhold@kainhofer.com>
-"""),
-                             description=_ ("Convert %s to LilyPond input.") % 'MusicXML' + "\n")
+""")
+    p.add_option("--version",
+                 action="version",
+                 help=_ ("show version number and exit"))
+
     p.add_option ('-v', '--verbose',
-                  action="store_true",
-                  dest='verbose',
-                  help=_ ("be verbose"))
+                  action = "store_true",
+                  dest = 'verbose',
+                  help = _ ("be verbose"))
 
     p.add_option ('', '--lxml',
-                  action="store_true",
-                  default=False,
-                  dest="use_lxml",
-                  help=_ ("Use lxml.etree; uses less memory and cpu time."))
+                  action = "store_true",
+                  default = False,
+                  dest = "use_lxml",
+                  help = _ ("use lxml.etree; uses less memory and cpu time"))
 
     p.add_option ('-z', '--compressed',
                   action = "store_true",
                   dest = 'compressed',
                   default = False,
-                  help = _ ("Input file is a zip-compressed MusicXML file."))
+                  help = _ ("input file is a zip-compressed MusicXML file"))
 
     p.add_option ('-r', '--relative',
                   action = "store_true",
+                  default = True,
+                  dest = "relative",
+                  help = _ ("convert pitches in relative mode (default)"))
+
+    p.add_option ('-a', '--absolute',
+                  action = "store_false",
                   dest = "relative",
-                  help = _ ("Convert pitches in relative mode."))
+                  help = _ ("convert pitches in absolute mode"))
 
     p.add_option ('-l', '--language',
+                  metavar = _ ("LANG"),
                   action = "store",
-                  help = _ ("Use a different language file, e.g. 'deutsch' for deutsch.ly."))
+                  help = _ ("use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly"))
 
-    p.add_option ('--no-articulation-directions', '--nd',
+    p.add_option ('--nd', '--no-articulation-directions', 
                   action = "store_false",
                   default = True,
                   dest = "convert_directions",
-                  help = _ ("Do not convert directions (^, _ or -) for articulations."))
+                  help = _ ("do not convert directions (^, _ or -) for articulations, dynamics, etc."))
 
     p.add_option ('-o', '--output',
-                  metavar=_ ("FILE"),
-                  action="store",
-                  default=None,
-                  type='string',
-                  dest='output_name',
-                  help=_ ("set output filename to FILE"))
-    p.add_option_group ('bugs',
-                        description=(_ ("Report bugs via")
+                  metavar = _ ("FILE"),
+                  action = "store",
+                  default = None,
+                  type = 'string',
+                  dest = 'output_name',
+                  help = _ ("set output filename to FILE"))
+    p.add_option_group (ly.display_encode (_ ('Bugs')),
+                        description = (_ ("Report bugs via")
                                      + ''' http://post.gmane.org/post.php'''
                                      '''?group=gmane.comp.gnu.lilypond.bugs\n'''))
     return p
@@ -1780,7 +1926,7 @@ def update_score_setup (score_structure, part_list, voices):
         part_id = part_definition.id
         nv_dict = voices.get (part_id)
         if not nv_dict:
-            error_message ('unknown part in part-list: %s' % part_id)
+            error_message (_ ('unknown part in part-list: %s') % part_id)
             continue
 
         staves = reduce (lambda x,y: x+ y,
@@ -1836,7 +1982,7 @@ def read_xml (io_object, use_lxml):
 def read_musicxml (filename, compressed, use_lxml):
     raw_string = None
     if compressed:
-        progress ("Input file %s is compressed, extracting raw MusicXML data" % filename)
+        progress (_ ("Input file %s is compressed, extracting raw MusicXML data") % filename)
         z = zipfile.ZipFile (filename, "r")
         container_xml = z.read ("META-INF/container.xml")
         if not container_xml:
@@ -1862,7 +2008,7 @@ def read_musicxml (filename, compressed, use_lxml):
 
 
 def convert (filename, options):
-    progress ("Reading MusicXML from %s ..." % filename)
+    progress (_ ("Reading MusicXML from %s ...") % filename)
     
     tree = read_musicxml (filename, options.compressed, options.use_lxml)
     parts = tree.get_typed_children (musicxml.Part)
@@ -1890,7 +2036,7 @@ def convert (filename, options):
     driver_ly_name = options.output_name + '.ly'
 
     printer = musicexp.Output_printer()
-    progress ("Output to `%s'" % defs_ly_name)
+    progress (_ ("Output to `%s'") % defs_ly_name)
     printer.set_file (codecs.open (defs_ly_name, 'wb', encoding='utf-8'))
 
     print_ly_preamble (printer, filename)
@@ -1904,7 +2050,7 @@ def convert (filename, options):
     printer.close ()
     
     
-    progress ("Output to `%s'" % driver_ly_name)
+    progress (_ ("Output to `%s'") % driver_ly_name)
     printer = musicexp.Output_printer()
     printer.set_file (codecs.open (driver_ly_name, 'wb', encoding='utf-8'))
     print_ly_preamble (printer, filename)
@@ -1947,7 +2093,7 @@ def main ():
     if filename and os.path.exists (filename):
         voices = convert (filename, options)
     else:
-        progress ("Unable to find input file %s" % args[0])
+        progress (_ ("Unable to find input file %s") % args[0])
 
 if __name__ == '__main__':
     main()
index dfae13f1b454ff224607918e2637b4cd7538de9d..64bdecf6775fcc8df561ad3313ac573251aa677f 100644 (file)
@@ -19,7 +19,7 @@ $(outdir)/%.pfb: %.mf $(outdir)/mf2pt1.mem
        TMP=`mktemp -d $(outdir)/pfbtemp.XXXXXXXXX` \
        && ( cd $$TMP \
                && ln -s ../mf2pt1.mem . \
-               && MFINPUTS=$(src-dir):..:: $(PERL) $(top-src-dir)/buildscripts/mf2pt1.pl $(MF2PT1_OPTIONS) $< ) \
+               && MFINPUTS=$(top-src-dir)/mf:..:: $(PERL) $(top-src-dir)/buildscripts/mf2pt1.pl $(MF2PT1_OPTIONS) $< ) \
        && mv $$TMP/*pfb $(outdir); \
        rm -rf $$TMP
 
index 48a6f7e9000599800be7eb2b6d78a715b88722a8..c37356207988e2de87157ad08f13d22a70e23872 100644 (file)
@@ -3,7 +3,7 @@
 
 $(outdir)/%.info: $(outdir)/%.texi
 # makeinfo MUST have PNGs in cwd for info images to work
-       cd $(outdir) && $(MAKEINFO) -I$(srcdir) --output=$(@F) $(<F)
+       $(MAKEINFO) -I$(outdir) --output=$@ $<
 
 $(outdir)/%-big-page.html: $(outdir)/%.texi
        $(MAKEINFO) -I $(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
@@ -20,9 +20,9 @@ $(outdir)/%.pdf.omf: %.texi
 $(outdir)/%.ps.gz.omf: %.texi
        $(call GENERATE_OMF,ps.gz)
 
-# Generic rule not possible?
-$(outdir)/%/%.html: $(outdir)/%.texi
-       $(MAKEINFO) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
+$(outdir)/%/index.html: $(outdir)/%.texi
+       mkdir -p $(dir $@)
+       $(MAKEINFO) -I $(outdir) --output=$(dir $@) --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
 
 $(outdir)/%.pdf: $(outdir)/%.texi
        cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) --batch $(TEXINFO_PAPERSIZE_OPTION) $(<F)
index 534e591ae42a844baecd28e7e1131b038a0b57a2..d36ff83b81db972664de69f49987e9341cab6a6c 100644 (file)
@@ -18,7 +18,7 @@ MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 # info stuff
 INFO_INSTALL_FILES = $(wildcard $(addsuffix *, $(INFO_FILES)))
 INFO_INSTALL_COMMAND =$(if $(INFO_INSTALL_FILES),\
-       $(INSTALLPY) -d $(DESTDIR)$(package_infodir) ; \
-       $(MAKE) INSTALLATION_OUT_DIR=$(package_infodir) \
+       $(INSTALLPY) -d $(DESTDIR)$(infodir) ; \
+       $(MAKE) INSTALLATION_OUT_DIR=$(infodir) \
                depth=$(depth) INSTALLATION_OUT_FILES="$(INFO_INSTALL_FILES)" \
                -f $(stepdir)/install-out.sub.make,true)